<?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>Le Blog du grand loup Zeur &#187; ogame</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/ogame/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mon apprentissage de python avec Ogame ^^</title>
		<link>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 18:58:51 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[ogame]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=630</guid>
		<description><![CDATA[The kikoolol strike back !! Mon deuxième billets de la soirée &#8230;pour pas grand chose en fait. J&#8217;ai voulu apprendre le langage python de façon plutôt ludique en créant un bot qui créer des batiments en boucle pour Ogame &#8230; rien d&#8217;illégal bien entendu ^^. Dans le code Python qui va suivre, vous pourrez comprendre [...]]]></description>
			<content:encoded><![CDATA[<p>The kikoolol strike back !! Mon deuxième billets de la soirée &#8230;pour pas grand chose en fait.</p>
<p>J&#8217;ai voulu apprendre le langage python de façon plutôt ludique en créant un bot qui créer des batiments en boucle pour Ogame &#8230; rien d&#8217;illégal bien entendu ^^.<br />
Dans le code Python qui va suivre, vous pourrez comprendre (ou pas) comment fonctionne :</p>
<ul>
<li>Les requêtes HTTP en python avec des headers à partir de zéro</li>
<li>Les Threads pour les opérations en parallèle</li>
<li>Les Semaphores, pour éviter des requêtes en parallèle (pas apprécié par Ogame dans certain cas)</li>
</ul>
<p>Pour l&#8217;utiliser, il suffit ensuite d&#8217;ajouter au source qui vont suivre : </p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1">og = Ogame<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">og.<span class="me1">setSessionCookie</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie phpsessid de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie prssess de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie loginC de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le parametre de l&#39;url &amp;session=&#8230;&quot;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;uniXX.ogame.fr&quot;</span>votre<span class="co1">#univers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">Farmer.<span class="me1">buildInChainsPlanets</span><span class="br0">&#40;</span>og,<span class="br0">&#91;</span><span class="st0">&quot;id planete&quot;</span>,<span class="st0">&quot;id planete&quot;</span><span class="br0">&#93;</span>,<span class="br0">&#91;</span><span class="br0">&#91;</span><span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#93;</span>,<span class="br0">&#91;</span><span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>le premier paramètre de buildInChainsPlanets est l&#8217;objet og<br />
le second est un tableau de string contenant l&#8217;id des planètes à &laquo;&nbsp;farmer&nbsp;&raquo;<br />
le troisième est un tableau de tableau contenant les séquences des batiments à construire :<br />
1 pour le metal 2 pour le cristal 3 pour le deuterium 4 pour l&#8217;electricite.</p>
<p>Et voilà &#8230; lorsque vous aurez conquis une planète rajoutez-là au tableau ainsi que la séquence de batiments que vous voulez, puis laissez tourner le script plusieurs jours (faite gaffe avec les sessions qui risque de changer si vous vous reconnectez avec votre navigateur).<br />
<span id="more-630"></span></p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># -*- coding:Utf-8 -*-</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">threading</span> <span class="kw1">import</span> Thread</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">threading</span> <span class="kw1">import</span> Semaphore</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">random</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">httplib</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">time</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Ogame:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">userAgent</span> = <span class="st0">&quot;Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.3a1pre) Gecko/20091021 Ubuntu/9.10 (karmic) Minefield/3.7a1pre&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">login</span> &nbsp; &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">password</span> &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">PHPSessId</span> = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">prSess</span> &nbsp; &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">loginString</span>= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">session</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">urlGame</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">univers</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">cookie</span> &nbsp; &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">referer</span> = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> setSessionCookie<span class="br0">&#40;</span><span class="kw2">self</span>,sessid=<span class="st0">&quot;&quot;</span>,prsess=<span class="st0">&quot;&quot;</span>,loginString=<span class="st0">&quot;&quot;</span>,session=<span class="st0">&quot;&quot;</span>,univers=<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">PHPSessId</span> = sessid</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">prSess</span> &nbsp; &nbsp;= prsess</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">loginString</span>= loginString</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">session</span> &nbsp; = session</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">urlGame</span> &nbsp; = <span class="st0">&quot;/game/index.php?page=overview&amp;session=&quot;</span>+session</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">univers</span> &nbsp; = univers</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">cookie</span> &nbsp; &nbsp;= <span class="st0">&quot;PHPSESSID=&quot;</span>+<span class="kw2">self</span>.<span class="me1">PHPSessId</span>+<span class="st0">&quot;;prsess_165647=&quot;</span>+<span class="kw2">self</span>.<span class="me1">prSess</span>+<span class="st0">&quot;;login_165647=&quot;</span>+<span class="kw2">self</span>.<span class="me1">loginString</span>+<span class="st0">&quot;;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">referer</span> = <span class="st0">&quot;http://&quot;</span>+<span class="kw2">self</span>.<span class="me1">univers</span>+<span class="kw2">self</span>.<span class="me1">urlGame</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getPlanetResource<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; op = OgamePlanet<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> op.<span class="me1">getResource</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> planetAddBuilding<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span>,batiment<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; op = OgamePlanet<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> op.<span class="me1">addBuilding</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> OgamePlanet:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,ogame,<span class="kw2">id</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">planetId</span>=<span class="kw2">id</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>=ogame</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">res</span>=<span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getPlanets<span class="br0">&#40;</span>ogame<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span>ogame.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,ogame.<span class="me1">urlGame</span>,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">select</span>=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;select[^&gt;]*&gt;([<span class="es0">\w</span><span class="es0">\W</span><span class="es0">\n</span><span class="es0">\t</span><span class="es0">\r</span>]*)&lt;/select&gt;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; res=<span class="kw3">re</span>.<span class="me1">findall</span><span class="br0">&#40;</span><span class="st0">&quot;&amp;cp=([^&amp;]*)&amp;[^&gt;]*&gt;([^&lt;]*)&lt;.*<span class="es0">\[</span>([^<span class="es0">\]</span>]*)<span class="es0">\]</span>&quot;</span>,<span class="kw3">select</span>.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> res</div>
</li>
<li class="li1">
<div class="de1">&nbsp;getPlanets = <span class="kw2">staticmethod</span><span class="br0">&#40;</span>getPlanets<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getResource<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; reque=<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">urlGame</span>+<span class="st0">&quot;&amp;cp=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span>+<span class="st0">&quot;&amp;mode=&amp;gid=&amp;messageziel=&amp;re=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,reque,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span>=reque</div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; table=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;table class=&#39;header&#39; id=&#39;resources&#39;[^&gt;]*&gt;([<span class="es0">\w</span><span class="es0">\W</span><span class="es0">\n</span><span class="es0">\t</span><span class="es0">\r</span>]*?)&lt;/table&gt;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; res=<span class="kw3">re</span>.<span class="me1">findall</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;font[^&gt;]*&gt;([.0-9]*)&lt;/font&gt;&quot;</span>,table.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">res</span>=res</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> res</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#1 metal 2 cristal 3 deuterium 4 electricite</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> addBuilding<span class="br0">&#40;</span><span class="kw2">self</span>, batiment<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; url = <span class="st0">&quot;/game/index.php?page=b_building&amp;session=&quot;</span>+<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">session</span>+<span class="st0">&quot;&amp;cp=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span>+<span class="st0">&quot;&amp;mode=&amp;gid=&amp;messageziel=&amp;re=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,url,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data = rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; link=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;modus=add&amp;techid=&quot;</span>+batiment,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="kw2">str</span><span class="br0">&#40;</span>link<span class="br0">&#41;</span> == <span class="st0">&quot;None&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ti=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;pp=&#39;([0-9]+)&#39;;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw2">str</span><span class="br0">&#40;</span>ti<span class="br0">&#41;</span><span class="sy0">!</span>=<span class="st0">&quot;None&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tps = ti.<span class="me1">groups</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> &#8211; <span class="kw2">int</span><span class="br0">&#40;</span>tps<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="co1">#just to say that another things is being constructed Need to change farmer</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-3</span><span class="co1">#Don&#39;t get the url to create building</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; reque=<span class="st0">&quot;/game/index.php?page=b_building&amp;session=&quot;</span>+<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">session</span>+<span class="st0">&quot;&amp;modus=add&amp;techid=&quot;</span>+batiment+<span class="st0">&quot;&amp;planet=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,reque,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:url<span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span>=reque</div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; link=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;modus=add&amp;techid=&quot;</span>+batiment,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="kw2">str</span><span class="br0">&#40;</span>link<span class="br0">&#41;</span> == <span class="st0">&quot;None&quot;</span>:<span class="co1">#no link so it&#39;s OK</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ti=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;pp=&#39;([0-9]+)&#39;;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw2">str</span><span class="br0">&#40;</span>ti<span class="br0">&#41;</span><span class="sy0">!</span>=<span class="st0">&quot;None&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tps = ti.<span class="me1">groups</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> tps<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-2</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#Farming function &#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Farmer<span class="br0">&#40;</span>Thread<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,og,planet,batiments<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; Thread.<span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">og</span> = og</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">planet</span> = planet</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">batiments</span> = batiments</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> run<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> batiment <span class="kw1">in</span> <span class="kw2">self</span>.<span class="me1">batiments</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">self</span>.<span class="me1">sec</span>=<span class="nu0">-1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;On contruit un batiment : &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span>+<span class="st0">&quot; sur : &quot;</span>+<span class="kw2">self</span>.<span class="me1">planet</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">0</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">sec</span> = <span class="kw2">self</span>.<span class="me1">og</span>.<span class="me1">planetAddBuilding</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">planet</span>,<span class="kw2">str</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">0</span> <span class="kw1">and</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&gt;</span><span class="nu0">-4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;addTime=<span class="nu0">360</span> + <span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">120</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;Ajout d&#39;un temps additionnel de &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>addTime<span class="br0">&#41;</span>+<span class="st0">&quot; sec(s) avant le prochain batiment&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span>addTime<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">elif</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">-4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;Un batiment est déjà en construction pour encore &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>-<span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span>+<span class="st0">&quot; sec(s)&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span>-<span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;On va attendre &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span>+<span class="st0">&quot; secondes avant le prochain batiment&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw2">float</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span><span class="nu0">+2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> buildInChainsPlanets<span class="br0">&#40;</span>og,planets,batiments<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">list</span>=<span class="br0">&#91;</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">#maxCon = 1 default 1 ^^</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; pool_sema = Semaphore<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> index,planet <span class="kw1">in</span> <span class="kw2">enumerate</span><span class="br0">&#40;</span>planets<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;pool_sema.<span class="me1">acquire</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;tmp = Farmer<span class="br0">&#40;</span>og,planet,batiments<span class="br0">&#91;</span>index<span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">list</span>.<span class="me1">append</span><span class="br0">&#40;</span>tmp<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;tmp.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">5</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;pool_sema.<span class="me1">release</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> l <span class="kw1">in</span> <span class="kw2">list</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;l.<span class="me1">join</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;buildInChainsPlanets = <span class="kw2">staticmethod</span><span class="br0">&#40;</span>buildInChainsPlanets<span class="br0">&#41;</span></div>
</li>
</ol>
</div>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=630">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/liveusb-fedora9-avec-liveusb-creator/" rel="bookmark" title="Permanent Link: LiveUsb fedora9 avec liveusb creator">LiveUsb fedora9 avec liveusb creator</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/" rel="bookmark" title="Permanent Link: monter un serveur PHP en une ligne de commande (ou presque)">monter un serveur PHP en une ligne de commande (ou presque)</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/scapy-pour-forger-des-paquets-en-python/" rel="bookmark" title="Permanent Link: Scapy pour forger des paquets en python">Scapy pour forger des paquets en python</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/creer-son-propre-service-de-mail-jetable-avec-appengine/" rel="bookmark" title="Permanent Link: Créer son propre service de mail jetable avec appengine">Créer son propre service de mail jetable avec appengine</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

