mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-11 05:33:37 +00:00
parent
512a67d0e5
commit
326f5529d0
6 changed files with 36 additions and 39 deletions
|
@ -179,6 +179,7 @@
|
|||
* Change handle when a torrent provider goes down and its urls are cleared
|
||||
* Add handler for when rar files can not be opened during post processing
|
||||
* Fix join clean up
|
||||
* Fix add custom torrent RSS
|
||||
|
||||
|
||||
### 0.11.15 (2016-09-13 19:50:00 UTC)
|
||||
|
|
BIN
gui/slick/images/providers/xspeeds.png
Normal file
BIN
gui/slick/images/providers/xspeeds.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 590 B |
|
@ -110,7 +110,7 @@
|
|||
<input type="checkbox" id="enable_$cur_name" class="provider_enabler" <%= html_checked if cur_provider.is_enabled() else '' %>/>
|
||||
<a href="<%= anon_url(cur_url) %>" class="imgLink" rel="noreferrer" onclick="window.open(this.href,'_blank');return false;"><img src="$sbRoot/images/providers/$cur_provider.image_name()" alt="$tip" title="$tip" width="16" height="16" style="vertical-align:middle" /></a>
|
||||
<span style="vertical-align:middle">$cur_provider.name$state</span>
|
||||
#if $cur_provider.is_public_access()#
|
||||
#if $cur_provider.is_public_access() and type($cur_provider).__name__ not in ['TorrentRssProvider']
|
||||
<span style="font-size:10px;vertical-align:top;font-weight:normal">(PA)</span>
|
||||
#end if#
|
||||
#if not $cur_provider.supports_backlog#*#end if#
|
||||
|
@ -531,7 +531,7 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
|
|||
</label>
|
||||
</div>
|
||||
#end if
|
||||
#if $hasattr($cur_torrent_provider, 'enable_recentsearch'):
|
||||
#if $hasattr($cur_torrent_provider, 'enable_recentsearch') and $cur_torrent_provider.supports_backlog:
|
||||
<div class="field-pair">
|
||||
<label for="${cur_torrent_provider.get_id()}_enable_recentsearch">
|
||||
<span class="component-title">Enable recent searches</span>
|
||||
|
@ -578,6 +578,11 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
|
|||
</label>
|
||||
</div>
|
||||
#end if
|
||||
#if not $cur_torrent_provider.supports_backlog:
|
||||
<div class="field-pair">
|
||||
<span class="component-desc">The latest releases are the focus of this provider, no backlog searching</span>
|
||||
</div>
|
||||
#end if
|
||||
|
||||
</div>
|
||||
#end for
|
||||
|
@ -731,6 +736,7 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
|
|||
<span class="component-desc">
|
||||
<input type="text" id="torrentrss_cookies" class="form-control input-sm input350" />
|
||||
<p>eg. uid=xx;pass=yy</p>
|
||||
<div class="clear-left"><p>enter [ <span class="grey-text">sg=0</span> ] if not required (a URL containing a key may not need cookies)</p></div>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
@ -1072,7 +1072,8 @@ def initialize(consoleLogging=True):
|
|||
torrent_prov.reject_m2ts = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_reject_m2ts', 0))
|
||||
if hasattr(torrent_prov, 'enable_recentsearch'):
|
||||
torrent_prov.enable_recentsearch = bool(check_setting_int(CFG, prov_id_uc,
|
||||
prov_id + '_enable_recentsearch', 1))
|
||||
prov_id + '_enable_recentsearch', 1)) or \
|
||||
not getattr(torrent_prov, 'supports_backlog', True)
|
||||
if hasattr(torrent_prov, 'enable_backlog'):
|
||||
torrent_prov.enable_backlog = bool(check_setting_int(CFG, prov_id_uc, prov_id + '_enable_backlog', 1))
|
||||
if hasattr(torrent_prov, 'search_mode'):
|
||||
|
|
|
@ -19,6 +19,7 @@ import re
|
|||
|
||||
from . import generic
|
||||
from sickbeard import logger, tvcache
|
||||
from sickbeard.helpers import tryInt
|
||||
from sickbeard.exceptions import ex
|
||||
from sickbeard.rssfeeds import RSSFeeds
|
||||
from lib.bencode import bdecode
|
||||
|
@ -28,32 +29,28 @@ class TorrentRssProvider(generic.TorrentProvider):
|
|||
|
||||
def __init__(self, name, url, cookies='', search_mode='eponly', search_fallback=False,
|
||||
enable_recentsearch=False, enable_backlog=False):
|
||||
generic.TorrentProvider.__init__(self, name)
|
||||
self.enable_backlog = bool(tryInt(enable_backlog))
|
||||
generic.TorrentProvider.__init__(self, name, supports_backlog=self.enable_backlog, cache_update_freq=15)
|
||||
|
||||
self.url = url.rstrip('/')
|
||||
self.url_base = self.url
|
||||
self.cookies = cookies
|
||||
|
||||
self.enable_recentsearch = enable_recentsearch
|
||||
self.enable_backlog = enable_backlog
|
||||
self.enable_recentsearch = bool(tryInt(enable_recentsearch)) or not self.enable_backlog
|
||||
self.search_mode = search_mode
|
||||
self.search_fallback = search_fallback
|
||||
self.search_fallback = bool(tryInt(search_fallback))
|
||||
|
||||
self.feeder = RSSFeeds(self)
|
||||
self.cache = TorrentRssCache(self)
|
||||
|
||||
def image_name(self):
|
||||
|
||||
return generic.GenericProvider.image_name(self, 'torrentrss')
|
||||
|
||||
def config_str(self):
|
||||
return '%s|%s|%s|%d|%s|%d|%d|%d' % (self.name or '',
|
||||
self.url or '',
|
||||
self.cookies or '',
|
||||
self.enabled,
|
||||
self.search_mode or '',
|
||||
self.search_fallback,
|
||||
self.enable_recentsearch,
|
||||
self.enable_backlog)
|
||||
|
||||
return '%s|%s|%s|%d|%s|%d|%d|%d' % (
|
||||
self.name or '', self.url or '', self.cookies or '', self.enabled,
|
||||
self.search_mode or '', self.search_fallback, self.enable_recentsearch, self.enable_backlog)
|
||||
|
||||
def _title_and_url(self, item):
|
||||
|
||||
|
@ -63,15 +60,13 @@ class TorrentRssProvider(generic.TorrentProvider):
|
|||
title = re.sub(r'\s+', '.', u'' + item.title)
|
||||
|
||||
attempt_list = [lambda: item.torrent_magneturi,
|
||||
|
||||
lambda: item.enclosures[0].href,
|
||||
|
||||
lambda: item.link]
|
||||
|
||||
for cur_attempt in attempt_list:
|
||||
try:
|
||||
url = cur_attempt()
|
||||
except:
|
||||
except (StandardError, Exception):
|
||||
continue
|
||||
|
||||
if title and url:
|
||||
|
@ -86,7 +81,7 @@ class TorrentRssProvider(generic.TorrentProvider):
|
|||
return success, err_msg
|
||||
|
||||
try:
|
||||
items = self.cache_data()
|
||||
items = self._search_provider({'Validate': ['']})
|
||||
|
||||
for item in items:
|
||||
title, url = self._title_and_url(item)
|
||||
|
@ -111,22 +106,14 @@ class TorrentRssProvider(generic.TorrentProvider):
|
|||
except Exception as e:
|
||||
return False, 'Error when trying to load RSS: ' + ex(e)
|
||||
|
||||
def cache_data(self):
|
||||
def _search_provider(self, search_params, **kwargs):
|
||||
|
||||
logger.log(u'TorrentRssCache cache update URL: ' + self.url, logger.DEBUG)
|
||||
result = []
|
||||
for mode in search_params.keys():
|
||||
data = self.feeder.get_feed(self.url)
|
||||
|
||||
data = self.feeder.get_feed(self.url)
|
||||
result += (data and 'entries' in data) and data.entries or []
|
||||
|
||||
return [] if not (data and 'entries' in data) else data.entries
|
||||
self.log_result(mode, count=len(result), url=self.url)
|
||||
|
||||
|
||||
class TorrentRssCache(tvcache.TVCache):
|
||||
|
||||
def __init__(self, provider):
|
||||
tvcache.TVCache.__init__(self, provider)
|
||||
|
||||
self.update_freq = 15
|
||||
|
||||
def _cache_data(self):
|
||||
|
||||
return self.provider.cache_data()
|
||||
return result
|
||||
|
|
|
@ -482,7 +482,8 @@ class MainHandler(WebHandler):
|
|||
sql_results = list(set(sql_results))
|
||||
|
||||
# make a dict out of the sql results
|
||||
sql_results = [dict(row) for row in sql_results]
|
||||
sql_results = [dict(row) for row in sql_results
|
||||
if Quality.splitCompositeStatus(helpers.tryInt(row['status']))[0] not in qualities]
|
||||
|
||||
# multi dimension sort
|
||||
sorts = {
|
||||
|
@ -4870,7 +4871,7 @@ class ConfigProviders(Config):
|
|||
tempProvider = rsstorrent.TorrentRssProvider(name, url, cookies)
|
||||
|
||||
if tempProvider.get_id() in providerDict:
|
||||
return json.dumps({'error': 'Exists as ' + providerDict[tempProvider.get_id()].name})
|
||||
return json.dumps({'error': 'A provider exists as [%s]' % providerDict[tempProvider.get_id()].name})
|
||||
else:
|
||||
(succ, errMsg) = tempProvider.validate_feed()
|
||||
if succ:
|
||||
|
@ -5040,14 +5041,15 @@ class ConfigProviders(Config):
|
|||
setattr(torrent_src, attr, key)
|
||||
|
||||
attr = 'ratio'
|
||||
if hasattr(torrent_src, '_seed_' + attr):
|
||||
if hasattr(torrent_src, '_seed_' + attr) and src_id_prefix + attr in kwargs:
|
||||
setattr(torrent_src, '_seed_' + attr, kwargs.get(src_id_prefix + attr, '').strip() or None)
|
||||
|
||||
for attr in [x for x in ['minseed', 'minleech'] if hasattr(torrent_src, x)]:
|
||||
setattr(torrent_src, attr, config.to_int(str(kwargs.get(src_id_prefix + attr)).strip()))
|
||||
|
||||
for attr in [x for x in ['confirmed', 'freeleech', 'reject_m2ts', 'enable_recentsearch',
|
||||
'enable_backlog', 'search_fallback'] if hasattr(torrent_src, x)]:
|
||||
'enable_backlog', 'search_fallback']
|
||||
if hasattr(torrent_src, x) and src_id_prefix + attr in kwargs]:
|
||||
setattr(torrent_src, attr, config.checkbox_to_value(kwargs.get(src_id_prefix + attr)))
|
||||
|
||||
attr = 'seed_time'
|
||||
|
|
Loading…
Reference in a new issue