Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created January 19, 2020 23:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/c2bdc3ca2ba2aaf480ea95fdd74e6852 to your computer and use it in GitHub Desktop.
Save parzibyte/c2bdc3ca2ba2aaf480ea95fdd74e6852 to your computer and use it in GitHub Desktop.
"""
Programado por Luis Cabrera Benito
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
Blog: https://parzibyte.me/blog
Ayuda: https://parzibyte.me/blog/contrataciones-ayuda/
Contacto: https://parzibyte.me/blog/contacto/
"""
from subprocess import check_output
import argparse
import time
import math
import os
def crear_directorio_si_no_existe(directorio):
if not os.path.exists(directorio):
os.makedirs(directorio)
def leyenda_segundos(segundos):
if segundos < 60:
return str(math.floor(segundos)) + " segundos"
minutos = math.floor(segundos / 60)
segundos = math.floor(segundos % 60)
cadena = "{} minuto".format(minutos)
if minutos != 1:
cadena = cadena + "s"
if segundos > 0:
cadena = cadena + (" {} segundo".format(segundos))
if segundos != 1:
cadena = cadena + "s"
return cadena
parser = argparse.ArgumentParser()
parser.add_argument(
"archivo", help="El archivo que contiene la lista de canciones o canciones y artista")
parser.add_argument("--artista", type=str,
help="Si está presente, se descargarán las canciones de 'archivo' de ese artista; si no, se descargarán tal y como están en el archivo")
argumentos = parser.parse_args()
artista = ""
archivo = argumentos.archivo
directorio = "./"
nombre_salida = ""
if argumentos.artista:
artista = argumentos.artista + " " # un espacio para la búsqueda
print("OK, todas las canciones en {} son del artista {}".format(archivo, artista))
print("Creando directorio de artista...")
crear_directorio_si_no_existe("./" + artista)
directorio = "./"+argumentos.artista
nombre_salida = "\"%(title)s.%(ext)s\""
tiempo_inicio = time.time()
contador = 0
with open(archivo) as lista:
for linea in lista:
linea_sin_salto = linea.rstrip()
busqueda = artista + linea_sin_salto
nombre_salida = linea_sin_salto
if argumentos.artista:
nombre_salida = directorio + "/" + linea_sin_salto
else:
nombre_salida = linea_sin_salto
nombre_salida = nombre_salida + ".%(ext)s"
print("Buscando '{}'... ".format(busqueda), end="")
comando = """youtube-dl --output \"""" + nombre_salida + \
"""\" --extract-audio --audio-format mp3 \"ytsearch1:{}\"""".format(
busqueda)
check_output(comando)
print("[OK]")
contador = contador + 1
tiempo_transcurrido = time.time() - tiempo_inicio
print("Se han descargado {} canciones en {}".format(
contador, leyenda_segundos(tiempo_transcurrido)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment