search-plugins-qbit-torrent/nova3/engines/eztv.py

74 lines
2.4 KiB
Python

#VERSION: 1.14
# AUTHORS: nindogo
# CONTRIBUTORS: Diego de las Heras (ngosang@hotmail.es)
from html.parser import HTMLParser
from novaprinter import prettyPrinter
from helpers import retrieve_url
class eztv(object):
name = "EZTV"
url = 'https://eztv.re'
supported_categories = {'all': 'all', 'tv': 'tv'}
class MyHtmlParser(HTMLParser):
A, TD, TR, TABLE = ('a', 'td', 'tr', 'table')
""" Sub-class for parsing results """
def __init__(self, url):
HTMLParser.__init__(self)
self.url = url
self.in_table_row = False
self.current_item = {}
def handle_starttag(self, tag, attrs):
params = dict(attrs)
if (params.get('class') == 'forum_header_border'
and params.get('name') == 'hover'):
self.in_table_row = True
self.current_item = {}
self.current_item['seeds'] = -1
self.current_item['leech'] = -1
self.current_item['size'] = -1
self.current_item['engine_url'] = self.url
if (tag == self.A
and self.in_table_row and params.get('class') == 'magnet'):
self.current_item['link'] = params.get('href')
if (tag == self.A
and self.in_table_row and params.get('class') == 'epinfo'):
self.current_item['desc_link'] = self.url + params.get('href')
self.current_item['name'] = params.get('title').split(' (')[0]
def handle_data(self, data):
data = data.replace(',', '')
if (self.in_table_row
and (data.endswith(' KB') or data.endswith(' MB') or data.endswith(' GB'))):
self.current_item['size'] = data
elif self.in_table_row and data.isnumeric():
self.current_item['seeds'] = int(data)
def handle_endtag(self, tag):
if self.in_table_row and tag == self.TR:
prettyPrinter(self.current_item)
self.in_table_row = False
def search(self, what, cat='all'):
query = self.url + '/search/' + what.replace('%20', '-')
eztv_html = retrieve_url(query)
eztv_parser = self.MyHtmlParser(self.url)
eztv_parser.feed(eztv_html)
eztv_parser.close()
if __name__ == '__main__':
eztv_se = eztv()
eztv_se.search('Acre', 'all')