Skip to content

Commit

Permalink
Support local paths as urls in playlists.
Browse files Browse the repository at this point in the history
  • Loading branch information
caiocotts authored and deluan committed Aug 3, 2021
1 parent bcafe88 commit e9d0abe
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
5 changes: 5 additions & 0 deletions scanner/playlist_sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"bytes"
"context"
"fmt"
"net/url"
"os"
"path/filepath"
"strings"
Expand Down Expand Up @@ -82,6 +83,10 @@ func (s *playlistSync) parsePlaylist(ctx context.Context, playlistFile string, b
if strings.HasPrefix(path, "#") {
continue
}
if strings.HasPrefix(path, "file://") {
path = strings.TrimPrefix(path, "file://")
path, _ = url.QueryUnescape(path)
}
if !filepath.IsAbs(path) {
path = filepath.Join(baseDir, path)
}
Expand Down
9 changes: 9 additions & 0 deletions scanner/playlist_sync_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ var _ = Describe("playlistSync", func() {
})

It("parses well-formed playlists", func() {
pls, err := ps.parsePlaylist(ctx, "playlists/pls1.m3u", "tests/fixtures")
Expect(err).To(BeNil())
Expect(pls.Tracks).To(HaveLen(3))
Expect(pls.Tracks[0].Path).To(Equal("tests/fixtures/test.mp3"))
Expect(pls.Tracks[1].Path).To(Equal("tests/fixtures/test.ogg"))
Expect(pls.Tracks[2].Path).To(Equal("/tests/fixtures/01 Invisible (RED) Edit Version.mp3"))
})

It("parses playlists using LF ending", func() {
pls, err := ps.parsePlaylist(ctx, "lf-ended.m3u", "tests/fixtures/playlists")
Expect(err).To(BeNil())
Expect(pls.Tracks).To(HaveLen(2))
Expand Down
3 changes: 3 additions & 0 deletions tests/fixtures/playlists/pls1.m3u
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
test.mp3
test.ogg
file:///tests/fixtures/01%20Invisible%20(RED)%20Edit%20Version.mp3

0 comments on commit e9d0abe

Please sign in to comment.