BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Necesito ayuda caprina con este script

BocaDePez

Hola de nuevo, Sras. y Sres.

He conseguido este script que sirve para descargar canciones del servidor soundcloud.com

Su uso es '$ soundcloud-dl.sh [URL_de_la_canción]'

#!/bin/bash
echo "soundcloud.com music downloader by http://360percents.com";

if [ -z "$1" ]; then
echo "";echo "Usage: `basename $0` [DJ-URL]";echo "";
exit
fi

page=`wget $1 --user-agent='Mozilla/5.0' -O -`;
songs=`echo "$page" | grep 'streamUrl' | tr '"' "\n" | grep 'http://media.soundcloud.com/stream/'`;
songcount=`echo "$songs" | wc -l`
titles=`echo "$page" | grep 'title":"' | tr ',' "\n" | grep 'title' | cut -d '"' -f 4`

if [ -z "$songs" ]; then
echo "No song found at this url.";
exit;
fi

echo "Found $songcount songs!";

for (( songid=1; songid <= $songcount ; songid++ ))
do
title=`echo "$titles" | sed -n "$songid"p`
echo "Downloading $title..."
wget -L `echo "$songs" | sed -n "$songid"p` --user-agent='Mozilla/5.0' -O "$title.mp3";
done

Funciona muy bien, pero el problema es que, además de la canción original, descarga otras canciones que pertenecen al usuario que subió la primera.

Mi deseo sería modificar el script para que solamente descargue la primera canción.

Un saludo.

BocaDePez

Pues quita el bucle del final ... está claro que no entiendes el código.

🗨️ 3
BocaDePez

Gracias por su respuesta, pero ni quitando parte ni el total del bucle final funciona: de esa manera ya no descarga nada.

Un saludo.

🗨️ 2
BocaDePez

Pues cambia songcount=`echo "$songs" | wc -l` por songcount=1 ... yo que sé ...

🗨️ 1
BocaDePez

Muchas gracias, amigo. Ha dado Vd. en el clavo.

Asunto solucionado.

Saludos.

BocaDePez

¿Quién está invocando a las cabras? ¿Quién es ese pendejo pinche empuja ratones galopante irreversible que osa invocar a las cabras?

No conocía soundcloud.com, es más, no me gusta la música, y creo, como decía Napoleón, que la música es el menos molesto de todos los ruidos. Acabo de echarle un vistazo a ese script, y a la web soundcloud.com, después de ver la película "The Animal".

Me dije, voy a descargar sólo la música titulada Antidote. Por ejemplo, voy a la siguiente web (link roto) para descargarme la música titulada Antidote, pero ahí está toda la música completa de ese tío, no sólo la música titulada Antidote.

Para ver cuantos ficheros de música hay en esa página, lo que hice fue comentar la siguiente línea del script, para que no descargue nada:

# wget -L `echo "$songs" | sed -n "$songid"p` --user-agent='Mozilla/5.0' -O "$title.mp3"

Pongo en marcha el script y me sale la lista con toda la música que hay en esa página, o sea, 6 ficheros de música barata.

Entonces, como son las doce y cincuenta minutos de la noche, aquí en África, y no me quiero estrujar la neurona haciéndome un script, simplemente fui al código fuente de la página web, busqué "Antidote" y encontré el siguiente código....

window.SC.bufferTracks.push({"id":12172771,"uid":"xA776e7pOMXd","user":{"username":"Fingers In The Noise","permalink":"fitn"},"uri":"/fitn/antidote-va-sendai-charity","duration":335330,"token":"vGksD","name":"antidote-va-sendai-charity","title":"Antidote ( VA - Sendai Charity - Unique International) read info link.","commentable":true,"revealComments":true,"commentUri":"/fitn/antidote-va-sendai-charity/comments/","streamUrl":"(link roto)

Anda, pues por ahí debe estar la música titulada "Antidote" y ahí podré descargar solo esa música, no todas la música que hay en la página... así que puse esto en la consola y la cabra se metió en el corral

wget (link roto)

Renombro el fichero como mp3 y ya puedo escuchar la "música" que acabo de bajarme. Si quieres puedes renombrarla directamente con -O "nombre_que_sea.mp3", por ejemplo:

wget (link roto) -O "out.mp3"

Ahí está la cabra, y así con todas las cabras. Meter la cabra, o las cabras elegidas, en el corral, mediante un script, es tu problema. No sé si cuando buscas una canción, por ejemplo, Antidote, siempre aparece la primera de la lista en el código fuente del fichero html, pues no sé como va soundcloud.com, sería cosa de mirarlo, pero a mí me gustan las cabras, no las nubes.

museum.state.il.us/ismdepts/library/linu…s/abs-guide/

Yo me voy a hacer una paja y luego me voy a dormir que mañana tengo que empujar la carretilla:

🗨️ 5
BocaDePez

No estaba tranquilo en la cama, viendo como este pinche ratones no puede elegir la música que desea sacar de la página web, así que he vuelto ...

Se me ocurrió modificar el script para que sea un script informativo, no de descarga.

Como en las páginas hay varias canciones, para elegir las que tú quieras, en el script aparece el título de las canciones y el enlace de las descargas, y lo único que hay que hacer es copiar y pegar el enlace deseado en el navegador, o en el gestor de descargas, y punto.

Este es el script modificado:

#!/bin/bash
# Encuentra toda la música alojada en las páginas de soundcloud.com"
#
echo "soundcloud.com music downloader by http://360percents.com";

if [ -z "$1" ]; then
echo "";echo "Usage: `basename $0` [DJ-URL]";echo "";
exit
fi

page=`wget $1 --user-agent='Mozilla/5.0' -O -`;
songs=`echo "$page" | grep 'streamUrl' | tr '"' "\n" | grep 'http://media.soundcloud.com/stream/'`;
songcount=`echo "$songs" | wc -l`
titles=`echo "$page" | grep 'title":"' | tr ',' "\n" | grep 'title' | cut -d '"' -f 4`

if [ -z "$songs" ]; then
echo "No se encontró ninguna canción.";
exit;
fi

echo "¡Se encontraron $songcount canciones! Pegalas en tu gestor de descargas:"
echo
for (( songid=1; songid <= $songcount ; songid++ ))
do
title=`echo "$titles" | sed -n "$songid"p`
echo "#####################################"
echo "$title..."
echo "$songs" | sed -n "$songid"p
done

# Fin del script

El funcionamiento sería así. Si queremos ver las canciones que contiene una página arrancamos el script con la dirección de la página web. Por ejemplo, en este caso:

./nombre_del_script (link roto)

Nos aparecerá está lista con las 6 canciones disponibles:

¡Se encontraron 6 canciones! Pegalas en tu gestor de descargas:

#####################################
Antidote ( VA - Sendai Charity - Unique International) read info link....
(link roto)
#####################################
Full Moon (preview)...
(link roto)
#####################################
The law of silence (wip preview deep/dub/techno)...
(link roto)
#####################################
Fitn - ALL MY PRAYERS FOR JAPANESE PEOPLE (DeepinDub Netlabel)...
(link roto)
#####################################
Tuned \u0026amp; Detuned (intro preview - Ambient Experimental Glitch)...
(link roto)
#####################################
Basik Camel II (Variation - Preview)...
(link roto)
cabrero@debian:~$

Por ejemplo, si quieres descargar la canción Antidote ( VA - Sendai Charity )

Pues el enlace lo tienes justo debajo de cada título, o sea...

(link roto)

Copias y pegas ese enlace en el navegador, gestor de descarga, y seguramente se queda guardado como mp3, y en caso contrario lo renombras a mp3 y listo.

------------------------------------------------------------------------------------

Bueno, a mamarla.

🗨️ 4
BocaDePez

Ah, y para que ves que funciona, si haces clic en los enlaces que ves en ese mismo post, directamente te descargas los ficheros con tu navegador windosero IExploter.

🗨️ 1
BocaDePez

Ah, y este foro está muerto, y aquí no hay nadie a las tres de la madrugada, hora africana.

BocaDePez

Gracias una vez más, Sr. Cabrero, por su asistencia.

En este script me he dado cuenta que siempre descarga primero la canción deseada. Entonces en su modificación faltaría poder enviar el primer resultado encontrado a wget dentro del script.

De todas formas, ya otro forero ha dado con una solución:

Pues cambia songcount=`echo "$songs" | wc -l` por songcount=1 ... yo que sé ...

Aún así, le vuelvo a dar las gracias a Vd. por su ayuda y me alegro de volver a saludarle de nuevo.

Saludos.

🗨️ 1
BocaDePez

Sí, también vale que descargue solo la primera canción, pero yo no sé si en ese sitio siempre ponen la canción deseada en la cabeza de la lista. Creo que con el script "informativo" es mejor, porque así puedes elegir la canción, o las canciones que quieras, y sólo tienes que pegar los enlaces en el cacharro de las descargas. Veo que hay una "canción" de unos 60 megas", la hostia, la gente está cada vez más zumbada, más rara, porque si hay gente capaz de tragarse una "canción" de 60 megas es que el fin del mundo está próximo.

Lo mejor es abandonar la música. La música es el menos molesto de todos los ruidos, pero sigue siendo ruido molesto al fin y al cabo. Abajo la música. Que le den por culo a la música..., y a los músicos también.

BocaDePez

Sí, cuando te respondí al post ya había visto la respuesta del otro pinche empuja ratones, pero pensé que eso no funcionaría si algunas páginas no te ponen la música que tú has elegido en el primer enlace, así que pensé que era mejor en script "informativo".

Aunque ya está solucionado, como no tenía en este momento nada mejor que hacer, si siempre la canción deseada es la que figura en el primer puesto de la lista, entonces también podemos hacerlo usando, por ejemplo, nuestro querido awk, por ejemplo:

#!/bin/bash
# Descarga solo la canción elegida de soundcloud.com"
#
echo "soundcloud.com music downloader by http://360percents.com_versión cabra";

if [ -z "$1" ]; then
echo "";echo "Usage: `basename $0` [DJ-URL]";echo "";
exit
fi

cabra=`wget $1 --user-agent='Mozilla/5.0' -O -`;
ruido=`echo "$cabra" | grep 'streamUrl' | tr '"' "\n" | grep '(link roto) | awk 'NR>1{exit};1'`;

nombre=`echo "$cabra" | grep 'title":"' | tr ',' "\n" | grep 'title' | cut -d '"' -f 4 | awk 'NR>1{exit};1'`

if [ -z "$ruido" ]; then
echo "No song found at this url.";
exit;
fi

echo "Bajando la puta música $nombre..."
wget -L `echo "$ruido" ` --user-agent='Mozilla/5.0' -O "$nombre.mp3";

# fin del script

Acabo de probarlo y funciona bien.

Aunque a mí me gusta más el script informativo que te indica el título y los enlaces de toda la música disponible en la página.

🗨️ 4
BocaDePez

Mis sinceras disculpas por no haber contestado antes.

Muchas gracias por este script. También funciona.

Supongo que este script es de su exclusiva propiedad privada. Aun así, ¿le importa que cambie en él el término "cabra" por el de RubalCabra_for_President?

Un saludo.

🗨️ 3
superllo

Estas horas sin ti me han parecido meses...

🗨️ 1
BocaDePez

Ese no era yo, sino quien pedía ayuda con el script.

BocaDePez

Ni mi importa que cambies el término "cabra", ni mi importa que a RubalCabra lo pique un pollo.

BocaDePez

si en el fondo el cabrero es un admin de w 2008 server fijo.... xd

🗨️ 1
BocaDePez

Si me invocas, aparezco.