2021年3月12日 星期五

[Python] 關於youtube-dl

最近想要下載整批的youtube影片, 有些是教學系列, 有些是電影戲劇, 用了一些工具程式, 總有些不太方便, 有的似乎因為youtube網頁有多種形式, 也不是每種都能使用, 研究了一些 youtube-dl 的使用方法, 配合python, 然後寫了一個暴力抽取 url 的函數, 用來抽取 youtube 網頁的影片來源, 雖然可能重複抽取, 不過因為 youtube-dl 會自動判斷是否已經下載, 所以也還算可以用. 完整程式碼在這裡, 有幾種功能:

  • 單一檔案下載: 呼叫 download_video(download_url, destFileFolder), 給影片來源 download_url 及儲存目錄 destFileFolde , 例如 main() 裡面的這行:
download_video("https://www.youtube.com/watch?v=Nzi3UNVRlNs", "E:\\書劍恩仇錄"'")
  • 網頁 playlist 下載: 先呼叫 find_all_videos(playlist_url), 給 playlist 的 url, 然後呼叫 download_playlist(playlist, destFileFolder), 把剛剛的 playlist 傳進去, 指定儲存目錄 destFileFolde , 例如 main() 裡面的這兩行: 
 playlist=find_all_videos("https://www.youtube.com/playlist?list=PLayweIoGTMC74ltVU53kDrtl_NCx4NN0)

 download_playlist(playlist, "E:\\Movie")
  • 檔案 playlist 下載: 先呼叫 read_playlist_file(filename) 取得 playlist, 然後呼叫 download_playlist(playlist, destFileFolder), 把剛剛的 playlist 傳進去, 指定儲存目錄 destFileFolder , 例如 main() 裡面的這兩行: 
 playlist=read_playlist_file("E:\\playlist.txt")

 download_playlist(playlist, "E:\\Movie") #playlist
  • 多個 playlist 下載: 先設定 playlist_queue, 每筆 playlist 包含destFileFolder及網頁playlist_url及 然後呼叫 download_queue(playlist_queue), 例如 main() 裡面的這兩行:
    playlist_queue=[
        ['G:\\吕不韦传奇', "https://www.youtube.com/playlist?list=PLb8LXNQ3GVIEcYbpkBvHRTGkGXnCs1y4l"],
        ['G:\\七劍下天山', "https://www.youtube.com/playlist?list=PLb8LXNQ3GVIED2K6iNPAREKNtneaUCGdc"],
        ['G:\\糊涂县令郑板桥', "https://www.youtube.com/playlist?list=PLSIJismKOisGZclPziO56RdJAaK0UIMgK"],
        ['G:\\天师钟馗', "https://www.youtube.com/playlist?list=PLSIJismKOisGwADtH8x59_ZJDLBE3HS63"],
        ['H:\\流星蝴蝶剑', "https://www.youtube.com/playlist?list=PLSIJismKOisGiS6PkRAHJa0rZ_YL06en8"],
        ['H:\\天涯明月刀', "https://www.youtube.com/playlist?list=PLSIJismKOisEBVlfiBTMpKD4GdD03ZPui"],
    ]
download_queue(playlist_queue)
  • 整個目錄檔案改名:下載後可能需要改名, 須自行修改 rename(destFileFolder)

 


沒有留言:

張貼留言