下载 Youtube 清单影片
这篇文章会介绍使用 Python 的 pytube 第三方函数库,读取 Youtube 清单内容,并将清单里的所有影片下载为 mp4。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
安装 pytube
输入下列指令,安装 pytube ( 根据个人环境使用 pip、pip3 )
!pip install pytube
注意,原本 pytube 可以正常使用,但因为 Youtube API 更新安全性原则,所以原本程序码都需要加入下面这段 ssl,不然就会抛出错误消息:
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
读取 Youtube 清单信息
参考“pytube - Using Playlists”说明,使用 pytube 读取 Youtube 清单网址后,就能将该影片清单的所有影片网址,输出成为串列。
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from pytube import Playlist
playlist = Playlist('https://www.youtube.com/watch?v=mOPRaLPh-YU&list=PL9ACDjBMkp9wViVmgpYweGkNqh62pHspF')
# 讀取影片清單
print(playlist.video_urls) # 印出清單結果
'''
['https://www.youtube.com/watch?v=mOPRaLPh-YU',
'https://www.youtube.com/watch?v=wARhTJH1fJI',
'https://www.youtube.com/watch?v=WLjePGUCRqc']
'''
下载 Youtube 清单中所有影片为 mp4
参考“下载 Youtube 影片 ( mp4、mp3、字幕 )”文章,读取到影片清单中所有影片网址后,透过 for 循环,就能将所有影片下载为 mp4。
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from pytube import Playlist, YouTube
playlist = Playlist('https://www.youtube.com/watch?v=mOPRaLPh-YU&list=PL9ACDjBMkp9wViVmgpYweGkNqh62pHspF')
print('download...')
for i in playlist.video_urls:
print(i)
yt = YouTube(i) # 讀取影片
yt.streams.filter().get_highest_resolution().download() # 下載為最高畫質影片
print('ok!')
如果有出现“pytube.exceptions.AgeRestrictedError:XXXXXXXXX is age restricted, and can't be accessed without logging in.”的错误情况,这可能是 pytube 的 bug 造成,参考“stackoverflow”的解决方法,在开头加上下面这段程序码就能解决。
from pytube.innertube import _default_clients
_default_clients["ANDROID_MUSIC"] = _default_clients["ANDROID_CREATOR"]
参考数据
微信扫码关注
抖音扫码关注