3 changed files with 124 additions and 1 deletions
@ -0,0 +1,59 @@ |
|||||
|
from .main import AwesomeHD |
||||
|
|
||||
|
def start(): |
||||
|
return AwesomeHD() |
||||
|
|
||||
|
config = [{ |
||||
|
'name': 'awesomehd', |
||||
|
'groups': [ |
||||
|
{ |
||||
|
'tab': 'searcher', |
||||
|
'subtab': 'providers', |
||||
|
'list': 'torrent_providers', |
||||
|
'name': 'Awesome-HD', |
||||
|
'description': 'See <a href="https://awesome-hd.net">AHD</a>', |
||||
|
'wizard': True, |
||||
|
'options': [ |
||||
|
{ |
||||
|
'name': 'enabled', |
||||
|
'type': 'enabler', |
||||
|
'default': False, |
||||
|
}, |
||||
|
{ |
||||
|
'name': 'passkey', |
||||
|
'default': '', |
||||
|
}, |
||||
|
{ |
||||
|
'name': 'only_internal', |
||||
|
'advanced': True, |
||||
|
'type': 'bool', |
||||
|
'default': 1, |
||||
|
'description': 'Only search for internal releases.' |
||||
|
}, |
||||
|
{ |
||||
|
'name': 'prefer_internal', |
||||
|
'advanced': True, |
||||
|
'type': 'bool', |
||||
|
'default': 1, |
||||
|
'description': 'Favors internal releases over non-internal releases.' |
||||
|
}, |
||||
|
{ |
||||
|
'name': 'favor', |
||||
|
'advanced': True, |
||||
|
'default': 'both', |
||||
|
'type': 'dropdown', |
||||
|
'values': [('Encodes & Remuxes', 'both'), ('Encodes', 'encode'), ('Remuxes', 'remux'), ('None', 'none')], |
||||
|
'description': 'Give extra scoring to encodes or remuxes.' |
||||
|
}, |
||||
|
{ |
||||
|
'name': 'extra_score', |
||||
|
'advanced': True, |
||||
|
'type': 'int', |
||||
|
'default': 20, |
||||
|
'description': 'Starting score for each release found via this provider.', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
}] |
||||
|
|
@ -0,0 +1,64 @@ |
|||||
|
from bs4 import BeautifulSoup |
||||
|
from couchpotato.core.helpers.variable import tryInt |
||||
|
from couchpotato.core.logger import CPLog |
||||
|
from couchpotato.core.providers.torrent.base import TorrentProvider |
||||
|
import re |
||||
|
import traceback |
||||
|
|
||||
|
log = CPLog(__name__) |
||||
|
|
||||
|
|
||||
|
class AwesomeHD(TorrentProvider): |
||||
|
|
||||
|
urls = { |
||||
|
'test' : 'https://awesome-hd.net/', |
||||
|
'detail' : 'https://awesome-hd.net/torrents.php?torrentid=%s', |
||||
|
'search' : 'https://awesome-hd.net/searchapi.php?action=imdbsearch&passkey=%s&imdb=%s&internal=%s', |
||||
|
'download' : 'https://awesome-hd.net/torrents.php?action=download&id=%s&authkey=%s&torrent_pass=%s', |
||||
|
} |
||||
|
http_time_between_calls = 1 |
||||
|
|
||||
|
def _search(self, movie, quality, results): |
||||
|
|
||||
|
data = self.getHTMLData(self.urls['search'] % (self.conf('passkey'), movie['library']['identifier'], self.conf('only_internal'))) |
||||
|
|
||||
|
if data: |
||||
|
try: |
||||
|
soup = BeautifulSoup(data) |
||||
|
authkey = soup.find('authkey').get_text() |
||||
|
entries = soup.find_all('torrent') |
||||
|
|
||||
|
for entry in entries: |
||||
|
|
||||
|
torrentscore = 0 |
||||
|
torrent_id = entry.find('id').get_text() |
||||
|
name = entry.find('name').get_text() |
||||
|
year = entry.find('year').get_text() |
||||
|
releasegroup = entry.find('releasegroup').get_text() |
||||
|
resolution = entry.find('resolution').get_text() |
||||
|
encoding = entry.find('encoding').get_text() |
||||
|
freeleech = entry.find('freeleech').get_text() |
||||
|
torrent_desc = '/ %s / %s / %s ' % (releasegroup, resolution, encoding) |
||||
|
|
||||
|
if freeleech == '0.25' and self.conf('prefer_internal'): |
||||
|
torrent_desc += '/ Internal' |
||||
|
torrentscore += 200 |
||||
|
|
||||
|
if encoding == 'x264' and self.conf('favor') in ['encode', 'both']: |
||||
|
torrentscore += 300 |
||||
|
if re.search('Remux', encoding) and self.conf('favor') in ['remux', 'both']: |
||||
|
torrentscore += 200 |
||||
|
|
||||
|
results.append({ |
||||
|
'id': torrent_id, |
||||
|
'name': re.sub('[^A-Za-z0-9\-_ \(\).]+', '', '%s (%s) %s' % (name, year, torrent_desc)), |
||||
|
'url': self.urls['download'] % (torrent_id, authkey, self.conf('passkey')), |
||||
|
'detail_url': self.urls['detail'] % torrent_id, |
||||
|
'size': self.parseSize(entry.find('size').get_text()), |
||||
|
'seeders': tryInt(entry.find('seeders').get_text()), |
||||
|
'leechers': tryInt(entry.find('leechers').get_text()), |
||||
|
'score': torrentscore |
||||
|
}) |
||||
|
|
||||
|
except: |
||||
|
log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc())) |
Loading…
Reference in new issue