diff --git a/main.go b/main.go index 440e4a9..723968f 100644 --- a/main.go +++ b/main.go @@ -26,6 +26,7 @@ type download struct { Pid int `json:"pid"` ExitCode int `json:"exit_code"` State string `json:"state"` + Finished bool `json:"finished"` Files []string `json:"files"` Eta string `json:"eta"` Percent float32 `json:"percent"` @@ -78,7 +79,7 @@ func HomeHandler(w http.ResponseWriter, r *http.Request) { bookmarkletURL := "javascript:(function(f,s,n,o){window.open(f+encodeURIComponent(s),n,o)}('http://localhost:8000/fetch?url=',window.location,'yourform','width=500,height=500'));" - t, err := template.ParseFS(webFS, "web/index.html") + t, err := template.ParseFS(webFS, "web/layout.tmpl", "web/index.html") if err != nil { panic(err) } @@ -94,7 +95,7 @@ func HomeHandler(w http.ResponseWriter, r *http.Request) { } log.Printf("%s", info.BookmarkletURL) - err = t.Execute(w, info) + err = t.ExecuteTemplate(w, "layout", info) if err != nil { panic(err) } @@ -131,12 +132,13 @@ func FetchHandler(w http.ResponseWriter, r *http.Request) { // XXX should be atomic! downloadId++ newDownload := download{ - Id: downloadId, - Url: url[0], - State: "starting", - Eta: "?", - Percent: 0.0, - Log: make([]string, 0, 1000), + Id: downloadId, + Url: url[0], + State: "starting", + Finished: false, + Eta: "?", + Percent: 0.0, + Log: make([]string, 0, 1000), } downloads[downloadId] = &newDownload // XXX atomic ^^ @@ -145,11 +147,11 @@ func FetchHandler(w http.ResponseWriter, r *http.Request) { go func() { queue(&newDownload) }() - t, err := template.ParseFS(webFS, "web/popup.html") + t, err := template.ParseFS(webFS, "web/layout.tmpl", "web/popup.html") if err != nil { panic(err) } - err = t.Execute(w, newDownload) + err = t.ExecuteTemplate(w, "layout", newDownload) if err != nil { panic(err) } @@ -170,21 +172,24 @@ func queue(dl *download) { stdout, err := cmd.StdoutPipe() if err != nil { - dl.State = "ended" + dl.State = "failed" + dl.Finished = true dl.Log = append(dl.Log, fmt.Sprintf("error setting up stdout pipe: %v", err)) return } stderr, err := cmd.StderrPipe() if err != nil { - dl.State = "ended" + dl.State = "failed" + dl.Finished = true dl.Log = append(dl.Log, fmt.Sprintf("error setting up stderr pipe: %v", err)) return } err = cmd.Start() if err != nil { - dl.State = "ended" + dl.State = "failed" + dl.Finished = true dl.Log = append(dl.Log, fmt.Sprintf("error starting youtube-dl: %v", err)) return } @@ -204,13 +209,13 @@ func queue(dl *download) { }() wg.Wait() + cmd.Wait() - dl.State = "ended" + dl.State = "complete" + dl.Finished = true dl.ExitCode = cmd.ProcessState.ExitCode() fmt.Printf("OBJ %#v\n", dl) - - return } func updateDownload(r io.Reader, dl *download) { diff --git a/web/index.html b/web/index.html index bd52a2d..b213bde 100644 --- a/web/index.html +++ b/web/index.html @@ -1,29 +1,41 @@ - - - index - - - -

- Drag this bookmarklet: Gropple to your bookmark bar, and click it - on any page you want to grab the video from. -

- {{ range $k, $v := .Downloads }} -
-

{{ $v.Url }}

- - - - - +{{ define "content" }} +

+ Drag this bookmarklet: Gropple to your bookmark bar, and click it + on any page you want to grab the video from. +

-
state{{ $v.State }}
percent{{ $v.Percent }}
files{{ range $i, $f := $v.Files }}{{ $f }}
{{ end }}
exit code{{ $v.ExitCode }}
-
-                {{ range $i, $l := $v.Log }}
-                line: {{ $l }}
-                {{- end -}}
-            
-
- {{ end }} - - \ No newline at end of file +{{ range $k, $v := .Downloads }} +
+

{{ $v.Url }}

+ + + + + + + + + + + + + + + + + +
state{{ $v.State }}
percent{{ $v.Percent }}
files{{ range $i, $f := $v.Files }}{{ $f }} {{ end }}
exit code{{ $v.ExitCode }}
+ +
+    {{ range $i, $l := $v.Log }}
+line: {{ $l }}
+    {{- end -}}
+    
+ +
+{{ end }} + +{{ end }} + +{{ define "js" }} +{{ end }} \ No newline at end of file diff --git a/web/layout.tmpl b/web/layout.tmpl new file mode 100644 index 0000000..c6b66ac --- /dev/null +++ b/web/layout.tmpl @@ -0,0 +1,16 @@ +{{ define "layout" }} + + + + gropple + + + + + + + {{ template "content" . }} + + {{ template "js" . }} + +{{ end }} \ No newline at end of file diff --git a/web/popup.html b/web/popup.html index 1707d66..f77c34a 100644 --- a/web/popup.html +++ b/web/popup.html @@ -1,13 +1,4 @@ - - - - fetching {{ .Url }} - - - - - - +{{ define "content" }}

Fetching {{ .Url }}

@@ -16,13 +7,14 @@
progress
ETA
-

Status page

+

Status page

- +{{ end }} +{{ define "js" }} - +{{ end }}