From 7ef97ee6db2e90f08f6eb33c7e7f2a138436980f Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Fri, 24 Jan 2025 09:33:49 +0100 Subject: [PATCH] offer common youtube playlists as feed --- src/content/scraper/finder.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/content/scraper/finder.go b/src/content/scraper/finder.go index fa1a9af..70b31c1 100644 --- a/src/content/scraper/finder.go +++ b/src/content/scraper/finder.go @@ -1,6 +1,7 @@ package scraper import ( + "net/url" "strings" "github.com/nkanaev/yarr/src/content/htmlutil" @@ -35,6 +36,18 @@ func FindFeeds(body string, base string) map[string]string { link := htmlutil.AbsoluteUrl(href, base) if link != "" { candidates[link] = name + + l, err := url.Parse(link) + if err == nil && l.Host == "www.youtube.com" && l.Path == "/feeds/videos.xml" { + // https://wiki.archiveteam.org/index.php/YouTube/Technical_details#Playlists + channelID, found := strings.CutPrefix(l.Query().Get("channel_id"), "UC") + if found { + const url string = "https://www.youtube.com/feeds/videos.xml?playlist_id=" + candidates[url + "UULF" + channelID] = name + " - Videos" + candidates[url + "UULV" + channelID] = name + " - Live Streams" + candidates[url + "UUSH" + channelID] = name + " - Short videos" + } + } } }