前言提要
前一篇整合Youtube的筆記說到使用「YoutubeExplode」套件。本來運作都沒問題,用了幾天後發現開始抓不到資料,一直噴 403 Error。
查了一下好像是 Youtube 覺得你是爬蟲所以把你的請求擋下來。
試著在 Request Header 裡補上 Cookie 資訊以及瀏覽器資訊,看能不能繞過 Youtube 的檢查,但是測完都無效,哭啊。
新的解法
使用「yt-dlp」。這是一個用 Python 寫的工具,它對 YouTube 的簽章破解非常快。
首先到這裡下載「yt-dlp.exe」。
整合進Unity
因為是呼叫 yt-dlp.exe 來取得影片 URL,這裡其實跟 Unity 已經沒啥關係,只是我的介面都用 Unity 做,就還是以 Unity 的視角來整合它。
將下載好的 yt-dlp.exe 放進 Unity 專案的 Assets/StreamingAssets 資料夾中,這樣打包成 .exe 執行檔後,路徑才不會跑掉。
然後就呼叫它並傳入需要的參數。
它會回傳一個 Json,就是程式中的 jsonOutput。內容就是這支影片的所有資訊,長得像這樣:
我只需要部份欄位,像是影片的標題、影片URL、影片ID等資訊,把 json 的內容填進定義好的結構裡面。
定義的結構長這樣,要注意的是欄位名稱要和 json 裡面的命名一樣才行,不能自己亂改。
最終結果
403 錯誤 bye bye,又可以播放 Youtube 影片了,可喜可賀!希望不要再有問題啦,Youtube求放過。






沒有留言:
張貼留言