This repository has been archived by the owner on Sep 25, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4681 from echtish/alpharatio
New torrent provider for AlphaRatio.cc
- Loading branch information
Showing
2 changed files
with
165 additions
and
0 deletions.
There are no files selected for viewing
133 changes: 133 additions & 0 deletions
133
couchpotato/core/media/_base/providers/torrent/alpharatio.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
import traceback | ||
|
||
from bs4 import BeautifulSoup | ||
from couchpotato.core.helpers.variable import tryInt | ||
from couchpotato.core.logger import CPLog | ||
from couchpotato.core.media._base.providers.torrent.base import TorrentProvider | ||
import six | ||
|
||
|
||
log = CPLog(__name__) | ||
|
||
|
||
class Base(TorrentProvider): | ||
|
||
urls = { | ||
'test': 'https://alpharatio.cc/', | ||
'login': 'https://alpharatio.cc/login.php', | ||
'login_check': 'https://alpharatio.cc/inbox.php', | ||
'detail': 'https://alpharatio.cc/torrents.php?torrentid=%s', | ||
'search': 'https://alpharatio.cc/torrents.php?action=advanced&searchstr=%s&scene=%s&filter_cat[%d]=1', | ||
'download': 'https://alpharatio.cc/%s', | ||
} | ||
|
||
http_time_between_calls = 1 # Seconds | ||
|
||
def _search(self, media, quality, results): | ||
|
||
url = self.urls['search'] % self.buildUrl(media, quality) | ||
data = self.getHTMLData(url) | ||
|
||
if data: | ||
html = BeautifulSoup(data) | ||
|
||
try: | ||
result_table = html.find('table', attrs = {'id': 'torrent_table'}) | ||
if not result_table: | ||
return | ||
|
||
entries = result_table.find_all('tr', attrs = {'class': 'torrent'}) | ||
for result in entries: | ||
|
||
link = result.find('a', attrs = {'dir': 'ltr'}) | ||
url = result.find('a', attrs = {'title': 'Download'}) | ||
tds = result.find_all('td') | ||
size = tds[4].contents[0].strip('\n ') | ||
|
||
results.append({ | ||
'id': link['href'].replace('torrents.php?id=', '').split('&')[0], | ||
'name': link.contents[0], | ||
'url': self.urls['download'] % url['href'], | ||
'detail_url': self.urls['download'] % link['href'], | ||
'size': self.parseSize(size), | ||
'seeders': tryInt(tds[len(tds)-2].string), | ||
'leechers': tryInt(tds[len(tds)-1].string), | ||
}) | ||
except: | ||
log.error('Failed to parsing %s: %s', (self.getName(), traceback.format_exc())) | ||
|
||
|
||
def getLoginParams(self): | ||
return { | ||
'username': self.conf('username'), | ||
'password': self.conf('password'), | ||
'keeplogged': '1', | ||
'login': 'Login', | ||
} | ||
|
||
def loginSuccess(self, output): | ||
return 'logout.php' in output.lower() | ||
|
||
loginCheckSuccess = loginSuccess | ||
|
||
def getSceneOnly(self): | ||
return '1' if self.conf('scene_only') else '' | ||
|
||
|
||
config = [{ | ||
'name': 'alpharatio', | ||
'groups': [ | ||
{ | ||
'tab': 'searcher', | ||
'list': 'torrent_providers', | ||
'name': 'AlphaRatio', | ||
'description': '<a href="http://alpharatio.cc/">AlphaRatio</a>', | ||
'wizard': True, | ||
'icon': 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACX0lEQVQ4jbWTX0hTURzHv+fu3umdV9GtOZ3pcllGBomJ9RCmkiWIEJUQET2EMqF86aFeegqLHgoio1ICScoieugPiBlFFmpROUjNIub+NKeba2rqvdvuPKeXDIcsgugHB378fj8+X37fcw5hjOFfgvtTc8o7mdveHWv0+YJ5iWb45SQWi2kc7olCnteoHCGUMqbpejBkO99rPDlW5rjV3FjZkmXU+3SiKK8EkOUVxj2+9bZOe8ebhZxSRTCIQmAES1oLQADKp4EIc8gRFr3t+/SNe0oLelatYM0zO56dqS3fmh4eXkoxIrWvAwXegLta8bymYyak9lyGR7d57eHHtOt7aNaQ0AORU8OEqlg0HURTnXi96cCaK0AYEW0l+MAoQoIp48PHke0JAYwyBkYhameUQ3vz7lTt3NRdKH0ajxgqQMJzAMdBkRVdYgAAEA71G2Z6MnOyvSmSJB/bFblN5DHEsosghf3zZduK+1fdQhyEcKitr+r0B2dMAyPOcmd02oxiC2jUjJaSwbPZpoLJhAA1Ci3hGURRlO0Of8nN9/MNUUXSkrQsFQ4meNORG6/G2O/jGXdZ044OKzg3z3r77TUre81tL1pxirLMWnsoMB00LtfjPLh67/OJH3xRMgiHb96JOCVbxbobRONBQNqScffJ6JE4E2VZFvv6BirbXpkboGcA4eGaDOV73G4LAFBKSWRhNsmqfnHCosG159Lxt++GdgC/XuLD3sH60/fdFxjJBNMDAAVZ8CNfVJxPLzbs/uqa2Lj/0stHkWSDFlwS4FIhRKei3a3VNeS//sa/iZ/B6hMIr7Fq4QAAAABJRU5ErkJggg==', | ||
'options': [ | ||
{ | ||
'name': 'enabled', | ||
'type': 'enabler', | ||
'default': False, | ||
}, | ||
{ | ||
'name': 'username', | ||
'default': '', | ||
}, | ||
{ | ||
'name': 'password', | ||
'default': '', | ||
'type': 'password', | ||
}, | ||
{ | ||
'name': 'seed_ratio', | ||
'label': 'Seed ratio', | ||
'type': 'float', | ||
'default': 1, | ||
'description': 'Will not be (re)moved until this seed ratio is met.', | ||
}, | ||
{ | ||
'name': 'seed_time', | ||
'label': 'Seed time', | ||
'type': 'int', | ||
'default': 40, | ||
'description': 'Will not be (re)moved until this seed time (in hours) is met.', | ||
}, | ||
{ | ||
'name': 'scene_only', | ||
'type': 'bool', | ||
'default': False, | ||
'description': 'Only allow scene releases.' | ||
}, | ||
{ | ||
'name': 'extra_score', | ||
'advanced': True, | ||
'label': 'Extra Score', | ||
'type': 'int', | ||
'default': 0, | ||
'description': 'Starting score for each release found via this provider.', | ||
} | ||
], | ||
}, | ||
], | ||
}] |
32 changes: 32 additions & 0 deletions
32
couchpotato/core/media/movie/providers/torrent/alpharatio.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
from couchpotato.core.event import fireEvent | ||
from couchpotato.core.helpers.encoding import tryUrlencode | ||
from couchpotato.core.logger import CPLog | ||
from couchpotato.core.media._base.providers.torrent.alpharatio import Base | ||
from couchpotato.core.media.movie.providers.base import MovieProvider | ||
|
||
log = CPLog(__name__) | ||
|
||
autoload = 'AlphaRatio' | ||
|
||
|
||
class AlphaRatio(MovieProvider, Base): | ||
|
||
# AlphaRatio movie search categories | ||
# 7: MoviesHD | ||
# 9: MoviePackHD | ||
# 6: MoviesSD | ||
# 8: MovePackSD | ||
|
||
cat_ids = [ | ||
([7, 9], ['bd50']), | ||
([7, 9], ['720p', '1080p']), | ||
([6, 8], ['dvdr']), | ||
([6, 8], ['brrip', 'dvdrip']), | ||
] | ||
cat_backup_id = 6 | ||
|
||
def buildUrl(self, media, quality): | ||
query = (tryUrlencode(fireEvent('library.query', media, single = True)), | ||
self.getSceneOnly(), | ||
self.getCatId(quality)[0]) | ||
return query |