Spiga

‘ Python ’ category archive

getTorrent.py – nueva versión.

April 10, 09 by admin

¿Que es?

He subido una nueva versión debido a cambios en el RSS de mininova que no me parseaba correctamente los seechs y leechs.

Podeís descargarla desde aquí.

Script para hacer Backups

April 06, 09 by admin

Me he hecho un pequeño script en Python que llamo todos los dias en en el cron para que me haga un backup.
Utiliza scp y lo tengo configurado con certificado de la máquina ‘backup’ hacía la que va a copiar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
import os, time, smtplib, sys, subprocess, StringIO
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
 
email = "email@dominio" #email al que vas a enviar
email_from = "email@dominio" #Desde el que vas a enviar
path = "/path/donde/guardar/el/backup"
path_l = path + "files/"
path_h = "/path/de/la/maquina/remota/a/copiar"
host = "ip_o_dominio"
user = "cacaue"
 
def writelog(content):
log=open(path+'log.txt', 'a')
log.write(time.strftime("%d %m %Y %H:%M")+"  "+content+"\r\n")
log.close()
 
def sendemail(content, asunto):
msg = MIMEMultipart()
msg['To'] = email
msg['Cc'] = ""
msg['From'] = email_from
msg['Subject'] = asunto
text = MIMEText(content)
text.add_header("Content-Disposition", "inline")
msg.attach(text)
 
try:
server=smtplib.SMTP("localhost")
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
writelog("Email enviado a "+msg['To']+" con el contenido: "+content)
except:
writelog("Error al enviar email")
 
if __name__ == "__main__":
path_backup = path_l+time.strftime("%d%m%y")
try:
os.mkdir(path_backup)
except:
writelog("Ya existe --> "+path_backup)
 
cmd = "scp -r "+user+"@"+host+":"+path_h+" "+path_backup
try:
f=open(path+"temp.txt", "w")
retcode = subprocess.call(cmd, shell=True, stdin=f, stderr=f)
f.close()
if retcode < 0:
writelog("Child was terminated by signal")
else:
f=open(path+"temp.txt", "r")
salida = f.read()
f.close()
if os.path.getsize(path+"temp.txt")>0:
writelog("Error en "+host)
else:
sendemail(salida, "Backup "+time.strftime("%d/%m/%y")+" realizado con exito")
writelog("Realizado con exito")
 
except OSError, e:
writelog("Execution failed")

getTorrent.py – script, para descarga de .torrent del RSS de Mininova y añadirlos a MLDONKEY

October 23, 08 by admin


Recientemente un amigo me paso un script para descargar Torrents de series españolas del MLDONKEY, el funcionamiento era que solicitaba el rss de series de mininova y lo parseaba para encontrar la url de dicho archivo, lo descargaba y guardaba en la carpeta que por defecto viene en el subdirectorio de mldonkey con nombre torrents/incoming. Mldonkey añade a su lista de descarga los torrent que se encuentre en esa carpeta.

Modificando su herramienta, la he convertido en un script para bajarme las series automáticamente sin necesidad de estar cada Lunes .. Martes etc… bajandome el torrent de la serie de turno y introduciendolo en MLDONKEY para subirle el torrent. El mecanismo es que seleciona del RSS el que más Seeds y Leechers tenga la formulá solo para mentes avanzadas Seeds*2+Leechers :P

El Script tiene dos modos básicos.

Manual:
[sourcecode language='Python']python getTorrent.py Dexter s03e04[/sourcecode]
Guardará en el directorio que le inquemos dentro del script como ML_PATH el torrent con mayor puntuación que de como resultado la busqueda de Dexter+s03e04, podriamos añadir todas las palabras de busqueda que queramos.

Automático:
[sourcecode language='Python']python getTorrent.py -c data.nui[/sourcecode]
contenido de data.nui:
[sourcecode language='Python']
Dexter+s03e01
Dexter+s03e02
Dexter+s03e03
Dexter+s03e04
[/sourcecode]
Ejecutamos esta orden mediante cron todos los Lunes. Primero descargará Dexter s03e01 al Lunes siguiente Dexter s03e02 y así sucesivamente hasta el final. Cierto es de que debemos de quitar el cron cuando se acabe la serie, aunque este no hará nada malo, ya que el archivo quedará vacio y no ejecutará nada.

Descargar: getTorrent.tar.gz