愛上R語言

[R語言應用] 利用R語言把YouTube影片下載成mp3

youtube截圖-唯一
Home » R語言教學 » R語言應用 » [R語言應用] 利用R語言把YouTube影片下載成mp3

你有沒有想把 YouTube 的影片檔案轉成 mp3,下載到電腦裡面,但又覺得每個手動去貼網址很麻煩?這篇文章告訴你解決方法。


可能很多人都有買 kkbox 或是 spotify,小貧窮如我到現在還是都復古地下載 mp3 檔案,例如到 YouTube 找好聽的歌或是不錯的現場,再把他們轉成 mp3 存到手機裡聽歌,你有這樣的需求,但覺得一個一個慢慢轉很累人嗎?

我整理了在R語言當中,如何把YouTube影片下載成mp3,讓你不用慢慢貼網址,能夠大量快速地下載 YouTube 影片。

R語言中PDF相關套件介紹

在R語言中,如果想要把 YouTube 影片轉成 mp3,你需要使用lares這個套件。

怎麼利用R語言下載YouTube影片

安裝必要套件

安裝好lares之後,你還要另外安裝GitHub上的專案youtube-dl,不過,要怎麼安裝呢?你可以直接到它的專案頁面,依照指示安裝,也可以先不管它,直接在R裡面使用get_mp3()函數,當R發現你並沒有安裝youtube-dl時,就會給你對應的指令請你在terminal執行,到時候照做就可以了。

執行程式碼

我們以「馬斯克接受CNBC專訪討論台灣中國前景」的影片為例,來看怎麼下載 mp3。

library(lares)

get_mp3("https://www.youtube.com/watch?v=TO0J2Yw7usM&ab_channel=CBSNews")

如果一切順利,上述影片就會變成 mp3,跑到你的資料夾中。

出現錯誤怎麼辦

有些人可能會在執行上述程式碼後,遇到錯誤訊息,寫著。

Removing cache dir /Users/你的用戶名稱/.cache/youtube-dl ..
[youtube] u5TzzzfLoTU: Downloading webpage
ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

這是什麼意思呢?仔細研讀可以發現,裡面提到「確保你使用的是最新版本」,但我們分明才剛下載新的版本,問題到底出在哪裡?

查看專案在GitHub的回報頁面,可以看到有許多人都反映過此問題,關鍵出在YouTube官方修改了某個元資料(metadata),導致 youtube-dl 遇上這個問題。

具體解決方法就是安裝更新版的程式,但因為 youtube-dl 還沒有發布新版本(new release),你要安裝一個開發中的版本,就像我們有時候不會直接從 CRAN 安裝新的 R 套件,而是從 GitHub 上安裝一樣,因為相關更新可能太微小,不足以構成一個新版本,或者開發者單純還沒時間提交審查等原因。

另一個簡單的解決方法是安裝yt-dlp,根據專案介紹,它的本質和
youtube-dl 無異,是一個延伸擴充的版本。

這讓我想到尚雯婕、張震嶽、張楚共同翻唱告五人的唯一,有一句歌詞提到「愛本質無異 是因為人多得擁擠」,跟你分享這首歌。

那麼,要怎麼安裝呢?我們可以到 terminal 安裝,打底下這兩行就可以囉!你可以執行電腦本身預先載入的 terminal,或是用 RStudio 下方 console 旁邊也有 terminal。

sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp  # Make executable

安裝好yt-dlp之後,你就可以下載剛剛那支影片了。

get_mp3("https://www.youtube.com/watch?v=TO0J2Yw7usM&ab_channel=CBSNews", repo = "yt-dlp")

使用R語言大量下載YouTube影片的方法

我們可以寫一個迴圈,下載好多影片,這個流程非常簡單。我底下寫出大概的流程給你參考。

# 讀取有 youtube url 的檔案,你用 txt 或者 googlesheet 都可以
df <- read_csv("data/youtube-url.csv")
url <- df$url
for (i in 1:length(url)) {
  get_mp3(url[i], repo = "yt-dlp")
  message("完成了第 ", i, "支影片的下載,可喜可賀!")
  Sys.sleep(3)
}

將資料表中的 url 欄位儲存到向量 url 中,接著利用迴圈逐一下載每一個 url 對應的檔案,就大功告成啦!

小結

這篇文章,介紹了如何在R語言裡面下載 YouTube 影片,產出 mp3 檔案的流程,可以下載音樂,也能下載演講的內容。希望像這種生活化的R語言應用,對你有幫助,也希望你喜歡這篇文章。

Exit mobile version