1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-08-13 16:53:54 -04:00

Scene exceptions for anidb and xem now update once a day, thanks zoggy for pointing that out :)

This commit is contained in:
echel0n 2014-05-31 23:44:44 -07:00
parent 99d129bd41
commit cfafc0a39f
3 changed files with 67 additions and 21 deletions

View File

@ -80,4 +80,12 @@ class AddSceneExceptionsCustom(AddSceneExceptionsSeasons):
return self.hasColumn("scene_exceptions", "custom") return self.hasColumn("scene_exceptions", "custom")
def execute(self): def execute(self):
self.addColumn("scene_exceptions", "custom", "NUMERIC", 0) self.addColumn("scene_exceptions", "custom", "NUMERIC", 0)
class AddSceneExceptionsRefresh(AddSceneExceptionsCustom):
def test(self):
return self.hasTable("scene_exceptions_refresh")
def execute(self):
self.connection.action(
"CREATE TABLE scene_exceptions_refresh (list TEXT, last_refreshed INTEGER)")

View File

@ -17,7 +17,7 @@
# along with SickRage. If not, see <http://www.gnu.org/licenses/>. # along with SickRage. If not, see <http://www.gnu.org/licenses/>.
import re import re
import threading import time
import sickbeard import sickbeard
from lib import adba from lib import adba
@ -26,6 +26,9 @@ from sickbeard import name_cache
from sickbeard import logger from sickbeard import logger
from sickbeard import db from sickbeard import db
MAX_XEM_AGE_SECS = 86400 # 1 day
MAX_ANIDB_AGE_SECS = 86400 # 1 day
exceptionCache = {} exceptionCache = {}
exceptionSeasonCache = {} exceptionSeasonCache = {}
exceptionIndexerCache = {} exceptionIndexerCache = {}
@ -228,35 +231,71 @@ def update_scene_exceptions(indexer_id, scene_exceptions):
name_cache.clearCache() name_cache.clearCache()
def _retrieve_anidb_mainnames(): def _retrieve_anidb_mainnames():
global MAX_ANIDB_AGE_SECS
success = False
anidb_mainNames = {} anidb_mainNames = {}
for show in sickbeard.showList:
if show.is_anime and show.indexer == 1: cacheDB = db.DBConnection('cache.db')
try:
anime = adba.Anime(None, name=show.name, tvdbid=show.indexerid, autoCorrectName=True) rows = cacheDB.select("SELECT last_refreshed FROM scene_exceptions_refresh WHERE list = ?",
except: ['anidb'])
continue if rows:
else: refresh = time.time() > (int(rows[0]['last_refreshed']) + MAX_ANIDB_AGE_SECS)
if anime.name and anime.name != show.name: else:
anidb_mainNames[show.indexerid] = [{anime.name: -1}] refresh = True
if refresh:
for show in sickbeard.showList:
if show.is_anime and show.indexer == 1:
try:
anime = adba.Anime(None, name=show.name, tvdbid=show.indexerid, autoCorrectName=True)
except:
continue
else:
success = True
if anime.name and anime.name != show.name:
anidb_mainNames[show.indexerid] = [{anime.name: -1}]
if success:
cacheDB.action("INSERT OR REPLACE INTO scene_exceptions_refresh (list, last_refreshed) VALUES (?,?)",
['anidb', time.time()])
return anidb_mainNames return anidb_mainNames
def _xem_excpetions_fetcher(indexer): def _xem_excpetions_fetcher(indexer):
global MAX_XEM_AGE_SECS
exception_dict = {} exception_dict = {}
url = "http://thexem.de/map/allNames?origin=%s&seasonNumbers=1" % sickbeard.indexerApi(indexer).config['xem_origin'] cacheDB = db.DBConnection('cache.db')
url_data = helpers.getURL(url, json=True) rows = cacheDB.select("SELECT last_refreshed FROM scene_exceptions_refresh WHERE list = ?",
if url_data is None: ['xem'])
logger.log(u"Check scene exceptions update failed. Unable to get URL: " + url, logger.ERROR) if rows:
return exception_dict refresh = time.time() > (int(rows[0]['last_refreshed']) + MAX_XEM_AGE_SECS)
else:
refresh = True
if url_data['result'] == 'failure': if refresh:
return exception_dict url = "http://thexem.de/map/allNames?origin=%s&seasonNumbers=1" % sickbeard.indexerApi(indexer).config['xem_origin']
for indexerid, names in url_data['data'].items(): url_data = helpers.getURL(url, json=True)
exception_dict[int(indexerid)] = names if url_data is None:
logger.log(u"Check scene exceptions update failed. Unable to get URL: " + url, logger.ERROR)
return exception_dict
if url_data['result'] == 'failure':
return exception_dict
cacheDB.action("INSERT OR REPLACE INTO scene_exceptions_refresh (list, last_refreshed) VALUES (?,?)",
['xem', time.time()])
for indexerid, names in url_data['data'].items():
exception_dict[int(indexerid)] = names
return exception_dict return exception_dict

View File

@ -41,7 +41,6 @@ from lib import requests
MAX_XEM_AGE_SECS = 86400 # 1 day MAX_XEM_AGE_SECS = 86400 # 1 day
def get_scene_numbering(indexer_id, indexer, season, episode, fallback_to_xem=True): def get_scene_numbering(indexer_id, indexer, season, episode, fallback_to_xem=True):
""" """
Returns a tuple, (season, episode), with the scene numbering (if there is one), Returns a tuple, (season, episode), with the scene numbering (if there is one),