Change how Ygg is handled

This commit is contained in:
Michel Roux 2019-12-01 18:30:24 +01:00
parent fbf42ece8e
commit fa57752714
6 changed files with 95 additions and 11 deletions

21
app.py
View File

@ -16,7 +16,7 @@ def verify_password(username, password):
@app.route('/') @app.route('/')
def home(): def home():
return render_template('home.html', form=SearchForm()) return render_template('layout.html', form=SearchForm())
@app.route('/search') @app.route('/search')
@ -28,8 +28,8 @@ def search():
results = [ results = [
Nyaa(query).run(), Nyaa(query).run(),
Pantsu(query).run(), Pantsu(query).run(),
YggTorrent(query, category=2179).run(), YggTorrent(query).run(),
YggTorrent(query, category=2178).run(), YggAnimation(query).run(),
AnimeUltime(query).run(), AnimeUltime(query).run(),
] ]
return render_template('search.html', form=SearchForm(), connectors=results) return render_template('search.html', form=SearchForm(), connectors=results)
@ -37,6 +37,21 @@ def search():
@app.route('/latest') @app.route('/latest')
def latest(): def latest():
torrents = [
Nyaa('', return_type=ConnectorReturn.HISTORY, page=request.args.get('page', 1)).run(),
Pantsu('', return_type=ConnectorReturn.HISTORY, page=request.args.get('page', 1)).run(),
YggTorrent('', return_type=ConnectorReturn.HISTORY, page=request.args.get('page', 1)).run(),
YggAnimation('', return_type=ConnectorReturn.HISTORY, page=request.args.get('page', 1)).run(),
AnimeUltime('', return_type=ConnectorReturn.HISTORY, page=request.args.get('page', 1)).run(),
]
results = []
for torrent in torrents:
results = results + torrent.data
print(results)
return 'Hello!' return 'Hello!'

View File

@ -25,9 +25,38 @@ class ConnectorLang(Enum):
class Connector(ABC): class Connector(ABC):
blacklist_words = ['Chris44', 'Vol.'] blacklist_words = ['Chris44', 'Vol.']
def __init__(self, query, page=1, return_type=ConnectorReturn.SEARCH, category=None): @property
@abstractmethod
def color(self):
pass
@property
@abstractmethod
def title(self):
pass
@property
@abstractmethod
def favicon(self):
pass
@property
@abstractmethod
def base_url(self):
pass
@property
@abstractmethod
def is_light(self):
pass
@property
@abstractmethod
def is_behind_cloudflare(self):
pass
def __init__(self, query, page=1, return_type=ConnectorReturn.SEARCH):
self.query = query self.query = query
self.category = category
self.data = [] self.data = []
self.is_more = False self.is_more = False
self.on_error = True self.on_error = True
@ -54,7 +83,7 @@ class Connector(ABC):
return self return self
def curl_content(self, url, params=None, ajax=False): def curl_content(self, url, params=None, ajax=False):
if isinstance(self, YggTorrent): if self.is_behind_cloudflare:
try: try:
qt_env = {'QT_QPA_PLATFORM': 'offscreen'} if platform is 'linux' else {} 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, qt_output = run('phantomjs --cookies-file=/tmp/cookies.json delay.js "%s" 5000' % url, env=qt_env,
@ -114,6 +143,7 @@ class Nyaa(Connector):
favicon = 'nyaa.png' favicon = 'nyaa.png'
base_url = 'https://nyaa.si' base_url = 'https://nyaa.si'
is_light = False is_light = False
is_behind_cloudflare = False
def get_full_search_url(self): def get_full_search_url(self):
sort_type = 'size' sort_type = 'size'
@ -186,6 +216,7 @@ class Pantsu(Connector):
favicon = 'pantsu.png' favicon = 'pantsu.png'
base_url = 'https://nyaa.net' base_url = 'https://nyaa.net'
is_light = False is_light = False
is_behind_cloudflare = False
def get_full_search_url(self): def get_full_search_url(self):
sort_type = 4 sort_type = 4
@ -253,6 +284,8 @@ class YggTorrent(Connector):
favicon = 'yggtorrent.png' favicon = 'yggtorrent.png'
base_url = 'https://www2.yggtorrent.pe' base_url = 'https://www2.yggtorrent.pe'
is_light = False is_light = False
is_behind_cloudflare = True
category = 2179
def get_full_search_url(self): def get_full_search_url(self):
sort_type = 'size' sort_type = 'size'
@ -312,12 +345,23 @@ class YggTorrent(Connector):
self.is_more = valid_trs is not len(trs) self.is_more = valid_trs is not len(trs)
class YggAnimation(YggTorrent):
color = 'is-success'
title = 'YggAnimation'
favicon = 'yggtorrent.png'
base_url = 'https://www2.yggtorrent.pe'
is_light = False
is_behind_cloudflare = True
category = 2178
class AnimeUltime(Connector): class AnimeUltime(Connector):
color = 'is-warning' color = 'is-warning'
title = 'Anime-Ultime' title = 'Anime-Ultime'
favicon = 'animeultime.png' favicon = 'animeultime.png'
base_url = 'http://www.anime-ultime.net' base_url = 'http://www.anime-ultime.net'
is_light = True is_light = True
is_behind_cloudflare = False
def get_full_search_url(self): def get_full_search_url(self):
from_date = '' from_date = ''
@ -416,6 +460,7 @@ class Other(Connector):
title = 'Other' title = 'Other'
favicon = 'blank.png' favicon = 'blank.png'
is_light = True is_light = True
is_behind_cloudflare = False
def get_full_search_url(self): def get_full_search_url(self):
pass pass

View File

@ -1,3 +0,0 @@
{% extends "layout.html" %}
{% block title %}Animes torrents search engine{% endblock %}
{% block body %}{% endblock %}

27
templates/latest.html Normal file
View File

@ -0,0 +1,27 @@
{% extends "layout.html" %}
{% block title %} - Latest{% endblock %}
{% block body %}
<table class="table is-bordered is-striped is-narrow is-fullwidth is-hoverable is-size-7">
<thead>
<tr>
<th>Name</th>
<th>Link</th>
<th>Size</th>
<th>Date</th>
<th>
<i class="fa fa-arrow-up"></i>
</th>
<th>
<i class="fa fa-arrow-down"></i>
</th>
<th>
<i class="fa fa fa-check"></i>
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
{% endblock %}

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, minimum-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="Xefir's animes search engine (っ^‿^)っ"> <meta name="description" content="Xefir's animes search engine (っ^‿^)っ">
<title>{% block title %}{% endblock %}</title> <title>Animes torrents search engine{% block title %}{% endblock %}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='favicons/favicon.ico') }}"> <link rel="shortcut icon" href="{{ url_for('static', filename='favicons/favicon.ico') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/bulma.min.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/bulma.min.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/bulma-tooltip.min.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/bulma-tooltip.min.css') }}">

View File

@ -1,5 +1,5 @@
{% extends "layout.html" %} {% extends "layout.html" %}
{% block title %}Animes torrents search engine - {{ request.args.get('q') }}{% endblock %} {% block title %} - {{ request.args.get('q') }}{% endblock %}
{% block body %} {% block body %}
<table class="table is-bordered is-striped is-narrow is-fullwidth is-hoverable search"> <table class="table is-bordered is-striped is-narrow is-fullwidth is-hoverable search">
<thead> <thead>