任何 YouTube 頻道變成 RSS 的規則範例

例如

可以得到

JavaScript Code

  • https://www.youtube.com/channel/xxxx 畫面下,使用:
    javascript:function copy(s) { var clip_area = document.createElement('textarea'); clip_area.textContent = s; document.body.appendChild(clip_area); clip_area.select(); document.execCommand('copy'); clip_area.remove(); } var regex_playlist = /https?:\/\/www.youtube.com\/([^\/\&]{1,})(&|\?)(p|list|playlist_id)=([^\/&]{1,})(.*)/gi; if(regex_playlist.test(document.location.href)){ var playlist_id = document.location.href.replace(regex_playlist,'$4'); copy('https://www.youtube.com/feeds/videos.xml?playlist_id=' + playlist_id); console.log('播放清單 RSS https://www.youtube.com/feeds/videos.xml?playlist_id=' + playlist_id); console.log('輪播的 embed target url = ' + 'https://www.youtube.com/embed/videoseries?list=' + playlist_id + '&index=0&loop=1&autoplay=1'); console.log('輪播 embed url 等同於 ' + 'https://www.youtube.com/embed/?listType=playlist&list=' + playlist_id + '&index=0&loop=1&autoplay=1'); }else{ var channel_id = ''; if(window["ytInitialData"].metadata!==undefined){ var channel_id = window["ytInitialData"].metadata.channelMetadataRenderer.externalId; document.location.href.replace(regex,'$1'); }else{ var regex = /https?:\/\/www.youtube.com\/channel\/([^\/]{1,})(\/.*|.*$)/gi; if(regex.test(document.location.href)){ channel_id = document.location.href.replace(regex,'$1'); } } if(channel_id!=''){ copy('https://www.youtube.com/feeds/videos.xml?channel_id=' + channel_id); console.log('頻道 RSS = https://www.youtube.com/feeds/videos.xml?channel_id=' + channel_id); console.log('整個頻道視為一個播放清單的 RSS https://www.youtube.com/feeds/videos.xml?playlist_id=' + channel_id.replace('UC','UU')); console.log('輪播的 embed target url = ' + 'https://www.youtube.com/embed/videoseries?list=' + channel_id.replace('UC','UU') + '&index=0&loop=1&autoplay=1'); console.log('輪播 embed url 等同於 ' + 'https://www.youtube.com/embed/?listType=playlist&list=' + channel_id.replace('UC','UU') + '&index=0&loop=1&autoplay=1'); }else{ if(/^https?:\/\/(.*\.youtube\.com\/watch\?v\=|youtu\.be\/)([^&|^?]*)($|\&.*$|\?.*$)/gi.test(document.location.href)){/*window.prompt('',*/copy(`<iframe width="560" height="315" src="` + document.location.href.replace(/^https?:\/\/(.*\.youtube\.com\/watch\?v\=|youtu\.be\/)([^&|^?]*)($|\&.*$|\?.*$)/gi,'https://www.youtube.com/embed/$2') + `" frameborder="0" allowfullscreen></iframe>`);} } }

技巧

  • 每個 YouTube 裡面的原始碼都會有一段
    <link rel="canonical" href="https://www.youtube.com/channel/UC開頭的">
    • 直接搜尋
      canonical" href="https

      可以快速找到 UC 開頭的 YouTube 頻道 ID

      • 以此範例來說,
        UCXXHhxHgPj_QXAqLxrepC4g

        寫成播放清單的時候會變成 playlist_id=UUXXHhxHgPj_QXAqLxrepC4g,
        實際上就是把 UC 開頭取代成UU 開頭。

這個技巧的使用時機

  • 基本上 YouTube 大致上有兩種
    • 一種是網址列上面有 user,尚未變成 Google 品牌帳號 來管理的個人頻道。
      • 嚴格來說推薦全都弄成品牌帳號,多人共管共編、權責分明。
    • 另一種網址列本身已帶有 channel
  • 而我們發現的 RSS 相關規則都針對 channel 之下,UC 開頭的那串 ID 來組合使用。
    所以需要這個技巧,把 user 網址裡面實際的頻道 ID 找出來。
    • 當然這是手動的方式,也可能有其他自動化的方式2)可以達成一樣查詢頻道 ID 的目的。

其他

  • 在更早之前,每個 YouTube 頁面的原始碼都可以觀察到,都有設定標準的 RSS 寫法。
    但最近陸續一些頁面已經沒有這個部分。
    所以相關當時觀察下來的使用規則,特別在這裡做記錄與說明。
    • 當然這種方式的 RSS 組合寫法,不確定可以用到什麼時候。
      • 但至少這兩年觀察下來是都沒有任何要收掉的變化或預兆。
        基本上如有 RSS YouTube 需求,還是推薦使用。
      • 最確認存活可用時間點為 2019/07/22 18:44(GMT+8
1)
Chrome + F12 並選擇「console」就可以看 console.log
2)
YouTube API?

QR Code
QR Code 工具:youtuberss (對當前頁面產生)