+def generator_torrent_links(cookies, urlpattern):
+ """Ouvre successivement les pages d'url ``urlpattern % n`
+ jusqu'à ce qu'il n'y ait plus de torrents. Ça donne un generator."""
+ n = 0
+ while True:
+ url = urlpattern % n
+ if DEBUG:
+ print url
+ response = requests.get(url, cookies=cookies)
+ torrent_links = re.findall('href="(//www.t411.me/torrents/.*?)"', response.content)
+ torrent_links = ["https:" + i for i in torrent_links]
+ if len(torrent_links) == 0:
+ raise StopIteration
+ yield torrent_links
+ n += 1
+
+def crawl_history(cookies):
+ """Récupère la liste des liens vers les torrents dans l'historique."""
+ urlpattern = history_url
+ urlpattern += "?page=%s"
+ liste = sum(generator_torrent_links(cookies, urlpattern), [])
+ return liste
+
+def get_torrentid(url, cookies):
+ """Récupère l'id du torrent à partir de l'``url`` de sa page."""
+ response = requests.get(url, cookies=cookies)
+ ids = torrentid_regex.findall(response.content)
+ if DEBUG:
+ print url
+ #print ids
+ return ids[0]
+
+def get_torrentids(cookies, torrentlinks):
+ """Récupère les ids de tous les torrents de l'historique."""
+ return [get_torrentid(url, cookies) for url in torrentlinks]
+
+def get_torrent(cookies, id):
+ """Récupère le .torrent n°``id``."""
+ url = torrent_url % {"torrentid" : id}
+ if DEBUG:
+ print url
+ response = requests.get(url, cookies=cookies)
+ raw_torrent_file = response.content
+ return raw_torrent_file
+
+def save_torrent_file(filename, raw):
+ """Sauvegarde un fichier torrent."""
+ with open(torrent_folder + filename, "w") as f:
+ f.write(raw)
+
+def do_all():
+ """Fait tout."""
+ cookies = connect()
+ linkslist = crawl_history(cookies)
+ idslist = get_torrentids(cookies, linkslist)
+ for id in idslist:
+ raw = get_torrent(cookies, id)
+ save_torrent_file(id + ".torrent", raw)
+ print "Torrents downloaded in %s" % torrent_folder
+