This commit is contained in:
marco
2019-06-17 19:56:54 +02:00
2 changed files with 104 additions and 70 deletions
+23 -22
View File
@@ -245,7 +245,8 @@ def video(item):
fulltitle=title, fulltitle=title,
show=title, show=title,
thumbnail=scrapedthumb, thumbnail=scrapedthumb,
context = autoplay.context)) context = autoplay.context,
number= '1'))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
autorenumber.renumber(itemlist) autorenumber.renumber(itemlist)
@@ -258,8 +259,7 @@ def video(item):
def episodios(item): def episodios(item):
log() log()
itemlist = [] itemlist = []
patron_block = r'server active(.*?)server hidden '
patron_block = r'<div class="widget servers".*?>(.*?)<div id="download"'
patron = r'<li><a [^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+" href="([^"]+)"[^>]+>([^<]+)<' patron = r'<li><a [^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+" href="([^"]+)"[^>]+>([^<]+)<'
matches = support.match(item, patron, patron_block)[0] matches = support.match(item, patron, patron_block)[0]
@@ -275,7 +275,8 @@ def episodios(item):
show=scrapedtitle, show=scrapedtitle,
plot=item.plot, plot=item.plot,
fanart=item.thumbnail, fanart=item.thumbnail,
thumbnail=item.thumbnail)) thumbnail=item.thumbnail,
number=scrapedtitle))
autorenumber.renumber(itemlist, item,'bold') autorenumber.renumber(itemlist, item,'bold')
support.videolibrary(itemlist, item) support.videolibrary(itemlist, item)
@@ -291,25 +292,25 @@ def findvideos(item):
for serverid, servername in matches: for serverid, servername in matches:
block = scrapertoolsV2.find_multiple_matches(data,'data-id="'+serverid+'">(.*?)<div class="server') block = scrapertoolsV2.find_multiple_matches(data,'data-id="'+serverid+'">(.*?)<div class="server')
id = scrapertoolsV2.find_single_match(str(block),r'<a data-id="([^"]+)" data-base="'+item.fulltitle+'"') log('ITEM= ',item)
dataJson = httptools.downloadpage('%s/ajax/episode/info?id=%s&server=%s&ts=%s' % (host, id, serverid, int(time.time())), headers=[['x-requested-with', 'XMLHttpRequest']]).data id = scrapertoolsV2.find_single_match(str(block),r'<a data-id="([^"]+)" data-base="'+item.number+'"')
json = jsontools.load(dataJson) if id:
log('JSON= ',json) dataJson = httptools.downloadpage('%s/ajax/episode/info?id=%s&server=%s&ts=%s' % (host, id, serverid, int(time.time())), headers=[['x-requested-with', 'XMLHttpRequest']]).data
json = jsontools.load(dataJson)
videoData +='\n'+json['grabber']
videoData +='\n'+json['grabber'] if serverid == '28':
itemlist.append(
if serverid == '28': Item(
itemlist.append( channel=item.channel,
Item( action="play",
channel=item.channel, title='diretto',
action="play", quality='',
title='diretto', url=json['grabber'],
quality='', server='directo',
url=json['grabber'], show=item.show,
server='directo', contentType=item.contentType,
show=item.show, folder=False))
contentType=item.contentType,
folder=False))
return support.server(item, videoData, itemlist) return support.server(item, videoData, itemlist)
+78 -45
View File
@@ -8,16 +8,17 @@ try:
except: except:
xbmcgui = None xbmcgui = None
from core import jsontools, tvdb from core import jsontools, tvdb, scrapertoolsV2
from core.support import typo, log from core.support import typo, log
from platformcode import config from platformcode import config
from platformcode import platformtools from platformcode import platformtools
# from datetime import datetime
TAG_TVSHOW_RENUMERATE = "TVSHOW_AUTORENUMBER" TAG_TVSHOW_RENUMERATE = "TVSHOW_AUTORENUMBER"
TAG_SEASON_EPISODE = "season_episode" TAG_ID = "ID"
TAG_SEASON = "Season"
__channel__ = "autorenumber" __channel__ = "autorenumber"
def access(): def access():
allow = False allow = False
@@ -39,8 +40,7 @@ def context():
def config_item(item): def config_item(item):
log(item) log(item)
tvdb.find_and_set_infoLabels(item) tvdb.find_and_set_infoLabels(item)
data = '' data = []
data = add_season(data)
title = item.show title = item.show
count = 0 count = 0
@@ -53,8 +53,8 @@ def config_item(item):
heading = config.get_localized_string(70704) heading = config.get_localized_string(70704)
item.infoLabels['tvdb_id'] = platformtools.dialog_numeric(0, heading) item.infoLabels['tvdb_id'] = platformtools.dialog_numeric(0, heading)
data.append(item.infoLabels['tvdb_id']) data.append(item.infoLabels['tvdb_id'])
if item.infoLabels['tvdb_id'] != 0: if item.infoLabels['tvdb_id'] != '':
write_data(item.from_channel, title, data) write_data(item.from_channel, title, item.infoLabels['tvdb_id'])
else: else:
message = config.get_localized_string(60444) message = config.get_localized_string(60444)
heading = item.show.strip() heading = item.show.strip()
@@ -62,39 +62,35 @@ def config_item(item):
def add_season(data=None):
log("data= ", data)
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading)
if season != "":
heading = config.get_localized_string(70687)
episode = platformtools.dialog_numeric(0, heading)
if episode == "0":
heading = config.get_localized_string(70688)
special = platformtools.dialog_numeric(0, heading)
return [int(season), int(episode), int(special)]
elif episode != '':
return [int(season), int(episode), '']
def write_data(channel, show, data): def write_data(channel, show, ID):
log() log()
dict_series = jsontools.get_node_from_file(channel, TAG_TVSHOW_RENUMERATE) dict_series = jsontools.get_node_from_file(channel, TAG_TVSHOW_RENUMERATE)
tvshow = show.strip() tvshow = show.strip()
# list_season_episode = dict_series.get(tvshow, {}).get(TAG_SEASON_EPISODE, [])
if data: if ID:
dict_renumerate = {TAG_SEASON_EPISODE: data} dict_renumerate = {TAG_ID: ID}
dict_series[tvshow] = dict_renumerate dict_series[tvshow] = dict_renumerate
else: else:
dict_series.pop(tvshow, None) dict_series.pop(tvshow, None)
# Cerca di individuare la serie dal titolo
if any( word in show.lower() for word in ['special', 'specials', 'speciali', 'speciale'] ):
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading, '0')
dict_renumerate[TAG_SEASON] = season
elif RepresentsInt(show.split()[-1]):
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading, show.split()[-1])
dict_renumerate[TAG_SEASON] = season
else: dict_renumerate[TAG_SEASON] = '1'
result = jsontools.update_node(dict_series, channel, TAG_TVSHOW_RENUMERATE)[0] result = jsontools.update_node(dict_series, channel, TAG_TVSHOW_RENUMERATE)[0]
if result: if result:
if data: if ID:
message = config.get_localized_string(60446) message = config.get_localized_string(60446)
else: else:
message = config.get_localized_string(60444) message = config.get_localized_string(60444)
@@ -108,43 +104,58 @@ def write_data(channel, show, data):
def renumber(itemlist, item='', typography=''): def renumber(itemlist, item='', typography=''):
log() log()
if item: if item:
try: try:
dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE) dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE)
SERIES = dict_series[item.show.rstrip()]['season_episode'] ID = dict_series[item.show.rstrip()]['ID']
S = SERIES[0] SEASON = dict_series[item.show.rstrip()]['Season']
E = SERIES[1]
SP = SERIES[2]
ID = SERIES[3]
page = 1 page = 1
epDict = {}
epList = [] epList = []
exist = True exist = True
item.infoLabels['tvdb_id'] = ID item.infoLabels['tvdb_id'] = ID
tvdb.set_infoLabels_item(item) tvdb.set_infoLabels_item(item)
ep = 1
while exist: while exist:
data = tvdb.otvdb_global.get_list_episodes(ID,page) data = tvdb.otvdb_global.get_list_episodes(ID,page)
log(data)
if data: if data:
for episodes in data['data']: for episodes in data['data']:
if episodes['airedSeason'] >= S: log(episodes)
if E == 0: if hasattr(episodes,'absoluteNumber'): ABS = episodes['absoluteNumber']
epList.append([0, SP]) else: ABS = str(ep)
E = 1 epDict[str(ABS)] = [str(episodes['airedSeason']) + 'x' + str(episodes['airedEpisodeNumber']), episodes['firstAired']]
if episodes['airedEpisodeNumber'] >= E or episodes['airedSeason'] > S: epList.append(episodes['firstAired'])
epList.append([episodes['airedSeason'], episodes['airedEpisodeNumber']]) ep = ep + 1
page = page + 1 page = page + 1
else: else:
exist = False exist = False
log(epDict)
epList.sort() epList.sort()
ep = 0 log(epList)
for item in itemlist: if SEASON:
s = str(epList[ep][0]) for name, episode in epDict.items():
e = str(epList[ep][1]) if episode[0] == SEASON + 'x1':
item.title = typo(s + 'x'+ e + ' - ', typography) + item.title ep = int(name)-1
ep = ep + 1 else:
ep = 0
if SEASON != '0':
for item in itemlist:
number = int(scrapertoolsV2.find_single_match(item.title, r'\d+'))
episode = str(ep + number)
if number == 0:
episode = previous(epList, epDict, str(ep + 1))
item.title = typo(epDict[episode][0] + ' - ', typography) + item.title
else:
for item in itemlist:
number = scrapertoolsV2.find_single_match(item.title, r'\d+')
item.title = typo('0x' + number + ' - ', typography) + item.title
except: except:
return itemlist return itemlist
@@ -160,4 +171,26 @@ def renumber(itemlist, item='', typography=''):
return itemlist return itemlist
def RepresentsInt(s):
try:
int(s)
return True
except ValueError:
return False
def previous(date_list, Dict, search):
log('Start')
P = None
for ep, variants in Dict.items():
if variants[1] == Dict[search][1]:
date = variants[1]
for index, obj in enumerate(date_list):
if obj == date:
if index > 0:
P = date_list[index - 1]
for name, variants in Dict.items():
log(variants[1], ' = ', P)
if variants[1] == P:
result = name
log(result)
return result