過去幾個月發現 YouTube RSS 很不穩定,有時能撈到資料,有時返回 4xx、5xx 錯誤。但因為一段時間或隔天又正常了,也就沒當一回事。直到最近連續幾天都抓不到資料,查了一下果真國外網友早就反應這件事,可搜尋「youtube rss 404」可看到一堆災情,或參考這個 reddit 討論串:
問了 AI 結論大致是:YouTube 可能不再維護 RSS,也許直接縮減訪問流量,或是任流量超過伺服器負荷後報錯,等過段時間才恢復流量,才會出現時好時壞的狀況。總之,YouTube RSS 已經不再是可信任的資料取得管道。
經研究後,本片會提供以下 YouTube RSS 的替代方案:
- 使用 YouTube Data API 取得資料(需要耗費 quota 配額)
- 將資料存在 Google Sheet(試算表)成為自製 RSS 來源
- 使用 yt-dlp 取得資料(不需要耗費 quota 配額)
一、原始官方 YT RSS 網址
1. YT RSS 網址格式 過去 YouTube 官方提供了 RSS 連結,網址格式如下:- 使用 YT 頻道(Channel) ID:https://www.youtube.com/feeds/videos.xml?channel_id=填入頻道 ID
- 使用播放清單(Playlist) ID:https://www.youtube.com/feeds/videos.xml?playlist_id=填入播放清單 ID
https://www.youtube.com/channel/UCoLrcjPV5PbUrUyXq5mjc_A
在字串 https://www.youtube.com/@MLB
此時要如何取得「頻道 ID」呢?以下提供最簡單的步驟:
- 滑鼠按右鍵 → 檢視網頁原始碼
- 勾選「自動換行」,搜尋起來看得比較清楚
- 搜尋字串 "externalId" → 後面的字串 "UCxxxxxxxxx" 就是「頻道 ID」
二、各種 YT 播放清單 ID 格式
1. 標準播放清單 ID 這是一個標準的 YT 播放清單網址:https://www.youtube.com/playlist?list=PLL-lmlkrmJal2ned-dCINmltnpbnc7KvG
在網址字串 "list=" 之後,"PL" 開頭的完整字串,就是標準的 YT 「播放清單 ID」格式:
PLL-lmlkrmJal2ned-dCINmltnpbnc7KvG
2. 各種播放清單 ID
YouTube 還有各種隱藏的播放清單格式,由系統自動產生。當我們取得 YouTube「頻道 ID」後,可以變化出各種播放清單 ID,下面使用 MLB 頻道 ID "UCoLrcjPV5PbUrUyXq5mjc_A" 進行舉例說明:
- 所有上傳影片:
- 開頭 "UC" 字串改為 "UU" → UUoLrcjPV5PbUrUyXq5mjc_A
- 所有長片:
- 開頭 "UC" 字串改為 "UULF" → UULFoLrcjPV5PbUrUyXq5mjc_A
- 所有短片:
- 開頭 "UC" 字串改為 "UUSH" → UUSHoLrcjPV5PbUrUyXq5mjc_A
- 所有直播影片:
- 開頭 "UC" 字串改為 "UULV" → UULVoLrcjPV5PbUrUyXq5mjc_A
- 所有熱門影片:
- 開頭 "UC" 字串改為 "UULP" → UULPoLrcjPV5PbUrUyXq5mjc_A
- 所有熱門短片:
- 開頭 "UC" 字串改為 "UUPS" → UUPSoLrcjPV5PbUrUyXq5mjc_A
- 所有熱門直播:
- 開頭 "UC" 字串改為 "UUPV" → UUPVoLrcjPV5PbUrUyXq5mjc_A
三、操作 YT Data API 取得資料
操作 YouTube Data API 是取得 YT 播放清單資料最保險的方法,資料最即時(RSS 資料更新慢),有每日額度(quota)限制,不過對於個人使用的話應該不成問題。 1. 準備動作 使用 YouTube Data API 的準備動作不少:- 需要在「Google Cloud」建立過專案
- 接著啟用 YouTube Data API
- 同時要申請 API 金鑰
https://youtube.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=25&playlistId=UUoLrcjPV5PbUrUyXq5mjc_A&key=[填入 API 金鑰]
以上參數簡單說明:
- part:參數 snippet 代表取得摘要資訊
- maxResults:最多取得幾筆資料,若沒設定則最多 50 筆
- playlistId:填入播放清單 ID
- key:填入前面申請的 API 金鑰
https://youtube.googleapis.com/youtube/v3/videos?part=snippet,liveStreamingDetails&id=5WpMyA0Xj6Y,LXVz7JC1rD0&key=[填入 API 金鑰]
以上參數簡單說明:
- part:參數使用 snippet 及 liveStreamingDetails,除了基本摘要,還可取得影片的直播相關資料
- id:
- 填入所有要查詢的影片 ID,每個 ID 之間用小寫逗號 "," 隔開
- 一次查詢最多可填入 50 個影片 ID
- key:填入前面申請的 API 金鑰
四、將 Google 試算表作為 RSS 資料庫
如果需要反覆存取 YT 播放清單資料,一直使用 YouTube Data API 可能會導致超過每日額度,此時可將定期取得的資料儲存到 Google 試算表當作 RSS 使用,直接存取 Google 試算表將不會耗費 YouTube API 額度。 存取 Google Sheet 試算表資料庫的方法過去我寫了不少教學,可參考以下文章:五、操作 yt-dlp 取得資料
除了官方 API,還有一個免費開源的工具 yt-dlp 可取得播放清單資料,還不需要耗費額度,不過因為主題比較大,會另寫一篇教學說明。更多 YouTube 相關文章:
沒有留言:
張貼留言注意事項:
◎ 勾選「通知我」可收到後續回覆的mail!
◎ 請在相關文章留言,與文章無關的主題可至「Blogger 社團」提問。
◎ 請避免使用 Safari 瀏覽器,否則無法登入 Google 帳號留言(只能匿名留言)!
◎ 提問若無法提供足夠的資訊供判斷,可能會被無視。建議先參考這篇「Blogger 提問技巧及注意事項」。
◎ CSS 相關問題非免費諮詢,建議使用「Chrome 開發人員工具」尋找答案。
◎ 手機版相關問題請參考「Blogger 行動版範本的特質」→「三、行動版範本不一定能執行網頁版工具」;或參考「Blogger 行動版範本修改技巧 」,或本站 Blogger 行動版標籤相關文章。
◎ 非官方範本問題、或貴站為商業網站,請參考「Blogger 免費諮詢 + 付費諮詢」
◎ 若是使用官方 RWD 範本,請參考「Blogger 推出全新自適應 RWD 官方範本及佈景主題」→ 不建議對範本進行修改!
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 為了過濾垃圾留言,所有留言不會即時發佈,請稍待片刻。
◎ 本站「已關閉自刪留言功能」。