feat: added yt for yt-dlp logic within the app
This commit is contained in:
parent
d047788835
commit
b82b70d911
34
main.go
34
main.go
@ -2,13 +2,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
|
||||||
"html/template"
|
"html/template"
|
||||||
"io"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -107,16 +104,6 @@ func NewContext(r *http.Request) *Context {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var AppURL string = "http://localhost:8080"
|
|
||||||
type HTMLBaseData struct {
|
|
||||||
Formats []DownloadFormats
|
|
||||||
AppURL string
|
|
||||||
}
|
|
||||||
|
|
||||||
var appData HTMLBaseData = HTMLBaseData{
|
|
||||||
AppURL: AppURL,
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
log.Println("[ init ] Starting...")
|
log.Println("[ init ] Starting...")
|
||||||
@ -146,9 +133,8 @@ func main() {
|
|||||||
w = writeJSONResponse(w, "Provide URL as query")
|
w = writeJSONResponse(w, "Provide URL as query")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Get URL from convx
|
|
||||||
req, err := http.Get(fmt.Sprintf("http://localhost:80?url=%s", userURL))
|
|
||||||
|
|
||||||
|
downloadURL, err := getYoutubeDownloadURL(userURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err.Error())
|
log.Println(err.Error())
|
||||||
ctx.StatusCode = 500
|
ctx.StatusCode = 500
|
||||||
@ -156,23 +142,6 @@ func main() {
|
|||||||
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if req.StatusCode != 200 {
|
|
||||||
log.Printf("Got %v from convx\n", req)
|
|
||||||
ctx.StatusCode = 500
|
|
||||||
ctx.Err = &err
|
|
||||||
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
body, err := io.ReadAll(req.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Error while reading convx response body. \n%v", err.Error())
|
|
||||||
ctx.StatusCode = 500
|
|
||||||
ctx.Err = &err
|
|
||||||
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
downloadURL := string(body)
|
|
||||||
log.Println("URL from convx", downloadURL)
|
|
||||||
|
|
||||||
ctx.DownloadURL = downloadURL
|
ctx.DownloadURL = downloadURL
|
||||||
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
err = templates.ExecuteTemplate(w,"download-result.html", ctx)
|
||||||
@ -194,7 +163,6 @@ func main() {
|
|||||||
audioOnly: false,
|
audioOnly: false,
|
||||||
videoOnly: false,
|
videoOnly: false,
|
||||||
})
|
})
|
||||||
appData.Formats = formats
|
|
||||||
err := templates.ExecuteTemplate(w, "download.html", ctx)
|
err := templates.ExecuteTemplate(w, "download.html", ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err.Error())
|
log.Println(err.Error())
|
||||||
|
47
yt.go
Normal file
47
yt.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func getYoutubeDownloadURL(link string) (string, error) {
|
||||||
|
|
||||||
|
var dlLink string
|
||||||
|
cmd := exec.Command("yt-dlp", "--get-url", "-f 22", link)
|
||||||
|
result, err := cmd.Output()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
dlLink = string(result)
|
||||||
|
|
||||||
|
return dlLink, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func isValidURL(data string) bool {
|
||||||
|
|
||||||
|
_, err := url.ParseRequestURI(data)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
httpClient := &http.Client{}
|
||||||
|
resp, err := httpClient.Get(data)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user