aboutsummaryrefslogtreecommitdiff
path: root/youtube.go
diff options
context:
space:
mode:
Diffstat (limited to 'youtube.go')
-rw-r--r--youtube.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/youtube.go b/youtube.go
new file mode 100644
index 0000000..a3f92d7
--- /dev/null
+++ b/youtube.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "fmt"
+ "github.com/AnjanaMadu/YTSearch"
+ "log"
+)
+
+type YoutubeBackend struct{}
+
+func (youtube *YoutubeBackend) Play(song *Song, player *Player) {
+ player.PlayUri("https://youtube.com/watch?v=" + song.Uri)
+}
+
+func (youtube *YoutubeBackend) Search(pattern string) []Song {
+ results, err := ytsearch.Search(pattern)
+ if err != nil {
+ log.Fatal("Youtube search failed with", err)
+ }
+
+ songs := []Song{}
+ for i, result := range results {
+ if i == 10 {
+ break
+ }
+
+ if result.VideoId == "" {
+ continue
+ }
+
+ songs = append(songs, NewSong(result.Title, "", "youtube", result.VideoId))
+ }
+
+ log.Println(fmt.Sprintf("youtube found %d matching videos", len(songs)))
+ return songs
+}