最近在看YouTube時廣告的頻率越來越多了,而且有將近一半的廣告都是訂閱YouTube Premium,但是看到那個價錢(每月179元),還是下不了手….
直到兩天前,筆者看到了這篇 跨區至印度購買Youtube Premium 只要台幣13元,便毫不猶豫地選擇訂閱了家庭版。
YouTube Premium不只是去廣告功能而已,還包含了YouTube Music以及原創影集YouTube Originals,想要詳細了解免費版與付費版差異請點這個YouTube Music、YouTube Premium 在台上線!功能和價格方案一次看懂。
筆者最近幾年使用的音樂串流服務軟體是MixerBox,優點是免費,缺點是無法背景播放,所以筆者想要轉移到YouTube Music ,但是由於累積幾年的播放清單兩百多首歌,一首一首在YouTube Music 上重新搜尋未免太費時間,所以就打算寫一個小程式來解決這個問題。
以下是開發過程簡述,若是想直接使用的話,請直接點選連結
mixerbox_2_youtube
注意:程式碼是python 開發,須有一定的程式基礎
— — —這是華麗的分隔線 — — —
首先使用MixerBox 手機APP打開左上角的齒輪設定,點選匯出歌單,並將匯出的檔案傳到電腦裡面
再來我們可以觀察這個匯出的檔案
[{“key”:”my_playlist”,”content”:[{“name”:”RAP”,”content”:[“9_TD5sqZX1U”,”tctVcE_r6f4",”ghQuR0-E8qE”,”9eePusClQTY”,”qJchJNgQLfg”,”H73M3AR_2Is”,”DnpUTSCE7Ag”,”7KQvPyZk7Lc”]}]}]
發現這個檔案基本上是JSON格式構成,key的my_playlist是所有的歌單,name是歌單名稱,而content裡面的亂碼則是youtube網址列後面的參數
https://www.youtube.com/watch?v=M3mJkSqZbX4
那接下來思路就很清楚了,只需要這個參數搭配爬蟲,就能夠爬下來這個首歌的名稱,再藉由tunemymusic這個匯入歌曲的網站,就可以匯入歌單到YouTube Music了。
事不遲疑,我們先開一個python 檔案,並引入需要的套件
接下來就是就是讀取MixerBox匯出的檔案
接下來找到key = ‘my_playlist’,裡面的content 才是所有的歌單,並把歌單名稱抓出來
再來是抓出歌單裡面的亂碼,跟youtube的URL組合起來,形成完整的網址
再來就是利用pyquery 爬取這個完整網址的歌曲名稱
實際嘗試爬取的時候,發現有的時候會有一些歌曲名稱無法爬取,而且每次嘗試的時候無法爬取的歌都是隨機的,個人猜測是因為網頁的載入速度不同導致,所以加入重複爬取的機制,避免此問題
接下來就可以把歌曲名稱寫入txt檔案啦
當程式跑完之後,會在同目錄下生成數個檔案名為歌單名稱的TXT檔案,接下來只要開啟tunemymusic,點選上傳文件
剩下的只要一路點選下一步就好了,要注意的是,點選目的地的時候不要點選YouTube Music ,請點選YouTube。
再來就是靜靜地等他跑完就大功告成了XD
完整程式碼: 點我