$ pip install devine
筆記
如果 pip 向您發出有關路徑不在 PATH 環境變數中的警告,請立即新增該路徑,然後關閉所有開啟的命令提示字元/終端機窗口,否則devine
將無法運作,因為找不到它。
瞧? — 您現在已經安裝了devine
軟體套件!
現在可以使用命令列介面,嘗試devine --help
。
以下是需要您手動安裝的程式清單。
.mkv
檔。提示
如果可以的話,您應該從軟體包存儲庫安裝它們;包括 Windows 上的 winget/chocolatey。它們會自動將二進位檔案的路徑新增到您的PATH
環境變數中,並且將來更容易更新。
重要的
大多數依賴項都是可移植實用程序,因此不使用安裝程式。如果您沒有從 winget/choco/pacman 等軟體包儲存庫安裝它們,請確保將它們放入目前工作目錄、Devine 的安裝目錄或二進位檔案的路徑放入PATH
環境變數中。如果您不這樣做,那麼 Devine 將無法找到二進位檔案。
首先,請查看devine --help
以取得完整的幫助文檔,其中列出了所有可用命令,並為您提供了有關 Devine 可以做什麼的更多資訊。
這是我建議開始使用的清單,排名不分先後,
devine dl
中使用。 devine cfg tag NOGRP
for ...-NOGRP
。 這裡有一些更高級的東西你可以看一下,
有關配置的文件可以在 CONFIG.md 文件中找到,它有很多方便的設定。
如果您開始厭倦在 CLI 呼叫中添加某些內容,那麼我建議您看一下!
與 youtube-dl 等類似項目不同,Devine 目前不附帶任何服務。您必須開發自己的服務,並且僅將 Devine 與您擁有合法權利的服務一起使用。
筆記
如果您為 Devine 提供的服務不使用 Widevine 或任何其他 DRM 系統,請隨時提出 Pull 請求並將您的服務提供給其他人。 youtube-dl(或 yt-dlp)上的任何服務都可以添加到 Devine 儲存庫,因為它們都使用 Unlicense 許可證,因此直接讀取和移植其程式碼是合法的。
警告
僅在您擁有完全合法權利的服務中建立或使用服務代碼。
服務由一個帶有__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 呼叫它,例如,重寫頂部的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
。這些規則並不詳盡,僅應用作指南。您不必嚴格遵守這些規則,但我建議這樣做以保持一致性。
發送和接收壓縮的服務資料夾非常麻煩。讓我們探索在服務程式碼上進行協作的替代途徑。
警告
請謹慎對待您信任的人和您經營的業務。與您協作處理服務程式碼的使用者可能會使用您在下次呼叫時透過 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 Drive、僅包含服務的非分支儲存庫等等。
services
目錄,並將所有服務包含在其中。services
目錄符號連結到/devine
資料夾。您最終應該得到包含服務的/devine/services
資料夾,而不是/devine/services/services
。您必須確保原始資料夾不斷接收和下載/串流這些變更。您還必須確保服務代碼支援您本地的 devine 版本。
筆記
如果您使用的雲端來源在文件開啟後就會下載文件,則不必擔心,因為這些文件會自動下載。 Python 匯入檔案會觸發下載開始。但是,這可能會導致啟動延遲。
Devine 可以使用 Cookie 和/或憑證對服務進行身份驗證。憑證儲存在配置中,Cookie 儲存在資料目錄中,可以透過執行devine env info
找到該目錄。
若要將憑證新增至服務,請查看憑證配置,以了解有關為每項服務設定一個或多個憑證的資訊。您可以為每項服務新增一個或多個憑證,並使用-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
一起使用。如果您建立的服務 Cookie 資料夾沒有.txt
或default.txt
,但包含其他文件,則不會載入 Cookie,除非您使用-p/--profile
(如圖所示)。這使您可以隨意選擇進行身份驗證。
提示
-p/--profile
時在憑證名稱和 Cookie 檔案名稱上使用相同的名稱。 警告
設定檔名稱區分大小寫,並且每個服務都是唯一的。它們沒有任意字符或長度限制,但為了方便起見,我不建議使用任何特殊字符,因為您的終端可能會感到困惑。
Cookie 必須採用標準 Netscape Cookie 檔案格式。
推薦的 Cookie 匯出器擴充:
Rotem Dan
的“匯出 Cookie”Ninh Pham
的“打開 Cookies.txt”,Rahul Shaw
的“獲取 cookies.txt”理論上,任何其他導出為標準 Netscape 格式的擴充都應該可以工作。
警告Rahul Shaw 的 Get cookies.txt 擴充功能本質上是間諜軟體。不要使用它。有一些安全版本(通常只是擴展的舊版本),但由於有安全的替代方案,我會完全避免使用它。資料來源:https://reddit.com/r/youtubedl/comments/10ar7o7
取得包含 DRM 保護內容解密金鑰的授權需要 Widevine 規定。如果您將在無 DRM 服務上使用 devine,則不需要它們。請不要索取任何 Widevine 裝置檔案、金鑰或規定,因為我們無法提供這些資訊。
Devine 僅支援.WVD
檔(Widevine 裝置檔)。但是,如果您將預配 RSA 私鑰和裝置用戶端識別 Blob 為 blob 檔案(例如device_private_key
和device_client_id_blob
),則可以透過執行pywidevine create-device --help
將它們轉換為.WVD
檔案。
取得.WVD
檔後,將它們放入 WVDs 目錄中,可以透過呼叫devine env info
找到該目錄。然後,您可以在設定中透過devine cfg cdm.default wvd_name
設定預設使用的 WVD(僅按檔案名稱)。然後,您可以從此處設定每個特定服務要使用的 WVD。最好盡可能使用最低的安全等級規定。
另一種選擇是使用相容 pywidevine Serve 的 CDM API。當然,您需要認識為該服務提供服務的人,並且他們需要向您提供存取權限。查看remote_cdm 配置選項以取得設定資訊。有關它的更多信息,請參閱 pywidevine 存儲庫。
Devine 及其社群頁面應該像其他項目一樣善待。請避免發送垃圾郵件或提出違反服務最終用戶許可協議的問題。
本軟體根據 GNU 通用公共授權 3.0 版的條款授權。
您可以在根資料夾的 LICENSE 檔案中找到許可證的副本。
© 拉菲尼克斯 2019-2024