$ pip install devine
Примечание
Если pip выдает предупреждение о том, что путь отсутствует в вашей переменной среды 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 или какие-либо другие системы DRM, не стесняйтесь сделать запрос на включение и сделать ваш сервис доступным для других. Любую службу на youtube-dl (или yt-dlp) можно будет добавить в репозиторий Devine, поскольку обе они используют нелицензионную лицензию, поэтому прямое чтение и перенос их кода будут законными.
Предупреждение
Создавайте или используйте Сервисный код только с теми Сервисами, у которых вы имеете на это полное законное право.
Сервис состоит из папки с файлом __init__.py
. Файл должен содержать класс с тем же именем, что и папка. Класс должен наследовать класс Service и реализовать все абстрактные методы. Наконец, он должен реализовать новый метод с именем cli
, в котором вы определяете аргументы CLI.
/devine/services
. Выбранное вами имя папки будет так называемым сервисным тегом. Этот «тег» используется в конечном имени выходного файла загруженных файлов, для различных проверок кода, поиска ключей в базах данных хранилищ ключей и многого другого.__init__.py
и напишите класс, наследующий класс Service. Она должна называться точно так же, как и папка. Он чувствителен к регистру.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 Диск, репозиторий без разветвления, содержащий только службы, и многое другое.
services
и поместите в него все свои сервисы.services
на папку /devine
. В итоге у вас должна получиться папка /devine/services
, содержащая сервисы, а не /devine/services/services
.Вы должны убедиться, что исходная папка продолжает получать и загружать/передавать эти изменения. Вы также должны убедиться, что локальная версия Devine поддерживается кодом службы.
Примечание
Если вы используете облачный источник, который загружает файл после его открытия, вам не о чем беспокоиться, поскольку он загрузится автоматически. Импорт файлов Python запускает загрузку. Однако это может привести к задержке запуска.
Devine может проходить аутентификацию в Сервисах с использованием файлов cookie и/или учетных данных. Учетные данные хранятся в конфигурации, а файлы cookie хранятся в каталоге данных, который можно найти, запустив devine env info
.
Чтобы добавить учетные данные в службу, просмотрите конфигурацию учетных данных для получения информации о настройке одного или нескольких учетных данных для каждой службы. Вы можете добавить один или несколько учетных данных для каждой службы и использовать -p/--profile
, чтобы выбрать, какие учетные данные использовать.
Чтобы добавить файл cookie в службу, используйте расширение файла cookie, чтобы создать файл cookies.txt
и переместить его в каталог файлов cookie. Вам необходимо переименовать файл 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:
Rotem Dan
Ninh Pham
,Rahul Shaw
Любое другое расширение, которое экспортирует в стандартный формат Netscape, теоретически должно работать.
Предупреждение. Расширение Get cookies.txt от Рахула Шоу по сути является шпионским ПО. Не используйте его. Существует несколько безопасных версий (обычно это старые версии расширения), но, поскольку существуют безопасные альтернативы, я бы вообще избегал их. Источник: https://reddit.com/r/youtubedl/comments/10ar7o7
Положение Widevine необходимо для приобретения лицензий, содержащих ключи дешифрования для контента, защищенного DRM. Они не нужны, если вы будете использовать Devine в сервисах без DRM. Пожалуйста, не запрашивайте какие-либо файлы, ключи или условия устройства Widevine, поскольку они не могут быть предоставлены.
Devine поддерживает только файлы .WVD
(файлы устройств Widevine). Однако если у вас есть закрытый ключ Provision RSA и большой двоичный объект идентификации клиента устройства в виде файлов больших двоичных объектов (например, 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 и страницам его сообщества следует относиться с той же добротой, что и к другим проектам. Пожалуйста, воздержитесь от спама и вопросов, которые нарушают Лицензионное соглашение с конечным пользователем Сервиса.
Это программное обеспечение лицензируется на условиях Стандартной общественной лицензии GNU версии 3.0.
Копию лицензии можно найти в файле LICENSE в корневой папке.
© rlaphoenix 2019-2024