$ pip install devine
Catatan
Jika pip memberi Anda peringatan tentang jalur yang tidak ada dalam variabel lingkungan PATH Anda, segera tambahkan jalur itu lalu tutup semua jendela command prompt/terminal yang terbuka, atau devine
tidak akan berfungsi karena tidak akan ditemukan.
Voila? — Anda sekarang telah menginstal paket devine
!
Antarmuka baris perintah sekarang tersedia, coba devine --help
.
Berikut ini adalah daftar program yang perlu Anda instal secara manual.
.mkv
.Tip
Anda harus menginstalnya dari Repositori Paket jika Anda bisa; termasuk winget/cokelat di Windows. Mereka secara otomatis akan menambahkan jalur biner ke variabel lingkungan PATH
Anda dan akan lebih mudah untuk diperbarui di masa mendatang.
Penting
Sebagian besar dependensi ini adalah utilitas portabel dan oleh karena itu tidak menggunakan penginstal. Jika Anda tidak menginstalnya dari repositori paket seperti winget/choco/pacman maka pastikan Anda meletakkannya di direktori kerja Anda saat ini, di direktori instalasi Devine, atau jalur biner ke dalam variabel lingkungan PATH
Anda. Jika Anda tidak melakukan ini maka Devine tidak akan dapat menemukan binernya.
Pertama, lihat devine --help
untuk dokumen bantuan lengkap, daftar semua perintah yang tersedia dan memberi Anda lebih banyak informasi tentang apa yang dapat dilakukan dengan Devine.
Berikut ini daftar hal yang saya rekomendasikan untuk memulai, tanpa urutan tertentu,
devine dl
. devine cfg tag NOGRP
untuk ...-NOGRP
. Dan inilah beberapa hal lebih lanjut yang dapat Anda lihat,
Dokumentasi konfigurasi tersedia di file CONFIG.md dan memiliki banyak pengaturan praktis.
Jika Anda mulai bosan memasukkan sesuatu ke dalam panggilan CLI Anda, saya sarankan untuk melihatnya!
Berbeda dengan proyek serupa seperti youtube-dl, Devine saat ini tidak hadir dengan Layanan apa pun. Anda harus mengembangkan Layanan Anda sendiri dan hanya menggunakan Devine dengan Layanan yang Anda punya hak hukum untuk melakukannya.
Catatan
Jika Anda membuat Layanan untuk Devine yang tidak menggunakan Widevine atau sistem DRM lainnya, jangan ragu untuk membuat Permintaan Tarik dan membuat layanan Anda tersedia untuk orang lain. Layanan apa pun di youtube-dl (atau yt-dlp) akan dapat ditambahkan ke repositori Devine karena keduanya menggunakan lisensi Unlicense sehingga pembacaan langsung dan porting kode mereka akan sah.
Peringatan
Hanya buat atau gunakan Kode Layanan dengan Layanan yang Anda punya hak hukum penuh untuk melakukannya.
Layanan terdiri dari folder dengan file __init__.py
. File harus berisi kelas dengan nama yang sama dengan foldernya. Kelas harus mewarisi kelas Layanan dan mengimplementasikan semua metode yang diabstraksi. Akhirnya harus mengimplementasikan metode baru bernama cli
tempat Anda mendefinisikan argumen CLI.
/devine/services
. Nama folder yang Anda pilih akan disebut Tag Servis. "Tag" ini digunakan dalam nama file keluaran akhir dari file yang diunduh, untuk berbagai pemeriksaan kode, kunci pencarian di database brankas kunci, dan banyak lagi.__init__.py
dan tulis kelas yang mewarisi kelas Layanan. Namanya harus sama persis dengan foldernya. Ini peka huruf besar-kecil.cli
. Metode ini harus statis (yaitu @staticmethod
). Misalnya untuk menerapkan minimal untuk menerima semacam ID Judul: @ 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
ini, meskipun Anda tidak menginginkan atau memerlukan argumen CLI apa pun. Fungsi inti CLI diperlukan agar dapat menemukan dan memanggil kelas.__init__()
): def __init__ ( self , ctx , title ):
self . title = title
super (). __init__ ( ctx ) # important
# ... the title is now available across all methods by calling self.title
Catatan
Service
yang ditandai sebagai abstrak ( @abstractmethod
) HARUS diimplementasikan oleh kelas Anda.__init__()
), Anda HARUS memanggilnya super, misalnya super().__init__()
di bagian atas penggantian. Hal ini tidak berlaku untuk metode abstrak apa pun, karena tidak diterapkan.get_session
, lalu memodifikasi self.session
. Jangan membuat self.session
secara manual dari awal. Tip
self.session
, misalnya self.session.get(url)
.config.yaml
di samping __init__.py
, Anda dapat mengaksesnya dengan self.config
.Tag layanan umumnya mengikuti aturan berikut:
[A-Z0-9i]{2,4}
.i
hanya digunakan untuk layanan tertentu. Khususnya BBC iPlayer dan iTunes.+
atau Plus
, karakter terakhirnya haruslah P
. Misalnya, ATVP
untuk Apple TV+
, DSCP
untuk Discovery+
, DSNP
untuk Disney+
, dan PMTP
untuk Paramount+
.Aturan-aturan ini tidak menyeluruh dan sebaiknya hanya digunakan sebagai panduan. Anda tidak harus mengikuti aturan ini secara ketat, tetapi saya sarankan melakukannya untuk konsistensi.
Mengirim dan menerima folder Layanan yang di-zip cukup rumit. Mari jelajahi cara alternatif untuk berkolaborasi dalam Kode Layanan.
Peringatan
Harap berhati-hati dengan siapa yang Anda percayai dan apa yang Anda jalankan. Pengguna yang berkolaborasi dengan Anda pada kode Layanan dapat memperbaruinya dengan kode berbahaya yang akan Anda jalankan melalui devine pada panggilan berikutnya.
Jika Anda berkolaborasi dengan tim di berbagai layanan, maka melakukan forking proyek adalah cara terbaik.
git clone <your repo url here>
lalu cd
ke dalamnya.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
. Sekarang komit Layanan Anda atau perubahan lain pada repositori bercabang Anda.
Setelah berkomitmen, semua anggota tim Anda yang lain dapat dengan mudah melakukan perubahan serta mendorong perubahan baru.
Ketika pembaruan baru keluar, Anda dapat dengan mudah mengatur ulang fork Anda ke komitmen pembaruan tersebut.
git fetch upstream
git rebase upstream/master
Namun, pastikan Anda melihat perubahan di antara setiap versi sebelum melakukan rebasing dan mengatasi perubahan apa pun yang dapat menyebabkan gangguan dan penghentian saat melakukan rebasing ke versi baru.
Jika Anda baru mengenal git
, lihatlah GitHub Desktop.
Tip
Keuntungan besar dari metode ini adalah Anda juga dapat menyinkronkan dependensi dengan Layanan Anda sendiri! Cukup gunakan poetry
untuk menambah atau mengubah dependensi dengan tepat dan mengkomit poetry.lock
yang diubah. Namun, jika proyek inti juga memiliki perubahan ketergantungan, perubahan poetry.lock
Anda akan bertentangan dan Anda perlu mempelajari cara melakukan resolusi konflik/rebasing. Tapi itu sangat berharga!
Ini adalah opsi bagus bagi mereka yang ingin melakukan sesuatu seperti metode forking, namun mungkin tidak peduli perubahan apa yang terjadi atau kapan dan hanya ingin perubahan disinkronkan di seluruh tim.
Ini juga membuka cara Anda dapat menghosting atau berkolaborasi pada kode Layanan. Selama Anda dapat menerima direktori yang diperbarui hanya dengan layanan di dalamnya, maka Anda siap melakukannya. Opsinya dapat mencakup server FTP, Google Drive Bersama, repositori non-fork yang hanya berisi layanan, dan banyak lagi.
services
di suatu tempat di dalamnya dan masukkan semua layanan Anda di dalamnya.services
ke folder /devine
. Anda seharusnya mendapatkan folder /devine/services
yang berisi layanan, bukan /devine/services/services
.Anda harus memastikan folder asli terus menerima dan mengunduh/mengalirkan perubahan tersebut. Anda juga harus memastikan bahwa versi devine yang Anda miliki secara lokal didukung oleh kode Layanan.
Catatan
Jika Anda menggunakan sumber cloud yang mengunduh file setelah dibuka, Anda tidak perlu khawatir karena file tersebut akan diunduh secara otomatis. Python yang mengimpor file memicu pengunduhan dimulai. Namun, hal ini dapat menyebabkan penundaan saat startup.
Devine dapat mengautentikasi Layanan menggunakan Cookie dan/atau Kredensial. Kredensial disimpan di konfigurasi, dan Cookie disimpan di direktori data yang dapat ditemukan dengan menjalankan devine env info
.
Untuk menambahkan Kredensial ke Layanan, lihat Konfigurasi Kredensial untuk informasi tentang menyiapkan satu atau lebih kredensial per layanan. Anda dapat menambahkan satu atau lebih Kredensial per layanan dan menggunakan -p/--profile
untuk memilih Kredensial mana yang akan digunakan.
Untuk menambahkan Cookie ke Layanan, gunakan ekstensi file Cookie untuk membuat file cookies.txt
dan memindahkannya ke direktori Cookies. Anda harus mengganti nama file cookies.txt
menjadi nama tag Layanan (peka huruf besar-kecil), misalnya NF.txt
. Anda juga dapat menempatkannya di folder Service Cookie, misalnya /Cookies/NF/default.txt
atau /Cookies/NF/.txt
.
Anda dapat menambahkan beberapa Cookie ke folder /Cookies/NF/
dengan nama uniknya sendiri dan kemudian menggunakan -p/--profile
untuk memilih mana yang akan digunakan. Misalnya, /Cookies/NF/sam.txt
lalu gunakan dengan --profile sam
. Jika Anda membuat folder Service Cookie tanpa .txt
atau default.txt
, tetapi dengan file lain, maka Cookie tidak akan dimuat kecuali Anda menggunakan -p/--profile
seperti yang ditunjukkan. Ini memungkinkan Anda untuk ikut serta dalam autentikasi sesuka hati.
Tip
-p/--profile
. Peringatan
Nama profil peka terhadap huruf besar-kecil dan unik untuk setiap layanan. Mereka tidak memiliki karakter sembarangan atau batasan panjang, namun demi kenyamanan saya tidak menyarankan penggunaan karakter khusus apa pun karena terminal Anda mungkin akan bingung.
Cookie harus dalam format file cookie Netscape standar.
Ekstensi pengekspor Cookie yang direkomendasikan:
Rotem Dan
Ninh Pham
,Rahul Shaw
Ekstensi lain apa pun yang mengekspor ke format standar Netscape secara teoritis dapat berfungsi.
Peringatan Ekstensi Get cookies.txt oleh Rahul Shaw pada dasarnya adalah spyware. Jangan gunakan itu. Ada beberapa versi aman yang beredar (biasanya hanya versi ekstensi yang lebih lama), tetapi karena ada alternatif yang aman, saya akan menghindarinya sama sekali. Sumber: https://reddit.com/r/youtubedl/comments/10ar7o7
Ketentuan Widevine diperlukan untuk memperoleh lisensi yang berisi kunci dekripsi untuk konten yang dilindungi DRM. Mereka tidak diperlukan jika Anda akan menggunakan devine pada layanan bebas DRM. Harap jangan meminta File, Kunci, atau Ketentuan Perangkat Widevine apa pun karena tidak dapat diberikan.
Devine hanya mendukung file .WVD
(Widevine Device Files). Namun, jika Anda memiliki Kunci Pribadi RSA Penyediaan dan Blob Identifikasi Klien Perangkat sebagai file blob (misalnya, device_private_key
dan device_client_id_blob
), Anda dapat mengonversinya menjadi file .WVD
dengan menjalankan pywidevine create-device --help
.
Setelah Anda memiliki file .WVD
, letakkan di direktori WVDs yang dapat ditemukan dengan memanggil devine env info
. Anda kemudian dapat mengatur di konfigurasi Anda WVD mana (hanya berdasarkan nama file) yang akan digunakan secara default dengan devine cfg cdm.default wvd_name
. Dari sini Anda kemudian dapat mengatur WVD mana yang akan digunakan untuk setiap layanan tertentu. Sebaiknya gunakan ketentuan tingkat keamanan terendah jika memungkinkan.
Alternatifnya adalah menggunakan API CDM yang sesuai dengan pywidevine Serve. Tentu saja, Anda perlu mengenal seseorang yang melayaninya, dan mereka perlu memberi Anda akses. Lihatlah opsi konfigurasi remote_cdm untuk informasi pengaturan. Untuk informasi lebih lanjut lihat repositori pywidevine.
Devine dan halaman komunitasnya harus diperlakukan dengan baik seperti proyek lainnya. Harap menahan diri dari spam atau mengajukan pertanyaan yang melanggar Perjanjian Lisensi Pengguna Akhir Layanan.
Perangkat lunak ini dilisensikan berdasarkan ketentuan GNU General Public License, Versi 3.0.
Anda dapat menemukan salinan lisensi di file LICENSE di folder root.
© rlaphoenix 2019-2024