aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--backend.go7
-rw-r--r--localBackend.go2
-rw-r--r--player.go10
-rw-r--r--spotify.go2
-rw-r--r--upload.go6
-rw-r--r--wrms.go2
-rw-r--r--youtube.go2
8 files changed, 25 insertions, 8 deletions
diff --git a/TODO b/TODO
index 1568877..d44392a 100644
--- a/TODO
+++ b/TODO
@@ -13,7 +13,7 @@
- [ ] distinguish different search queries
- [X] Implement local storage backend
- [X] Implement upload
- - [ ] Remove uploaded songs after were played
+ - [X] Remove uploaded songs after they were played
- [X] Fix youtube search
## Configuration
diff --git a/backend.go b/backend.go
index 9cb42f8..0d82e7f 100644
--- a/backend.go
+++ b/backend.go
@@ -8,15 +8,14 @@ import (
type Backend interface {
Play(song *Song, player *Player)
Search(keyword string) []Song
+ OnSongFinished(song *Song)
}
type DummyBackend struct{}
-func (dummy *DummyBackend) Play(song *Song, player *Player) {
-}
-
+func (dummy *DummyBackend) Play(song *Song, player *Player) {}
+func (dummy *DummyBackend) OnSongFinished(song *Song) {}
func (dummy *DummyBackend) Search(keyword string) []Song {
-
s := NewDummySong("Dummy Mc Crashtest", "exactly "+keyword)
return []Song{s}
}
diff --git a/localBackend.go b/localBackend.go
index 98b8bdd..ead1dc9 100644
--- a/localBackend.go
+++ b/localBackend.go
@@ -45,6 +45,8 @@ func NewLocalBackend(musicDir string) *LocalBackend {
return &b
}
+func (_ *LocalBackend) OnSongFinished(*Song) {}
+
func (b *LocalBackend) insert(songs []*Song) {
llog.Debug("Inserting %d songs into local DB", len(songs))
tx, err := b.db.Begin()
diff --git a/player.go b/player.go
index f608260..2be55c9 100644
--- a/player.go
+++ b/player.go
@@ -66,11 +66,15 @@ func (player *Player) runMpv() {
llog.Fatal(err.Error())
}
+ wrms := player.wrms
+
llog.Info("mpv finished. Resetting mpv, the current song and call play")
player.mpv = nil
- player.wrms.Playing = false
- player.wrms.CurrentSong.Uri = ""
- player.wrms.PlayPause()
+ wrms.Playing = false
+
+ player.Backends[wrms.CurrentSong.Source].OnSongFinished(&wrms.CurrentSong)
+ wrms.CurrentSong.Uri = ""
+ wrms.PlayPause()
}
func (player *Player) PlayUri(uri string) {
diff --git a/spotify.go b/spotify.go
index c07bad9..8a32fc6 100644
--- a/spotify.go
+++ b/spotify.go
@@ -49,6 +49,8 @@ func NewSpotify() (*SpotifyBackend, error) {
return &spotify, nil
}
+func (_ *SpotifyBackend) OnSongFinished(*Song) {}
+
func (spotify *SpotifyBackend) Play(song *Song, player *Player) {
trackID := song.Uri
session := spotify.session
diff --git a/upload.go b/upload.go
index d7bbd20..ce11462 100644
--- a/upload.go
+++ b/upload.go
@@ -74,6 +74,12 @@ func (b *UploadBackend) setupUploadRoute() {
http.HandleFunc("/upload", b.upload)
}
+func (b *UploadBackend) OnSongFinished(song *Song) {
+ songPath := path.Join(b.uploadDir, song.Uri)
+ llog.Debug("Removing finished song %s", songPath)
+ os.Remove(songPath)
+}
+
func (b *UploadBackend) Play(song *Song, player *Player) {
player.PlayUri("file://" + path.Join(b.uploadDir, song.Uri))
}
diff --git a/wrms.go b/wrms.go
index 22cd62a..cf2e20c 100644
--- a/wrms.go
+++ b/wrms.go
@@ -113,6 +113,8 @@ func (wrms *Wrms) AddSong(song Song) {
}
func (wrms *Wrms) Next() {
+ llog.DDebug("Next Song")
+
next := wrms.queue.PopSong()
if next == nil {
wrms.CurrentSong.Uri = ""
diff --git a/youtube.go b/youtube.go
index cec4162..3b9efbe 100644
--- a/youtube.go
+++ b/youtube.go
@@ -16,6 +16,8 @@ func NewYoutubeBackend() *YoutubeBackend {
return &YoutubeBackend{10}
}
+func (_ *YoutubeBackend) OnSongFinished(*Song) {}
+
func (_ *YoutubeBackend) Play(song *Song, player *Player) {
player.PlayUri("https://youtube.com/watch?v=" + song.Uri)
}