$ pip install devine
注記
pip が PATH 環境変数にパスが存在しないという警告を表示した場合は、すぐにそのパスを追加してから、開いているコマンド プロンプト/ターミナル ウィンドウをすべて閉じてください。そうしないと、パスが見つからないため、 devine
機能しません。
ほら? — これで、 devine
パッケージがインストールされました。
コマンドライン インターフェイスが利用できるようになりました。 devine --help
をお試しください。
以下は、手動でインストールする必要があるプログラムのリストです。
.mkv
ファイルに多重化するための MKVToolNix v54+。ヒント
可能であれば、パッケージ リポジトリからこれらをインストールする必要があります。 Windows の winget/chocolatey を含む。バイナリのパスがPATH
環境変数に自動的に追加されるため、将来の更新が簡単になります。
重要
これらの依存関係のほとんどは移植可能なユーティリティであるため、インストーラーを使用しません。これらを winget/choco/pacman などのパッケージ リポジトリからインストールしない場合は、それらを現在の作業ディレクトリ、Devine のインストール ディレクトリ、またはバイナリのパスをPATH
環境変数に置くようにしてください。これを行わないと、Devine はバイナリを見つけることができません。
まず、 devine --help
で完全なヘルプ ドキュメントを参照してください。利用可能なすべてのコマンドがリストされ、Devine で何ができるかについての詳細情報が提供されます。
以下に、私が始めることをお勧めするチェックリストを順不同で示します。
devine dl
で使用されます。 ...-NOGRP
にはdevine cfg tag NOGRP
。 ここで、さらに高度な内容を見てみましょう。
構成に関するドキュメントは CONFIG.md ファイルで入手でき、便利な設定がたくさんあります。
CLI 呼び出しに何かを入れることにうんざりし始めたら、それを検討することをお勧めします。
youtube-dl などの同様のプロジェクトとは異なり、Devine には現在サービスが付属していません。お客様は独自のサービスを開発し、法的権利を有するサービスでのみ Devine を使用する必要があります。
注記
Widevine やその他の DRM システムを使用しない Devine のサービスを作成した場合は、お気軽にプル リクエストを作成して、他の人がサービスを利用できるようにしてください。 youtube-dl (または yt-dlp) 上のサービスはどちらも Unlicense ライセンスを使用しているため、Devine リポジトリに追加できるため、コードの直接読み取りと移植は合法になります。
警告
完全な法的権利を有するサービスでのみサービス コードを作成または使用してください。
サービスは、 __init__.py
ファイルを含むフォルダーで構成されます。ファイルには、フォルダーと同じ名前のクラスが含まれている必要があります。このクラスは Service クラスを継承し、すべての抽象化されたメソッドを実装する必要があります。最後に、CLI 引数を定義するcli
という名前の新しいメソッドを実装する必要があります。
/devine/services
内に新しいフォルダーを作成します。選択したフォルダー名は、サービス タグとして知られるものになります。この「タグ」は、ダウンロードされたファイルの最終出力ファイル名で、さまざまなコード チェック、キー コンテナー データベースのキーの検索などに使用されます。__init__.py
ファイルを作成し、Service クラスを継承するクラスを作成します。フォルダーとまったく同じ名前を付ける必要があります。大文字と小文字が区別されます。cli
メソッドを実装して CLI 引数を定義します。このメソッドは静的である必要があります (つまり@staticmethod
)。たとえば、一種のタイトル ID を受け取るための最低限の機能を実装するには、次のようにします。 @ staticmethod
@ click . command ( name = "YT" , short_help = "https://youtube.com" , help = __doc__ )
@ click . argument ( "title" , type = str )
@ click . pass_context
def cli ( ctx , ** kwargs ):
return YT ( ctx , ** kwargs )
cli
メソッドを実装する必要があります。コアの CLI 機能がクラスを検索して呼び出すことができるようにする必要があります。__init__()
メソッド) をオーバーライドして、CLI 引数を受け入れます。 def __init__ ( self , ctx , title ):
self . title = title
super (). __init__ ( ctx ) # important
# ... the title is now available across all methods by calling self.title
注記
Service
( @abstractmethod
) から継承されたクラスのすべてのメソッドは、クラスによって実装されなければなりません。__init__()
メソッド) をオーバーライドするときは、それをスーパーコールしなければなりません (例: オーバーライドの先頭でsuper().__init__()
。抽象メソッドは実装されていないため、これは適用されません。get_session
メソッドをオーバーライドしてからself.session
変更する必要があります。 self.session
最初から手動で作成しないでください。 ヒント
self.session
クラスのインスタンス変数 (例: self.session.get(url)
を使用します。__init__.py
の隣にconfig.yaml
ファイルを作成すると、 self.config
を使用してアクセスできます。サービスタグは通常、次のルールに従います。
[A-Z0-9i]{2,4}
のみで構成されている必要があります。i
、選択されたサービスにのみ使用されます。具体的にはBBC iPlayerとiTunesです。+
またはPlus
付いている場合、最後の文字はP
である必要があります。たとえば、 Apple TV+
の場合はATVP
、 Discovery+
の場合はDSCP
、 Disney+
の場合はDSNP
、 Paramount+
の場合はPMTP
。これらのルールは完全なものではないため、ガイドとしてのみ使用してください。これらのルールに厳密に従う必要はありませんが、一貫性を保つためにそうすることをお勧めします。
zip 形式のサービス フォルダーの送受信は非常に面倒です。サービス コードでコラボレーションするための別のルートを検討してみましょう。
警告
誰を信頼し、何を実行するかには注意してください。サービス コードで共同作業しているユーザーは、次回の呼び出しで devine 経由で実行される悪意のあるコードでサービス コードを更新する可能性があります。
複数のサービスでチームと共同作業している場合は、プロジェクトをフォークすることが最善の方法です。
git clone <your repo url here>
、そこにcd
します。git remote add upstream https://github.com/devine-dl/devine
git remote set-url --push upstream DISABLE
git fetch upstream
git pull upstream master
git reset --hard v1.0.0
です。次に、サービスまたはその他の変更をフォークされたリポジトリにコミットします。
一度コミットすると、他のチーム メンバー全員が簡単に変更をプルしたり、新しい変更をプッシュしたりできます。
新しいアップデートがリリースされた場合、フォークをそのコミットにリベースして更新することが簡単にできます。
git fetch upstream
git rebase upstream/master
ただし、リベースする前に必ず各バージョン間の変更を確認し、新しいバージョンにリベースするときに重大な変更や非推奨を解決してください。
git
を初めて使用する場合は、GitHub Desktop をご覧ください。
ヒント
この方法の大きな利点は、独自のサービスでも依存関係を同期できることです。 poetry
使用して依存関係を適切に追加または変更し、変更されたpoetry.lock
コミットするだけです。ただし、コア プロジェクトにも依存関係の変更がある場合は、 poetry.lock
変更が競合するため、競合の解決/リベースの方法を学ぶ必要があります。でもそれだけの価値はあります!
これは、フォーク方法のようなことを実行したいが、いつどのような変更が行われたかは気にせず、単にチーム全体で変更を同期したい人にとっては優れたオプションです。
これにより、サービス コードをホストしたり共同作業したりする方法も開かれます。ディレクトリ内のサービスのみを更新するディレクトリを受信できれば、問題ありません。オプションには、FTP サーバー、共有 Google ドライブ、サービスのみを備えた非フォーク リポジトリなどが含まれます。
services
ディレクトリを作成し、その中にすべてのサービスを入れます。services
ディレクトリを/devine
フォルダーにシンボリックリンクします。最終的には、 /devine/services
/devine/services/services
services フォルダーが作成されるはずです。元のフォルダーがそれらの変更を受信し、ダウンロード/ストリーミングし続けることを確認する必要があります。また、ローカルにある devine のバージョンがサービス コードでサポートされていることを確認する必要があります。
注記
ファイルが開かれるとダウンロードするクラウド ソースを使用している場合は、自動的にダウンロードされるため心配する必要はありません。 Python がファイルをインポートすると、ダウンロードが開始されます。ただし、起動時に遅延が発生する可能性があります。
Devine は、Cookie や資格情報を使用してサービスで認証できます。認証情報は設定に保存され、Cookie はdevine env info
実行すると見つかるデータ ディレクトリに保存されます。
サービスに認証情報を追加するには、サービスごとに 1 つ以上の認証情報を設定する方法について、認証情報設定を参照してください。サービスごとに 1 つ以上の資格情報を追加し、 -p/--profile
使用して使用する資格情報を選択できます。
サービスに Cookie を追加するには、Cookie ファイル拡張子を使用してcookies.txt
ファイルを作成し、それを Cookies ディレクトリに移動します。 cookies.txt
ファイルの名前をサービス タグの名前 (大文字と小文字が区別される)、たとえばNF.txt
に変更する必要があります。これをサービス Cookie フォルダー ( /Cookies/NF/default.txt
または/Cookies/NF/.txt
など) に配置することもできます。
複数の Cookie を独自の一意の名前で/Cookies/NF/
フォルダーに追加し、 -p/--profile
使用してどれを使用するかを選択できます。たとえば、 /Cookies/NF/sam.txt
--profile sam
とともに使用します。 .txt
またはdefault.txt
を持たずに別のファイルを使用してサービス Cookie フォルダーを作成した場合、示されているように-p/--profile
使用しない限り、Cookie はロードされません。これにより、気まぐれに認証をオプトインできます。
ヒント
-p/--profile
使用するときに資格情報名と Cookie ファイル名に同じ名前を使用していることを確認してください。 警告
プロファイル名は大文字と小文字が区別され、サービスごとに一意です。任意の文字や長さの制限はありませんが、端末が混乱する可能性があるため、便宜上、特殊文字を使用することはお勧めしません。
Cookie は、標準の Netscape Cookie ファイル形式である必要があります。
推奨される Cookie エクスポーター拡張機能:
Rotem Dan
Ninh Pham
、Rahul Shaw
の「Get cookies.txt」標準 Netscape 形式にエクスポートする他の拡張機能は、理論的には機能するはずです。
警告Rahul Shaw による Get cookies.txt 拡張機能は、本質的にはスパイウェアです。使用しないでください。安全なバージョンがいくつか出回っていますが (通常は拡張機能の古いバージョンだけです)、安全な代替手段があるため、私はそれを完全に避けます。出典: https://reddit.com/r/youtubedl/comments/10ar7o7
Widevine プロビジョニングは、DRM で保護されたコンテンツの復号キーを含むライセンスを取得するために必要です。 DRM フリーのサービスで devine を使用する場合は必要ありません。 Widevine デバイス ファイル、キー、プロビジョンは提供できないため、要求しないでください。
Devine は.WVD
ファイル (widevine デバイス ファイル) のみをサポートします。ただし、Provision RSA 秘密キーとデバイス クライアント識別 BLOB を BLOB ファイル ( device_private_key
やdevice_client_id_blob
など) として持っている場合は、 pywidevine create-device --help
を実行して、それらを.WVD
ファイルに変換できます。
.WVD
ファイルを取得したら、 devine env info
呼び出すことで見つけられる WVDs ディレクトリにそれらのファイルを置きます。その後、 devine cfg cdm.default wvd_name
を使用して、デフォルトでどの WVD を使用するかを (ファイル名のみで) 設定することができます。ここから、特定のサービスごとにどの WVD を使用するかを設定できます。可能な限り、最も低いセキュリティ レベルのプロビジョニングを使用することが最善です。
代わりに、pywidevine Serve 準拠の CDM API を使用することもできます。もちろん、サービスを提供している人を知っている必要があり、その人があなたにアクセスを許可する必要があります。セットアップ情報については、remote_cdm config オプションを参照してください。詳細については、pywidevine リポジトリを参照してください。
Devine とそのコミュニティ ページは、他のプロジェクトと同じように親切に扱われるべきです。サービスのエンド ユーザー ライセンス契約に違反するスパムや質問はご遠慮ください。
このソフトウェアは、GNU General Public License バージョン 3.0 の条件に基づいてライセンス供与されています。
ライセンスのコピーは、ルート フォルダーの LICENSE ファイルにあります。
© rlaphoenix 2019-2024