TVerRec は、動画配信サイト TVer ( ティーバー https://tver.jp/ ) の動画を録画保存するためのダウンローダー、ダウンロード支援ツールです。
- Windows/MacOS/Linux で動作します。
- 必要なツールは自動的にダウンロードされますが、うまくいかない場合は以下から取得してください。
- youtube-dl-pathed [https://github.com/ytdl-patched/ytdl-patched/releases]
- ffmpeg [https://www.ffmpeg.org/download.html]
- TVer のリニューアルによりフリーワード検索の精度が大幅に下がっていますので、できればタレント ID 指定、番組 ID 指定で録画したほうが確実です。
- 同様にジャンル指定の精度も大幅に下がっているようですのでご注意ください。
- 動画のジャンルや出演タレント、番組名などのキーワード指定して一括ダウンロードします。
- CM は入っていないため気に入った番組を配信終了を気にすることなくいつまでも保存しておくことができます。
- TVerRec はループ実行するようになっているので、1 回起動すれば新しい番組が配信される都度自動でダウンロード、録画、保存されるようになります。
- TVer の全録画が可能です。
- ちまちま URL をコピペしたり画面録画する必要はなく、起動して放置するだけの全自動録画です。控えめに言って最高です。
- TVer の動画サムネイルを動画ファイルに埋め込みます。
- 字幕データが TVer にある場合は、字幕情報も動画に埋め込みます。
- 並列ダウンロードによる高速ダウンロードが可能です。(デフォルト設定で 5 ファイル同時ダウンロード、1 ファイルあたり 10 並列ダウンロード、合計最大 50 並列ダウンロード)
- もちろん動画を1 本ずつ指定したダウンロードも可能です。
- なかには全録なんかしてられねーよ、という方もいらっしゃることでしょう。安心してください。
- 動画の URL を指定することでダウンロードしたい動画を 1 本ずつ指定することも可能です。
- また、ダウンロード保存した動画が正常に再生できるかどうか動画が壊れていないかの検証も行います。
- もし動画ファイルが壊れている場合には自動的に再ダウンロードします。
- 動画の検証時に ffmpeg を使用しますが、ハードウェアアクセラレーションを使えば、CPU 使用率を抑えることができます。(使用する PC での性能によっては処理時間が長くなることがあります。その場合はハードウェアアクセラレーションを無効化できます)
- ダウンロードされたファイルは、最終保存先に自動的に整理可能です。
- 例えば毎週同じ番組をダウンロードする場合、最終保存先に番組名のフォルダがあれば自動的に全番組が最終保存先のフォルダに移動されます。
- 最終保存先に同名のフォルダがなければ、動画ファイルは保存先フォルダに残り続けます。
- 動作に必要な youtube-dl や ffmpeg などの必要コンポーネントは自動的に最新版がダウンロードされます。(ffmpeg の自動ダウンロードは Windows のみ)
- 日本国外からも VPN 不要で利用することができます。
conf/keyword.conf
をテキストエディターで開いてダウンロード対象のタレントや番組、ジャンル、TV 局などを設定します
- 不要なキーワードは
#
でコメントアウトするか削除してください。 - 主なジャンルは網羅しているつもりですが、不足があるかもしれませんので、必要に応じて適宜自分で補ってください。
- ダウンロード対象の指定の方法はいくつかありますが、現在のところ 1 と 2 が確実にダウンロードする方法です。3 ~ 10 は TVer の検索機能が改善されるまで動画を取りこぼす可能性や不要な動画がダウンロードされる可能性があります。
- 番組 ID を指定
- 番組 ID を指定します
- 番組 ID は、TVer で番組ページを検索した際の URL に含まれる「series/srxxxxxxxx」です
- タレント ID を指定
- タレント ID を指定します
- タレント ID は、TVer でタレントページを検索した際の URL に含まれる「talents/txxxxxx」です
- トップページを指定
- TVer のトップページに表示される動画を可能な限りダウンロードします
- TVer のトップページに表示されている動画がシリーズ物の場合、シリーズの動画すべてをダウンロードしようとします
- ジャンルを指定
- ジャンルを指定します
- 指定可能な曜日は
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- ランキングを指定
- ランキングを指定します
- 指定可能なランキングは
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- 特集を指定
- TVer の特集を指定します
- 指定可能な特集は
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- 地域限定番組を指定
- 地域を指定します
- 指定可能な地域は
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- テレビ局を指定
- テレビ局を指定します
- 指定可能なテレビ局は
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- 放送曜日を指定
- 放送曜日を指定します
- 指定可能な曜日は
conf/keyword.conf
に記載されています(バージョンアップとともに変化する可能性があります)
- 番組名を指定
- 番組名のみにヒットするフリーワード検索です
- 「title/ちびまる子ちゃん」のように指定します
- フリーワード検索
- 上記のいずれにも該当しない番組をフリーワードで指定できますが、検索結果の精度は TVer のみぞ知るところです
- 番組名だけでなくタレント名なども検索の対象になるようですが、詳細な検索対象は不明です
conf/ignore.conf
をテキストエディターで開いて、ダウンロードしたくない番組名を設定します。
- ダウンロード条件にマッチする動画は全てダウンロードされるので、場合によってはダウンロードしたくない番組もまとめてダウンロードされます。そのような時には個別にダウンロード対象外に指定できます。
ユーザ設定はconf/user_setting.ps1
をテキストエディターで開いて行ってください。
-
$script:downloadBaseDir
には動画をダウンロードするフォルダを設定します。 -
$script:downloadWorkDir
には動画をダウンロードするさいにできる中間ファイルを格納するフォルダを設定します。 -
$script:saveBaseDir
にはダウンロードした動画を移動する先のフォルダを設定します。- ここで設定したフォルダ配下(再帰的にチェックします)にあるフォルダと
$script:downloadBaseDir
にあるフォルダが一致する場合、動画ファイルが$script:downloadBaseDir
から$script:saveBaseDir
配下の各フォルダ配下に移動されます。同名のファイルがある場合は上書きされます。
- ここで設定したフォルダ配下(再帰的にチェックします)にあるフォルダと
-
$script:parallelDownloadFileNum
は同時に並行でダウンロードする動画の数を設定します。 -
$script:parallelDownloadNumPerFile
はそれぞれの動画をダウンロードする際の並行ダウンロード数を設定します。- つまり、
$script:parallelDownloadFileNum
×$script:parallelDownloadNumPerFile
が実質的な最大同時ダウンロード数になります。
- つまり、
-
$script:sortVideoByMedia
は放送局(テレビ局)ごとのフォルダを作って動画をダウンロードするかを設定します。-
$false
の場合の保存先は以下のようになりますダウンロード先\ └動画シリーズ名 動画シーズン名\ └動画シリーズ名 動画シーズン名 放送日 動画タイトル名.mp4
-
$true
の際の保存先は以下のようになりますダウンロード先\ └放送局\ └動画シリーズ名 動画シーズン名\ └動画シリーズ名 動画シーズン名 放送日 動画タイトル名.mp4
-
-
$script:windowShowStyle
には youtube-dl のウィンドウをどのように表示するかを設定します。Normal
/Maximized
/Minimized
/Hidden
の 4 つが指定可能です。- 初期値は
Hidden
でダウンロードウィンドウは非表示となりますが、Normal
等に設定することでダウンロードの進捗を確認することができます。
-
$script:forceSoftwareDecodeFlag
に$true
を設定すると、動画検証時にハードウェアアクセラレーションを使わなくなります。- 高速な CPU が搭載されている場合はハードウェアアクセラレーションよりも CPU で処理したほうが処理が早い場合があります。
-
$script:ffmpegDecodeOption
に直接 ffmpeg のオプションを記載することで動画検証時にハードウェアアクセラレーションを有効化できます。- 例えば Intel CPU を搭載した一般的な PC であれば、
'-hwaccel qsv -c:v h264_qsv'
を設定することで、CPU 内蔵のアクセラレータを使って CPU 負荷を下げつつ高速に処理することが可能です。 - この設定は
$script:forceSoftwareDecodeFlag
が$true
に設定されていると無効化されます。
- 例えば Intel CPU を搭載した一般的な PC であれば、
-
動画検証の高速化オプションとして、他にも以下の 2 つがあります。
$script:simplifiedValidation
は検証を簡素化するかどうかを設定します。$false
(初期値)を設定すると、ffmpeg をつかって動画の検証を行います。PC の性能にもよりますが動画の長さの数分の 1 から数倍の時間がかかりますが、検証精度は非常に高いです。(全フレームがデコードできるか確認している模様)$true
を設定することで、ffmpeg による動画の完全検証ではなく、ffprobe による簡易検証に切り替えます。動画 1 本あたり数秒で検証が完了しますが、検証精度は低いです。(おそらくメタデータの検査だけの模様)
$script:disableValidation
は検証を行わなくするかどうかを設定します。$true
を設定することで、動画の検証を完全に止めることができます。
-
TVerRec の特徴の 1 つでもある youtube-dl と ffmpeg の自動アップデートですが、ツール配布元の不具合等により自動アップデートがうまく動作しない場合には無効化することが可能です。
$script:disableUpdateYoutubedl
に$true
を設定すると youtube-dl の自動アップデートが無効化されます。$script:disableUpdateFfmpeg
に$true
を設定すると ffmpeg の自動アップデートが無効化されます。
より細かく設定を変更したい場合はconf/system_setting.ps1
をテキストエディターで開いてシステム設定を行ってください。(通常は必要ありません)
$script:appVersion
はアプリケーションのバージョンです。- ここを変えても表示が変わるだけで機能が変わるわけではありません。
- 現時点ではバージョン表記をする以外には使われておりません。
$VerbosePreference
や$DebugPreference
を設定することで、より詳細な情報が画面に出力されます。- 設定可能な値は Google してください。PowerShell の設定がそのまま使えます。
$script:fileNameLengthMax
は OS やファイルシステムが許容するファイル名の最大長をバイト指定で記載します。- 一般的な Windows 環境では特に変更する必要はありません。
- ここで指定した長さを超えるファイル名が生成されそうになると、ファイル名が収まるように自動的にファイル名が短縮されます。
- なので、あまり深い階層を保存先に指定すると頻繁にファイル名が短縮されたり、エラーとなることがあります。
$script:binDir
、$script:dbDir
は各種フォルダの設定です。- ソースファイルから見た際の相対パス指定となるようにしてください。
$script:keywordFilePath
、$script:ignoreFilePath
はそれぞれダウンロード対象キーワードとダウンロード対象外番組を設定するファイルの名前です。$script:listFilePath
はダウンロードの未済管理をするファイルの名前です。$script:ffpmegErrorLogPath
は動画のチェックをする際にエラーを一時的に出力するファイルのパスです。- 初期値では
$script:listFilePath
と同じ場所に出力するようになっています。(が、処理が終われば自動的に削除されます)
- 初期値では
$script:ytdlPath
と$script:ffmpegPath
はそれぞれ youtube-dl と ffmpeg の実行ファイルの配置場所を指定しています。- ソースファイルから見た際の相対パス指定となるようにしてください。
- TVer のカテゴリ毎のページを指定して
win/start_tverrec.bat
で起動すれば、新しい番組が配信されたら自動的にダウンロードされるようになります。 - 同様に、フォローしているタレントや番組名を指定して
win/start_tverrec.bat
で起動すれば、新しい番組が配信されたら自動的にダウンロードされるようになります。 - 同様に、各放送局毎のページを指定して
win/start_tverrec.bat
で起動すれば、新しい番組が配信されたら自動的にダウンロードされるようになります。 - 動画ファイルの検証に時間がかかる場合、複数の PC で同時に検証を行うことで複数の動画を並行して検証できるため、検証時間を短縮できます。 そのためには、ダウンロード先などの各フォルダを共有フォルダにして同時に複数の PC からアクセスできるようにする必要があります。
Windows10 と Windows11 で動作確認しています。 おそらく Windows7、8、8.1 でも動作するような気もしますが、手元に環境がないのでサポートできません。 Windows PowerShell 5.1 と PowerShell Core 7.2 の双方で動作しています。おそらくそれ以外の Version でも動作するように思います。
PowerShell は MacOS、Linux にも移植されてるので動作します。 MacOS でも PowerShell をインストールし動作確認をしています。 (参考) 一応、PowerShell 7.2 をインストールした Raspberry Pi OS で簡易に動作確認をしていますが、性能的に Raspberry Pi 4 じゃないと厳しそうです。 (参考)
以下の手順でバッチファイルを実行してください。
- TVerRec をダウロードして任意のディレクトリで解凍してください。
- または、
git clone
してください。ただし、リリース版ではないため不具合が含まれている可能性があります。
- または、
- 環境設定方法、ダウンロード対象の設定方法、ダウンロード対象外の番組の設定方法を参照して環境設定、ダウンロード設定を行ってください。
- Windows 環境では
win/start_tverrec.bat
を実行してください。- 処理が完了しても 10 分ごとに永遠にループして稼働し続けます。
- 上記で PowerShell が起動しない場合は、PowerShell の実行ポリシーの RemoteSigned などに変更する必要があるかもしれません。 (参考)
- Linux や MacOS も基本的に同じ使い方ですが、以下の章を参照してください。
- TVerRec を
win/start_tverrec.bat
で起動した場合は、win/stop_tverrec.bat
で TVerRec を停止できます。- 関連するダウンロード処理もすべて強制停止されるので注意してください。
- ダウンロードを止めたくない場合は、tverec のウィンドウを閉じるボタンで閉じてください。
- TVerRec を
win/start_tverrec.bat
で実行している各ツールを個別に起動するために、win/a.download_video.bat
/win/b.delete_trash.bat
/win/c.validate_video.bat
/win/d.move_video.bat
を使うこともできます。それぞれ、動画のダウンロドード、無視した動画やダウンロード中断時のゴミファイルの削除、ダウンロードした動画の検証、検証した動画の保存先への移動を行います。(win/start_tverrec.bat
はこれらを自動的に、且つ無限に実行します) - 動画を 1 本ずつダウンロードしたい場合は
win/z.download_single_video.bat
を実行し、動画の URL を 1 本ずつ指定してください。win/b.validate.bat
を実行するとダウンロードできていないファイルがある場合(正確にはダウンロードしたビデオファイルが破損している場合)に、ダウンロード済みリストからダウンロード履歴を削除するので、再度ダウンロードできるようになります。win/b.delete_video.sh
を実行するとダウンロードが中断してしまった際のゴミファイルなどの掃除ができるので、定期的に実行するとディスク容量を節約できます。win/d.move_video.sh
を実行すると、動画を最終保存先に移動することも可能です。
ffmpeg
とyoutube-dl
をbin
ディレクトリに配置するか、シンボリックリンクを貼ってください。- または、
conf/system_setting.ps1
に相対パス指定でffmpeg
とyoutube-dl
のパスを記述してください。
- または、
- 上記説明の
win/*.bat
はunix/*.sh
に読み替えて実行してください。
フォルダ構成は以下のようになっています。
TVerRec/
├─ bin/ .................................. 実行ファイル格納用フォルダ (初期状態は空)
│
├─ conf/ ................................. 設定
│ ├─ ignore.conf .......................... ダウンロード対象外設定ファイル
│ ├─ keyword.conf ......................... ダウンロード対象ジャンル設定ファイル
│ ├─ system_setting.ps1 ................... システム設定ファイル
│ └─ user_setting.ps1 ..................... ユーザ設定ファイル
│
├─ db/ ................................... データベース
│ ├─ tver-blank.csv ....................... 空のダウンロードリスト
│ ├─ tver.csv ............................. ダウンロードリスト (初回起動時に作成されます)
│ ├─ tver.lock ............................ 複数インスタンス起動時の排他制御用ファイル
│ └─ ffmpeg_error.log...................... ffmpegのエラーログ (処理中に作成され、自動的に削除されます)
│
├─ img/ .................................. 画像
│ ├─ TVerRec (Large).png .................. アプリロゴ (デカいやつ)
│ ├─ TVerRec-Square (Large).png ........... トースト通知用アプリロゴ (デカいやつ)
│ ├─ TVerRec.png .......................... アプリロゴ
│ └─ TVerRec-Square.png ................... トースト通知用アプリロゴ
│
├─ lib/ .................................. ライブラリ
│ └─ win .................................. Windows用ライブラリ
│ ├─ common .............................. 共通ライブラリ用
│ ├─ core ................................ PowerShell Core用 (配下のファイルは省略)
│ └─ desktop ............................. Windows PowerShell用フォルダ (配下のファイルは省略)
│
├─ src/ .................................. 各種ソース
│ ├─ functions/ ........................... 各種共通関数
│ │ ├─ common_functions.ps1 ............. 共通関数定義
│ │ ├─ tver_functions.ps1 ............... TVer用共通関数定義
│ │ ├─ update_ffmpeg.ps1 ................ ffmpeg自動更新ツール
│ │ └─ update_ytdl-patched.ps1 .......... ytdl-patched自動更新ツール
│ ├─ delete_trash.ps1 ..................... ダウンロード対象外ビデオ削除ツール
│ ├─ move_vide.ps1 ........................ ビデオを保存先に移動するツール
│ ├─ tverrec_bulk.ps1 ..................... 一括ダウンロードツール本体
│ ├─ tverrec_single.ps1 ................... 単体ダウンロードツール
│ └─ validate_video.ps1 ................... ダウンロード済みビデオの整合性チェックツール
│
├─ unix/ ................................. Linux/Mac用シェルスクリプト
│ ├─ a.download_video.sh .................. 一括ダウンロードするシェルスクリプト
│ ├─ b.delete_video.sh .................... ダウンロード対象外ビデオ・中間ファイル削除シェルスクリプト
│ ├─ c.validate_video.sh .................. ダウンロード済みビデオの整合性チェックシェルスクリプト
│ ├─ d.move_video.sh ...................... ビデオを保存先に移動するシェルスクリプト(もし必要であれば)
│ ├─ z.download_single_video.sh ........... ビデオを1本ずつダウンロードするシェルスクリプト
│ ├─ start_tverrec.sh ..................... 無限一括ダウンロード起動シェルスクリプト
│ └─ stop_tverrec.sh ...................... 無限一括ダウンロード終了シェルスクリプト
│
├─ win/ .................................. Windows用BATファイル
│ ├─ a.download_video.bat ................. 一括ダウンロードするBAT
│ ├─ b.delete_video.bat ................... ダウンロード対象外ビデオ・中間ファイル削除BAT
│ ├─ c.validate_video.bat ................. ダウンロード済みビデオの整合性チェックBAT
│ ├─ d.move_video.bat ..................... ビデオを保存先に移動するBAT(もし必要であれば)
│ ├─ z.download_single_video.bat .......... ビデオを1本ずつダウンロードするBAT
│ ├─ start_tverrec.bat .................... 無限一括ダウンロード起動BAT
│ └─ stop_tverrec.bat ..................... 無限一括ダウンロード終了BAT
│
├─ CHANGELOG.md ............................. 変更履歴
├─ LICENSE .................................. ライセンス
├─ README.md ................................ このファイル
├─ TODO.md .................................. 今後の改善予定のリスト
└─ VERSION .................................. バージョン表記用ファイル
- レジストリとかめんどくさいものは一切使っていないでの、不要になったらゴミ箱に捨てれば良いです。
- 著作権
- このプログラムの著作権は dongaba が保有しています。
- 免責
- このソフトウェアを使用して発生したいかなる損害にも、作者は責任を負わないものとします。各自の自己責任で使用してください。
- TVerRec はThe MIT Licenseに基づき、複製や再配布、改変が許可されます。
Copyright (c) dongaba. All rights reserved.