Instalar Youtube-dl con Python para descargar videos
Instalar Youtube-dl con Python |
¿Qué es Youtube-dl?
Youtube-dl es una de las mejores herramientas que tienen los usuarios GNU/Linux para descargar vídeos de Youtube.
El artículo que sigue a continuación fue enviado por Jonay, usuario que se comunicó con nosotros a través de Facebook con la intención de dar a conocer su script para instalar Youtube-dl desde Python.
Su Facebook: https://www.facebook.com/archdesktop
Recuerda que si quieres enviarnos un artículo o ser parte del equipo de redactores puedes comunicarte a través de las redes sociales o por el formulario de contacto: Se parte del equipo
¿Porque hacer este script si se puede instalar youtube-dl de otra manera?
Ubuntu y sus problemas, durante meses, he usado Ubuntu como distribución principal, he luchado contra sus bug, y sus dependencias. Uno de mis problemas y el que más me ha molestado fue Youtube-dl, lo instalé como cualquier ubuntero:
# apt-get install youtube-dl
Quería bajar un canal entero de música, el problema fue que me dio un error, así que lo eliminé, también su configuración, limpié con autoclean, autoremove, clean, luego actualicé los repositorios, actualicé el sistema, volví a instalar youtube-dl, probé nuevamente y otra vez surgió el mismo error. Pensé que el sistema se había roto o que pasaba algo con el paquete. Decidí entonces buscar en stackoverflow, y al parecer no era el único (eso me alegró un poco). Así que dije "coño" voy a buscar youtube-dl en la web oficial para ver si tiene un enlace a github, y así probarlo, claro, al principio es una flojera (en mi caso) bajar todo, luego pasarlo a dicha carpeta, darle los permisos, pero esos sí, al final funcionó. Fue ahí que se me ocurrió la idea de crear un script en python3 que me facilite la tarea. Y bueno eso fue todo, un poco largo, pero entretenida la historia 😉
Puedes ver el código en hithub: https://github.com/jonaypython/youtube-dl-install/blob/master/youtube-dl-install.py
#!usr/local/bin/python3 import os import urllib.request import getpass print("bienvenid@ / welcolme " + getpass.getuser()) def youtube(): print(""" Y88b d88P 888 888 888 888 Y88b d88P 888 888 888 888 Y88o88P 888 888 888 888 Y888P .d88b. 888 888 888888 888 888 88888b. .d88b. .d88888 888 888 d88""88b 888 888 888 888 888 888 "88b d8P Y8b d88" 888 888 888 888 888 888 888 888 888 888 888 888 88888888 888888 888 888 888 888 Y88..88P Y88b 888 Y88b. Y88b 888 888 d88P Y8b. Y88b 888 888 888 "Y88P" "Y88888 "Y888 "Y88888 88888P" "Y8888 "Y88888 888 by:https://www.facebook.com/archdesktop""") dir = os.chdir("/usr/local/bin/") descarga = urllib.request.urlretrieve("https://yt-dl.org/latest/youtube-dl","youtube-dl") permisos = os.system("sudo chmod a+x /usr/local/bin/youtube-dl") print (""" ______ _ _ _ | ___|(_) (_) | | | |_ _ _ __ _ ___ | |__ | _| | || '_ | |/ __|| '_ | | | || | | || |__ | | | | _| |_||_| |_||_||___/|_| |_|""") limpiar = os.system("clear") print (""" ,ad8888ba, 88 88 d8"' `"8b 88 88 d8' 88 88 88 ,adPPYba, ,adPPYba, ,adPPYb,88 88,dPPYba, 8b d8 ,adPPYba, 88 88888 a8" "8a a8" "8a a8" `Y88 88P' "8a `8b d8' a8P_____88 Y8, 88 8b d8 8b d8 8b 88 88 d8 `8b d8' 8PP""""""" Y8a. .a88 "8a, ,a8" "8a, ,a8" "8a, ,d88 88b, ,a8" `8b,d8' "8b, ,aa `"Y88888P" `"YbbdP"' `"YbbdP"' `"8bbdP"Y8 8Y"Ybbd8"' Y88' `"Ybbd8"' d8' d8' """) if getpass.getuser() =="root": youtube() else: print("""please,you run script : sudo su ; python3 youtube_dl.py *** *** ***** ***** ***** ***** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ********************** **************** """)
Empecemos a analizar el código:
#! usr/local/bin/python3
Esta línea comentada, especifica la ruta, de py3. En este caso a pesar de que no es obligatoria, es recomendable usarla, ya que de paso estás indicando al usuario que versión de Python requiere el script. Si no estás familiarizado con GNU/Linux, tecleando en la terminal: Python, este detectará la versión del mismo
import os
import urllib.request
import getpass
Aquí, se importa la librería del sistema (os) la cual nos va a permitir ir a directorios, ejecutar comandos y demás.
urllib.request, nos permitirá interactuar con las páginas web, es decir, bajar archivos, etc..
getpass, esta librería, no es que tenga muchas opciones, pero es espectacular. Podemos saber el usuario de la sesión actual, y escribir las claves de manera oculta (si no lo entiendes, ya lo verás, tranqui...)
print("bienvenid@ / welcome" + getpass.getuser())
No hace falta decir para que es :), si el nombre de tu sesión actual es "maría" el script dirá lo siguiente: "bienvenid@ / welcome maría, para eso se utiliza GET+user
Dentro de la función def youtube() encontramos lo siguiente:
dir = os.chdir("/usr/local/bin/")
Aquí en la variable "dir" vemos que utilice algo con la librería os ¿El qué?, tal y como dije más arriba, esta librería nos da la opción de ir a directorios, comandos y demás cosas del sistema, así que nos dirigimos a la siguiente ruta con os.chdir. Es recomendable no olvidar escribir la ruta completa, si no es así, suelen reproducirse muchos errores, y nos volveremos locos tratando de buscar el error.
descarga = urllib.request.urlretrieve("https://yt-dl.org/latest/youtube-dl", "youtube-dl")
urllib, la librería que nos permite interactuar con las páginas web, en este caso, urlretrieve, nos da la opción de bajar archivos, claro, siempre y cuando se respeten varias normas, una de ellas, como indica la documentación oficial, es que hay que darle un nombre si no nos devolverá un error, por eso, el script baja youtube-dl, y a continuación se escribe el nombre del archivo bajado.
permisos = os.system("sudo chmod a+x /usr/local/bin/youtube-dl")
Aquí, usamos la librería os para darle los permisos necesarios y poder ejecutar youtube-dl, si no, devolverá un error 🙂
limpiar = os.system("clear")
Limpiamos la terminal de GNU/Linux
if getpass.getuser() == "root":
youtube()
Si la estructura de control, detecta que el usuario que está ejecutando el script es el usuario root, entonces el correrá el script en py. Mucho cuidado con el "==" que he visto muchos a usuarios solo añadirle uno... Ojo, nada de tabulación, que luego aparecen los errores, dar 4 espacios. Algunos ides, ya están preparados para esto y automáticamente cambian la tabulación por 4 espacios, alguno de ellos: NotepadQQ(GNU/Linux), Ninja IDE (Windows y Linux).
else:
print("""please, you run script: sudo su; python3 youtube_dl.py
En caso de que no se cumpla la primera condición, mostrará el mensaje, de que ejecute el script de la siguiente manera.
----------------------------------------------------------------------------------------
Espero esta entrada sea de su agrado y nuevamente gracias Jonay por compartir en Mi Diario Python y por supuesto, por compartir para toda la comunidad Python.
Saludos, Diego...
-
-
Hola caizedo, en la consola python es difícil ejecutar un código largo y más si eres novato. Te animo que instales algún IDE (ej: GEANY) donde puedes copiar el código para estudiarlo y ejecutarlo desde el mismo editor. Saludos y gracias por visitar el blog 😉
-
-
a analizar el código, muchas gracias !
Deja una respuesta
buenas tardes son mucho los ejemplos de python que como novato en esta actividad me inicio y he intentado activar algunos codigos en la consola python y me dice lo siguiente sintax error:invalid syntax