front end done
This commit is contained in:
		
							
								
								
									
										25
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								main.go
									
									
									
									
									
								
							@@ -106,14 +106,15 @@ func main() {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		fmt.Println("path is", p, "id is", id)
 | 
			
		||||
		var sc <-chan string
 | 
			
		||||
		d.Run(func(d *db.Jdb) {
 | 
			
		||||
			pt := d.Items[id].Pt
 | 
			
		||||
			if pt != nil {
 | 
			
		||||
				sc = pt.Subscribe()
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
		var wh websocket.Handler = func(c *websocket.Conn) {
 | 
			
		||||
			defer c.Close()
 | 
			
		||||
			log.Println("Are you here?")
 | 
			
		||||
			var sc <-chan string
 | 
			
		||||
			d.Run(func(d *db.Jdb) {
 | 
			
		||||
				pt := d.Items[id].Pt
 | 
			
		||||
				sc = pt.Subscribe()
 | 
			
		||||
			})
 | 
			
		||||
			if sc != nil {
 | 
			
		||||
				for update := range sc {
 | 
			
		||||
					_, err := c.Write([]byte(update))
 | 
			
		||||
@@ -137,7 +138,8 @@ func main() {
 | 
			
		||||
				}
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			c.Write([]byte(fname))
 | 
			
		||||
			alink := fmt.Sprintf(`<a target="_blank" href="%s/%s">Watch</a>`, videosUrl, fname)
 | 
			
		||||
			c.Write([]byte(alink))
 | 
			
		||||
		}
 | 
			
		||||
		wh.ServeHTTP(w, r)
 | 
			
		||||
	})
 | 
			
		||||
@@ -171,19 +173,20 @@ func download(id int, yturl string) {
 | 
			
		||||
		log.Panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//Log progress
 | 
			
		||||
	go func() {
 | 
			
		||||
		var sc <-chan string
 | 
			
		||||
		d.Run(func(d *db.Jdb) {
 | 
			
		||||
			pt := d.Items[id].Pt
 | 
			
		||||
			sc = pt.Subscribe()
 | 
			
		||||
		})
 | 
			
		||||
		log.Println("before watching")
 | 
			
		||||
		log.Println("Watching download progress for id: ", id)
 | 
			
		||||
		if sc != nil {
 | 
			
		||||
			for update := range sc {
 | 
			
		||||
				log.Println(update)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		log.Println("after watching")
 | 
			
		||||
		log.Println("Done watching download progress for id: ", id)
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	var status db.DownloadStatus
 | 
			
		||||
@@ -201,8 +204,8 @@ func download(id int, yturl string) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func downloadYt(id int, yturl string, pc chan<- string) (string, error) {
 | 
			
		||||
	// pathTmpl := fmt.Sprintf("%s/video_%d.%%(ext)s", cachePath, id)
 | 
			
		||||
	pathTmpl := fmt.Sprintf("%s/video_%d.mp4", cachePath, id)
 | 
			
		||||
	pathTmpl := fmt.Sprintf("%s/video_%d.%%(ext)s", cachePath, id)
 | 
			
		||||
	// pathTmpl := fmt.Sprintf("%s/video_%d.mp4", cachePath, id)
 | 
			
		||||
	args := append(ytdlCmd, "--newline", "--output", pathTmpl, yturl)
 | 
			
		||||
	cmd := exec.Command(args[0], args[1:]...)
 | 
			
		||||
	rc, err := cmd.StdoutPipe()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,29 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
        <title>Srinidhi Youtube videos</title>
 | 
			
		||||
        <title>Youtube Downloader UI</title>
 | 
			
		||||
        <!-- Diable favicon requests: https://stackoverflow.com/a/13416784 -->
 | 
			
		||||
        <link rel="icon" href="data:;base64,iVBORw0KGgo=">
 | 
			
		||||
        <script>
 | 
			
		||||
            // https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event
 | 
			
		||||
            window.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
                            progressElems = document.querySelectorAll(".ytprogress")
 | 
			
		||||
                            progressElems.forEach(function(item) {
 | 
			
		||||
                                            // https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
 | 
			
		||||
                                            item.innerText = item.dataset.ytid
 | 
			
		||||
                                            ytid = item.dataset.ytid
 | 
			
		||||
 | 
			
		||||
                                            // https://stackoverflow.com/a/47472874
 | 
			
		||||
                                            var url = new URL("/ws/" + ytid, window.location.href);
 | 
			
		||||
                                            url.protocol = url.protocol.replace('http', 'ws');
 | 
			
		||||
 | 
			
		||||
                                            let socket = new WebSocket(url.href)
 | 
			
		||||
                                            socket.onmessage = function(event) {
 | 
			
		||||
                                                            item.innerHTML = event.data
 | 
			
		||||
                                                        }
 | 
			
		||||
                                        })
 | 
			
		||||
                        });
 | 
			
		||||
        </script>
 | 
			
		||||
    </head>
 | 
			
		||||
    <body>
 | 
			
		||||
        <form method="POST" action="/">
 | 
			
		||||
@@ -30,7 +50,7 @@
 | 
			
		||||
                        {{ if eq .Status "Done" }}
 | 
			
		||||
                        <a target="_blank" href="{{ vids_prefix }}/{{ .FileName }}">Watch</a>
 | 
			
		||||
                        {{ else if eq .Status "InProgress" }}
 | 
			
		||||
                        <span class="progress" data="{{.Id}}">In Progress</span>
 | 
			
		||||
                        <span class="ytprogress" data-ytid="{{.Id}}">In Progress</span>
 | 
			
		||||
                        {{ else }}
 | 
			
		||||
                        {{ .Status }}
 | 
			
		||||
                        {{ end }}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user