def anidb_ep(mappingList, season, episode): # <mapping-list> <mapping anidbseason="0" tvdbseason="0">;1-5;2-6;</mapping> + <mapping-list> <mapping anidbseason="1" tvdbseason="5" start="13" end="24" offset="-12"/> ep_mapping = Dict(mappingList, 'TVDB', 's' + season + 'e' + episode.split('-')[0]) if ep_mapping: return ep_mapping[0], ep_mapping[1], ep_mapping[ 2] #Lvl 3 & 2 direct ep mapping (ep or season with start-end range) ### bug here #ep_mappings = [key for key in Dict(mappingList, 'TVDB') if 'e' in key and anidbid == Dict(mappingList, 'TVDB', key)[2]] #Log.Info('ep_mappings: "{}" so dropping non listed ep mappings'.format(ep_mappings)); #if ep_mappings: return '0', '0', anidbid # <mapping-list> <mapping anidbseason="1" tvdbseason="5" offset="-12"/> anidbid_list = Dict(mappingList, 'TVDB', 's' + season) #Log.Info('anidbid_list: {}'.format(anidbid_list)) for offset, anidbid in sorted( zip(anidbid_list.values(), anidbid_list.keys()), key=lambda x: common.natural_sort_key(x[0]), reverse=True ) if anidbid_list else []: #reverse value&index and sort per offset #Log.Info("- offset: {}, anidbid: {}, int(episode.split('-')[0]): {}".format(offset, anidbid, int(episode.split('-')[0]))) if int(episode.split('-')[0]) > int(offset): return '1', str( int(episode.split('-')[0]) - int(offset)), anidbid #Lvl 1 - defaulttvdbseason + offset # <anime anidbid="23" tvdbid="76885" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid=""> defaulttvdbseason = Dict(mappingList, 'defaulttvdbseason') episodeoffset = Dict(mappingList, 'episodeoffset', default="0") if season == defaulttvdbseason: return defaulttvdbseason, str(int(episode) - int(episodeoffset)), '' if Dict(mappingList, 'tvdbcount', default=0) == 1 and (Dict(mappingList, 'TVDB', 's1') or Dict( mappingList, 'TVDB', 'sa')): # Confirm only one entry and its 's1' for item in Dict(mappingList, 'TVDB'): # Also that there are no s0 mappings if item.startswith("s0"): break else: return season, episode, (Dict(mappingList, 'TVDB', 's1') or Dict( mappingList, 'TVDB', 'sa')).keys()[0] return '0', '0', 'xxxxxxx'
def anidb_ep(mappingList, season, episode): # <mapping-list> <mapping anidbseason="0" tvdbseason="0">;1-5;2-6;</mapping> # <mapping-list> <mapping anidbseason="1" tvdbseason="5" start="13" end="24" offset="-12"/> ep_mapping = Dict(mappingList, 'TVDB', 's' + season + 'e' + episode.split('-')[0]) if ep_mapping: return ep_mapping[0], ep_mapping[1], ep_mapping[ 2] #Lvl 3 & 2 direct ep mapping (ep or season with start-end range) # <mapping-list> <mapping anidbseason="1" tvdbseason="5" offset="-12"/> anidbid_list = Dict(mappingList, 'TVDB', 's' + season) #Log.Info('anidbid_list: {}'.format(anidbid_list)) for offset, anidbid in sorted( zip(anidbid_list.values(), anidbid_list.keys()), key=lambda x: common.natural_sort_key(x[0]), reverse=True ) if anidbid_list else []: #reverse value&index and sort per offset #Log.Info("- offset: {}, anidbid: {}, int(episode.split('-')[0]): {}".format(offset, anidbid, int(episode.split('-')[0]))) if int(episode.split('-')[0]) > int(offset): return '1', str( int(episode.split('-')[0]) - int(offset)), anidbid #Lvl 1 - defaulttvdbseason + offset # <anime anidbid="23" tvdbid="76885" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid=""> defaulttvdbseason = Dict(mappingList, 'defaulttvdbseason') episodeoffset = Dict(mappingList, 'episodeoffset') if season == defaulttvdbseason: return defaulttvdbseason, str(int(episode) - int(episodeoffset)), '' # Map season 0 episodes directly to tvdb season 0 episodes # On condition of being the only anidb id mapped to the tvdbid, its set to season 1, and has no special mappings if season == "0" and Dict(mappingList, 'tvdbcount', default=0) == 1 and Dict( mappingList, 'TVDB', 's1'): # Confirm only one entry and its 's1' for item in Dict(mappingList, 'TVDB'): # Also that there are no s0 mappings if item.startswith("s0"): break else: return season, episode, list( Dict(mappingList, 'TVDB', 's1').keys())[0] return '0', '0', 'xxxxxxx'
def anidb_ep(mappingList, season, episode): # <mapping-list> <mapping anidbseason="0" tvdbseason="0">;1-5;2-6;</mapping> + <mapping-list> <mapping anidbseason="1" tvdbseason="5" start="13" end="24" offset="-12"/> anidbid_array = Dict(mappingList, 'TVDB', 's' + season, default={'', 0}) anidbid = anidbid_array.keys()[0] if len(anidbid_array) == 1 else 'xxxxxxx' ep_mapping = Dict(mappingList, 'TVDB', 's' + season + 'e' + episode.split('-')[0]) if ep_mapping: return ep_mapping[0], ep_mapping[1], ep_mapping[ 2] #Lvl 3 & 2 direct ep mapping (ep or season with start-end range) ### bug here #ep_mappings = [key for key in Dict(mappingList, 'TVDB') if 'e' in key and anidbid == Dict(mappingList, 'TVDB', key)[2]] #Log.Info('ep_mappings: "{}" so dropping non listed ep mappings'.format(ep_mappings)); #if ep_mappings: return '0', '0', anidbid # <mapping-list> <mapping anidbseason="1" tvdbseason="5" offset="-12"/> anidbid_list = Dict(mappingList, 'TVDB', 's' + season) #Log.Info('anidbid_list: {}'.format(anidbid_list)) for offset, anidbid in sorted( zip(anidbid_list.values(), anidbid_list.keys()), key=lambda x: common.natural_sort_key(x[0]), reverse=True ) if anidbid_list else []: #reverse value&index and sort per offset #Log.Info("- offset: {}, anidbid: {}, int(episode.split('-')[0]): {}".format(offset, anidbid, int(episode.split('-')[0]))) if int(episode.split('-')[0]) > int(offset): return '1', str( int(episode.split('-')[0]) - int(offset)), anidbid #Lvl 1 - defaulttvdbseason + offset # <anime anidbid="23" tvdbid="76885" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid=""> defaulttvdbseason = Dict(mappingList, 'defaulttvdbseason') episodeoffset = Dict(mappingList, 'episodeoffset', default="0") if defaulttvdbseason and season == defaulttvdbseason: return Dict( mappingList, 'defaulttvdbseason'), str(int(episode) - int(episodeoffset)), '' else: return '0', '0', anidbid
def anidb_ep(mappingList, season, episode): # <mapping-list> <mapping anidbseason="0" tvdbseason="0">;1-5;2-6;</mapping> # <mapping-list> <mapping anidbseason="1" tvdbseason="5" start="13" end="24" offset="-12"/> ep_mapping = Dict(mappingList, 'TVDB', 's'+season+'e'+episode.split('-')[0]) if ep_mapping: return ep_mapping[0], ep_mapping[1], ep_mapping[2] #Lvl 3 & 2 direct ep mapping (ep or season with start-end range) # <mapping-list> <mapping anidbseason="1" tvdbseason="5" offset="-12"/> anidbid_list = Dict(mappingList, 'TVDB', 's'+season) #Log.Info('anidbid_list: {}'.format(anidbid_list)) for offset, anidbid in sorted(zip(anidbid_list.values(), anidbid_list.keys()), key=lambda x: common.natural_sort_key(x[0]), reverse=True) if anidbid_list else[]: #reverse value&index and sort per offset #Log.Info("- offset: {}, anidbid: {}, int(episode.split('-')[0]): {}".format(offset, anidbid, int(episode.split('-')[0]))) if int(episode.split('-')[0])> int(offset): return '1', str(int(episode.split('-')[0])-int(offset)), anidbid #Lvl 1 - defaulttvdbseason + offset # <anime anidbid="23" tvdbid="76885" defaulttvdbseason="1" episodeoffset="" tmdbid="" imdbid=""> defaulttvdbseason = Dict(mappingList, 'defaulttvdbseason') episodeoffset = Dict(mappingList, 'episodeoffset') if season==defaulttvdbseason: return defaulttvdbseason, str(int(episode)-int(episodeoffset)), '' # Map season 0 episodes directly to tvdb season 0 episodes # On condition of being the only anidb id mapped to the tvdbid, its set to season 1, and has no special mappings if season=="0" and Dict(mappingList, 'tvdbcount', default=0)==1 and Dict(mappingList, 'TVDB', 's1'): # Confirm only one entry and its 's1' for item in Dict(mappingList, 'TVDB'): # Also that there are no s0 mappings if item.startswith("s0"): break else: return season, episode, list(Dict(mappingList, 'TVDB', 's1').keys())[0] return '0', '0', 'xxxxxxx'