```pitón
importar sistema operativo
desde pytube importar YouTube
solicitudes de importación
importar nube de sonido
desde bandcamp importar Bandcamp
desde bs4 importar BeautifulSoup
definición YouTube_Downloader(url):
intentar:
# creación de objetos usando YouTube
# que fue importado al principio
yt =Youtube(url)
# formatos y resoluciones que pueden ser
Se mostrará # descargado según su sistema
# aquí
print("Resultados disponibles:")
all_res =yt.streams.all()
para yo en all_res:
imprimir(yo)
# el video de mayor resolución
# descargado está seleccionado
ys =yt.streams.get_highest_solving()
# ruta donde se guardarán todos los videos
yt_path =os.getcwd()
# vídeo se descarga en el lugar especificado
# ubicación
ys.descargar(yt_path)
print("Descarga completada:", yt_path)
excepto excepción como e:
imprimir(cadena(e))
def Soundcloud_Downloader(url):
intentar:
# ruta donde se guardarán todos los audios
sc_path =os.getcwd()
# creación de objetos usando soundcloud
cliente =soundcloud.Cliente()
# track =client.get(url) es un objeto
# pero como solo queremos un audio que se pueda transmitir
# URL para descargar, por lo que 'stream_url'
audio =cliente.get (url, resolver =Falso)
stream_url =audio.stream_url
# obtener solicitud para obtener el contenido
respuesta =solicitudes.get(stream_url, stream =Verdadero)
# nombrar el archivo de audio
# aquí estoy nombrando el archivo de audio igual que
# el título de la pista con .mp3 como extensión
nombre de archivo =sc_path + '/' + audio.title.replace("/", "") + ".mp3"
# El método open en Python abre el archivo en escritura.
# modo para guardar el contenido del archivo. Aquí,
# el archivo de audio se almacenará en el sistema.
con open(nombre de archivo, "wb") como f:
para fragmento en respuesta.iter_content(chunk_size=1024):
si trozo:
f.escribir (fragmento)
print("Descarga completada:", nombre de archivo)
excepto excepción como e:
imprimir(cadena(e))
def Bandcamp_Downloader(url):
intentar:
# ruta donde se guardarán todos los audios
bc_path =os.getcwd()
# la función toma la URL del álbum como
# argumento y devuelve el objeto para ese
# álbum en particular
álbum =Bandcamp (url)
# los siguientes bucles for imprimen el nombre de la pista
# y URL de todas las pistas presentes en el
# álbum
para la pista en album.tracks():
print("Pista:", pista.título, pista.url)
# elige cualquier formato de descarga aquí elijo
# formato "mp3-v0" que es mp3 de 320k
formato ="mp3-v0"
# La función descargará la canción/audio con
# usuario ingresó el nombre y descarga el audio en
# formato especificado
para la pista en album.tracks():
track.download(bc_path, track.title.replace("/","")+"."
+ formato)
print("Descarga completada:", bc_path)
excepto excepción como e:
imprimir(cadena(e))
definición principal():
mientras que Verdadero:
imprimir("Seleccione una opción:")
print("1. Descargador de YouTube")
imprimir ("2. Descargador de SoundCloud")
print("3. Descargador de Bandcamp")
imprimir("4. Salir")
elección =entrada("Ingrese su elección:")
si elección =="1":
URL =entrada ("Ingrese la URL de YouTube:")
YouTube_Downloader (URL)
elección elif =="2":
URL =entrada ("Ingrese la URL de Soundcloud:")
Soundcloud_Downloader (URL)
elección elif =="3":
URL =entrada ("Ingrese la URL de Bandcamp:")
Bandcamp_Downloader(url)
elección elif =="4":
imprimir("Saliendo...")
romper
si __nombre__ =="__principal__":
principal()
```