<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Veinti1 &#187; Python</title>
	<atom:link href="http://veinti1.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://veinti1.com</link>
	<description>.. mi pequeña guarida ..</description>
	<lastBuildDate>Fri, 23 Mar 2012 09:23:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Script para hacer Mailing en Python</title>
		<link>http://veinti1.com/script-para-hacer-mailing-en-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-para-hacer-mailing-en-python</link>
		<comments>http://veinti1.com/script-para-hacer-mailing-en-python/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 17:48:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://veinti1.com/?p=225</guid>
		<description><![CDATA[Mucho tiempo después vuelvo a compartir algo a través de este triste Blog, justo el día antes de irme de vacaciones, y con la intención de una vez que vuelva de las mismas dedicarle un poco más de tiempo, ya que me voy haciendo mayor y los escasos 140 caracteres de twitter se me empiezan [...]]]></description>
			<content:encoded><![CDATA[<p>Mucho tiempo después vuelvo a compartir algo a través de este triste Blog, justo el día antes de irme de vacaciones, y con la intención de una vez que vuelva de las mismas dedicarle un poco más de tiempo, ya que me voy haciendo mayor y los escasos 140 caracteres de twitter se me empiezan a quedar cortos.</p>
<p>El tema es que hace unos días me puse manos a la obra a instalar una herramienta para hacer mailing y mientras buscaba pensaba en lo fácil que sería programarlo con Python, así que después de no encontrar nada que mereciera la pena, me puse a tirar lineas y en apenas un par de horas ya lo tenía, Python es maravilloso <img src='http://veinti1.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , así que con una sonrisa que aún dura, os dejo el código por si sirviera a alguien de ayuda en un futuro, y una buena manera de tenerlo yo siempre a mano.</p>
<p>Decir que el envío lo hago a través de Gmail de una cuenta legítima para evitar que sea catalogado como SPAM y el envío se hace cada 5 segundos para evitar que Gmail nos bloquee. Así que no está preparado para enviar grandes volúmenes. </p>
<p>init.py</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;">#Script for Mailing</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> sqlite3
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">from</span> GmailMail <span style="color: #ff7700;font-weight:bold;">import</span> GmailMail
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> initDb<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	conn = sqlite3.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'db.sqlite'</span><span style="color: black;">&#41;</span>
	c = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># Drop and Create table</span>
	<span style="color: #ff7700;font-weight:bold;">try</span>:
		c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span><span style="color: #483d8b;">'DROP table user'</span><span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">except</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;No existe tabla user previamente&quot;</span>
	c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span><span style="color: #483d8b;">'create table user
	(id integer, name text, surname text,
	 email text, send integer)'</span><span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># Insert a row of data</span>
	fd = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;datos.txt&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
	i=<span style="color: #ff4500;">0</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> fd:
	   	datos = line.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: black;">&#41;</span>
		c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;insert into user values (&quot;</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot;, '&quot;</span> + datos<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>+ <span style="color: #483d8b;">&quot;' , '&quot;</span> + datos<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot;', '&quot;</span> + datos<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> +<span style="color: #483d8b;">&quot;',0)&quot;</span><span style="color: black;">&#41;</span>
		conn.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	   	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot;:  &quot;</span> + datos<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot;  &quot;</span> + datos<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
		i = i+<span style="color: #ff4500;">1</span>
	fd.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">def</span> connDB<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">return</span> sqlite3.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'db.sqlite'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> closeDB<span style="color: black;">&#40;</span>conn<span style="color: black;">&#41;</span>:
	conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> getAllDB<span style="color: black;">&#40;</span>conn<span style="color: black;">&#41;</span>:
	c = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span><span style="color: #483d8b;">'select * from user WHERE send=0'</span><span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
	arr = c
	<span style="color: #ff7700;font-weight:bold;">return</span> arr
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> updateRegister<span style="color: black;">&#40;</span><span style="color: #008000;">id</span>,conn<span style="color: black;">&#41;</span>:
	c = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;UPDATE user SET send=1 WHERE id=&quot;</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">id</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	conn.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> composeContent<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	f = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;email.txt&quot;</span><span style="color: black;">&#41;</span>	
	content=f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;utf8&quot;</span><span style="color: black;">&#41;</span>
	f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> content
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> sendDB<span style="color: black;">&#40;</span>subject, content, search<span style="color: black;">&#41;</span>:
	conn = connDB<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">try</span>:
		m = GmailMail<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;usuario@gmail.com&quot;</span>, <span style="color: #483d8b;">&quot;password&quot;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">except</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error SMTP&quot;</span>, <span style="color: #dc143c;">sys</span>.<span style="color: black;">exc_info</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">raise</span>
&nbsp;
	c=getAllDB<span style="color: black;">&#40;</span>conn<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> row <span style="color: #ff7700;font-weight:bold;">in</span> c:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Durmiendo cinco segundo para no saturar Gmail&quot;</span>
		<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">try</span>:
                        content=composeContent<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
			<span style="color: #dc143c;">email</span>=row<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span>	
			content = content.<span style="color: black;">replace</span><span style="color: black;">&#40;</span>search, row<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
			m.<span style="color: black;">send</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">email</span>, subject, content<span style="color: black;">&#41;</span>
			updateRegister<span style="color: black;">&#40;</span>row<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, conn<span style="color: black;">&#41;</span>
			<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>row<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot;  Enviado email a &quot;</span> + row<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot; email : &quot;</span> + <span style="color: #dc143c;">email</span>
		<span style="color: #ff7700;font-weight:bold;">except</span>:
			<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error id: &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>row<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, <span style="color: #dc143c;">sys</span>.<span style="color: black;">exc_info</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	closeDB<span style="color: black;">&#40;</span>conn<span style="color: black;">&#41;</span>		
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
&nbsp;
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>==<span style="color: #483d8b;">&quot;initDb&quot;</span>:
		initDb<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>==<span style="color: #483d8b;">&quot;run&quot;</span>:
&nbsp;
		subject=u<span style="color: #483d8b;">&quot;Asunto del email&quot;</span>
		search=<span style="color: #483d8b;">&quot;$nombre&quot;</span>
&nbsp;
		sendDB<span style="color: black;">&#40;</span>subject, <span style="color: #483d8b;">&quot;&quot;</span>, search<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">else</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;&quot;&quot;
			[+] initDb: Vuelca el contenido del fichero datos.txt a db.sqlite
			[+] run: Empieza el envio de mailing
		&quot;&quot;&quot;</span></pre></td></tr></table></div>

<p>datos.txt<br />
<code><br />
nombre1 ape1 email<br />
nombre2 ape2 email<br />
</code></p>
<p>email.txt<br />
<code><br />
Estimado $nombre:</p>
<p>bla bla bla<br />
bla bla bla<br />
bla bla blas<br />
</code></p>
<p>GmailMail.py, por no complicarme con la codificación al final opté por esta clase que robé de internet.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># requires Python &gt;= 2.5</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">multipart</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEMultipart
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">base</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEBase
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">text</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEText
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">audio</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEAudio
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">image</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEImage
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">encoders</span> <span style="color: #ff7700;font-weight:bold;">import</span> encode_base64
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">mimetypes</span> <span style="color: #ff7700;font-weight:bold;">import</span> guess_type
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span> <span style="color: #ff7700;font-weight:bold;">import</span> basename
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> GmailMail<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, gmail_user, gmail_pwd<span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">&quot;&quot;&quot;
        Prepares an instance with basic authentication
&nbsp;
        &quot;&quot;&quot;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">gmail_user</span> = gmail_user
        <span style="color: #008000;">self</span>.<span style="color: black;">gmail_pwd</span> = gmail_pwd
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> getAttachment<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, path, charset=<span style="color: #483d8b;">'ASCII'</span><span style="color: black;">&#41;</span>:
        contentType, encoding = guess_type<span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> contentType <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">None</span> <span style="color: #ff7700;font-weight:bold;">or</span> encoding <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">None</span>:
            contentType = <span style="color: #483d8b;">'application/octet-stream'</span>
&nbsp;
        mainType, subType = contentType.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/'</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        _file = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>path, <span style="color: #483d8b;">'rb'</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> mainType == <span style="color: #483d8b;">'text'</span>:
            attachment = MIMEText<span style="color: black;">&#40;</span>_file.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, subType, charset<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> mainType == <span style="color: #483d8b;">'message'</span>:
            attachment = <span style="color: #dc143c;">email</span>.<span style="color: black;">message_from_file</span><span style="color: black;">&#40;</span>_file<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> mainType == <span style="color: #483d8b;">'image'</span>:
            attachment = MIMEImage<span style="color: black;">&#40;</span>_file.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, _subType=subType<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> mainType == <span style="color: #483d8b;">'audio'</span>:
            attachment = MIMEAudio<span style="color: black;">&#40;</span>_file.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, _subType=subType<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            attachment = MIMEBase<span style="color: black;">&#40;</span>mainType, subType<span style="color: black;">&#41;</span>
            attachment.<span style="color: black;">set_payload</span><span style="color: black;">&#40;</span>_file.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            encode_base64<span style="color: black;">&#40;</span>attachment<span style="color: black;">&#41;</span>
&nbsp;
        _file.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        attachment.<span style="color: black;">add_header</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Content-Disposition'</span>, <span style="color: #483d8b;">'attachment'</span>,
            filename=basename<span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">return</span> attachment
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> send<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, to, subject, text=u<span style="color: #483d8b;">&quot;&quot;</span>, html=<span style="color: #008000;">None</span>, attachments=<span style="color: #008000;">None</span>, charset=<span style="color: #483d8b;">&quot;iso-8859-15&quot;</span><span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">&quot;&quot;&quot;
        Sends an email through Gmail using the authentication
        given to this instance.
&nbsp;
        If given, attachments must be a list of paths pointing
        to the files we want to include.
&nbsp;
        This script does not embed inline content (multipart/related)
&nbsp;
        &quot;&quot;&quot;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> charset <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">'utf8'</span>,<span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#93;</span>: <span style="color: #808080; font-style: italic;">#bug?</span>
            <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">charset</span> <span style="color: #ff7700;font-weight:bold;">import</span> add_charset, SHORTEST
            add_charset<span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span>, SHORTEST, <span style="color: #008000;">None</span>, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>text, <span style="color: #008000;">unicode</span><span style="color: black;">&#41;</span>:
            text = text.<span style="color: black;">encode</span><span style="color: black;">&#40;</span>charset, <span style="color: #483d8b;">'replace'</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>html, <span style="color: #008000;">unicode</span><span style="color: black;">&#41;</span>:
            html = html.<span style="color: black;">encode</span><span style="color: black;">&#40;</span>charset, <span style="color: #483d8b;">'replace'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> attachments <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">None</span>:
            attachments = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> text: plain_part = MIMEText<span style="color: black;">&#40;</span>text, <span style="color: #483d8b;">'plain'</span>, charset<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> html: html_part = MIMEText<span style="color: black;">&#40;</span>html, <span style="color: #483d8b;">'html'</span>, charset<span style="color: black;">&#41;</span>
&nbsp;
        is_alternative = html <span style="color: #ff7700;font-weight:bold;">and</span> text
        layers = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> attachments <span style="color: #ff7700;font-weight:bold;">or</span> is_alternative:
            msg = MIMEMultipart<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#mixed</span>
            msg.<span style="color: black;">set_charset</span><span style="color: black;">&#40;</span>charset<span style="color: black;">&#41;</span>
            msg.<span style="color: black;">preamble</span> = <span style="color: #483d8b;">'This is a multi-part message in MIME format.'</span>
            msg.<span style="color: black;">epilogue</span> = <span style="color: #483d8b;">''</span>
            layers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>msg<span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #ff7700;font-weight:bold;">if</span> is_alternative:
                msgAlternative = MIMEMultipart<span style="color: black;">&#40;</span><span style="color: #483d8b;">'alternative'</span><span style="color: black;">&#41;</span>
                msg.<span style="color: black;">attach</span><span style="color: black;">&#40;</span>msgAlternative<span style="color: black;">&#41;</span>
                layers.<span style="color: black;">append</span><span style="color: black;">&#40;</span>msgAlternative<span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #ff7700;font-weight:bold;">if</span> text:
                layers<span style="color: black;">&#91;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">attach</span><span style="color: black;">&#40;</span>plain_part<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> html:
                layers<span style="color: black;">&#91;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">attach</span><span style="color: black;">&#40;</span>html_part<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">elif</span> text:
            msg = plain_part
        <span style="color: #ff7700;font-weight:bold;">else</span>: <span style="color: #808080; font-style: italic;">#html only</span>
            msg = html_part
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> path <span style="color: #ff7700;font-weight:bold;">in</span> attachments:
            msg.<span style="color: black;">attach</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">getAttachment</span><span style="color: black;">&#40;</span>path, charset<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> = <span style="color: #008000;">self</span>.<span style="color: black;">gmail_user</span>
        msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> = to
        msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> = subject
&nbsp;
        mailServer = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;smtp.gmail.com&quot;</span>, <span style="color: #ff4500;">587</span><span style="color: black;">&#41;</span>
        mailServer.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        mailServer.<span style="color: black;">starttls</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        mailServer.<span style="color: black;">ehlo</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        mailServer.<span style="color: black;">login</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">gmail_user</span>, <span style="color: #008000;">self</span>.<span style="color: black;">gmail_pwd</span><span style="color: black;">&#41;</span>
        mailServer.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">gmail_user</span>, to, msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;"># Should be mailServer.quit(), but that crashes...</span>
        mailServer.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://veinti1.com/script-para-hacer-mailing-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>getTorrent.py &#8211; nueva versión.</title>
		<link>http://veinti1.com/gettorrentpy-nueva-version/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gettorrentpy-nueva-version</link>
		<comments>http://veinti1.com/gettorrentpy-nueva-version/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 18:23:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://veinti1.com/?p=174</guid>
		<description><![CDATA[¿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í.]]></description>
			<content:encoded><![CDATA[<p><a href="http://veinti1.com/gettorrentpy-script-para-descarga-de-torrent-del-rss-de-mininova-y-anadirlos-a-mldonkey/" target="_blank">¿Que es?</a></p>
<p>He subido una nueva versión debido a cambios en el RSS de mininova que no me parseaba correctamente los seechs y leechs.</p>
<p>Podeís descargarla desde <a href="http://doc.veinti1.com/getTorrent.tar.gz">aquí</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://veinti1.com/gettorrentpy-nueva-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script para hacer Backups</title>
		<link>http://veinti1.com/script-para-hacer-backups/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-para-hacer-backups</link>
		<comments>http://veinti1.com/script-para-hacer-backups/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 03:36:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://veinti1.com/?p=164</guid>
		<description><![CDATA[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 &#8216;backup&#8217; hacía la que va a copiar. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [...]]]></description>
			<content:encoded><![CDATA[<p>Me he hecho un pequeño script en Python que llamo todos los dias en en el cron para que me haga un backup.<br />
Utiliza scp y lo tengo configurado con certificado de la máquina &#8216;backup&#8217; hacía la que va a copiar.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>, <span style="color: #dc143c;">time</span>, <span style="color: #dc143c;">smtplib</span>, <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">subprocess</span>, <span style="color: #dc143c;">StringIO</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">image</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEImage
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">text</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEText
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">multipart</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEMultipart
&nbsp;
<span style="color: #dc143c;">email</span> = <span style="color: #483d8b;">&quot;email@dominio&quot;</span> <span style="color: #808080; font-style: italic;">#email al que vas a enviar</span>
email_from = <span style="color: #483d8b;">&quot;email@dominio&quot;</span> <span style="color: #808080; font-style: italic;">#Desde el que vas a enviar</span>
path = <span style="color: #483d8b;">&quot;/path/donde/guardar/el/backup&quot;</span>
path_l = path + <span style="color: #483d8b;">&quot;files/&quot;</span>
path_h = <span style="color: #483d8b;">&quot;/path/de/la/maquina/remota/a/copiar&quot;</span>
host = <span style="color: #483d8b;">&quot;ip_o_dominio&quot;</span>
<span style="color: #dc143c;">user</span> = <span style="color: #483d8b;">&quot;cacaue&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> writelog<span style="color: black;">&#40;</span>content<span style="color: black;">&#41;</span>:
log=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>path+<span style="color: #483d8b;">'log.txt'</span>, <span style="color: #483d8b;">'a'</span><span style="color: black;">&#41;</span>
log.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%d %m %Y %H:%M&quot;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot;  &quot;</span>+content+<span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
log.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> sendemail<span style="color: black;">&#40;</span>content, asunto<span style="color: black;">&#41;</span>:
msg = MIMEMultipart<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> = <span style="color: #dc143c;">email</span>
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Cc'</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">&quot;&quot;</span>
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> = email_from
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> = asunto
text = MIMEText<span style="color: black;">&#40;</span>content<span style="color: black;">&#41;</span>
text.<span style="color: black;">add_header</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Content-Disposition&quot;</span>, <span style="color: #483d8b;">&quot;inline&quot;</span><span style="color: black;">&#41;</span>
msg.<span style="color: black;">attach</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">try</span>:
server=<span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;localhost&quot;</span><span style="color: black;">&#41;</span>
server.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span>, msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span>, msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
server.<span style="color: black;">quit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Email enviado a &quot;</span>+msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span>+<span style="color: #483d8b;">&quot; con el contenido: &quot;</span>+content<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span>:
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Error al enviar email&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
path_backup = path_l+<span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%d%m%y&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
<span style="color: #dc143c;">os</span>.<span style="color: black;">mkdir</span><span style="color: black;">&#40;</span>path_backup<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span>:
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Ya existe --&amp;gt; &quot;</span>+path_backup<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #dc143c;">cmd</span> = <span style="color: #483d8b;">&quot;scp -r &quot;</span>+<span style="color: #dc143c;">user</span>+<span style="color: #483d8b;">&quot;@&quot;</span>+host+<span style="color: #483d8b;">&quot;:&quot;</span>+path_h+<span style="color: #483d8b;">&quot; &quot;</span>+path_backup
<span style="color: #ff7700;font-weight:bold;">try</span>:
f=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>path+<span style="color: #483d8b;">&quot;temp.txt&quot;</span>, <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
retcode = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">call</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span>, shell=<span style="color: #008000;">True</span>, stdin=f, stderr=f<span style="color: black;">&#41;</span>
f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> retcode <span style="color: #66cc66;">&amp;</span>lt<span style="color: #66cc66;">;</span> <span style="color: #ff4500;">0</span>:
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Child was terminated by signal&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
f=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>path+<span style="color: #483d8b;">&quot;temp.txt&quot;</span>, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
salida = f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">getsize</span><span style="color: black;">&#40;</span>path+<span style="color: #483d8b;">&quot;temp.txt&quot;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">&amp;</span>gt<span style="color: #66cc66;">;</span><span style="color: #ff4500;">0</span>:
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Error en &quot;</span>+host<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
sendemail<span style="color: black;">&#40;</span>salida, <span style="color: #483d8b;">&quot;Backup &quot;</span>+<span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%d/%m/%y&quot;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot; realizado con exito&quot;</span><span style="color: black;">&#41;</span>
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Realizado con exito&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">OSError</span>, e:
writelog<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Execution failed&quot;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://veinti1.com/script-para-hacer-backups/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>getTorrent.py &#8211; script, para descarga de .torrent del RSS de Mininova y añadirlos a MLDONKEY</title>
		<link>http://veinti1.com/gettorrentpy-script-para-descarga-de-torrent-del-rss-de-mininova-y-anadirlos-a-mldonkey/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gettorrentpy-script-para-descarga-de-torrent-del-rss-de-mininova-y-anadirlos-a-mldonkey</link>
		<comments>http://veinti1.com/gettorrentpy-script-para-descarga-de-torrent-del-rss-de-mininova-y-anadirlos-a-mldonkey/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 07:51:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://veinti1.com/?p=113</guid>
		<description><![CDATA[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. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://doc.veinti1.com/getTorrent.gif"><br />
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.</p>
<p>Modificando su herramienta, la he convertido en un script para bajarme las series automáticamente sin necesidad de estar cada Lunes .. Martes etc&#8230; 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 <img src='http://veinti1.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>El Script tiene dos modos básicos.</p>
<p>Manual:<br />
[sourcecode language='Python']python getTorrent.py Dexter s03e04[/sourcecode]<br />
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.</p>
<p>Automático:<br />
[sourcecode language='Python']python getTorrent.py -c data.nui[/sourcecode]<br />
contenido de data.nui:<br />
[sourcecode language='Python']<br />
Dexter+s03e01<br />
Dexter+s03e02<br />
Dexter+s03e03<br />
Dexter+s03e04<br />
[/sourcecode]<br />
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.</p>
<p>Descargar: <a href="http://doc.veinti1.com/getTorrent.tar.gz">getTorrent.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://veinti1.com/gettorrentpy-script-para-descarga-de-torrent-del-rss-de-mininova-y-anadirlos-a-mldonkey/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

