diff --git a/.gitignore b/.gitignore index c4196de..a49238c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.vscode/ +.idea/ .venv/ .db/ __pycache__/ diff --git a/app.py b/app.py index 82765d2..c676a31 100644 --- a/app.py +++ b/app.py @@ -29,6 +29,7 @@ def requires_auth(f): if not auth or not check_auth(auth.username, auth.password): return authenticate() return f(*args, **kwargs) + return decorated diff --git a/connectors.py b/connectors.py index 1178c2d..dc7c996 100644 --- a/connectors.py +++ b/connectors.py @@ -31,23 +31,25 @@ class Connector(ABC): def get_history(self, sort_type, page, category): pass - def curl_content(self, url, params={}, ajax=False): + def curl_content(self, url, params=None, ajax=False): if isinstance(self, YggTorrent): try: qt_env = {'QT_QPA_PLATFORM': 'offscreen'} if platform is 'linux' else {} - qt_output = run('phantomjs --cookies-file=/tmp/cookies.json delay.js "%s" 5000' % url, env=qt_env, shell=True, check=True, capture_output=True, timeout=7000) + qt_output = run('phantomjs --cookies-file=/tmp/cookies.json delay.js "%s" 5000' % url, env=qt_env, + shell=True, check=True, capture_output=True, timeout=7000) output = qt_output.stdout http_code = 200 except Exception as e: output = '' http_code = 500 + print(e) else: if ajax: headers = {'X-Requested-With': 'XMLHttpRequest'} else: headers = {} - if params: + if params is not None: response = requests.post(url, params, timeout=10, headers=headers) else: response = requests.get(url, timeout=10, headers=headers) @@ -57,19 +59,21 @@ class Connector(ABC): return {'http_code': http_code, 'output': output} - def get_instance(self, url): + @staticmethod + def get_instance(url, query): if 'nyaa.si' in url: - return Nyaa() + return Nyaa(query) elif 'nyaa.net' in url: - return Pantsu() + return Pantsu(query) elif 'anime-ultime' in url: - return AnimeUltime() + return AnimeUltime(query) elif 'ygg' in url: - return YggTorrent() + return YggTorrent(query) else: - return Other() + return Other(query) - def get_lang(self, str_to_test): + @staticmethod + def get_lang(str_to_test): if re.search('(vf|multi|french)', str_to_test, re.IGNORECASE): return 'fr' else: @@ -133,7 +137,8 @@ class Nyaa(Connector): 'lang': self.get_lang(url.string), 'href': '%s%s' % (self.base_url, url['href']), 'name': self.boldify(url.string), - 'comment': str(urls[0]).replace('/view/', '%s%s' % (self.base_url, '/view/')) if has_comment else '', + 'comment': str(urls[0]).replace('/view/', + '%s%s' % (self.base_url, '/view/')) if has_comment else '', 'link': tds[2].decode_contents().replace('/download/', '%s%s' % (self.base_url, '/download/')), 'size': tds[3].string, 'date': '%s:00' % tds[4].string, @@ -143,10 +148,9 @@ class Nyaa(Connector): 'class': 'is-%s' % tr['class'][0] }) - return (data, valid_trs is not len(trs)) + return data, valid_trs is not len(trs) else: raise ConnectorException(self.title) - return (data, False) class Pantsu(Connector): @@ -194,19 +198,20 @@ class Pantsu(Connector): 'href': '%s%s' % (self.base_url, url['href']), 'name': self.boldify(url.string), 'comment': '', - 'link': tds[2].decode_contents().replace('icon-magnet', 'fa fa-fw fa-magnet').replace('icon-floppy', 'fa fa-fw fa-download'), + 'link': tds[2].decode_contents().replace('icon-magnet', 'fa fa-fw fa-magnet').replace( + 'icon-floppy', 'fa fa-fw fa-download'), 'size': tds[3].string, - 'date': datetime.strptime(tds[7]['title'], '%m/%d/%Y, %I:%M:%S %p %Z+0').strftime('%Y-%m-%d %H:%M:%S'), + 'date': datetime.strptime(tds[7]['title'], '%m/%d/%Y, %I:%M:%S %p %Z+0').strftime( + '%Y-%m-%d %H:%M:%S'), 'seeds': check_seeds, 'leechs': tds[5].string, 'downloads': check_downloads, 'class': 'is-%s' % tr['class'][0] }) - return (data, valid_trs is not len(trs)) + return data, valid_trs is not len(trs) else: raise ConnectorException(self.title) - return (data, False) class YggTorrent(Connector): @@ -220,7 +225,8 @@ class YggTorrent(Connector): if category is None: raise ConnectorException(self.title) - return '%s/engine/search?do=search&order=desc&sort=%s&category=2145&sub_category=%s&name=%s&page=%s' % (self.base_url, sort_type, category, self.query, page) + return '%s/engine/search?do=search&order=desc&sort=%s&category=2145&sub_category=%s&name=%s&page=%s' % ( + self.base_url, sort_type, category, self.query, page) def get_history(self, sort_type=default_sort, page=1, category=None): if category is None: @@ -261,8 +267,10 @@ class YggTorrent(Connector): 'lang': self.get_lang(url.string), 'href': url['href'], 'name': self.boldify(url.string), - 'comment': '%s' % (url['href'], tds[3].string), - 'link': '' % (self.base_url, re.search('/(\d+)', url['href']).group(1)), + 'comment': '%s' % ( + url['href'], tds[3].string), + 'link': '' % ( + self.base_url, re.search('/(\d+)', url['href']).group(1)), 'size': tds[5].string, 'date': datetime.fromtimestamp(int(tds[4].div.string)).strftime('%Y-%m-%d %H:%M:%S'), 'seeds': check_seeds, @@ -271,10 +279,9 @@ class YggTorrent(Connector): 'class': '' }) - return (data, valid_trs is len(trs)) + return data, valid_trs is len(trs) else: raise ConnectorException(self.title) - return (data, False) class AnimeUltime(Connector): @@ -286,7 +293,7 @@ class AnimeUltime(Connector): def get_full_search_url(self, sort_type=default_sort, page=1, category=None): if sort_type is 'history': - page_date = datetime.now() - timedelta((page-1)*365/12) + page_date = datetime.now() - timedelta((page - 1) * 365 / 12) from_date = page_date.strftime('%m%Y') else: from_date = '' @@ -332,9 +339,10 @@ class AnimeUltime(Connector): 'name': self.boldify(name[0].string), 'type': ani_type[0].string.replace(':', '') }) + + return data, False else: raise ConnectorException(self.title) - return (data, False) def get_history(self, sort_type=default_sort, page=1, category=None): data = [] @@ -365,9 +373,10 @@ class AnimeUltime(Connector): 'type': tds[4].string, 'date': release_date }) + + return data else: raise ConnectorException(self.title) - return data class Other(Connector):