import os
import pafy

def banner():
    print(
        """
██╗   ██╗████████╗   ██╗  ██╗██████╗ 
╚██╗ ██╔╝╚══██╔══╝   ██║  ██║██╔══██╗
 ╚████╔╝    ██║█████╗███████║██║  ██║
  ╚██╔╝     ██║╚════╝██╔══██║██║  ██║
   ██║      ██║      ██║  ██║██████╔╝
   ╚═╝      ╚═╝      ╚═╝  ╚═╝╚═════╝ 
                        f̠̺̘m̫̦̫a̫̝͙t̡͙r̡͙̺i͍̠͜x̙̻̞ 2͉̦̼0͎͍2͓̪͜1̦̫͕  \n""")
banner()

# URL del video.
url = ""
try:
    url = str(input("✏️   Inserta la URL o Playlist a descargar: "))

    # Creamos el objeto para el video.
    video = pafy.new(url)

    # Mostramos información del video.
    print(f"🎵  Título: {video.title}.")
    print(f"🎵  Autor: {video.author}.")
    print(f"🎵  Duración: {video.duration}.")
    print(f"〽️  Rating 0-5: {video.rating}.")
    print(f"👀  Reproducciones: {video.viewcount}.")
    print(f"👍  Likes: {video.likes}.")
    print(f"👎  Dislikes: {video.dislikes}.")
    print(f"🌐  Canal de Youtube: https://www.youtube.com/channel/{video.username}\n")

    # Extraemos información sobre la mejor calidad de video disponible.
    print("🔵  Buscando la mejor calidad de video disponible.")
    print(f"⚪️  {video.videostreams}\n")
    bestResolutionVideo = video.getbest()

    # Creamos directorio para almacenar los archivos descargados.
    # Si estás en Windows debes especificar la ruta de descarga o comentar las líneas 42,43,44,45.
    # Si has comentado las líneas, el archivo se descargará en la misma carpeta donde se encuentre YT-HD.py
    directorio = "Descargas"
    if not os.path.exists("Descargas"):
        os.makedirs("Descargas")
    os.chdir("./Descargas")

    # Descargamos el video.
    print("🟠  Descargando.\n")
    bestResolutionVideo.download()
    print("\n🟢  Descarga guardada en: "+os.getcwd())
    
    # Creamos un log de descargas.
    log = open ("YT-HD.log", "a")
    log.write("\n"+video.title+" || "+url)
    log.close()
    log = open("YT-HD.log")
    log.read()
    log.close()
    print("📝  Añadiendo información de la descarga a YT-HD.log")

# Controlamos los errores.
except ValueError:
    print("🔴  ERROR: URL no válida.")
except KeyboardInterrupt:
    print("\n🔴  Interrumpido por el usuario.")
finally: # Acabamos el programa.
    print("🏴  Saliendo de YT-HD.")

