summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJames Mills <prologic@shortcircuit.net.au>2020-03-28 12:16:45 +1000
committerJames Mills <prologic@shortcircuit.net.au>2020-03-28 12:16:45 +1000
commit88b96784ab4fd19b13d0076d64a95300483363ca (patch)
tree4e86be713c367f37dad1906849ec7a15ebbe7a9b /app
parent5100a108634cb63ae508669878b05ed5fa20c31a (diff)
Refactored video importers
Diffstat (limited to 'app')
-rw-r--r--app/app.go38
1 files changed, 14 insertions, 24 deletions
diff --git a/app/app.go b/app/app.go
index fa1fd18..3f99998 100644
--- a/app/app.go
+++ b/app/app.go
@@ -20,8 +20,8 @@ import (
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/renstrom/shortuuid"
- "github.com/rylio/ytdl"
log "github.com/sirupsen/logrus"
+ "github.com/wybiral/tube/importers"
"github.com/wybiral/tube/media"
"github.com/wybiral/tube/utils"
)
@@ -339,7 +339,15 @@ func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
sort.Strings(keys)
collection := keys[0]
- vid, err := ytdl.GetVideoInfo(url)
+ videoImporter, err := importers.NewImporter(url)
+ if err != nil {
+ err := fmt.Errorf("error creating video importer for %s: %w", url, err)
+ log.Error(err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ videoInfo, err := videoImporter.GetVideoInfo(url)
if err != nil {
err := fmt.Errorf("error retriving video info for %s: %w", url, err)
log.Error(err)
@@ -359,8 +367,7 @@ func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
}
defer os.Remove(uf.Name())
- err = vid.Download(vid.Formats[0], uf)
- if err != nil {
+ if err := utils.Download(videoInfo.VideoURL, uf.Name()); err != nil {
err := fmt.Errorf("error downloading video %s: %w", url, err)
log.Error(err)
http.Error(w, err.Error(), http.StatusInternalServerError)
@@ -385,29 +392,12 @@ func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
thumbFn1 := fmt.Sprintf("%s.jpg", strings.TrimSuffix(tf.Name(), filepath.Ext(tf.Name())))
thumbFn2 := fmt.Sprintf("%s.jpg", strings.TrimSuffix(vf, filepath.Ext(vf)))
- thumbURL := vid.GetThumbnailURL(ytdl.ThumbnailQualityHigh)
- res, err := http.Get(thumbURL.String())
- if err != nil {
+ if err := utils.Download(videoInfo.ThumbnailURL, thumbFn1); err != nil {
err := fmt.Errorf("error downloading thumbnail: %w", err)
log.Error(err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
- thumbData, err := ioutil.ReadAll(res.Body)
- res.Body.Close()
- if err != nil {
- err := fmt.Errorf("error reading thumbnail data: %w", err)
- log.Error(err)
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
-
- if err := ioutil.WriteFile(thumbFn1, thumbData, 0644); err != nil {
- err := fmt.Errorf("error writing thumbnail data: %w", err)
- log.Error(err)
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
// TODO: Use a proper Job Queue and make this async
if err := utils.RunCmd(
@@ -419,8 +409,8 @@ func (a *App) importHandler(w http.ResponseWriter, r *http.Request) {
"-acodec", "aac",
"-strict", "-2",
"-loglevel", "quiet",
- "-metadata", fmt.Sprintf("title=%s", vid.Title),
- "-metadata", fmt.Sprintf("comment=%s", vid.Description),
+ "-metadata", fmt.Sprintf("title=%s", videoInfo.Title),
+ "-metadata", fmt.Sprintf("comment=%s", videoInfo.Description),
tf.Name(),
); err != nil {
err := fmt.Errorf("error transcoding video: %w", err)