mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-04 08:25:04 -05:00
Scene exceptions for anidb and xem now update once a day, thanks zoggy for pointing that out :)
This commit is contained in:
parent
99d129bd41
commit
cfafc0a39f
@ -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)")
|
@ -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
|
||||||
|
|
||||||
|
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user