]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - t411_torrents.py
2 # -*- encoding: utf-8 -*-
4 """ Pour récupérer tous les .torrents déjà téléchargés sur t411.me """
12 #: URL principale de t411
13 main_url
= "https://www.t411.me/"
15 login_url
= main_url
+ u
"users/login/"
16 #: Page de profil utilisateur
17 profile_url
= main_url
+ u
"users/profile/"
19 history_url
= main_url
+ u
"users/history/"
20 #: Page de download de .torrent
21 torrent_url
= main_url
+ u
"torrents/download/?id=%(torrentid)s"
23 #: Regex pour trouver l'id du torrent
24 torrentid_pattern
= ur
'<a href="/torrents/download/\?id=(\d+)"'
25 torrentid_regex
= re
.compile(torrentid_pattern
)
27 #: Dossier où enregistrer les .torrent
28 torrent_folder
= u
"/home/vincent/Vidéos/torrents/"
30 def do_connect(login
, password
):
31 """Se logue et renvoie les cookies."""
32 response
= requests
.post(login_url
, data
={"login": login
, "password": password
})
33 return response
.cookies
36 """Demande login/password à l'utilisateur et se connecte."""
37 login
= raw_input("login: ")
38 password
= getpass
.getpass()
39 return do_connect(login
, password
)
41 def generator_torrent_links(cookies
, urlpattern
):
42 """Ouvre successivement les pages d'url ``urlpattern % n`
43 jusqu'à ce qu'il n'y ait plus de torrents. Ça donne un generator."""
49 response
= requests
.get(url
, cookies
=cookies
)
50 torrent_links
= re
.findall('href="(//www.t411.me/torrents/.*?)"', response
.content
)
51 torrent_links
= ["https:" + i
for i
in torrent_links
]
52 if len(torrent_links
) == 0:
57 def crawl_history(cookies
):
58 """Récupère la liste des liens vers les torrents dans l'historique."""
59 urlpattern
= history_url
60 urlpattern
+= "?page=%s"
61 liste
= sum(generator_torrent_links(cookies
, urlpattern
), [])
64 def get_torrentid(url
, cookies
):
65 """Récupère l'id du torrent à partir de l'``url`` de sa page."""
66 response
= requests
.get(url
, cookies
=cookies
)
67 ids
= torrentid_regex
.findall(response
.content
)
73 def get_torrentids(cookies
, torrentlinks
):
74 """Récupère les ids de tous les torrents de l'historique."""
75 return [get_torrentid(url
, cookies
) for url
in torrentlinks
]
77 def get_torrent(cookies
, id):
78 """Récupère le .torrent n°``id``."""
79 url
= torrent_url
% {"torrentid" : id}
82 response
= requests
.get(url
, cookies
=cookies
)
83 raw_torrent_file
= response
.content
84 return raw_torrent_file
86 def save_torrent_file(filename
, raw
):
87 """Sauvegarde un fichier torrent."""
88 with
open(torrent_folder
+ filename
, "w") as f
:
94 linkslist
= crawl_history(cookies
)
95 idslist
= get_torrentids(cookies
, linkslist
)
97 raw
= get_torrent(cookies
, id)
98 save_torrent_file(id + ".torrent", raw
)
99 print "Torrents downloaded in %s" % torrent_folder
101 if __name__
== "__main__":