summaryrefslogtreecommitdiff
path: root/importers/youtube_importer.go
diff options
context:
space:
mode:
Diffstat (limited to 'importers/youtube_importer.go')
-rw-r--r--importers/youtube_importer.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/importers/youtube_importer.go b/importers/youtube_importer.go
new file mode 100644
index 0000000..5702b05
--- /dev/null
+++ b/importers/youtube_importer.go
@@ -0,0 +1,37 @@
+package importers
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/rylio/ytdl"
+)
+
+type YoutubeImporter struct{}
+
+func (i *YoutubeImporter) GetVideoInfo(url string) (videoInfo VideoInfo, err error) {
+ if strings.HasPrefix(url, "youtube:") {
+ url = strings.TrimPrefix(url, "youtube:")
+ }
+
+ info, err := ytdl.GetVideoInfo(url)
+ if err != nil {
+ err = fmt.Errorf("error retriving youtube video info: %w", err)
+ return
+ }
+
+ videoURL, err := ytdl.DefaultClient.GetDownloadURL(info, info.Formats[0])
+ if err != nil {
+ err = fmt.Errorf("error retriving youtube video url: %w", err)
+ return
+ }
+ videoInfo.VideoURL = videoURL.String()
+
+ videoInfo.ThumbnailURL = info.GetThumbnailURL(ytdl.ThumbnailQualityHigh).String()
+
+ videoInfo.ID = info.ID
+ videoInfo.Title = info.Title
+ videoInfo.Description = info.Description
+
+ return
+}