テレビ録画メディアサーバー構築入門(第15回)
違法にアップロードされたものと知りながらダウンロードする行為は私的利用であっても著作権法で罰せられます。
第13回にて、新しいライブラリとして「映画」をメディアサーバーに追加しました。今回はテレビ録画とは関係ありませんが、メディアサーバーつながりということで、「ダウンロード」を新ライブラリとして追加します。文字通り、ネット上に公開されている動画をダウンロードして、メディアコレクションに加えます。ダウンロード視聴の最大のメリットとして、視聴中に挿入されるCM宣伝から解放されます。
ここでは、ダウンロードした動画を、他のメディアコンテンツと同じように視聴管理するのが目的です。多種多様なコンテンツを、一箇所で、統一的に、自分なりの流儀で管理する便利さは、個人サーバーならではのメリットです。
metubeインストール
コンテンツは HOME ~/ 直下の downloadsディレクトリに保存することにします。ダウンロード支援ツール metube をインストールする。
cd
mkdir -p downloads
sudo docker run -d -p 8081:8081 -v ./downloads:/downloads --restart=unless-stopped ghcr.io/alexta69/metube管理画面はポート8081から:http://100.x.y.z:8081
使い方は 「Enter video or playlist URL」に動画またはプレイリストのURLをコピペ入力して「Download」クリック。
スマホからの場合、動画のURLは「共有」からコピペ取得できるので、むしろ簡単にダウンロード登録できます(ダウンロードはバックグラウンドで進行)。
Jellyfin再起動
cd
sudo docker stop jellyfin
sudo docker rm jellyfin
sudo docker rmi jellyfin/jellyfin
sudo docker run -d --name jellyfin --user 1000:1000 --net=host --volume ./jellyfin/config:/config --volume ./jellyfin/cache:/cache --mount type=bind,source=./media,target=/media --mount type=bind,source=./movies,target=/movies --mount type=bind,source=./downloads,target=/downloads --restart=unless-stopped --volume /usr/share/fonts:/usr/share/fonts --volume /usr/share/fontconfig:/usr/share/fontconfig jellyfin/jellyfin:10.10.7(2025/11/7追記: 末尾にバージョン10.10.7を追加。Jellyfinは10/19に最新安定版10.11.0がリリースされた。大型アップデートのため、最新版に更新すると、バックアップなしでは、旧版には戻せない(新規インストールが必要となる)。基本機能が安定するまでは、10.10.7の使用を推奨します。)
「ダウンロード」ライブラリを設定
jellyfinサーバーが起動したら、クライエント(http://100.x.y.z:8096)から「ダウンロード」ライブラリを新規設定する。
「ダッシュボード」の「ライブラリ」から「ライブラリ」を選択し、「メディアライブラリーを追加」
コンテンツタイプ:TV番組と映画を混ぜる
表示名:ダウンロード
フォルダ:「+」より /downloads を選択
メタデータはすべてオフにします。第7回、第13回で説明のとおり、外部データベースからのメタデーター取得は失敗する可能性が大きいためです。
イメージを取得は「Screen Grabber」「Embedded Image Extractor」のみチェック。
ブラウザ拡張機能
chromeやfirefox等のブラウザでは、拡張機能(プラグイン)が便利です。プラグインの設定にて上記url (http://100.x.y.z:8081)を登録すれば、動画サイトにアクセスした状態で、ツールバーの"Send to MeTube"アイコンをクリックするだけでダウンロード登録されます(ダウンロードはバックグラウンドで進行)。
注意点
metubeダウンローダの本体はyt-dlpで、metubeはインターフェースに過ぎません。バックエンドのyt-dlpはアプデ頻度が高い。アップデートは
cd
sudo docker stop metube
sudo docker rm -f metube
sudo docker rmi -f ghcr.io/alexta69/metube
sudo docker pull ghcr.io/alexta69/metube
sudo docker run --name metube -d -p 8081:8081 -v ./downloads:/downloads --restart=unless-stopped ghcr.io/alexta69/metube場合によっては、コンテナに入って、最新版に手動アプデ:
sudo docker exec -ti metube sh
python3 -m pip install -U --pre "yt-dlp[default]"
yt-dlp --versionここでcd /downloadで保存フォルダに移動して、手動 yt-dlpでエラーが出ていないかをみるのが、うまくいかないときに確認すべきポイントになります。配信サイト側の仕様変更が、ダウンローダの不具合の最大要因です。
配信元によってはダウンロードを規約で禁じています。わたしは経験ありませんが、サーバーに過度に負荷をかける行為(短時間に大量のダウンロード)は規制対象になるはずです。yt-dlpについては、note.com内に限っても、多くの記事があります。
追記:「ダウンロード」ライブラリを使わない
録画の時代は終わった?
近年、コンテンツの視聴形態は、配信プラットフォームを通じて提供されるものが主流となってきています。
もともとは、録画に失敗したような、緊急避難的な場合に、無料動画配信TVerを利用してきました。が、ちょくちょく使っていると、ライブラリの切り替えが面倒に感じてきました。
一括して「番組」ライブラリで視聴するには、手動でファイルを(downloadsからmediaに) 移動すればよいのですが、これも面倒なので、フォルダを監視して、mp4だけ自動で移動することにします。以下、 $HOME/work/mvjf.sh は第7回参照。
takya@fearow22:~$ crontab -l |grep move_mp4
*/5 * * * * $HOME/move_mp4.sh >> $HOME/work/encode.log 2>&1takya@fearow22:~$ cat move_mp4.sh
#!/usr/bin/bash
# ソースディレクトリとターゲットディレクトリ
source_dir="$HOME/downloads"
target_dir="$HOME/media/"
# MP4ファイルを検索して移動
find "$source_dir" -maxdepth 1 -type f -name "*.mp4" | while read -r file; do
# ファイルが使用中かどうかをチェック
if lsof "$file" > /dev/null 2>&1; then
echo "スキップ: '$file' は使用中です"
else
$HOME/work/mvjf.sh "$file" "$target_dir"
echo "moved from $source_dir"
fi
done「番組」にまとめることで、データベース連携(第12回)が使えるようになります。ただし、欠点として、ダウンロードしたものがすべて「番組」に放り込まれます。視聴対象が投稿動画メインならば「番組」にまとめるメリットは薄い。



コメント