1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-11-17 06:45:05 -05: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

@ -81,3 +81,11 @@ class AddSceneExceptionsCustom(AddSceneExceptionsSeasons):
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,7 +231,22 @@ 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 = {}
cacheDB = db.DBConnection('cache.db')
rows = cacheDB.select("SELECT last_refreshed FROM scene_exceptions_refresh WHERE list = ?",
['anidb'])
if rows:
refresh = time.time() > (int(rows[0]['last_refreshed']) + MAX_ANIDB_AGE_SECS)
else:
refresh = True
if refresh:
for show in sickbeard.showList: for show in sickbeard.showList:
if show.is_anime and show.indexer == 1: if show.is_anime and show.indexer == 1:
try: try:
@ -236,15 +254,33 @@ def _retrieve_anidb_mainnames():
except: except:
continue continue
else: else:
success = True
if anime.name and anime.name != show.name: if anime.name and anime.name != show.name:
anidb_mainNames[show.indexerid] = [{anime.name: -1}] 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 = {}
cacheDB = db.DBConnection('cache.db')
rows = cacheDB.select("SELECT last_refreshed FROM scene_exceptions_refresh WHERE list = ?",
['xem'])
if rows:
refresh = time.time() > (int(rows[0]['last_refreshed']) + MAX_XEM_AGE_SECS)
else:
refresh = True
if refresh:
url = "http://thexem.de/map/allNames?origin=%s&seasonNumbers=1" % sickbeard.indexerApi(indexer).config['xem_origin'] url = "http://thexem.de/map/allNames?origin=%s&seasonNumbers=1" % sickbeard.indexerApi(indexer).config['xem_origin']
url_data = helpers.getURL(url, json=True) url_data = helpers.getURL(url, json=True)
@ -255,6 +291,9 @@ def _xem_excpetions_fetcher(indexer):
if url_data['result'] == 'failure': if url_data['result'] == 'failure':
return exception_dict 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(): for indexerid, names in url_data['data'].items():
exception_dict[int(indexerid)] = names exception_dict[int(indexerid)] = names

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),