pytube等でダウンロードを試みたのですが、解像度が低いものしか落とせなかったりして上手く動作しなかったのでを利用したダウンロードするPythonプログラムを作成しました。
以下の手順に沿ってダウンロードするプログラムの準備し、以下Pythonコードを実行してください。
yt-dlp.exe&FFmpegをダウンロード

以上のようなボタンが二つのリンク先にあるのでダウンロードしてください。
配置するフォルダを決める

以上のようにエクスプローラーで落としてきたファイルを一つのフォルダにまとめます。
「動画ダウンロード.py」は以下のコードを貼り付けます。
ダウンロードするメインのpythonコード
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import subprocess
def get_video_data(channel_url):
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)
driver.get(channel_url + '/streams') # ライブ配信のページにアクセス
time.sleep(5) # ページのロードを待つために数秒待機
video_elements = driver.find_elements(By.CSS_SELECTOR, "#contents.ytd-rich-grid-row a#thumbnail.inline-block.style-scope")
video_titles = driver.find_elements(By.CSS_SELECTOR, "#video-title")
video_data = [(elem.get_attribute('href'), title.text) for elem, title in zip(video_elements, video_titles)]
driver.quit()
return video_data
def download_videos(channel_url, download_folder, ytdlp_path):
if not os.path.exists(download_folder):
os.makedirs(download_folder)
video_data = get_video_data(channel_url)
print(video_data)
for url, title in video_data:
video_path = os.path.join(download_folder, f"{title}.mp4")
if os.path.exists(video_path):
print(f"Skipping {title}, already downloaded.")
continue
command = [ytdlp_path, url, "-o", video_path]
subprocess.run(command, check=True)
print(f"Downloaded {title}")
# 使用例
channel_url = 'https://www.youtube.com/???????????' # チャンネルのURLを指定 適宜編集してください
download_folder = r'C:\VIDEO\??????????' # ダウンロード先のフォルダを指定 適宜編集してください
ytdlp_path = os.path.join(os.path.dirname(__file__), "yt-dlp.exe") # yt-dlpのパスを指定 適宜編集してください
download_videos(channel_url, download_folder, ytdlp_path)
コメント