$ pip install devine
ملحوظة
إذا أعطتك النقطة تحذيرًا بشأن عدم وجود مسار في متغير بيئة PATH الخاص بك، فقم بإضافة هذا المسار على الفور ثم أغلق جميع نوافذ موجه الأوامر/المحطة المفتوحة، وإلا فلن يعمل devine
لأنه لن يتم العثور عليه.
هاهو؟ - لقد قمت الآن بتثبيت حزمة devine
!
واجهة سطر الأوامر متاحة الآن، حاول devine --help
.
فيما يلي قائمة بالبرامج التي تحتاج إلى تثبيتها يدويًا.
.mkv
.نصيحة
يجب عليك تثبيتها من مستودع الحزم إذا استطعت؛ بما في ذلك winget/chocolatey على نظام التشغيل Windows. سيقومون تلقائيًا بإضافة مسار الملف الثنائي إلى متغير بيئة PATH
الخاص بك وسيكون من الأسهل تحديثه في المستقبل.
مهم
معظم هذه التبعيات عبارة عن أدوات مساعدة محمولة، وبالتالي لا تستخدم أدوات التثبيت. إذا لم تقم بتثبيتها من مستودع حزم مثل Winget/choco/pacman، فتأكد من وضعها في دليل العمل الحالي لديك، أو في دليل تثبيت Devine، أو مسار الملف الثنائي إلى متغير بيئة PATH
الخاص بك. إذا لم تقم بذلك، فلن يتمكن Devine من العثور على الثنائيات.
أولاً، قم بإلقاء نظرة على devine --help
للحصول على مستند مساعدة كامل، يسرد جميع الأوامر المتاحة ويمنحك المزيد من المعلومات حول ما يمكن فعله باستخدام Devine.
فيما يلي قائمة مرجعية لما أوصي بالبدء به، بدون ترتيب معين،
devine dl
. devine cfg tag NOGRP
لـ ...-NOGRP
. وإليك بعض الأشياء المتقدمة التي يمكنك إلقاء نظرة عليها،
تتوفر وثائق التكوين في ملف CONFIG.md، وهو يحتوي على الكثير من الإعدادات المفيدة.
إذا بدأت تشعر بالملل من وضع شيء ما في مكالمة CLI الخاصة بك، فأنا أوصي بإلقاء نظرة عليه!
على عكس المشاريع المماثلة مثل youtube-dl، لا يأتي Devine حاليًا مع أي خدمات. يجب عليك تطوير خدماتك الخاصة واستخدام Devine فقط مع الخدمات التي لديك الحق القانوني في القيام بذلك.
ملحوظة
إذا قمت بإنشاء خدمة لـ Devine لا تستخدم Widevine أو أي أنظمة أخرى لإدارة الحقوق الرقمية، فلا تتردد في تقديم طلب سحب وإتاحة خدمتك للآخرين. سيكون من الممكن إضافة أي خدمة على youtube-dl (أو yt-dlp) إلى مستودع Devine حيث يستخدم كلاهما ترخيص Unlicense، وبالتالي فإن القراءة المباشرة للتعليمات البرمجية الخاصة بهم ونقلها ستكون قانونية.
تحذير
لا تقم بإنشاء رمز الخدمة أو استخدامه إلا مع الخدمات التي تتمتع بالحق القانوني الكامل للقيام بذلك.
تتكون الخدمة من مجلد به ملف __init__.py
. يجب أن يحتوي الملف على فئة بنفس اسم المجلد. يجب أن يرث الفصل فئة الخدمة وينفذ كافة الأساليب المستخرجة. يجب عليه أخيرًا تنفيذ طريقة جديدة تسمى cli
حيث تقوم بتعريف وسيطات CLI.
/devine/services
. سيكون اسم المجلد الذي تختاره هو ما يُعرف بعلامة الخدمة. يتم استخدام هذه "العلامة" في اسم ملف الإخراج النهائي للملفات التي تم تنزيلها، لعمليات فحص التعليمات البرمجية المختلفة، ومفاتيح البحث في قواعد بيانات مخزن المفاتيح، والمزيد.__init__.py
واكتب فئة ترث فئة الخدمة. يجب أن يكون اسمه بالضبط نفس المجلد. وهو حساس لحالة الأحرف.cli
. يجب أن تكون هذه الطريقة ثابتة (أي @staticmethod
). على سبيل المثال، لتنفيذ الحد الأدنى لتلقي معرف العنوان من نوع ما: @ 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__()
) يجب عليك استدعاءها بشكل فائق، على سبيل المثال، 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+
.هذه القواعد ليست شاملة ويجب استخدامها فقط كدليل. ليس عليك اتباع هذه القواعد بشكل صارم، ولكنني أوصي بالقيام بذلك من أجل الاتساق.
يعد إرسال واستقبال مجلدات الخدمة المضغوطة أمرًا مرهقًا للغاية. دعنا نستكشف طرقًا بديلة للتعاون في رمز الخدمة.
تحذير
يرجى توخي الحذر بشأن من تثق به وما تديره. يمكن للمستخدمين الذين تتعاون معهم في رمز الخدمة تحديثه باستخدام تعليمات برمجية ضارة يمكنك تشغيلها عبر 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 المصادقة مع الخدمات باستخدام ملفات تعريف الارتباط و/أو بيانات الاعتماد. يتم تخزين بيانات الاعتماد في التكوين، ويتم تخزين ملفات تعريف الارتباط في دليل البيانات الذي يمكن العثور عليه عن طريق تشغيل devine env info
.
لإضافة بيانات اعتماد إلى خدمة ما، قم بإلقاء نظرة على تكوين بيانات الاعتماد للحصول على معلومات حول إعداد بيانات اعتماد واحدة أو أكثر لكل خدمة. يمكنك إضافة واحد أو أكثر من بيانات الاعتماد لكل خدمة واستخدام -p/--profile
لاختيار بيانات الاعتماد التي تريد استخدامها.
لإضافة ملف تعريف ارتباط إلى خدمة ما، استخدم امتداد ملف تعريف الارتباط لإنشاء ملف cookies.txt
ونقله إلى دليل ملفات تعريف الارتباط. يجب عليك إعادة تسمية ملف cookies.txt
إلى ملف علامة الخدمة (حساس لحالة الأحرف)، على سبيل المثال، NF.txt
. يمكنك أيضًا وضعه في مجلد ملف تعريف ارتباط الخدمة، على سبيل المثال، /Cookies/NF/default.txt
أو /Cookies/NF/.txt
.
يمكنك إضافة ملفات تعريف ارتباط متعددة إلى المجلد /Cookies/NF/
باسمها الفريد ثم استخدام -p/--profile
لاختيار الملف الذي تريد استخدامه. على سبيل المثال، /Cookies/NF/sam.txt
ثم استخدمه مع --profile sam
. إذا قمت بإنشاء مجلد ملفات تعريف الارتباط الخاصة بالخدمة بدون ملف .txt
أو default.txt
، ولكن باستخدام ملف آخر، فلن يتم تحميل ملفات تعريف الارتباط إلا إذا استخدمت -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 على خدمات خالية من إدارة الحقوق الرقمية. من فضلك لا تطلب أي ملفات أو مفاتيح أو أحكام لجهاز Widevine لأنه لا يمكن توفيرها.
يدعم Devine ملفات .WVD
فقط (ملفات جهاز Widevine). ومع ذلك، إذا كان لديك توفير مفتاح RSA الخاص وكائن 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 المتوافقة مع خدمة pywidevine. بالطبع، ستحتاج إلى معرفة شخص يخدم أحد الأشخاص، وسيحتاج إلى منحك حق الوصول. ألقِ نظرة على خيار التكوين Remote_cdm للحصول على معلومات الإعداد. لمزيد من المعلومات حول هذا الموضوع، راجع مستودع pywidevine.
يجب التعامل مع صفحات Devine ومجتمعها بنفس اللطف الذي تعامل به المشاريع الأخرى. يرجى الامتناع عن إرسال البريد العشوائي أو طرح الأسئلة التي تنتهك اتفاقية ترخيص المستخدم النهائي للخدمة.
هذا البرنامج مرخص بموجب شروط رخصة جنو العامة، الإصدار 3.0.
يمكنك العثور على نسخة من الترخيص في ملف الترخيص الموجود في المجلد الجذر.
© رلافونيكس 2019-2024