diff options
author | Mark Powers <mark@marks.kitchen> | 2021-10-02 13:36:55 -0500 |
---|---|---|
committer | Mark Powers <mark@marks.kitchen> | 2021-10-02 13:36:55 -0500 |
commit | 7893fec24273571ba0d7f3cf9950b66641bf210c (patch) | |
tree | c78df61028d814e2bbb437b90ac393989f0208ec /bridges/youtube.js | |
parent | a1fbc4ac46e1c41d8c4522ae2b7af402ba0515f7 (diff) |
Refactor bridges
Diffstat (limited to 'bridges/youtube.js')
-rw-r--r-- | bridges/youtube.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bridges/youtube.js b/bridges/youtube.js new file mode 100644 index 0000000..202873b --- /dev/null +++ b/bridges/youtube.js @@ -0,0 +1,63 @@ +function get_native_playlist_feed(playlistId){ + return `https://www.youtube.com/feeds/videos.xml?playlist_id=${playlistId}` +} + +function get_native_channel_feed(channelId){ + return `https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}` +} + +async function get_youtube() { + let url = window.location.href; + + let patternVideo = /youtube.com\/watch\?v=[A-z0-9-_]+/ + let matchVideo = url.match(patternVideo) + + let patternUser = /youtube.com\/user\/[A-z0-9-_]+.*/ + let matchUser = url.match(patternUser) + + let patternChannel = /youtube.com\/channel\/[A-z0-9-_]+.*/ + let matchChannel = url.match(patternChannel) + + let patternPlaylist = /youtube.com\/playlist\?list=[A-z0-9-_]+.*/ + let matchPlaylist = url.match(patternPlaylist) + + if (matchVideo) { + let channel_url = document.querySelector("[role='main'] #channel-name a")["href"] + let matchChannel2 = channel_url.match(patternChannel) + let channelId = matchChannel2[1] + let feed_url = `${base_url}/?action=display&bridge=Youtube&context=By+channel+id&c=${channelId}&duration_min=&duration_max=&format=` + let native_url = get_native_channel_feed(channelId) + let feeds = get_all_types(feed_url, "channel").concat([{ type: `native (channel): Rss`, url: native_url }]) + + let patternListInVideo = /youtube.com\/watch\?v=\w+\&list=(\w+)/ + let matchListInVideo = url.match(patternListInVideo) + if(matchListInVideo){ + let playlistId = matchListInVideo[1] + let playlist_feed_url = `${base_url}/?action=display&bridge=Youtube&context=By+playlist+Id&p=${playlistId}&duration_min=&duration_max=&format=` + let native_url = get_native_playlist_feed(playlistId) + let rb_feeds = get_all_types(playlist_feed_url, "playlist") + feeds = feeds.concat(rb_feeds.concat([{ type: `native (playlist): Rss`, url: native_url }])) + } + + return feeds + } + if (matchUser) { + let user = matchUser[1]; + let feed_url = `${base_url}/?action=display&bridge=Youtube&context=By+username&u=${user}&duration_min=&duration_max=&format=` + return get_all_types(feed_url) + } + if (matchChannel) { + let channelId = matchChannel[1] + let feed_url = `${base_url}/?action=display&bridge=Youtube&context=By+channel+id&c=${channelId}&duration_min=&duration_max=&format=` + return get_all_types(feed_url) + } + if (matchPlaylist) { + let playlistId = matchPlaylist[1] + let native_url = get_native_playlist_feed(playlistId) + let feed_url = `${base_url}/?action=display&bridge=Youtube&context=By+playlist+Id&p=${playlistId}&duration_min=&duration_max=&format=` + let rb_feeds = get_all_types(feed_url) + return rb_feeds.concat([{ type: `native: Rss`, url: native_url }]) + } + return [] +} + |