先說結論:
mpv –no-video “$(yt-dlp -g ‘https://www.e-classical.com.tw/index.html’ | grep m3u8 )” &
只要執行以上這一行命令,便可以免開瀏覽器,直接暢聽「台北愛樂電台」的音樂。
台北愛樂電台一直是我很重要的精神食糧之一。
目前該網站的設計是要使用者打開該網站,並且按「播放」鍵,才能播放音樂。
而我,真心不想為了聽音樂,而特地在瀏覽器上多開一個分頁,一方面除了節省硬體資源外,二方面是情感上,想要把他變成「純粹的背景音樂」。
幾經研究,發現只要解決以下關鍵問題:
- 找到並抓下播放清單
- 找到該網站隨機生成「Token」以及「有效時間」
目前有些網站,為了避免取巧的使用者,或是網路攻擊,所以會隨機生成「Token」以及「有效時間」,所以只要找到,便可以了!
關於以上所提問題,只要利用瀏覽器本身內建的「開發者工具」中,其中的「網路」分頁 ,便可以看到所需要的資訊:
假設抓到的值是: https://eclassicalradiow-hichannel.cdn.hinet.net/live/RA000018/chunklist.m3u8?token=79RE-JhyvukCJ9rFY6dkjw&expires=1750425396 ,這時再加上可以播放網路串流的播放器,例如 dragon(KDE), mpv, vlc, 便可以立即播放出來。
例如:
mpv “https://eclassicalradiow-hichannel.cdn.hinet.net/live/RA000018/chunklist.m3u8?token=79RE-JhyvukCJ9rFY6dkjw&expires=1750425396”
可以直接播放,方便是很方便,但是在其他機器上執行,或是音樂播放的有效期間到了,音樂就會無法播放。
而且,若每次都要透過瀏覽器的開發者工具去抓,那真的沒有必要與意義。
要解決這個問題,「yt-dlp」這個工具可以幫忙解決!
只要執行:yt-dlp -g “https://www.e-classical.com.tw/index.html” | grep m3u8 ,便可以抓到需要的資訊了。
yt-dlp -g :-g 是 –get-url 的縮寫,取得實際串流媒體檔案的 URL,不下載影片/音訊本體。
這個指令會告訴 yt-dlp:「請不要下載,只告訴我這個影片或音訊背後的 真實串流網址 是什麼。」
目前有許多網站(像 YouTube、Twitch、某些廣播電台)表面上看不到影音檔案的實際位置,yt-dlp 則可以:
- JavaScript 分析
- Token/Session 模擬
- 自動解密 m3u8 或 dash 串流
- 支援 cookies、登入驗證等等
這行指令,若再與播放器(例如:mpv)結合使用,便可以完美播放了:
mpv “$(yt-dlp -g ‘https://www.e-classical.com.tw/index.html’ | grep m3u8 )”
又以 mpv 來說,只要聽音樂,不要影片,而且背景執行,那改一下:
mpv –no-video “$(yt-dlp -g ‘https://www.e-classical.com.tw/index.html’ | grep m3u8 )” &
這樣就能播放到地老天荒了!
題外話
但若是想聽「台中 Classical FM97.7 古典音樂台」,利用以上方法,可以得知他的串流網址為: https://onair.family977.com.tw:8977/live.mp3 。
因此只要: mpv –no-video https://onair.family977.com.tw:8977/live.mp3 & 便可以直接播放了。