sagan / TVerRec

TVerRecは、動画配信サイトTVerの動画を録画保存するためのダウンローダー、ダウンロードツールです。 動画のジャンルや出演タレント、番組名などのキーワード指定して一括ダウンロードします。 CMは入っていないため気に入った番組を配信終了を気にすることなくいつまでも残しておくことができます。 1回起動すれば新しい番組が配信される都度ダウンロードされるようになります。 つまりTVerの全録が可能です。ちまちまURLをコピペしたり画面録画する必要はなく、起動して放置するだけです。控えめに言って最高です。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

📺TVerRec📺 - TVer 一括ダウンロード・保存・録画 -

Logo

GitHub release License CodeFactor Codacy Badge DevSkim PSScriptAnalyzer
TVerRec Launched Video Processed Video Downloaded Video Validated

TVerRec は、動画配信サイト TVer ( ティーバー https://tver.jp/ ) の動画を録画保存するためのダウンローダー、ダウンロード支援ツールです。

  • Windows/MacOS/Linux で動作します。
  • 必要なツールは自動的にダウンロードされますが、うまくいかない場合は以下から取得してください。
  • TVer のリニューアルによりフリーワード検索の精度が大幅に下がっていますので、できればタレント ID 指定、番組 ID 指定で録画したほうが確実です。
  • 同様にジャンル指定の精度も大幅に下がっているようですのでご注意ください。

ざっくり以下のようなことができます

  1. 動画のジャンル出演タレント番組名などのキーワード指定して一括ダウンロードします。
    • CM は入っていないため気に入った番組を配信終了を気にすることなくいつまでも保存しておくことができます。
    • TVerRec はループ実行するようになっているので、1 回起動すれば新しい番組が配信される都度自動でダウンロード、録画、保存されるようになります。
  2. TVer の全録画が可能です。
    • ちまちま URL をコピペしたり画面録画する必要はなく、起動して放置するだけの全自動録画です。控えめに言って最高です。
  3. TVer の動画サムネイルを動画ファイルに埋め込みます。
  4. 字幕データが TVer にある場合は、字幕情報も動画に埋め込みます。
  5. 並列ダウンロードによる高速ダウンロードが可能です。(デフォルト設定で 5 ファイル同時ダウンロード、1 ファイルあたり 10 並列ダウンロード、合計最大 50 並列ダウンロード)
  6. もちろん動画を1 本ずつ指定したダウンロードも可能です。
    • なかには全録なんかしてられねーよ、という方もいらっしゃることでしょう。安心してください。
    • 動画の URL を指定することでダウンロードしたい動画を 1 本ずつ指定することも可能です。
  7. また、ダウンロード保存した動画が正常に再生できるかどうか動画が壊れていないかの検証も行います。
    • もし動画ファイルが壊れている場合には自動的に再ダウンロードします。
    • 動画の検証時に ffmpeg を使用しますが、ハードウェアアクセラレーションを使えば、CPU 使用率を抑えることができます。(使用する PC での性能によっては処理時間が長くなることがあります。その場合はハードウェアアクセラレーションを無効化できます)
  8. ダウンロードされたファイルは、最終保存先に自動的に整理可能です。
    • 例えば毎週同じ番組をダウンロードする場合、最終保存先に番組名のフォルダがあれば自動的に全番組が最終保存先のフォルダに移動されます。
    • 最終保存先に同名のフォルダがなければ、動画ファイルは保存先フォルダに残り続けます。
  9. 動作に必要な youtube-dl や ffmpeg などの必要コンポーネントは自動的に最新版がダウンロードされます。(ffmpeg の自動ダウンロードは Windows のみ)
  10. 日本国外からも VPN 不要で利用することができます。

ダウンロード対象番組の設定方法

conf/keyword.confをテキストエディターで開いてダウンロード対象のタレントや番組、ジャンル、TV 局などを設定します

  • 不要なキーワードは # でコメントアウトするか削除してください。
  • 主なジャンルは網羅しているつもりですが、不足があるかもしれませんので、必要に応じて適宜自分で補ってください。
  • ダウンロード対象の指定の方法はいくつかありますが、現在のところ 1 と 2 が確実にダウンロードする方法です。3 ~ 10 は TVer の検索機能が改善されるまで動画を取りこぼす可能性や不要な動画がダウンロードされる可能性があります。
  1. 番組 ID を指定
    • 番組 ID を指定します
    • 番組 ID は、TVer で番組ページを検索した際の URL に含まれる「series/srxxxxxxxx」です
  2. タレント ID を指定
    • タレント ID を指定します
    • タレント ID は、TVer でタレントページを検索した際の URL に含まれる「talents/txxxxxx」です
  3. トップページを指定
    • TVer のトップページに表示される動画を可能な限りダウンロードします
    • TVer のトップページに表示されている動画がシリーズ物の場合、シリーズの動画すべてをダウンロードしようとします
  4. ジャンルを指定
    • ジャンルを指定します
    • 指定可能な曜日はconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  5. ランキングを指定
    • ランキングを指定します
    • 指定可能なランキングはconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  6. 特集を指定
    • TVer の特集を指定します
    • 指定可能な特集はconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  7. 地域限定番組を指定
    • 地域を指定します
    • 指定可能な地域はconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  8. テレビ局を指定
    • テレビ局を指定します
    • 指定可能なテレビ局はconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  9. 放送曜日を指定
    • 放送曜日を指定します
    • 指定可能な曜日はconf/keyword.confに記載されています(バージョンアップとともに変化する可能性があります)
  10. 番組名を指定
    • 番組名のみにヒットするフリーワード検索です
    • 「title/ちびまる子ちゃん」のように指定します
  11. フリーワード検索
    • 上記のいずれにも該当しない番組をフリーワードで指定できますが、検索結果の精度は 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に設定されていると無効化されます。
  • 動画検証の高速化オプションとして、他にも以下の 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 じゃないと厳しそうです。 (参考)

実行方法

以下の手順でバッチファイルを実行してください。

  1. TVerRec をダウロードして任意のディレクトリで解凍してください。
    • または、git cloneしてください。ただし、リリース版ではないため不具合が含まれている可能性があります。
  2. 環境設定方法ダウンロード対象の設定方法ダウンロード対象外の番組の設定方法を参照して環境設定、ダウンロード設定を行ってください。
  3. Windows 環境では win/start_tverrec.batを実行してください。
    • 処理が完了しても 10 分ごとに永遠にループして稼働し続けます。
    • 上記で PowerShell が起動しない場合は、PowerShell の実行ポリシーの RemoteSigned などに変更する必要があるかもしれません。 (参考)
    • Linux や MacOS も基本的に同じ使い方ですが、以下の章を参照してください。
  4. TVerRec を win/start_tverrec.batで起動した場合は、win/stop_tverrec.batで TVerRec を停止できます。
    • 関連するダウンロード処理もすべて強制停止されるので注意してください。
    • ダウンロードを止めたくない場合は、tverec のウィンドウを閉じるボタンで閉じてください。
  5. 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はこれらを自動的に、且つ無限に実行します)
  6. 動画を 1 本ずつダウンロードしたい場合はwin/z.download_single_video.batを実行し、動画の URL を 1 本ずつ指定してください。
    • win/b.validate.batを実行するとダウンロードできていないファイルがある場合(正確にはダウンロードしたビデオファイルが破損している場合)に、ダウンロード済みリストからダウンロード履歴を削除するので、再度ダウンロードできるようになります。
    • win/b.delete_video.shを実行するとダウンロードが中断してしまった際のゴミファイルなどの掃除ができるので、定期的に実行するとディスク容量を節約できます。
    • win/d.move_video.shを実行すると、動画を最終保存先に移動することも可能です。

Linux/Mac での利用方法

  • ffmpegyoutube-dlbinディレクトリに配置するか、シンボリックリンクを貼ってください。
    • または、conf/system_setting.ps1相対パス指定でffmpegyoutube-dlのパスを記述してください。
  • 上記説明のwin/*.batunix/*.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.

About

TVerRecは、動画配信サイトTVerの動画を録画保存するためのダウンローダー、ダウンロードツールです。 動画のジャンルや出演タレント、番組名などのキーワード指定して一括ダウンロードします。 CMは入っていないため気に入った番組を配信終了を気にすることなくいつまでも残しておくことができます。 1回起動すれば新しい番組が配信される都度ダウンロードされるようになります。 つまりTVerの全録が可能です。ちまちまURLをコピペしたり画面録画する必要はなく、起動して放置するだけです。控えめに言って最高です。

License:MIT License


Languages

Language:PowerShell 84.3%Language:Batchfile 8.8%Language:Shell 6.8%