Skip to content

Commit 888561b

Browse files
committed
Add: copy_file - Start working on the output feature.
Modify: some output/logging changes.
1 parent a5ce6d8 commit 888561b

File tree

4 files changed

+72
-10
lines changed

4 files changed

+72
-10
lines changed

cmd/deepsort/arguments.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ func argumentParsing(args []string, arguments *Arguments) {
1414
// Create flags
1515
URL := parser.String("u", "url", &argparse.Options{Required: true, Help: "URL of your DeepDetect instance (i.e: http://localhost:8080)"})
1616
input := parser.String("i", "input", &argparse.Options{Required: true, Help: "Your input folder."})
17+
//output := parser.String("o", "output", &argparse.Options{Required: false, Help: "Your output folder, if output is set, original files will not be renamed, but the renamed version will be copied in the output folder."})
1718
network := parser.Selector("n", "network", []string{"resnet-50", "googlenet"}, &argparse.Options{Required: false, Help: "The pre-trained deep neural network you want to use, can be resnet-50 or googlenet", Default: "resnet-50"})
1819
recursive := parser.Flag("R", "recursive", &argparse.Options{Required: false, Help: "Process files recursively."})
1920
jobs := parser.Int("j", "jobs", &argparse.Options{Required: false, Help: "Number of parallel jobs", Default: 1})
@@ -26,8 +27,10 @@ func argumentParsing(args []string, arguments *Arguments) {
2627
fmt.Print(parser.Usage(err))
2728
os.Exit(0)
2829
}
29-
// Handle the input flag
30+
// Handle the input/output flags
3031
inputFolder, _ := filepath.Abs(*input)
32+
//arguments.Output = outputFolder
33+
//arguments.OutputChoice = true
3134
// Finally save the collected flags
3235
arguments.Network = *network
3336
arguments.Jobs = *jobs

cmd/deepsort/classify.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"bytes"
5+
"fmt"
56
"io/ioutil"
67
"net/http"
78
"os"
@@ -43,7 +44,11 @@ func googleNetClassification(path string, arguments *Arguments, wg *sync.WaitGro
4344
color.Green(parsedResponse), "[GoogleNet]")
4445
}
4546
if arguments.DryRun != true {
46-
renameFile(path, arguments, parsedResponse)
47+
if isValid(arguments.Output) == false {
48+
renameFile(path, arguments, parsedResponse)
49+
} else {
50+
fmt.Println("Output selected")
51+
}
4752
}
4853
arguments.CountDone++
4954
}
@@ -79,7 +84,14 @@ func resNet50Classification(path string, arguments *Arguments, wg *sync.WaitGrou
7984
color.Green(parsedResponse), "[ResNet-50]")
8085
}
8186
if arguments.DryRun != true {
82-
renameFile(path, arguments, parsedResponse)
87+
if isValid(arguments.Output) == false &&
88+
arguments.OutputChoice == false {
89+
renameFile(path, arguments, parsedResponse)
90+
} else if arguments.OutputChoice == true &&
91+
isValid(arguments.Output) == false {
92+
logging.Error("Wrong output folder.", "")
93+
os.Exit(1)
94+
}
8395
}
8496
arguments.CountDone++
8597
}

cmd/deepsort/copy_file.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package main
2+
3+
import (
4+
"io"
5+
"io/ioutil"
6+
"os"
7+
)
8+
9+
func isValid(fp string) bool {
10+
// Check if file already exists
11+
if _, err := os.Stat(fp); err == nil {
12+
return true
13+
}
14+
15+
// Attempt to create it
16+
var d []byte
17+
if err := ioutil.WriteFile(fp, d, 0644); err == nil {
18+
os.Remove(fp) // And delete it
19+
return true
20+
}
21+
22+
return false
23+
}
24+
25+
func copy(src, dst string) error {
26+
in, err := os.Open(src)
27+
if err != nil {
28+
return err
29+
}
30+
defer in.Close()
31+
32+
out, err := os.Create(dst)
33+
if err != nil {
34+
return err
35+
}
36+
defer out.Close()
37+
38+
_, err = io.Copy(out, in)
39+
if err != nil {
40+
return err
41+
}
42+
return out.Close()
43+
}

cmd/deepsort/main.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,25 @@ import (
88
"github.com/labstack/gommon/color"
99
)
1010

11+
// Arguments store flags values
1112
type Arguments struct {
12-
Input string
13-
URL string
14-
DryRun bool
15-
Recursive bool
16-
Jobs int
17-
Network string
18-
CountDone int
13+
Input string
14+
Output string
15+
OutputChoice bool
16+
URL string
17+
DryRun bool
18+
Recursive bool
19+
Jobs int
20+
Network string
21+
CountDone int
1922
}
2023

2124
func main() {
2225
start := time.Now()
2326
arguments := new(Arguments)
2427
arguments.CountDone = 0
2528
arguments.Jobs = 1
29+
arguments.OutputChoice = false
2630
argumentParsing(os.Args, arguments)
2731
if arguments.Network == "resnet-50" {
2832
startResNet50(arguments)

0 commit comments

Comments
 (0)