From 7c256fd58f898519a769ec7fbce7901b783d5579 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Mon, 23 Oct 2017 16:52:21 -0700 Subject: [PATCH] Handle YouTube URLs in format watch?v=XXX&list=YYY --- pkg/feeds/url.go | 3 ++- pkg/feeds/url_test.go | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/feeds/url.go b/pkg/feeds/url.go index 81b0bd4..e30fdb3 100644 --- a/pkg/feeds/url.go +++ b/pkg/feeds/url.go @@ -54,7 +54,8 @@ func parseYoutubeURL(parsed *url.URL) (kind api.LinkType, id string, err error) path := parsed.EscapedPath() // https://www.youtube.com/playlist?list=PLCB9F975ECF01953C - if strings.HasPrefix(path, "/playlist") { + // https://www.youtube.com/watch?v=rbCbho7aLYw&list=PLMpEfaKcGjpWEgNtdnsvLX6LzQL0UC0EM + if strings.HasPrefix(path, "/playlist") || strings.HasPrefix(path, "/watch") { kind = api.Playlist id = parsed.Query().Get("list") diff --git a/pkg/feeds/url_test.go b/pkg/feeds/url_test.go index fb6fc6a..d5ed00c 100644 --- a/pkg/feeds/url_test.go +++ b/pkg/feeds/url_test.go @@ -14,6 +14,12 @@ func TestParseYoutubeURL_Playlist(t *testing.T) { require.NoError(t, err) require.Equal(t, api.Playlist, kind) require.Equal(t, "PLCB9F975ECF01953C", id) + + link, _ = url.ParseRequestURI("https://www.youtube.com/watch?v=rbCbho7aLYw&list=PLMpEfaKcGjpWEgNtdnsvLX6LzQL0UC0EM") + kind, id, err = parseYoutubeURL(link) + require.NoError(t, err) + require.Equal(t, api.Playlist, kind) + require.Equal(t, "PLMpEfaKcGjpWEgNtdnsvLX6LzQL0UC0EM", id) } func TestParseYoutubeURL_Channel(t *testing.T) {