YouTubeのプレイリストやチャンネルに登録されている動画をまとめて保存し、新着動画も自動的にダウンロードしてくれるオープンソースソフトプロジェクトがTubeSyncです。

meeb/tubesync: Syncs YouTube channels and playlists to a locally hosted media server

https://github.com/meeb/tubesync

今回はWindows環境を前提にしDockerとGit for WindowsのGit Bashを使用しました。作業フォルダに移動し「tubesync-config」と「tubesync-downloads」の2つのフォルダを作成します。


mkdir tubesync-config
mkdir tubesync-downloads


続いてdocker-compose.yamlファイルを新規で用意。

vi docker-compose.yaml


内容は、以下の通りです。


services:
tubesync:
image: ghcr.io/meeb/tubesync:latest
container_name: tubesync
restart: unless-stopped
stop_grace_period: 30m
ports:
- 4848:4848
volumes:
- ./tubesync-config:/config
- ./tubesync-downloads:/downloads
environment:
- TZ=Asia/Tokyo
- PUID=1000
- PGID=1000


保存したら「docker compose up -d」で起動します。

docker compose up -d


コンテナがダウンロードされTubeSyncが起動しました。



ブラウザを立ち上げ「localhost:4848」にアクセスするとダッシュボードが表示されます。



同期する元になるYouTubeをソースとして追加するため「ADD A SOURCE」をクリック。



さらに「ADD SOURCE」をクリックして進みます。



チャンネルURL・チャンネルIDのURL・プレイリストのURLのいずれかを記入して「ADD SOURCE」をクリックで設定画面に移動。



ダウンロードする動画の条件・保存形式・更新の頻度などを設定し「ADD SOURCE +」をクリックして保存します。



ソースが追加されました。



自動的にタスクが追加されるので「Tasks」をクリック。



インデックスの作成とダウンロードのスケジュールが登録済みとなっていました。10分後にタスクが始まるのでしばらく待ちます。



30分後にダッシュボードを確認すると10個のアイテムが登録されており1本のダウンロードが完了していました。



さらに2時間後、確認すると6本分のダウンロードが行われていたので「Media」から動画の一覧へ移動します。



ダウンロード済みの動画のサムネイルが表示されています。動画をクリックすると…



専用の動画プレイヤー画面で再生されました。



なお、取得した動画はJellyfinやPlexなどメディアサーバーと連携して配信することも可能です。