$ pip install devine
บันทึก
หาก pip ให้คำเตือนเกี่ยวกับเส้นทางที่ไม่อยู่ในตัวแปรสภาพแวดล้อม PATH ของคุณ ให้เพิ่มเส้นทางนั้นทันที จากนั้นปิดหน้าต่างพรอมต์คำสั่ง/เทอร์มินัลที่เปิดอยู่ทั้งหมด ไม่เช่นนั้น devine
จะไม่ทำงานเนื่องจากจะไม่พบมัน
ว้าว? — ตอนนี้คุณได้ติดตั้งแพ็คเกจ devine
แล้ว!
ขณะนี้อินเทอร์เฟซบรรทัดคำสั่งพร้อมใช้งานแล้ว ลอง devine --help
ต่อไปนี้เป็นรายการโปรแกรมที่คุณต้องติดตั้งด้วยตนเอง
.mkv
เคล็ดลับ
คุณควรติดตั้งสิ่งเหล่านี้จาก Package Repository หากทำได้ รวมถึง winget/chocolatey บน Windows พวกเขาจะเพิ่มเส้นทางของไบนารีไปยังตัวแปรสภาพแวดล้อม 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 อื่นๆ อย่าลังเลที่จะส่งคำขอดึงข้อมูลและให้บริการแก่ผู้อื่นได้ บริการใดๆ บน youtube-dl (หรือ yt-dlp) จะสามารถเพิ่มลงในพื้นที่เก็บข้อมูล Devine ได้ เนื่องจากทั้งคู่ใช้ใบอนุญาต Unlicense ดังนั้นการอ่านโดยตรงและการย้ายรหัสจึงถูกกฎหมาย
คำเตือน
สร้างหรือใช้รหัสบริการกับบริการที่คุณมีสิทธิ์ตามกฎหมายโดยสมบูรณ์ในการดำเนินการดังกล่าวเท่านั้น
บริการประกอบด้วยโฟลเดอร์ที่มีไฟล์ __init__.py
ไฟล์จะต้องมีคลาสที่มีชื่อเดียวกันกับโฟลเดอร์ คลาสจะต้องสืบทอดคลาสบริการและใช้วิธีการที่เป็นนามธรรมทั้งหมด ในที่สุดก็ต้องใช้วิธีการใหม่ชื่อ cli
ซึ่งคุณกำหนดอาร์กิวเมนต์ของ CLI
/devine/services
ชื่อโฟลเดอร์ที่คุณเลือกจะเรียกว่าแท็กบริการ "แท็ก" นี้ใช้ในชื่อไฟล์เอาต์พุตสุดท้ายของไฟล์ที่ดาวน์โหลด สำหรับการตรวจสอบโค้ดต่างๆ คีย์การค้นหาในฐานข้อมูล Key Vault และอื่นๆ__init__.py
และเขียนคลาสที่สืบทอดคลาสบริการ จะต้องตั้งชื่อให้เหมือนกับโฟลเดอร์ทุกประการ คำนึงถึงขนาดตัวพิมพ์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 ก็ตาม จำเป็นสำหรับฟังก์ชันการทำงานของ CLI หลักเพื่อให้สามารถค้นหาและเรียกใช้คลาสได้__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
บันทึก
Service
ที่ทำเครื่องหมายว่าเป็นนามธรรม ( @abstractmethod
) จะต้องถูกนำไปใช้โดยชั้นเรียนของคุณ__init__()
method) คุณต้องเรียกมันว่า super เช่น super().__init__()
ที่ด้านบนของการแทนที่ สิ่งนี้ใช้ไม่ได้กับวิธีการเชิงนามธรรมใดๆ เนื่องจากยังไม่ได้นำมาใช้get_session
จากนั้นแก้ไข self.session
อย่าสร้าง self.session
ตั้งแต่เริ่มต้นด้วยตนเอง เคล็ดลับ
self.session
เช่น self.session.get(url)
config.yaml
ถัดจาก __init__.py
คุณสามารถเข้าถึงได้ด้วย self.config
แท็กบริการโดยทั่วไปจะปฏิบัติตามกฎเหล่านี้:
[A-Z0-9i]{2,4}
i
ใช้สำหรับบริการที่เลือกเท่านั้น โดยเฉพาะ BBC iPlayer และ iTunes+
หรือ Plus
ตัวสุดท้ายควรเป็น P
เช่น ATVP
สำหรับ Apple TV+
, DSCP
สำหรับ Discovery+
, DSNP
สำหรับ Disney+
และ PMTP
สำหรับ Paramount+
กฎเหล่านี้ไม่ได้ครอบคลุมทั้งหมดและควรใช้เป็นแนวทางเท่านั้น คุณไม่จำเป็นต้องปฏิบัติตามกฎเหล่านี้อย่างเคร่งครัด แต่ฉันแนะนำให้ทำเพื่อความสม่ำเสมอ
การส่งและรับโฟลเดอร์บริการแบบซิปนั้นค่อนข้างยุ่งยาก มาสำรวจเส้นทางอื่นในการทำงานร่วมกันใน Service Code กัน
คำเตือน
โปรดระวังคนที่คุณไว้วางใจและสิ่งที่คุณวิ่ง ผู้ใช้ที่คุณร่วมงานด้วยในรหัสบริการสามารถอัปเดตด้วยรหัสที่เป็นอันตรายที่คุณจะเรียกใช้ผ่าน 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
ตอนนี้ยอมรับบริการของคุณหรือการเปลี่ยนแปลงอื่น ๆ กับพื้นที่เก็บข้อมูลที่แยกของคุณ
เมื่อมุ่งมั่นแล้ว สมาชิกในทีมคนอื่นๆ ทั้งหมดของคุณจะสามารถดึงการเปลี่ยนแปลงและผลักดันการเปลี่ยนแปลงใหม่ๆ ได้อย่างง่ายดาย
เมื่อมีการอัปเดตใหม่ คุณสามารถรีบูต fork ของคุณเป็นคอมมิตที่จะอัปเดตได้อย่างง่ายดาย
git fetch upstream
git rebase upstream/master
อย่างไรก็ตาม โปรดตรวจสอบให้แน่ใจว่าคุณได้ดูการเปลี่ยนแปลงระหว่างแต่ละเวอร์ชันก่อนที่จะทำการรีบูต และแก้ไขการเปลี่ยนแปลงและการเลิกใช้งานที่เสียหายเมื่อทำการรีบูตเป็นเวอร์ชันใหม่
หากคุณยังใหม่กับ git
ลองดูที่ GitHub Desktop
เคล็ดลับ
ประโยชน์อย่างมากของวิธีนี้ก็คือคุณสามารถซิงค์การขึ้นต่อกันด้วยบริการของคุณเองได้เช่นกัน! เพียงใช้ poetry
เพื่อเพิ่มหรือแก้ไขการขึ้นต่อกันอย่างเหมาะสมและยอมรับการ poetry.lock
ที่เปลี่ยนแปลงไป อย่างไรก็ตาม หากโปรเจ็กต์หลักมีการเปลี่ยนแปลงการพึ่งพา การเปลี่ยนแปลงของ poetry.lock
ของคุณจะขัดแย้งกัน และคุณจะต้องเรียนรู้วิธีการแก้ไขข้อขัดแย้ง/การรีเบส มันก็คุ้มค่านะ!
นี่เป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้ที่ต้องการทำบางอย่างเช่นวิธีการฟอร์กกิ้ง แต่อาจไม่สนใจว่าการเปลี่ยนแปลงใดจะเกิดขึ้นหรือเมื่อใด และเพียงต้องการให้การเปลี่ยนแปลงซิงค์กันทั่วทั้งทีม
นอกจากนี้ยังเปิดช่องทางในการโฮสต์หรือทำงานร่วมกันในรหัสบริการอีกด้วย ตราบใดที่คุณสามารถได้รับไดเร็กทอรีที่อัปเดตเฉพาะบริการภายในไดเร็กทอรี คุณก็พร้อมแล้วที่จะไป ตัวเลือกอาจรวมถึงเซิร์ฟเวอร์ FTP, Google Drive ที่แชร์, พื้นที่เก็บข้อมูลที่ไม่ใช่ทางแยกที่มีเพียงบริการ และอื่นๆ
services
ที่ไหนสักแห่งในนั้นและมีบริการทั้งหมดของคุณอยู่ภายในservices
เข้ากับโฟลเดอร์ /devine
คุณควรจบลงด้วยโฟลเดอร์ /devine/services
ที่มี services ไม่ใช่ /devine/services/services
คุณต้องแน่ใจว่าโฟลเดอร์เดิมยังคงรับและดาวน์โหลด/สตรีมการเปลี่ยนแปลงเหล่านั้นอยู่ คุณต้องตรวจสอบให้แน่ใจด้วยว่าเวอร์ชันของอุปกรณ์ที่คุณมีในเครื่องนั้นรองรับโดยรหัสบริการ
บันทึก
หากคุณใช้คลาวด์ซอร์สที่จะดาวน์โหลดไฟล์เมื่อเปิดขึ้นมาแล้ว คุณก็ไม่ต้องกังวล เพราะไฟล์เหล่านั้นจะถูกดาวน์โหลดโดยอัตโนมัติ Python การนำเข้าไฟล์จะกระตุ้นให้การดาวน์โหลดเริ่มต้นขึ้น อย่างไรก็ตาม อาจทำให้เกิดความล่าช้าในการเริ่มต้นระบบ
Devine สามารถตรวจสอบสิทธิ์กับบริการโดยใช้คุกกี้และ/หรือข้อมูลประจำตัว ข้อมูลรับรองจะถูกจัดเก็บไว้ในการกำหนดค่า และคุกกี้จะถูกจัดเก็บไว้ในไดเร็กทอรีข้อมูลซึ่งสามารถพบได้โดยการเรียกใช้ devine env info
หากต้องการเพิ่มข้อมูลประจำตัวให้กับบริการ โปรดดูที่การกำหนดค่าข้อมูลประจำตัวเพื่อดูข้อมูลเกี่ยวกับการตั้งค่าข้อมูลประจำตัวอย่างน้อยหนึ่งรายการต่อบริการ คุณสามารถเพิ่มข้อมูลรับรองอย่างน้อยหนึ่งรายการต่อบริการ และใช้ -p/--profile
เพื่อเลือกข้อมูลรับรองที่จะใช้
หากต้องการเพิ่มคุกกี้ลงในบริการ ให้ใช้นามสกุลไฟล์ Cookie เพื่อสร้างไฟล์ cookies.txt
และย้ายไปยังไดเร็กทอรี Cookies คุณต้องเปลี่ยนชื่อไฟล์ cookies.txt
เป็นของแท็กบริการ (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) เช่น NF.txt
คุณยังสามารถวางไว้ในโฟลเดอร์ Service Cookie เช่น /Cookies/NF/default.txt
หรือ /Cookies/NF/.txt
คุณสามารถเพิ่มคุกกี้หลายรายการลงในโฟลเดอร์ /Cookies/NF/
ด้วยชื่อเฉพาะของตัวเอง จากนั้นใช้ -p/--profile
เพื่อเลือกว่าจะใช้อันใด เช่น /Cookies/NF/sam.txt
แล้วใช้กับ --profile sam
หากคุณสร้างโฟลเดอร์ Service Cookie โดยไม่มี .txt
หรือ default.txt
แต่มีไฟล์อื่น จะไม่มีการโหลด Cookies เว้นแต่คุณจะใช้ -p/--profile
ดังที่แสดง สิ่งนี้ทำให้คุณสามารถเลือกรับการรับรองความถูกต้องได้ตามต้องการ
เคล็ดลับ
-p/--profile
คำเตือน
ชื่อโปรไฟล์ต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และไม่ซ้ำกันต่อบริการ ไม่มีการจำกัดอักขระหรือความยาวที่กำหนดเอง แต่เพื่อความสะดวก ฉันไม่แนะนำให้ใช้อักขระพิเศษใดๆ เนื่องจากเทอร์มินัลของคุณอาจสับสนได้
คุกกี้จะต้องอยู่ในรูปแบบไฟล์คุกกี้ Netscape มาตรฐาน
ส่วนขยายผู้ส่งออกคุกกี้ที่แนะนำ:
Rotem Dan
Ninh Pham
Rahul Shaw
ส่วนขยายอื่นๆ ที่ส่งออกเป็นรูปแบบ Netscape มาตรฐานควรใช้งานได้ตามทฤษฎี
คำเตือน ส่วนขยาย Get Cookies.txt โดย Rahul Shaw นั้นเป็นสปายแวร์เป็นหลัก อย่าใช้มัน มีเวอร์ชันที่ปลอดภัยบางเวอร์ชันลอยอยู่ (โดยปกติจะเป็นเวอร์ชันเก่าของส่วนขยาย) แต่เนื่องจากมีทางเลือกอื่นที่ปลอดภัย ฉันจึงหลีกเลี่ยงมันไปเลย ที่มา: https://reddit.com/r/youtubedl/comments/10ar7o7
จำเป็นต้องมีข้อกำหนด Widevine สำหรับการรับใบอนุญาตที่มีคีย์ถอดรหัสสำหรับเนื้อหาที่มีการป้องกัน DRM ไม่จำเป็นหากคุณจะใช้ devine กับบริการที่ไม่มี DRM โปรดอย่าขอไฟล์ คีย์ หรือข้อกำหนดของอุปกรณ์ Widevine เนื่องจากไม่สามารถให้ได้
Devine รองรับเฉพาะไฟล์ .WVD
(ไฟล์อุปกรณ์ Widevine) อย่างไรก็ตาม หากคุณมี Provision RSA Private Key และ Device Client Identification Blob เป็นไฟล์ blob (เช่น device_private_key
และ device_client_id_blob
) คุณสามารถแปลงเป็นไฟล์ .WVD
ได้โดยการรัน pywidevine create-device --help
เมื่อคุณมีไฟล์ .WVD
แล้ว ให้วางไฟล์เหล่านั้นในไดเร็กทอรี WVDs ซึ่งสามารถพบได้โดยการเรียก devine env info
จากนั้นคุณสามารถตั้งค่าในการกำหนดค่าของคุณว่า WVD ใด (ตามชื่อไฟล์เท่านั้น) ที่จะใช้เป็นค่าเริ่มต้นกับ devine cfg cdm.default wvd_name
จากที่นี่ คุณสามารถตั้งค่า WVD ที่จะใช้กับบริการเฉพาะแต่ละรายการได้ วิธีที่ดีที่สุดคือใช้ข้อกำหนดระดับความปลอดภัยต่ำสุดเท่าที่เป็นไปได้
อีกทางเลือกหนึ่งคือการใช้ CDM API ที่สอดคล้องกับ pywidevine Serve แน่นอนว่าคุณจะต้องรู้จักใครสักคนที่ให้บริการอยู่ และพวกเขาจะต้องให้สิทธิ์คุณในการเข้าถึง ดูตัวเลือกการกำหนดค่า remote_cdm เพื่อดูข้อมูลการตั้งค่า สำหรับข้อมูลเพิ่มเติม โปรดดูที่ พื้นที่เก็บข้อมูล pywidevine
เพจชุมชน Devine และ it ควรได้รับการปฏิบัติด้วยความมีน้ำใจเช่นเดียวกับโครงการอื่นๆ โปรดงดเว้นจากสแปมหรือถามคำถามที่ละเมิดข้อตกลงสิทธิ์การใช้งานสำหรับผู้ใช้ปลายทางของบริการ
ซอฟต์แวร์นี้ได้รับอนุญาตภายใต้เงื่อนไขของ GNU General Public License เวอร์ชัน 3.0
คุณสามารถค้นหาสำเนาใบอนุญาตได้ในไฟล์ LICENSE ในโฟลเดอร์รูท
© rlaphoenix 2019-2024