BiliBili コメント/動画ダウンロードソフトウェア
简介
・このプログラムはPython(Python 3.x)言語で書かれており、いくつかのPythonライラリとChromeDriverを使用しています
(ChromeDriverを持っているとログインやキャプチャ認証が簡単になります。またメインプログラムには影響しません)
・ソフトウェアはCUIしかないので、新規の方はここを参照してください
・コマンドライン(Command Line)に対応
・リリース ビルドスクリプトはbili.build.batにあります
プログラム機能
☑aria2cを使用したダウンロード
☑分割された動画の自動マージ
☑mp4およびmkv形式
☑m4a形式
☑flac形式
☐mp3形式
☑一般No. AV/BV
☑コメントダウンロード
☑全コメント(コメント履歴)ダウンロード
☑ビデオダウンロード
☑オーディオのみダウンロード
☑カバーイメージ(サムネイル)のみダウンロード
☑字幕のみのダウンロード
☑4KとHDR
☑インタラクティブなビデオ
☑番組
☑コメントダウンロード
☑全コメント(コメント履歴)ダウンロード
☑ビデオダウンロード
☑オーディオのみダウンロード
☑カバーイメージ(サムネイル)のみダウンロード
☑字幕のみのダウンロード
☑4K
☑HDR(サポート可能、現時点でのテスト可能な動画はありません)
☑有料コンテンツ
☑番組とほぼ同じ
☑カバーイメージ(サムネイル)のみダウンロード
☑有料コンテンツ一覧
☑お気に入り
☑サポートしているGETパラメーター
☑チャンネル一覧
☑チャンネル
☑サポートしているGETパラメーター
☑投稿動画一覧
☑サポートしているGETパラメーター
☑ライブ映像
☑ビデオダウンロード
☑コメントダウンロード
☑ライブストリーミング
☑ビデオダウンロード
☑No. AUオーディオ
☑オーディオダウンロード
☑歌詞のみダウンロード
☑カバーイメージ(サムネイル)のみダウンロード
aria2cを使用したダウンロード
このプログラムはaria2cを使用してのダウンロードをサポートしており、より良いダウンロード体験のためにaria2cを使用することをお勧めします。
この機能を有効にするには、コマンドライン(通常はプログラムディレクトリから直接aria2cを呼び出すことが可能)から設定でaria2cの使用を有効にしていることを確認する必要があります。
分割された動画の自動マージ
このプログラムは分割されたビデオを自動マージするためにffmpegを使用しています。
この機能を有効にするには、コマンドラインから直接ffmpegを呼び出せるようにする必要があります(一般的にはプログラムディレクトリに置くだけ)、設定でffmpegが無効になっていないことを確認する必要があります。
mp4およびmkv形式
このプログラムは、mp4ファイルまたはmkvファイルへの結合をサポートし、設定でビデオフォーマットを選択することができます。
m4a形式
このプログラムは、m4aファイルとしてオーディオファイルの直接ダウンロードをサポートしています。
flac形式
音声の一部にはロスレスの音質が含まれており、flacファイルとして保存することができます。
mp3形式
このプログラムは現在、mp3形式をサポートしていません(トランスコードしたくないから)
一般No.AV/BVビデオ
このプログラムでは、以下の入力に対応しています(例としてAV9、大文字小文字は無視):
・9
・av9
・BV1xx411c7mC
・bilibili.com/video/av9 (URLのhttps:\, www.とかは入力しなくても大丈夫)
・bilibili.com/video/BV1xx411c7mC
・b23.tv/av9
・b23.tv/BV1xx411c7mC
・bilibili.com/s/video/av9
・bilibili.com/s/video/BV1xx411c7mC
動画が番組を指しているのであれば、自動的に番組にリダイレクトされます
オーディオのみダウンロード
現在、DASHストリームの解析結果のみがサポートされています(現時点ではDASHではない解析結果はほとんどありません)
番組
このプログラムでは、以下の入力をサポートしています(例としてSS26291、大文字小文字は無視):
・ss26291
・ep259653
・md4316442
・bilibili.com/bangumi/play/ss26291
・bilibili.com/bangumi/play/ep259653
・bilibili.com/bangumi/media/md4316442
・b23.tv/ss26291
・b23.tv/ep259653
・40240711などNo.AV/BVビデオ
既存のSS番号またはEP番号に基づいてコンテンツが見つからない場合は、同じSS番号およびEP番号を使用して購入したコンテンツ・コースへのアクセスを試みます
オーディオのみダウンロード
現在、DASHストリームの解析結果のみがサポートされています
カバーイメージ(サムネイル)のみダウンロード
現在開催中のセッションの表紙をダウンロードすると、番組全体のカバーイメージ(サムネイル)が自動的にダウンロードされます
有料コンテンツ
このプログラムでは、以下の入力に対応しています(例としてSS150、大文字小文字は無視):
・bilibili.com/cheese/play/ss150
・bilibili.com/cheese/play/ep2425
カバーイメージ(サムネイル)のみダウンロード
現在のセッションの表紙ではなく、全講座の表紙だけでなく、紹介画像もダウンロードされます
有料コンテンツ一覧
このプログラムは以下の入力をサポートしています:
・bilibili.com/cheese/mine/list
・bilibili.com/v/cheese/mine/list
購入したすべてのコースは、ダウンロードする必要があるものを選択するために解析されます
お気に入り
このプログラムは以下の入力をサポートしています(UID1を例にしています)
・space.bilibili.com/1/favlist
サポートしているGETパラメーター
・fid: どのお気に入りかを指定するために使用します
・keyword: お気に入り検索に使用
・type: すべてのお気に入りを検索するか、現在のお気に入りを検索するかを指定します
・tid: どのパーティションを指定するかに使用され、すべてのパーティションが0になり、--ltidコマンドラインパラメータを使用すると、現在のお気に入りのすべての利用可能なtidを取得できます
・orde: ソートする投稿動画のリストを指定します、mtimeは最近のお気に入り、viewは最も再生された動画、pubtimeは最新の投稿です
お気に入りにあるすべての動画を解析して、ダウンロードする必要があるものを選択します
チャンネル一覧
このプログラムは以下の入力をサポートしています(UID1を例にしています):
・space.bilibili.com/1/channel/index
UP主のすべてのチャンネルを解析して、ダウンロードするチャンネルを選択します
チャンネル
このプログラムは以下の入力をサポートしています(UID928123を例にしています):
・space.bilibili.com/928123/channel/detail?cid=42271
サポートしているGETパラメーター
・cid: どのチャンネルかを示すために使用されます(パースするにはcidが必要です)
ダウンロードする必要があるものを選択するチャンネルのすべてのビデオを解析します
投稿動画一覧
このプログラムは以下の入力をサポートしています(UID1を例にしています):
・space.bilibili.com/1/video
サポートしているGETパラメーター
・tid: ビデオタイプを指定するために使用されます
・keyword: 投稿された動画のリストを検索するために使用される
・orde: pubdateは最新のリリース、clickは最も再生された動画、stowは最もお気に入りの動画のリストの順番を指定します
ダウンロードが必要なチャンネルのために、UP主が投稿した動画をすべて解析します
ライブ映像
このプログラムは以下の入力をサポートしています(R1mx411c7Enを例にしています):
・live.bilibili.com/record/R1mx411c7En
ビデオダウンロード
この時点ではオリジナルの画像のみがダウンロードに対応しているため、他の画質が表示された場合はダウンローダーが表示する必要があります
動画のリンク先をissuesに投稿してください
コメントダウンロード
現在は通常のコメントのみ対応しており、プレゼント(ギフト)などは対応していません
コメントは元の形式からXML形式に変換されます
ライブストリーミング
このプログラムは以下の入力をサポートしています(例として、部屋番号1):
・live.bilibili.com/1
ビデオダウンロード
複数の画質オプションをサポートしています
メインラインとバックアップラインの選択をサポートしています(コマンドラインが必要)
No. AUオーディオ
このプログラムは以下の入力をサポートしています(AU1を例にしています):
・au1
・bilibili.com/audio/au1
・b23.tv/au1
オーディオダウンロード
複数の音質に対応したので、使って楽しんでください
オーディオに通常のビデオが関連付けられている場合、関連するビデオページからより多くのオーディオ品質を取得するための試みが行われます
歌詞のみダウンロード
デフォルトでは、プログラムはダウンロードした歌詞ファイルをフィルタリングして、より多くのプレイヤーにフィットするようにそれらを修正します
オーディオに通常の動画が関連付けられている場合、関連する動画ページからより多くの歌詞(つまり字幕)を取得しようとします
依存ライブラリ
requests
selenium
rsa
polib
web.py
regax
iso-639
・独自のファイルライブラリを作成
・分割された動画の自動マージを行うには、カレントディレクトリもしくは環境変数PATHにffmpegがある必要があります
・aria2cを使用して動画をダウンロードするには、カレントディレクトリもしくは環境変数PATHにaria2cが必要です
・ユーザー名・パスワードのログインセクションは、Bilibili-Toolkitのログインセクションコードを参照しています
・Captchaの識別にはインターフェースを使用しています(インターフェースが死んでる)
Javascript依存ライブラリ
jQuery
js-sha256
jsbn(注意:webuihtml/js(origin)/rsa.jsにマージされています)
js-base64
QRCode.js
Viewer.js
clipboard.js
FileSaver.js
ファイル構成
cookies.json
このファイルは、BiliBiliにログインした後に取得したクッキー情報を保存し、プログラムがBiliBiliにログインした状態を維持するために使用します(コメント履歴インターフェースを呼び出すため、また、720p以上の動画をダウンロードするために)
settings.json
このファイルは、いくつかのデフォルトの操作の設定を保持しており、setettings.pyを実行することで設定を変更・確認することができます
webui.json
保存されたWEB UIの設定
sections.json
パスワード認証のためにWEBユーザーインターフェースを開いたときのセッション情報を保持します
tv.bilibili.player.xml
このファイルは必ずしも必要ではありません
主にポップアップのフィルタリングに使用します
PCのWebプレーヤーのコメントフィルタ設定からエクスポートしたファイルを直接プログラムディレクトリに入れて使用します
ファイル名がtv.bilibili.player.xmlになっていることを確認してください
はじめに
start.pyを直接実行する
prepare.py
実行して、WEB UIの実行に必要なファイルの一部を取得します
ランタイムは、javaに直接アクセスできることを保証します
クラウドフレアのアンチボット検出が死んでいるため、自動でcompiler.jarを更新したりダウンロードしたりすることができなくなっています(今のところアンチボットの検出はないようです)
WEBユーザーインターフェース
startwebui.pyを実行した後、ブラウザでアクセスすることができます デフォルトのアドレスはhttp://localhost:8080です
コメントのフィルタリング
filter.pyを実行してください
注意:コメントのフィルタリングを行うには、tv.bilibili.player.xmlファイルが必要です
翻訳
誰でもTransifexでこのプログラムの他言語の翻訳を提供することができます 日本語訳を提供してくれたKum4423氏に感謝
その他
一般の動画のコメントダウンロードを完璧にサポート
SS番号(番組)の通常のコメントと全コメントのダウンロードに対応しましたが、全コメントのダウンロード開始時間を手動で調整する必要があるかもしれません(各1Pのタイムスタンプはまだ見つかっていません)
全コメントのダウンロードは自動モードを使用することをお勧めします 注意:第1Pは概ね正確です
全コメントのダウンロード問題
BiliBiliではコメント履歴の呼び出し回数を制限しているため、12時間程度で1000回程度まで呼び出すことができますので、コメントが多くなった場合は時間間隔を大きく設定してください 制限された後、約12時間後に正常に戻ります
既知のBUG
ログイン中にエラーが発生する(ChromeDriver使用時)
これは、お使いのパソコンにChromeがインストールされていないか、ChromeのバージョンがChromeDriverのバージョンと一致しないことが原因です
Chromeをインストールするか、Chromeのバージョンに一致するChromeDriverをダウンロードしてください
ChromeDriverの追加バージョンはこちらからダウンロードできます
具体的なエラーメッセージは#9と#11に記載されています
ユーザー名とパスワードでのログインに対応しました
FAQ/よくあるご質問
リリースにおける各ドキュメントの違い
・bili_version.7z 最もシンプルなバージョン、自分でaria2c, ChromeDriver, ffmpeg, Python 3.6+をダウンロードしてインストールする必要があります
・bili_version_linux.7z Linux用の最もシンプルなバージョンとChromeDriver ・bili_version_mac.7z Mac用の最もシンプルなバージョンとChromeDriver
・bili_version_windows.7z Windows用の最もシンプルなバージョンとChromeDriver
・bili_version_windows10_x64.7z コンパイル版のexeで、64bitのWindows10で直接実行でき、aria2c, ChromeDriver, ffmpegが付属しています ・bili_version_windows10_x64.exe bili_version_windows10_x64.7zのインストーラバージョン
・bili_version_windows_x64.7z Python 3.8.6, aria2c, ChromeDriver, ffmpegが付属しています ・bili_version_windows_x64.exe bili_version_windows_x64.7zのインストーラバージョン
・bili_version_windows_x86.7z Python 3.8.6, aria2c, ChromeDriver, ffmpegが付属しています ・bili_version_windows_x86.exe bili_version_windows_x86.7zのインストーラバージョン
最後の4つのバージョンを選ぶことをお勧めします
パスワードを入力できない
これは、パスワード入力時に画面上の入力の出力がオフ(表示が戻る)になっていることが原因です 解決方法は、普通にパスワードを入力してEnter Keyを押すだけです
大会員のアカウントは、大会員しか見られないことを示唆している
まず、cookies.jsonを削除してからWEB UIではなくChromeDriverでログインします
(WEB UIのログインが現在バグっています)
デフォルトのダウンロード場所はどこですか?
デフォルトのダウンロード場所は、プログラムが置かれているディレクトリ内の Downloadsフォルダです
インストーラを使用してインストールする場合、デフォルトのディレクトリは %appdata%/bili
%appdata%/bili x86
%appdata%/bili x64
です
ffmpeg, aria2cを使用するべきかどうか
両方使うことをお勧めします ffmpegは、分割された動画を自動的にマージするために使用されます aria2cはダウンロード体験を大幅に向上させることができます
一括ダウンロードする方法
現在は、複数のパートを分割して使用したり、お気に入りなどを使用して一括ダウンロードすることができます 一括ダウンロードする場合はコマンドラインでの使用をお勧めします
(コマンドラインの基本はご自身で検索してください)
例えば、毎回メソッド4を利用してダウンロードする場合は、py start.py -d4とします
その他のコマンドラインコマンドは、py start.py -hを使用して確認することができます
クラッシュした場合の対処方法
現在のところ、windows_x64とwindows_x86のバッチスクリプトを除いた他のすべてのバージョンは、実行後に直接終了します(プログラムにエラーがあるかどうかに関係なく) メインのプログラムであれば、設定でファイルへのログの書き込みを有効にしてから、プログラムのあるディレクトリのログフォルダに移動してログを探します
エラーが発生した場合は、最後にエラーの正確なメッセージが表示されます
aria2cのいくつかのダウンロード設定は何を意味しますか?
aria2cはマルチスレッドのダウンロードツールです
マルチスレッドでのダウンロードは、1ファイルをn個のパーツに分割し、各パーツを同時にダウンロードすることで簡略化できます
同時にダウンロードするパーツが増えれば増えるほど、一般的には早くなります
aria2cの設定について:
aria2cを有効にするかどうか: 推奨します、aria2cを使用するとより良いダウンロード体験を提供出来ます(ダウンロード速度が速くなります)
aria2cを使用した場合の1サーバーあたりの最大接続数と1ファイルあたりの最大接続数:
この2つを合わせると、同時にダウンロードできるパーツの最大数が制限されます
そのため、両方をクランクアップさせることで、同時にダウンロードできるパーツの数が増え、速度が速くなります
aria2c使用時のファイルスライスサイズ:
aria2cは1つのファイルをスライスサイズに応じてn個に分割しています
100Mのファイルがあって、ファイルのスライスサイズが20Mだとすると、ファイルは5分割されます
ファイルサイズがファイルスライスサイズの2倍以下の場合は、ファイルをn個に分割せず、全体としてダウンロードされます
分割数を増やすと、ファイルが分割されるセクションの数が増え、多少高速化されます