Commit 7fbc14f0 authored by Tankypon's avatar Tankypon

Add kickasstorrents

parent ec0c07ee
......@@ -50,6 +50,7 @@ def search2html(keywords, extrawords=' ', searchengine='btdigg', page=0, isserie
"""
if searchengine == tpl_msg['tpl_all']:
searchengine = "*"
sch = '{} {}'.format(keywords, extrawords).strip()
with TorrentSearch(searchengine) as ts:
s = ts.search(sch, page)
......
......@@ -13,7 +13,6 @@ Suggestion:
- 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"
- Changer icone de la page en fonction de l'année, par exemple mettre un bonnet rouge comme VLC et d'autres logiciels lorsque période des fêtes de fin d'année
- Rendre plus esthétique, l'interface de la page de l'utilisateur (Idée: pour garder une cohérence avec la page résultat, mettre sous forme de colonne)
- Peut-être ajouter d'autres moteurs de recherche de torrent
- Ajouter d'autres contenues comme les musiques (exemple: http://korben.info/torrent-tunes.html)
- Mettre à jour toutes les documentations sur les fonctions (PEP8)
- Faire les traductions es, de
......
......@@ -14,9 +14,10 @@
<input name="isserie" type="hidden" value="{{isserie}}"/>
<select name="searchengine" size="1">
{{ !searchengine }}
<option> torrentproject
<option> btdigg
<option> kickasstorrents
<option> piratebay
<option> torrentproject
<option> torrentz
<option> {{tpl_all}}
</select>
......
......@@ -11,9 +11,10 @@
<form class="searchbar" action="/search" method="get">
<input name="keywords" type="text" placeholder="{{tpl_movie_or_serie}}" autofocus />
<select name="searchengine" size="1">
<option> torrentproject
<option> btdigg
<option> kickasstorrents
<option> piratebay
<option> torrentproject
<option> torrentz
<option> {{tpl_all}}
</select>
......
......@@ -44,10 +44,11 @@
</li>
<li>{{tpl_searchon}}
<select name="searchengine" size="1">
<option> piratebay
<option> torrentz
<option> btdigg
<option> kickasstorrents
<option> piratebay
<option> torrentproject
<option> torrentz
<option> {{tpl_all}}
</select>
</li>
......
......@@ -254,6 +254,8 @@ class TorrentSearch:
s = [res for res in self._torrentz(sch)]
elif self.searchengine == 'piratebay':
s = [res for res in self._piratebay(sch)]
elif self.searchengine == 'kickasstorrents':
s = [res for res in self._kickasstorrents(sch)]
elif self.searchengine == '*':
s = self._search_all(sch)
else:
......@@ -273,6 +275,7 @@ class TorrentSearch:
s += [res for res in self._torrentproject(sch)]
s += [res for res in self._torrentz(sch)]
s += [res for res in self._piratebay(sch)]
s += [res for res in self._kickasstorrents(sch)]
return s
......@@ -422,11 +425,11 @@ class TorrentSearch:
def _piratebay(self, sch, page=0):
"""
Return:
List of dictionnaries with keys :
name : torrent name
magnet : magnet link
size : size
seed : number of seeds
List of dictionnaries with keys :
name : torrent name
magnet : magnet link
size : size
seed : number of seeds
"""
url = 'https://thepiratebay.se/s/'
keys = {'q': sch}
......@@ -449,7 +452,8 @@ class TorrentSearch:
for magnet_result in alinks:
href = magnet_result['href']
if href.startswith('magnet:'):
magnet = href.split('&tr=')[0] # to remove trackers
magnet = href.split('&tr=')[0] # to remove trackers
if len(size) == 0:
size_result = i.find('font', class_='detDesc')
if size_result:
......@@ -474,7 +478,68 @@ class TorrentSearch:
seeds = str()
leechs = str()
yield(d)
continue
def _kickasstorrents(self, sch, page=1):
"""
Return:
List of dictionnaries with keys :
name : torrent name
magnet : magnet link
size : size
seed : number of seeds
"""
url = 'https://kat.cr/usearch/{}/{}/'.format(sch, page)
s = do_req_get(url, "text")
soup = bs4.BeautifulSoup(s, "html.parser")
name = str()
magnet = str()
size = str()
seeds = str()
leechs = str()
all_tr = soup.find_all('tr', class_="even") + soup.find_all('tr', class_="odd")
for tr in all_tr:
td = tr.find_all("td")
name_result = td[0].find('a', class_='cellMainLink')
if name_result:
for content in name_result.contents:
name += content.string
magnet_result = td[0].find('a', title="Torrent magnet link")
if magnet_result:
href = magnet_result['href']
if href.startswith('magnet:'):
magnet = href.split('&tr=')[0] # to remove trackers
size_result = td[1]
if size_result:
for content in size_result.contents:
if size:
size = "{} {}".format(size, content.string)
else:
size = content.string
seeds_result = td[4]
if seeds_result:
seeds = seeds_result.string
leechs_result = td[5]
if leechs_result:
leechs = leechs_result.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()
yield(d)
if __name__ == '__main__':
......
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