... torrents, RaspberryPi y Piratebay
Una de las ventajas de poder dejar un equipo conectado las 24 horas del día, es programarle ciertas tareas periódicas. Recuerda que tu RaspberryPi conectado 24 horas, 365 días al año, te hará un consumo eléctrico de unos 5€ al año.Tal y como vimos en este post, podemos decirle que busque continuamente los capítulos y subtítulos de nuestras series preferidas. Desde los comentarios, me habéis sugerido un par de herramientas, que no he conseguido poner en marcha (prometo seguir intentándolo). Ahora le toca el turno a las películas, prepara las palomitas ...
ACTUALIZACIÓN:
el script se ha quedado anticuado ... y es muy feo, pásate por este otro post que esta mucho mejor.
El siguiente script, se encarga de buscar las películas en español, de 1080p o 720p de calidad, con más seeders, publicadas en Pirate Bay. Además aplica algunos filtros, tales como palabras baneadas, géneros que no nos gustan e incluso una puntuación mínima sacada de IMDB, nada más y nada menos. El script es /usr/local/bin/busca_pelis.sh:
#!/bin/bash # programado por Juanmol para http://rsppi.blogspot.com descargadas=/root/pelisdescargadas/listado.txt wget http://thepiratebay.se/search/es%7Ccastellano/0/7/207 -O /tmp/salida_pelis 2> /dev/null listado=$(cat /tmp/salida_pelis | sed 's/\t/\n/g' | grep -e 1080 -e 720 | grep -v -i -e screener -i -e dublado -i -e documental -i -e saga -i -e evangelion -i -e 3d -e [0000-9999]-[0000-9999] -i -e "juego de tronos" -i -e oacute | cut -f2 -d\" | grep -v magnet | cut -f4 -d\/ | cut -f1 -d\[ | cut -f1 -d\( | sed 's/\./\ /g' | sed 's/_/\ /g' | sed 's/720p//g' | sed 's/BluRay//g' | sed 's/DTS-ES//g' | sed 's/x264-PublicHD//g' | sed 's/x264-ESiR//g' | sed 's/1080p//g' | sed 's/-ESiR//g' | sed 's/\ \ /\+/g' | cut -f1 -d\+) IFS=$'\n' ; for n in $listado ; do wget "http://www.imdb.com/find?q=$n&s=all" -O /tmp/busqueda_pelis 2> /dev/null; if [ $(cat /tmp/busqueda_pelis | grep "Find - IMDb " | wc -l) = 0 ]; then echo se ha encontrado del tiron > /dev/null ; else echo no se ha encontrado, hay que filtrar > /dev/null ; filtrado=$(cat /tmp/busqueda_pelis | grep "findResult odd" | sed 's/\ /\n/g' | grep href | head -1 | cut -f3 -d\/); wget "http://www.imdb.com/title/$filtrado/" -O /tmp/busqueda_pelis 2> /dev/null ; fi rating=$(cat /tmp/busqueda_pelis | grep ratingValue | cut -f3 -d\< | cut -f2 -d\>); genero=$(echo $(cat /tmp/busqueda_pelis | grep -i "href=\"/genre/" | sed 's/\=/\n/g' | grep -i "\"/genre/" | grep itemprop | cut -f2 -d\" | cut -f3 -d\/)); if [ "$(echo $rating | sed 's/\.//g')" -gt "80" ]; then if [ $(echo $genero | grep -e Musica -e Drama -e Romance | wc -l) = 0 ]; then if [ $(cat $descargadas | grep "$n" | wc -l) = 0 ]; then wget "http://thepiratebay.se/search/$n es%7Ccastellano/0/99/0" -O /tmp/lapeli_pelis 2> /dev/null; magnet=$(cat /tmp/lapeli_pelis | grep -m1 magnet | cut -f2 -d\") ; echo $n >> $descargadas ; transmission-remote -a "$magnet"; /usr/local/bin/encola_whatsapp.sh 666777888 "descargando automaticamente $n"; fi fi fi done rm -f /tmp/salida_pelis rm -f /tmp/busqueda_pelis rm -f /tmp/lapeli_pelis
parece un poco caótico ... pero de verdad lo es ;) Simplemente tenéis que configurar esta línea:
listado=$(cat /tmp/salida_pelis | sed 's/\t/\n/g' | grep -e 1080 -e 720 | grep -v -i -e screener -i -e dublado -i -e documental -i -e saga -i -e evangelion -i -e 3d -e [0000-9999]-[0000-9999] -i -e "juego de tronos" -i -e oacute | cut -f2 -d\" | grep -v magnet | cut -f4 -d\/ | cut -f1 -d\[ | cut -f1 -d\( | sed 's/\./\ /g' | sed 's/_/\ /g' | sed 's/720p//g' | sed 's/BluRay//g' | sed 's/DTS-ES//g' | sed 's/x264-PublicHD//g' | sed 's/x264-ESiR//g' | sed 's/1080p//g' | sed 's/-ESiR//g' | sed 's/\ \ /\+/g' | cut -f1 -d\+)
para que banee algunos resultados, yo le he puesto screener, dublado, documental, saga, evangelion, 3d ... puedes añadirle o quitarle los que quieras. Esta otra línea:
if [ "$(echo $rating | sed 's/\.//g')" -gt "80" ];
indica la puntuación mínima, en mi caso le he puesto 80 (8.0), por supuesto podéis ponerle la que queráis, si le pones un 12 (1.2) posiblemente se descargaría pelis como "Carate a Muerte en Torremolinos". Esta otra línea:
if [ $(echo $genero | grep -e Musica -e Drama -e Romance | wc -l) = 0 ];
es la que se encarga de NO descargar pelis con esos géneros, en concreto Música, Drama, Romance ... que una vez más podéis modificar. Si le dejáis Romance y una puntuación de 10 (1.0), lo más seguro es que se descargue Crepúsculo.
¿por que no he puesto todas las configuraciones "manuales" arriba del script en variables? ... porque me sentía un poco perro al hacer el script ;)
Bueno ahora sólo queda crear un registro vacío para que vaya apuntando las pelis que descarga y no las vuelva a bajar:
mkdir -p /root/pelisdescargadas touch /root/pelisdescargadas/listado.txt
y añadir esta línea al /etc/crontab para que busque pelis nuevas cada media hora:
*/30 * * * * root /bin/bash /usr/local/bin/busca_pelis.sh
Las últimas líneas mandan el enlace magnet al transmission-daemon y nos manda Whatsapp para avisarnos.
Se aceptan ruegos y sugerencias.
Vaya ritmo de posteo!! Casi no me da tiempo a probarlo todo!!! Sigue asi, sigue asi! Estoy aprendiendo como nunca...
ResponderEliminarEstá claro que la magia no se crea con técnica, si no con ingenio. Una aplicación así para Android seguro que te clavan 10 leuros en el market.
ResponderEliminarGran trabajo Juan.
Hola,
ResponderEliminarComo ya comenté en el post de las series, si no se tienen las habiliades de scripting de Juanmol, Flexget es tu amigo (también vale para trakt)
¿Que problemas has encontrado para no hacerlo funcionar?
Si te puedo ayudar házmelo saber :)
Yo aún no tuve tiempo de empezar a trastear pero sufro de orgasmos mentales en la lectura de cada post...
ResponderEliminarPara el que tenga problema al insertar un torrent porque tenga usuario y contraseña hay que poner en la línea 31.
ResponderEliminartransmission-remote -n usuario:contraseña -a "$magnet";
Saludos!
gracias!
EliminarFunciona perfectamente, Muchas Gracias! xD
EliminarHola
ResponderEliminartengo el siguiente problema, al cabo de unos minutos me sale el siguiente mensaje:
transmission-remote: (http://localhost:9091/transmission/rpc/) Timeout was reached
He buscado y no he encontrado nada, quien me da una idea?
Saludos
Hola primero de todo felicitarte por tu fantástico blog, lo he descubierto hace unos días y todavía estoy alucinando con los geniales posts que haces.
ResponderEliminarHe ejecutado el script con unas pequeñas variaciones:
he comentado la notificación por whatshapp y he borrado la opción documental para que también me busque documentales.
El script me ha encontrado dos películas:
The avengers 2012 y Finding Nemo 2013.
A la espera de que se descarguen, creo que estas películas que me ha encontrado no están en castellano.
Además cuando ejecuto el scrip me muestra el siguiente mensaje:
line 22: [: : integer expression expected
Saludos.
A mi me sale el mismo error.
Eliminarlínea 22: [: : se esperaba una expresión entera
Algo pasa en ese 'if' de la línea 22
Una preguntilla. ¿Qué pasaría si la memoria donde descargamos las pelis se llena? ¿se para de descargar? ¿explota mi casa?
ResponderEliminarevidentemente explotaria, totalmente logico. Al script le faltan muchas cosas: comprobar que hay internet, comprobar que no se a caido la web de piratebay, comprobar espacios disponibles, comprobar que el agua del grifo no tenga demasiada cal ... poco a poco lo iremos completando y perfeccionando ;-)
EliminarAunque pensándolo bien, el script lo que hace es buscar, nada más. El que se encarga de descargar es el Transmission, el cuál sí que te advierte de memoria llena... y pausa la descarga en el punto donde esté, esperando a que vacíes la memoria.
EliminarEn el caso de que no haya internet o la web de PirateBay esté caida, tampoco pasaría nada ya que en media hora, el script volvería a intentarlo él solo, ¿no?
Juanmol, para cuando tus shell-scripts en github para que podamos hacer forks :-)
ResponderEliminarHaz que te mande por wasap una lista de pelis interesantes y que tú puedas elegir respondiendole
Hasta lue!
Eso sería genial :D
EliminarDaría mucho juego y probablemente se ampliaran algunos de los scripts con cosas más interesantes...
personalmente creo que seria util que la peli a buscar este en una valiable asi al llamar al script le añadimos la peli despues y busca directamente la peli sin necesidad de editar el fichero, yo he estado buscando unas cuantas pelis y no me detecta ninguna supongo que igual es por los filtros...
ResponderEliminarseguiré investigando, aun asi felicidades por el script es bueno y tiene una gran faena y paciencia.
felicidades por la web cada dia te lo curras mas
mis filtros son muy restrictivos, desde que lo puse en marcha se ha bajado V de vendetta y Los Vengadores, tienes que ajustarlo a tus preferencias.
EliminarCon respecto a lo de llamar al script y añadir la película ... pierde toda la gracia ¿no? lo cachondo es que sea el script el que baje lo que "cree" que te gustaría.
Increíble! Con este script me he hecho fan tuyo!. El problema que le veo es que va a ser imposible ver todas las pelis!
ResponderEliminarPara nota seria que se pusiese en la carpeta correcta para el XBMC y actualizase la bd!
bueno eso no es un problema, indícale otro directorio de videos al xbmc y que este sea donde van las descargas del transmission ¿no?
EliminarYo tengo otra opcion para eso, cuando acaba las descargas transmission me he creado un script para enviar cada cosa a su carpeta... los avi mkv etc.. a la carpeta pelis :)
EliminarEl script es muy sencillo, lo posteo por si a alguien le es util:
#!/bin/bash
down=/media/datos/descargas
music=/media/datos/musica
img=/media/datos/fotos
vid=/media/datos/videos
#Videos
find $down -type f -name *.avi -exec mv {} $vid \;
find $down -type f -name *.mp4 -exec mv {} $vid \;
find $down -type f -name *.mkv -exec mv {} $vid \;
find $down -type f -name *.mov -exec mv {} $vid \;
find $down -type f -name *.divx -exec mv {} $vid \;
Antes de nada dar mis felicitaciones por este maravilloso blog, es simplemete IMPRESIONANTE. Me uno al carro de línea 22: [: : se esperaba una expresión entera,
ResponderEliminarno consigo que empiece a bajar las pelis.
Alguna idea?
Saludos,
OJO! si da ese fallo no es que no este funcionando, es que no ha encontrado la puntuacion en IMDB, si lo cambiais al > en lugar de -gt no hará la comprobación pertinente ... y se bajará crepúsculo ...
EliminarHola, perdonar la ignorancia... ¿En que directorio se dejarían las series descargadas?
ResponderEliminarGracias!!
Hola "Anonimo",
EliminarNo puedes realizar este post de descargas automaticas sin antes haber configurado el Transmission como dice aqui:
http://rsppi.blogspot.com.es/2012/06/cliente-torrent-para-raspberrypi.html
Si realizas primero ese post veras que el directorio de descargas lo configuras sonde tu quieras. JuanMol sugiere /mnt/porver para las descargadas y /mnt/tmptorrents para los temporales.
Hola Rumoku,
EliminarGracias por tu respuesta.
Si, el transmission lo tengo configurado en mi raspberry y va perfecto. La pregunta la hice porque llevo dos días con el script y no veo que se añada nada nuevo a las descargas de transmission ni en la carpeta de descargas. Además tanto para este script de pelis como para el de descarga automática de capítulos, si que veo que se escriben películas/series en el archivo listado.txt correspondiente.
Disculpad de nuevo mi ignorancia en linux, ¿Puedo ver en algún sitio un log o algo donde se vea si hay algún problema o siquiera si está arrancando el script?
Muchas gracias
desde que lo puse en marcha 3 dias antes de publicar el script, solo se ha descargado los vengadores y v de vendeta. Si haces una busqueda manual, veras que no hay pelis que cumplan esos criterios. Si le indicas que la puntuacion es menor y añades generos como animacion, veras que rapidamente te encuentra 4 o 5. De todas formas cuando tenga un pc delante te dire como ponerle un log para que compruebes que funciona correctamente.
EliminarLo primero enhorabuena por el blog...
EliminarUn tema que no entiendo es que en el archivo listado.txt veo que encuentra peliculas, y si bajo la nota de IMDB, encuentra más, pero luego en el transmission no veo que se añadan esas películas ni que estén en la carpeta de descargas.
hola, has hecho la prueba de coger el enlace magnet y ejecutarlo a pelo?:
Eliminartransmission-remote -a "magnet:blahblahblahblah"
Me da el error:
Eliminar"Unexpected response: < h1 >401: UnauthorizedUnauthorized User"
Voy a repasar tu post del transmission a ver si me falta algo de permisos. Me había saltado este paso porque ya estaba descargando torrents a traves de mi ip... ip:9091
Hola anonimo:
EliminarPara evitar este error tienes que poner transmission-remote -n usuario:contraseña -a "$magnet";
Con el usuario y contraseña que hayas configurado en el fichero settings.json (/etc/transmission/).
Para los que os da el error en la linea 22: [: : se esperaba una expresión entera,
hay que quitar las comillas dejandolo asi:
if [ $(echo $rating | sed 's/\.//g') -gt "80" ];
Si me equivoco en algo corregirme (Tengo 0 idea de programar).
Saludos
Muchas gracias a todos, ya me va perfecto...
Eliminarla línea 22 yo la he dejado así:
if [ $(echo $rating | sed 's/\.//g') > "80" ];
Me daba error el -gt
Qué gozada de blog, me empapo de todo que me interesa muuuuucho
ResponderEliminarGRacias por compartir tus conocimientos y proyectos, son muy interesantes
Algo estoy haciendo mal...
ResponderEliminarme da este error
pi@raspberrypi ~ $ */30 * * * * root /bin/bash /usr/local/bin/busca_pelis.sh
-bash: */30: No such file or directory
Chelo esa linea va dentro del archivo /etc/crontab
Eliminargracias ya lo he puesto, pero ahora me da un error.
Eliminarbusca_pelis.sh: 22: [: -gt: unexpected operator
le he modificado la linea 22 eliminando las "" de if [ "$(echo $rating | sed 's/\.//g')" -gt "80" ]; dejandolo if [ $(echo $rating | sed 's/\.//g') -gt "80" ];
ahora para ejecutar el script me toca pi@raspberrypi /usr/local/bin $ sudo sh busca_pelis.sh , lo estoy haciendo mal?
otra cosita.. xD, en lugar de que me avise por whatsapp podrian decirme como hacerlo para que me avise por correo
gracias!
ese fallo sale cuando no encuentra la peli en el imdb, tengo que actualizar el script para que no fallen esas cosas.
EliminarPara ejecutarlo a mano, es como dices, pero si lo tienes configurado en el /etc/crontab, se ejecutará solo cada 30 minutos.
Para que avise por correo, pasate primero por:
http://rsppi.blogspot.com.es/2013/01/envio-de-emails-desde-consola-y-con.html
Agrego otra cosa para los que como yo no sabían: en la carpeta donde colocan el script usar
ResponderEliminarchmod +x ejemplo.sh
es para dar permisos de ejecución al script
saludos.
PD: Juan Mol, voy a mirar que puedo hacer y luego le cuento, gracias!