diff options
Diffstat (limited to 'importers/youtube_importer.go')
| -rw-r--r-- | importers/youtube_importer.go | 37 |
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 +} |
