Commit cb7d0b85 authored by prx's avatar prx

support de piratebay

parent 0f756bd6
......@@ -5,7 +5,6 @@ Bugs:
Suggestion:
-----------
- Mettre piratebay
- résultats apparaissent petit à petit
- Lorsque utilisateur choisit une vidéo: le titre de la vidéo est celui de sa recherche, plus logique d'afficher le nom de la vidéo
- Lorsque la vidéo est stocké dans la base de donnée, actuellement on stocke la recherche comme nom, plus logique de stocker le titre de la vidéo -> oui et non. On garde comme ça en mémoire aussi les différentes sources de vidéo qui peuvent être différentes d'une fois sur l'autre"
......
......@@ -14,6 +14,7 @@
<input name="isserie" type="hidden" value="{{isserie}}"/>
<select name="searchengine" size="1">
{{ !searchengine }}
<option> piratebay
<option> torrentz
<option> btdigg
<option> torrentproject
......
......@@ -11,6 +11,7 @@
<form class="searchbar" action="/search" method="get">
<input name="keywords" type="text" placeholder="{{tpl_movie_or_serie}}" autofocus />
<select name="searchengine" size="1">
<option> piratebay
<option> torrentz
<option> btdigg
<option> torrentproject
......
......@@ -36,6 +36,7 @@
</li>
<li>{{tpl_searchon}}
<select name="searchengine" size="1">
<option> piratebay
<option> torrentz
<option> btdigg
<option> torrentproject
......
......@@ -350,6 +350,8 @@ class TorrentSearch:
s = self._torrentproject(sch)
elif self.searchengine == 'torrentz':
s = self._torrentz(sch)
elif self.searchengine == 'piratebay':
s = self._piratebay(sch)
elif self.searchengine == 'all':
s = self._btdigg(sch, page)
s += self._torrentproject(sch)
......@@ -511,9 +513,72 @@ class TorrentSearch:
return results
def _piratebay(self, sch, page=0):
"""
Return:
List of dictionnaries with keys :
name : torrent name
magnet : magnet link
size : size
seed : number of seeds
"""
results = []
url = 'https://thepiratebay.se/s/'
keys = {'q': sch}
s = do_req_get(url, "text", keys)
soup = bs4.BeautifulSoup(s, "html.parser")
name = str()
magnet = str()
size = str()
seeds = str()
leechs = str()
for i in soup.find_all('td'):
if len(name) == 0:
name_result = i.find('div', class_='detName')
if name_result:
name = name_result.a.string
if len(magnet) == 0:
alinks = i.find_all('a')
for magnet_result in alinks:
href = magnet_result['href']
if href.startswith('magnet:'):
magnet = href.split('&tr=')[0] # to remove trackers
if len(size) == 0:
size_result = i.find('font', class_='detDesc')
if size_result:
size = size_result.text.split(',')[1].replace('Size','').strip()
if i.string:
if len(seeds) == 0:
seeds = i.string
elif len(leechs) == 0:
leechs = i.string
if name != "" and magnet != "" and size != "" and seeds != "" and leechs != "":
if sys.version_info < (3, 0):
magnet = magnet.encode('utf-8')
name = name.encode('utf-8')
size = size.encode('utf-8')
d = {'name': name, 'magnet': magnet, 'size': size, 'seeds': seeds, "leechs": leechs}
name = str()
magnet = str()
size = str()
seeds = str()
leechs = str()
results.append(d)
continue
return results
if __name__ == '__main__':
searchengine = "torrentz"
searchengine = "piratebay"
with TorrentSearch(searchengine) as ts:
s = ts.search("test")
print(s)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment