Google+ Seguidores

lunes, 8 de febrero de 2016

Instalar Youtube-dl con Python para descargar videos

    3

Instalar Youtube-dl con Python
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...

3 comentarios:
Write comentarios
  1. 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

    ResponderEliminar
    Respuestas
    1. 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 ;)

      Eliminar
  2. a analizar el código, muchas gracias !

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.