First pass on latest

This commit is contained in:
Michel Roux 2019-12-02 21:50:00 +01:00
parent fa57752714
commit 5de3a85231
4 changed files with 96 additions and 19 deletions

11
app.py
View File

@ -1,10 +1,11 @@
from operator import itemgetter
from os import environ
from flask import redirect, render_template, url_for, request
from config import app, auth
from connectors import *
from models import SearchForm
from models import SearchForm, AnimeTitle
@auth.verify_password
@ -46,13 +47,15 @@ def latest():
]
results = []
for torrent in torrents:
results = results + torrent.data
results.sort(key=itemgetter('date'))
print(results)
for keyword in AnimeTitle.query.all():
for result in results:
result['name'] = Connector.boldify(result['name'], keyword)
return 'Hello!'
return render_template('latest.html', form=SearchForm(), torrents=results)
@app.route('/list')

View File

@ -130,9 +130,10 @@ class Connector(ABC):
else:
return ConnectorLang.JP
def boldify(self, str_to_replace):
if self.query:
return re.sub('(%s)' % self.query, r'<b>\1</b>', str_to_replace, flags=re.IGNORECASE)
@staticmethod
def boldify(str_to_replace, keyword):
if keyword:
return re.sub('(%s)' % keyword, r'<b>\1</b>', str_to_replace, flags=re.IGNORECASE)
else:
return str_to_replace
@ -190,15 +191,16 @@ class Nyaa(Connector):
href = '%s%s' % (self.base_url, url['href'])
self.data.append({
'self': self,
'lang': self.get_lang(url.string),
'href': href,
'name': self.boldify(url.string),
'name': self.boldify(url.string, self.query),
'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,
'date': datetime.strptime(tds[4].string, '%Y-%m-%d %H:%M'),
'seeds': check_seeds,
'leechs': tds[6].string,
'downloads': check_downloads,
@ -254,19 +256,34 @@ class Pantsu(Connector):
valid_trs = valid_trs + 1
href = '%s%s' % (self.base_url, url['href'])
splitted_date = re.search(r'(\d+)/(\d+)/(\d+), (\d+):(\d+):(\d+)\s(\w+)\s.+', tds[7]['title'])
current_locale = locale.getlocale()
locale.setlocale(locale.LC_ALL, ('en_US', 'UTF-8'))
formatted_date = datetime.strptime(
'%s/%s/%s, %s:%s:%s %s' % (
splitted_date[1],
splitted_date[2],
splitted_date[3],
splitted_date[4].zfill(2).replace('00', '12'),
splitted_date[5],
splitted_date[6],
splitted_date[7]
), '%m/%d/%Y, %I:%M:%S %p'
)
locale.setlocale(locale.LC_ALL, current_locale)
self.data.append({
'self': self,
'lang': self.get_lang(url.string),
'href': href,
'name': self.boldify(url.string),
'name': self.boldify(url.string, self.query),
'comment': '',
'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': formatted_date,
'seeds': check_seeds,
'leechs': tds[5].string,
'downloads': check_downloads,
@ -325,16 +342,17 @@ class YggTorrent(Connector):
valid_trs = valid_trs + 1
self.data.append({
'self': self,
'lang': self.get_lang(url.string),
'href': url['href'],
'name': self.boldify(url.string),
'name': self.boldify(url.string, self.query),
'comment': '<a href="%s#comm" target="_blank"><i class="fa fa-comments-o"></i>%s</a>' %
(url['href'], tds[3].string),
'link': '<a href="%s/engine/download_torrent?id=%s">'
'<i class="fa fa-fw fa-download"></i>'
'</a>' % (self.base_url, re.search(r'/(\d+)', url['href']).group(1)),
'size': tds[5].string,
'date': datetime.fromtimestamp(int(tds[4].div.string)).strftime('%Y-%m-%d %H:%M:%S'),
'date': datetime.fromtimestamp(int(tds[4].div.string)),
'seeds': check_seeds,
'leechs': tds[8].string,
'downloads': check_downloads,
@ -368,7 +386,7 @@ class AnimeUltime(Connector):
sort_type = 'search'
if self.return_type is ConnectorReturn.HISTORY:
page_date = datetime.now() - timedelta((self.page - 1) * 365 / 12)
page_date = datetime.now() - timedelta((int(self.page) - 1) * 365 / 12)
from_date = page_date.strftime('%m%Y')
sort_type = 'history'
@ -398,6 +416,7 @@ class AnimeUltime(Connector):
href = '%s/%s' % (self.base_url, url['href'])
self.data.append({
'self': self,
'lang': ConnectorLang.JP,
'href': '%s/%s' % (self.base_url, url['href']),
'name': url.decode_contents(),
@ -411,9 +430,10 @@ class AnimeUltime(Connector):
href = '%s/file-0-1/%s' % (self.base_url, player[0]['data-serie'])
self.data.append({
'self': self,
'lang': ConnectorLang.JP,
'href': '%s/file-0-1/%s' % (self.base_url, player[0]['data-serie']),
'name': self.boldify(name[0].string),
'name': self.boldify(name[0].string, self.query),
'type': ani_type[0].string.replace(':', ''),
'class': self.color if AnimeLink.query.filter_by(link=href).first() else ''
})
@ -439,11 +459,12 @@ class AnimeUltime(Connector):
current_locale = locale.getlocale()
locale.setlocale(locale.LC_ALL, ('fr_FR', 'UTF-8'))
release_date = datetime.strptime(h3s[i].string, '%A %d %B %Y : ').strftime('%Y-%m-%d %H:%M:%S')
release_date = datetime.strptime(h3s[i].string, '%A %d %B %Y : ')
locale.setlocale(locale.LC_ALL, current_locale)
href = '%s/%s' % (self.base_url, link['href'])
self.data.append({
'self': self,
'lang': ConnectorLang.JP,
'href': '%s/%s' % (self.base_url, link['href']),
'name': link.string,
@ -459,6 +480,7 @@ class Other(Connector):
color = 'is-danger'
title = 'Other'
favicon = 'blank.png'
base_url = ''
is_light = True
is_behind_cloudflare = False

View File

@ -21,6 +21,55 @@
</thead>
<tbody>
{% for torrent in torrents %}
<tr class="{{ torrent.class }}">
{% if torrent.self.is_light %}
<td colspan="3">
<img class="favicon" src="{{ url_for('static', filename='favicons/%s' % torrent.self.favicon) }}" alt="">
<i>&nbsp;</i>
{{ torrent.lang.value }}
<a href="{{ torrent.href }}" target="_blank">
{{ torrent.name }}
</a>
</td>
<td>
{{ torrent.date }}
</td>
<td colspan="3">
{{ torrent.type }}
</td>
{% else %}
{# <td>#}
{# <img class="favicon" src="{{ url_for('static', filename='favicons/%s' % torrent.self.favicon) }}" alt="">#}
{# <i>&nbsp;</i>#}
{# {{ torrent.lang.value }}#}
{# <a href="<?php e($tr['href']); ?>" target="_blank">#}
{# <?php e(preg_replace('/' . implode('|', $keywords) . '/i', '<b>\0</b>', $this->raw($tr['name']))); ?>#}
{# </a>#}
{# </td>#}
{# <td>#}
{# <?php e($this->raw($tr['link'])); ?>#}
{# </td>#}
{# <td>#}
{# <?php e($tr['size']); ?>#}
{# </td>#}
{# <td>#}
{# <?php e($tr['date']); ?>#}
{# </td>#}
{# <td>#}
{# <?php e($tr['seeds']); ?>#}
{# </td>#}
{# <td>#}
{# <?php e($tr['leechs']); ?>#}
{# </td>#}
{# <td>#}
{# <?php e($tr['check']); ?>#}
{# </td>#}
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>

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 http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="Xefir's animes search engine (っ^‿^)っ">
<title>Animes torrents search engine{% block title %}{% endblock %}</title>
<title>𝛑 =^._.^= た{% block title %}{% endblock %}</title>
<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-tooltip.min.css') }}">
@ -16,6 +16,9 @@
<nav class="navbar is-dark" role="navigation" aria-label="main navigation">
<div class="navbar-start">
<a class="navbar-item tooltip is-tooltip-bottom" data-tooltip="Home" href="{{ url_for('home') }}">
𝛑 =^._.^= た
</a>
<a class="navbar-item tooltip is-tooltip-bottom" data-tooltip="Latest torrents" href="{{ url_for('latest') }}">
<i class="fa fa-newspaper-o"></i><i>&nbsp;</i><span class="is-hidden-mobile">Latest torrents</span>
</a>