/
main.py
126 lines (108 loc) · 4.65 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# coding: utf-8
__author__ = 'mancuniancol'
import common
from bs4 import BeautifulSoup
from quasar import provider
# this read the settings
settings = common.Settings()
# define the browser
browser = common.Browser()
# create the filters
filters = common.Filtering()
def extract_torrents(data):
print data
filters.information() # print filters settings
sint = common.ignore_exception(ValueError)(int)
results = []
cont = 0
if data is not None:
soup = BeautifulSoup(data, 'html5lib')
links = soup.find("ul", class_="peliculas-box").findAll('li')
for link in links:
if link.a is not None:
name = ' '.join(link.a.text.split()).replace('Espa', ' Espa').strip()
magnet = link.a['href'].replace('descargar/', 'torrent/')
size = None
seeds = 0 # seeds
peers = 0 # peers
# info_magnet = common.Magnet(magnet)
if filters.verify(name, size):
# magnet = common.getlinks(magnet)
cont += 1
results.append({"name": name,
"uri": magnet,
# "info_hash": info_magnet.hash,
# "size": size,
# "seeds": sint(seeds),
# "peers": sint(peers),
"language": settings.value.get("language", "es"),
"provider": settings.name,
"icon": settings.icon,
}) # return the torrent
if cont >= int(settings.value.get("max_magnets", 10)): # limit magnets
break
else:
provider.log.warning(filters.reason)
provider.log.info('>>>>>>' + str(cont) + ' torrents sent to Quasar<<<<<<<')
return results
def search(query):
info = {"query": query,
"type": "general"}
return search_general(info)
def search_general(info):
info['query'] = filters.safe_name(info['query'])
info["extra"] = settings.value.get("extra", "") # add the extra information
query = filters.type_filtering(info, ' ') # check type filter and set-up filters.title
url_search = "%s/buscar/descargas" % settings.value["url_address"]
provider.log.info(url_search)
payload = {'categoria': '',
'subcategoria': '',
'idioma': '',
'calidad': '',
'ordenar': 'Fecha',
'ord': 'Descendente',
'search': query,
'pg': ''}
browser.open(url_search, payload=payload)
return extract_torrents(browser.content)
def search_movie(info):
info["type"] = "movie"
settings.value["language"] = settings.value.get("language", "es")
if settings.value["language"] == 'en': # Title in english
query = info['title'].encode('utf-8') # convert from unicode
if len(info['title']) == len(query): # it is a english title
query += ' ' + str(info['year']) # Title + year
else:
query = common.IMDB_title(info['imdb_id']) # Title + year
else: # Title en foreign language
query = common.translator(info['imdb_id'], settings.value["language"], extra=False) # Just title
info["query"] = query
return search_general(info)
def search_episode(info):
settings.value["language"] = settings.value.get("language", "es")
if info['absolute_number'] == 0:
info["type"] = "show"
if settings.value["language"] != 'es':
info["query"] = info['title'].encode('utf-8') + ' s%02de%02d' % (
info['season'], info['episode']) # define query
else:
info["query"] = info['title'].encode('utf-8') + ' %sx%02d' % (
info['season'], info['episode']) # define query
else:
info["type"] = "anime"
info["query"] = info['title'].encode('utf-8') + ' %02d' % info['absolute_number'] # define query anime
return search_general(info)
def search_season(info):
provider.log.info(info)
info["type"] = "show"
info["query"] = info['title'].encode('utf-8') + ' %s %s' % (
common.season_names[settings.value.get("language", "es")], info['season']) # define query
return search_general(info)
# This registers your module for use
if "false" == settings.value.get("episodes", "false"):
provider.register(search, search_movie, search_episode, search_season)
else:
provider.register(search, search_movie, search_season, search_season)
del settings
del browser
del filters