示例#1
0
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'
示例#2
0
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'
示例#3
0
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
示例#4
0
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'