$ pip install devine
Nota
Si pip le advierte acerca de que una ruta no está en su variable de entorno PATH, agregue rápidamente esa ruta y luego cierre todas las ventanas abiertas del símbolo del sistema/terminal, o devine
no funcionará porque no se encontrará.
Voilá? — ¡Ya tienes instalado el paquete devine
!
Ahora hay disponible una interfaz de línea de comandos, pruebe devine --help
.
La siguiente es una lista de programas que usted debe instalar manualmente.
.mkv
.Consejo
Deberías instalarlos desde un repositorio de paquetes si puedes; incluido Winget/chocolatey en Windows. Agregarán automáticamente la ruta del binario a su variable de entorno PATH
y serán más fáciles de actualizar en el futuro.
Importante
La mayoría de estas dependencias son utilidades portátiles y, por lo tanto, no utilizan instaladores. Si no los instala desde un repositorio de paquetes como Winget/choco/pacman, asegúrese de colocarlos en su directorio de trabajo actual, en el directorio de instalación de Devine o en la ruta del binario en su variable de entorno PATH
. Si no hace esto, Devine no podrá encontrar los binarios.
Primero, eche un vistazo a devine --help
para obtener un documento de ayuda completo, que enumera todos los comandos disponibles y le brinda más información sobre lo que se puede hacer con Devine.
Aquí hay una lista de verificación sobre lo que recomiendo comenzar, sin ningún orden en particular,
devine dl
. devine cfg tag NOGRP
para ...-NOGRP
. Y aquí hay algunas cosas más avanzadas que podrías echarle un vistazo,
La documentación sobre la configuración está disponible en el archivo CONFIG.md, tiene muchas configuraciones útiles.
Si empiezas a cansarte de poner algo en tu llamada CLI, ¡te recomiendo que le eches un vistazo!
A diferencia de proyectos similares como youtube-dl, Devine actualmente no incluye ningún Servicio. Debe desarrollar sus propios Servicios y utilizar Devine únicamente con los Servicios para los que tenga el derecho legal de hacerlo.
Nota
Si creó un Servicio para Devine que no utiliza Widevine ni ningún otro sistema DRM, no dude en realizar una Solicitud de extracción y poner su servicio a disposición de otros. Cualquier Servicio en youtube-dl (o yt-dlp) podría agregarse al repositorio de Devine ya que ambos usan la licencia sin licencia, por lo que la lectura directa y la portabilidad de su código serían legales.
Advertencia
Cree o utilice el Código de servicio únicamente con Servicios para los que tenga pleno derecho legal a hacerlo.
Un Servicio consta de una carpeta con un archivo __init__.py
. El archivo debe contener una clase con el mismo nombre que la carpeta. La clase debe heredar la clase Servicio e implementar todos los métodos abstraídos. Finalmente debe implementar un nuevo método llamado cli
donde se definen los argumentos de CLI.
/devine/services
. El nombre de la carpeta que elija será lo que se conoce como Etiqueta de servicio. Esta "etiqueta" se utiliza en el nombre del archivo de salida final de los archivos descargados, para diversas comprobaciones de códigos, búsqueda de claves en bases de datos de bóvedas de claves y más.__init__.py
y escriba una clase que herede la clase Servicio. Debe tener exactamente el mismo nombre que la carpeta. Es sensible a mayúsculas y minúsculas.cli
. Este método debe ser estático (es decir, @staticmethod
). Por ejemplo, para implementar el mínimo indispensable para recibir una especie de ID de título: @ 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
, incluso si no desea ni necesita ningún argumento CLI. Es necesario que la funcionalidad principal de CLI pueda encontrar y llamar a la clase.__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
Nota
Service
marcados como abstractos ( @abstractmethod
) DEBEN ser implementados por su clase.__init__()
), DEBES realizar una súper llamada, por ejemplo, super().__init__()
en la parte superior de la anulación. Esto no se aplica a ningún método abstracto, ya que no están implementados.get_session
y luego modificar self.session
. No cree manualmente self.session
desde cero. Consejo
self.session
, por ejemplo, self.session.get(url)
.config.yaml
junto a su __init__.py
, puede acceder a él con self.config
.Las etiquetas de servicio generalmente siguen estas reglas:
[A-Z0-9i]{2,4}
.i
minúscula solo se utiliza para servicios seleccionados. Específicamente BBC iPlayer e iTunes.+
o Plus
, el último carácter debe ser una P
Por ejemplo, ATVP
para Apple TV+
, DSCP
para Discovery+
, DSNP
para Disney+
y PMTP
para Paramount+
.Estas reglas no son exhaustivas y sólo deben usarse como guía. No es necesario seguir estrictamente estas reglas, pero recomiendo hacerlo por coherencia.
Enviar y recibir carpetas de servicio comprimidas es bastante engorroso. Exploremos rutas alternativas para colaborar en el Código de servicio.
Advertencia
Tenga cuidado con en quién confía y con lo que dirige. Los usuarios con los que colabora en el código del servicio podrían actualizarlo con código malicioso que ejecutaría a través de devine en la siguiente llamada.
Si está colaborando con un equipo en múltiples servicios, entonces bifurcar el proyecto es la mejor manera de hacerlo.
git clone <your repo url here>
y luego cd
en él.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
. Ahora confirme sus Servicios u otros cambios en su repositorio bifurcado.
Una vez comprometidos, todos los demás miembros de su equipo pueden realizar cambios fácilmente e impulsar nuevos cambios.
Cuando sale una nueva actualización, puedes cambiar fácilmente la base de tu bifurcación a ese compromiso de actualización.
git fetch upstream
git rebase upstream/master
Sin embargo, asegúrese de observar los cambios entre cada versión antes de cambiar la base y resolver cualquier cambio importante y desaprobación al cambiar la base a una nueva versión.
Si eres nuevo en git
, echa un vistazo a GitHub Desktop.
Consejo
¡Un gran beneficio con este método es que también puedes sincronizar dependencias mediante tus propios Servicios! Simplemente use poetry
para agregar o modificar dependencias apropiadamente y confirmar el poetry.lock
modificado. Sin embargo, si el proyecto principal también tiene cambios de dependencia, los cambios de poetry.lock
entrarán en conflicto y necesitará aprender cómo resolver conflictos/rebasar. ¡Aunque vale la pena!
Esta es una excelente opción para aquellos que desean hacer algo como el método de bifurcación, pero puede que no les importe qué cambios ocurrieron o cuándo y solo quieren que los cambios se sincronicen en todo el equipo.
Esto también abre formas de alojar o colaborar en el código de servicio. Siempre que pueda recibir un directorio que se actualice solo con los servicios que contiene, estará listo. Las opciones podrían incluir un servidor FTP, Google Drive compartido, un repositorio sin bifurcación con solo servicios y más.
services
en algún lugar y tenga todos sus servicios dentro de él.services
a la carpeta /devine
. Debería terminar con la carpeta /devine/services
que contiene servicios, no /devine/services/services
.Debe asegurarse de que la carpeta original siga recibiendo y descargando/transmitiendo esos cambios. También debes asegurarte de que la versión de devine que tienes localmente sea compatible con el código de servicio.
Nota
Si está utilizando una fuente en la nube que descarga el archivo una vez que se abre, no tiene que preocuparse ya que se descargarán automáticamente. La importación de Python de los archivos activa la descarga para que comience. Sin embargo, puede provocar un retraso en el inicio.
Devine puede autenticarse en los Servicios utilizando Cookies y/o Credenciales. Las credenciales se almacenan en la configuración y las cookies se almacenan en el directorio de datos que se puede encontrar ejecutando devine env info
.
Para agregar una credencial a un servicio, consulte la Configuración de credenciales para obtener información sobre cómo configurar una o más credenciales por servicio. Puede agregar una o más credenciales por servicio y usar -p/--profile
para elegir qué credencial usar.
Para agregar una cookie a un servicio, utilice una extensión de archivo de cookies para crear un archivo cookies.txt
y moverlo al directorio de cookies. Debe cambiar el nombre del archivo cookies.txt
al de la etiqueta de servicio (distingue entre mayúsculas y minúsculas), por ejemplo, NF.txt
. También puede colocarlo en una carpeta de cookies de servicio, por ejemplo, /Cookies/NF/default.txt
o /Cookies/NF/.txt
.
Puede agregar varias cookies a la carpeta /Cookies/NF/
con su propio nombre único y luego usar -p/--profile
para elegir cuál usar. Por ejemplo, /Cookies/NF/sam.txt
y luego usarlo con --profile sam
. Si crea una carpeta de cookies de servicio sin .txt
o default.txt
, pero con otro archivo, no se cargarán cookies a menos que use -p/--profile
como se muestra. Esto le permite optar por la autenticación a su antojo.
Consejo
-p/--profile
. Advertencia
Los nombres de los perfiles distinguen entre mayúsculas y minúsculas y son únicos por servicio. No tienen caracteres arbitrarios ni límite de longitud, pero por conveniencia no recomiendo usar ningún carácter especial ya que su terminal puede confundirse.
Las cookies deben tener el formato de archivo de cookies estándar de Netscape.
Extensiones recomendadas para el exportador de cookies:
Rotem Dan
Ninh Pham
,Rahul Shaw
En teoría, cualquier otra extensión que exporte al formato estándar de Netscape debería funcionar.
Advertencia La extensión Get cookies.txt de Rahul Shaw es esencialmente software espía. No lo uses. Hay algunas versiones seguras flotando (generalmente solo versiones anteriores de la extensión), pero como existen alternativas seguras, las evitaría por completo. Fuente: https://reddit.com/r/youtubedl/comments/10ar7o7
Se necesita una disposición Widevine para adquirir licencias que contengan claves de descifrado para contenido protegido con DRM. No son necesarios si utilizará devine en servicios sin DRM. No solicite ningún archivo, clave o disposición del dispositivo Widevine, ya que no se pueden proporcionar.
Devine solo admite archivos .WVD
(archivos de dispositivo Widevine). Sin embargo, si tiene el blob de identificación de cliente de dispositivo y clave privada RSA como archivos blob (por ejemplo, device_private_key
y device_client_id_blob
), puede convertirlos en un archivo .WVD
ejecutando pywidevine create-device --help
.
Una vez que tenga los archivos .WVD
, colóquelos en el directorio WVD que puede encontrar llamando devine env info
. Luego puede establecer en su configuración qué WVD (solo por nombre de archivo) usar de forma predeterminada con devine cfg cdm.default wvd_name
. Desde aquí puede configurar qué WVD utilizar para cada servicio específico. Es mejor utilizar la disposición de nivel de seguridad más bajo siempre que sea posible.
Una alternativa sería utilizar una API CDM compatible con pywidevine Serve. Por supuesto, necesitaría conocer a alguien que esté atendiendo a uno y él debería darle acceso. Eche un vistazo a la opción de configuración remota_cdm para obtener información de configuración. Para obtener más información al respecto, consulte el repositorio de pywidevine.
Devine y sus páginas comunitarias deben ser tratadas con la misma amabilidad que otros proyectos. Absténgase de enviar spam o hacer preguntas que infrinjan el Acuerdo de licencia de usuario final de un Servicio.
Este software tiene licencia según los términos de la Licencia pública general GNU, versión 3.0.
Puede encontrar una copia de la licencia en el archivo LICENCIA en la carpeta raíz.
© rlaphoenix 2019-2024