mirror of
https://github.com/SickGear/SickGear.git
synced 2025-01-21 17:13:42 +00:00
Remove EZRSS provider.
This commit is contained in:
parent
5920fb032c
commit
9ad4b4cd30
7 changed files with 7 additions and 186 deletions
|
@ -1,4 +1,5 @@
|
||||||
### 0.10.0 (2015-xx-xx xx:xx:xx UTC)
|
### 0.10.0 (2015-xx-xx xx:xx:xx UTC)
|
||||||
|
* Remove EZRSS provider
|
||||||
|
|
||||||
|
|
||||||
### 0.9.0 (2015-05-18 14:33:00 UTC)
|
### 0.9.0 (2015-05-18 14:33:00 UTC)
|
||||||
|
|
|
@ -110,7 +110,6 @@
|
||||||
<a href="<%= anon_url(curProvider.url) %>" class="imgLink" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/providers/$curProvider.imageName()" alt="$curProvider.name" title="$curProvider.name" width="16" height="16" style="vertical-align:middle;"/></a>
|
<a href="<%= anon_url(curProvider.url) %>" class="imgLink" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/providers/$curProvider.imageName()" alt="$curProvider.name" title="$curProvider.name" width="16" height="16" style="vertical-align:middle;"/></a>
|
||||||
<span style="vertical-align:middle;">$curProvider.name</span>
|
<span style="vertical-align:middle;">$curProvider.name</span>
|
||||||
<%= '*' if not curProvider.supportsBacklog else '' %>
|
<%= '*' if not curProvider.supportsBacklog else '' %>
|
||||||
<%= '**' if 'EZRSS' == curProvider.name else '' %>
|
|
||||||
<span class="ui-icon ui-icon-arrowthick-2-n-s pull-right" style="margin-top:3px"></span>
|
<span class="ui-icon ui-icon-arrowthick-2-n-s pull-right" style="margin-top:3px"></span>
|
||||||
</li>
|
</li>
|
||||||
#end for
|
#end for
|
||||||
|
|
|
@ -35,7 +35,7 @@ import sickbeard
|
||||||
sys.path.append(os.path.abspath('../lib'))
|
sys.path.append(os.path.abspath('../lib'))
|
||||||
from sickbeard import providers, metadata, config, webserveInit
|
from sickbeard import providers, metadata, config, webserveInit
|
||||||
from sickbeard.providers.generic import GenericProvider
|
from sickbeard.providers.generic import GenericProvider
|
||||||
from providers import ezrss, btn, newznab, womble, thepiratebay, torrentleech, kat, iptorrents, \
|
from providers import btn, newznab, womble, thepiratebay, torrentleech, kat, iptorrents, \
|
||||||
omgwtfnzbs, scc, hdtorrents, torrentday, hdbits, nextgen, speedcd, nyaatorrents, torrentbytes, \
|
omgwtfnzbs, scc, hdtorrents, torrentday, hdbits, nextgen, speedcd, nyaatorrents, torrentbytes, \
|
||||||
freshontv, bitsoup, tokyotoshokan, animenzb, totv
|
freshontv, bitsoup, tokyotoshokan, animenzb, totv
|
||||||
from sickbeard.config import CheckSection, check_setting_int, check_setting_str, check_setting_float, ConfigMigrator, \
|
from sickbeard.config import CheckSection, check_setting_int, check_setting_str, check_setting_float, ConfigMigrator, \
|
||||||
|
|
|
@ -562,21 +562,15 @@ def get_all_episodes_from_absolute_number(show, absolute_numbers, indexer_id=Non
|
||||||
return (season, episodes)
|
return (season, episodes)
|
||||||
|
|
||||||
|
|
||||||
def sanitizeSceneName(name, ezrss=False):
|
def sanitizeSceneName(name):
|
||||||
"""
|
"""
|
||||||
Takes a show name and returns the "scenified" version of it.
|
Takes a show name and returns the "scenified" version of it.
|
||||||
|
|
||||||
ezrss: If true the scenified version will follow EZRSS's cracksmoker rules as best as possible
|
|
||||||
|
|
||||||
Returns: A string containing the scene version of the show name given.
|
Returns: A string containing the scene version of the show name given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if name:
|
if name:
|
||||||
if not ezrss:
|
bad_chars = u",:()'!?\u2019"
|
||||||
bad_chars = u",:()'!?\u2019"
|
|
||||||
# ezrss leaves : and ! in their show names as far as I can tell
|
|
||||||
else:
|
|
||||||
bad_chars = u",()'?\u2019"
|
|
||||||
|
|
||||||
# strip out any bad chars
|
# strip out any bad chars
|
||||||
for x in bad_chars:
|
for x in bad_chars:
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with SickGear. If not, see <http://www.gnu.org/licenses/>.
|
# along with SickGear. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
__all__ = ['ezrss',
|
__all__ = ['womble',
|
||||||
'womble',
|
|
||||||
'btn',
|
'btn',
|
||||||
'thepiratebay',
|
'thepiratebay',
|
||||||
'kat',
|
'kat',
|
||||||
|
|
|
@ -1,172 +0,0 @@
|
||||||
# Author: Nic Wolfe <nic@wolfeden.ca>
|
|
||||||
# URL: http://code.google.com/p/sickbeard/
|
|
||||||
#
|
|
||||||
# This file is part of SickGear.
|
|
||||||
#
|
|
||||||
# SickGear is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# SickGear is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with SickGear. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import urllib
|
|
||||||
import re
|
|
||||||
|
|
||||||
try:
|
|
||||||
import xml.etree.cElementTree as etree
|
|
||||||
except ImportError:
|
|
||||||
import elementtree.ElementTree as etree
|
|
||||||
|
|
||||||
import generic
|
|
||||||
from sickbeard.common import Quality
|
|
||||||
from sickbeard import logger, tvcache, helpers
|
|
||||||
|
|
||||||
|
|
||||||
class EZRSSProvider(generic.TorrentProvider):
|
|
||||||
def __init__(self):
|
|
||||||
generic.TorrentProvider.__init__(self, 'EZRSS', True, False)
|
|
||||||
self.ratio = None
|
|
||||||
self.cache = EZRSSCache(self)
|
|
||||||
self.url = 'https://www.ezrss.it/'
|
|
||||||
|
|
||||||
def getQuality(self, item, anime=False):
|
|
||||||
|
|
||||||
filename = item.filename
|
|
||||||
quality = Quality.sceneQuality(filename, anime)
|
|
||||||
|
|
||||||
return quality
|
|
||||||
|
|
||||||
def findSearchResults(self, show, episodes, search_mode, manualSearch=False):
|
|
||||||
|
|
||||||
self.show = show
|
|
||||||
|
|
||||||
results = {}
|
|
||||||
|
|
||||||
if show.air_by_date or show.sports:
|
|
||||||
logger.log(self.name + u" doesn't support air-by-date or sports backloging because of limitations on their RSS search.",
|
|
||||||
logger.WARNING)
|
|
||||||
return results
|
|
||||||
|
|
||||||
results = generic.TorrentProvider.findSearchResults(self, show, episodes, search_mode, manualSearch)
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def _get_season_search_strings(self, ep_obj):
|
|
||||||
|
|
||||||
params = {}
|
|
||||||
|
|
||||||
params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8')
|
|
||||||
|
|
||||||
if ep_obj.show.air_by_date or ep_obj.show.sports:
|
|
||||||
params['season'] = str(ep_obj.airdate).split('-')[0]
|
|
||||||
elif ep_obj.show.anime:
|
|
||||||
params['season'] = "%d" % ep_obj.scene_absolute_number
|
|
||||||
else:
|
|
||||||
params['season'] = ep_obj.scene_season
|
|
||||||
|
|
||||||
return [params]
|
|
||||||
|
|
||||||
def _get_episode_search_strings(self, ep_obj, add_string=''):
|
|
||||||
|
|
||||||
params = {}
|
|
||||||
|
|
||||||
if not ep_obj:
|
|
||||||
return params
|
|
||||||
|
|
||||||
params['show_name'] = helpers.sanitizeSceneName(self.show.name, ezrss=True).replace('.', ' ').encode('utf-8')
|
|
||||||
|
|
||||||
if self.show.air_by_date or self.show.sports:
|
|
||||||
params['date'] = str(ep_obj.airdate)
|
|
||||||
elif self.show.anime:
|
|
||||||
params['episode'] = "%i" % int(ep_obj.scene_absolute_number)
|
|
||||||
else:
|
|
||||||
params['season'] = ep_obj.scene_season
|
|
||||||
params['episode'] = ep_obj.scene_episode
|
|
||||||
|
|
||||||
return [params]
|
|
||||||
|
|
||||||
def _doSearch(self, search_params, search_mode='eponly', epcount=0, age=0):
|
|
||||||
|
|
||||||
params = {"mode": "rss"}
|
|
||||||
|
|
||||||
if search_params:
|
|
||||||
params.update(search_params)
|
|
||||||
|
|
||||||
search_url = self.url + 'search/index.php?' + urllib.urlencode(params)
|
|
||||||
|
|
||||||
logger.log(u"Search string: " + search_url, logger.DEBUG)
|
|
||||||
|
|
||||||
data = self.cache.getRSSFeed(search_url)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
return []
|
|
||||||
|
|
||||||
items = data.entries
|
|
||||||
|
|
||||||
results = []
|
|
||||||
for curItem in items:
|
|
||||||
|
|
||||||
(title, url) = self._get_title_and_url(curItem)
|
|
||||||
|
|
||||||
if title and url:
|
|
||||||
logger.log(u"RSS Feed provider: [" + self.name + "] Attempting to add item to cache: " + title, logger.DEBUG)
|
|
||||||
results.append(curItem)
|
|
||||||
else:
|
|
||||||
logger.log(
|
|
||||||
u"The XML returned from the " + self.name + " RSS feed is incomplete, this result is unusable",
|
|
||||||
logger.ERROR)
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def _get_title_and_url(self, item):
|
|
||||||
(title, url) = generic.TorrentProvider._get_title_and_url(self, item)
|
|
||||||
|
|
||||||
filename = item.filename
|
|
||||||
if filename:
|
|
||||||
new_title = self._extract_name_from_filename(filename)
|
|
||||||
if new_title:
|
|
||||||
title = new_title
|
|
||||||
logger.log(u"Extracted the name " + title + " from the torrent link", logger.DEBUG)
|
|
||||||
|
|
||||||
return (title, url)
|
|
||||||
|
|
||||||
def _extract_name_from_filename(self, filename):
|
|
||||||
name_regex = '(.*?)\.?(\[.*]|\d+\.TPB)\.torrent$'
|
|
||||||
logger.log(u"Comparing " + name_regex + " against " + filename, logger.DEBUG)
|
|
||||||
match = re.match(name_regex, filename, re.I)
|
|
||||||
if match:
|
|
||||||
return match.group(1)
|
|
||||||
return None
|
|
||||||
|
|
||||||
def seedRatio(self):
|
|
||||||
return self.ratio
|
|
||||||
|
|
||||||
|
|
||||||
class EZRSSCache(tvcache.TVCache):
|
|
||||||
def __init__(self, provider):
|
|
||||||
|
|
||||||
tvcache.TVCache.__init__(self, provider)
|
|
||||||
|
|
||||||
# only poll EZRSS every 15 minutes max
|
|
||||||
self.minTime = 15
|
|
||||||
|
|
||||||
def _getRSSData(self):
|
|
||||||
|
|
||||||
rss_url = self.provider.url + 'feed/'
|
|
||||||
logger.log(self.provider.name + " cache update URL: " + rss_url, logger.DEBUG)
|
|
||||||
|
|
||||||
data = self.getRSSFeed(rss_url)
|
|
||||||
|
|
||||||
if data and 'entries' in data:
|
|
||||||
return data.entries
|
|
||||||
else:
|
|
||||||
return []
|
|
||||||
|
|
||||||
provider = EZRSSProvider()
|
|
|
@ -433,7 +433,7 @@ def searchForNeededEpisodes(episodes):
|
||||||
if curEp in foundResults and bestResult.quality <= foundResults[curEp].quality:
|
if curEp in foundResults and bestResult.quality <= foundResults[curEp].quality:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# filter out possible bad torrents from providers such as ezrss
|
# filter out possible bad torrents from providers
|
||||||
if bestResult.resultType == "torrent" and sickbeard.TORRENT_METHOD != "blackhole":
|
if bestResult.resultType == "torrent" and sickbeard.TORRENT_METHOD != "blackhole":
|
||||||
bestResult.content = None
|
bestResult.content = None
|
||||||
if not bestResult.url.startswith('magnet'):
|
if not bestResult.url.startswith('magnet'):
|
||||||
|
@ -704,7 +704,7 @@ def searchProviders(show, episodes, manualSearch=False):
|
||||||
if not bestResult:
|
if not bestResult:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# filter out possible bad torrents from providers such as ezrss
|
# filter out possible bad torrents from providers
|
||||||
if bestResult.resultType == "torrent" and sickbeard.TORRENT_METHOD != "blackhole":
|
if bestResult.resultType == "torrent" and sickbeard.TORRENT_METHOD != "blackhole":
|
||||||
bestResult.content = None
|
bestResult.content = None
|
||||||
if not bestResult.url.startswith('magnet'):
|
if not bestResult.url.startswith('magnet'):
|
||||||
|
|
Loading…
Reference in a new issue