def get_queue(): data = snr.get_queue() shows = [] for show in data: name = show['movie']['title'] try: thumb = show['movie']['images'][0]['url'] fanart = show['movie']['images'][1]['url'] except IndexError: thumb = '' fanart = '' xbmc.log("Radarr get_queue: Error setting Artwork...") totalsize = show['size'] * 1e-9 perc = 100 - (100 * float(show['sizeleft'])/float(show['size'])) name += ' [COLOR FF3576F9]%s%%[/COLOR] ' % round(perc, 1) name += ' [COLOR FF3576F9]of %sGB[/COLOR] ' % round(totalsize, 2) show_id = show['id'] #seasons = 'na' #dir_show = get_appended_path(dir_movies, str(show_id)) #file = 'seasons.json' #file_path = get_appended_path(dir_show, file) #write_json(file_path, seasons) shows.append({'name': name, 'url': str(show_id), 'mode': 'getShow', 'type': 'dir', 'images': {'thumb': thumb, 'fanart': fanart}}) add_entries(shows) #Sort ignoring 'The' xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) xbmcplugin.endOfDirectory(pluginhandle)
def list_shows(data): shows = [] for show in data: name = show['title'].encode('utf-8') thumb = host_url + show['images'][2]['url'] + '&apikey={}'.format( api_key) #banner = host_url + show['images'][1]['url'] + '&apikey={}'.format(api_key) fanart = host_url + show['images'][0]['url'] + '&apikey={}'.format( api_key) show_id = show['id'] seasons = show['seasons'] dir_show = get_appended_path(dir_shows, str(show_id)) file = 'seasons.json' file_path = get_appended_path(dir_show, file) write_json(file_path, seasons) shows.append({ 'name': name, 'url': str(show_id), 'mode': 'getShow', 'type': 'dir', 'images': { 'thumb': thumb, 'fanart': fanart } }) add_entries(shows) xbmcplugin.endOfDirectory(pluginhandle)
def list_season(show_id, season_id): xbmc.log("List Season") season = [] #show_id = xbmc.getInfoLabel("ListItem.tvshowtitle") #season_id = xbmc.getInfoLabel("ListItem.season") xbmc.log("season_id") xbmc.log(str(season_id)) dir_show = get_appended_path(dir_shows, str(show_id)) file_db = get_appended_path(dir_show, 'episodes.json') xbmc.log('filedb') xbmc.log(str(file_db)) data = read_json(file_db) for episode in data: if str(episode['seasonNumber']) != season_id: continue else: xbmc.log("FOUND") name = get_episode_name(episode) episode = episode['episodeNumber'] season.append({ 'name': name, 'mode': 'end', 'show': str(show_id), 'episode': episode, 'type': 'dir' }) add_entries(season) xbmcplugin.endOfDirectory(pluginhandle)
def list_season(show_id, season_id): xbmc.log("List Season") season = [] thumb = xbmc.getInfoLabel('ListItem.Thumb') fanart = xbmc.getInfoLabel('ListItem.Art(fanart)') xbmc.log("season_id") xbmc.log(str(season_id)) dir_show = get_appended_path(dir_shows, str(show_id)) file_db = get_appended_path(dir_show, 'episodes.json') xbmc.log('filedb') xbmc.log(str(file_db)) data = read_json(file_db) for episode in data: xbmc.log("Sonarr list_season(episodes): " + str(episode)) if str(episode['seasonNumber']) != season_id: continue else: episodeid = str(episode['id']) name = get_episode_name(episode) episode = episode['episodeNumber'] season.append({ 'name': name, 'mode': 'addEpisode', 'show': str(show_id), 'episode': episode, 'episodeid': episodeid, 'type': 'dir', 'images': { 'thumb': thumb, 'fanart': fanart } }) add_entries(season) xbmcplugin.endOfDirectory(pluginhandle)
def get_episodes(name): xbmc.log(log_msg + '!GET EPISODES!', loglevel) xbmc.log(log_msg + 'from addon: ' +name, loglevel) items = [] addon_id = name db_file = dir_db + addon_id + '.json' db_all = read_json(db_file) name = get_addon_name(addon_id) if addon_id != 'unknown' and addon_id != 'Kodi-DB': name = TRANSLATE(30011)+' '+name thumb = get_addon_icon(addon_id) fanart = get_addon_fanart(addon_id) items.append({"name": name, "url": addon_id, "mode": "to_addon", "type": "dir", "images": {"thumb": thumb, "fanart": fanart}, "infolabels": {"title": name}}) for i in reversed(db_all): try: name = i['name'] url = i['link'] plot = i['plot'] iconimage = i['icon'] duration = i['dura'] date_added = i['date'] fanart = '' if enab_fana: if 'fana' in i: fanart = i['fana'] cm = get_cm(["episodes"]) items.append({ "name": name, "url": url, "mode": "play", "type": "video", "infolabels": {"title": name, "duration": duration, "writer": addon_id, "plot": plot, "aired": date_added}, "images": {"thumb": iconimage, "fanart": fanart}, "cm": cm}) except KeyError: pass add_entries(items)
def root(): mall_shows = { 'name': TRANSLATE(30005), 'mode': 'getAllShows', 'type': 'dir', 'images': { 'thumb': addonicon, 'fanart': addonfanart } } madd_show = { 'name': TRANSLATE(30009), 'mode': 'addShow', 'type': 'dir', 'images': { 'thumb': addonicon, 'fanart': addonfanart } } mget_queue = { 'name': TRANSLATE(30011), 'mode': 'getQueue', 'type': 'dir', 'images': { 'thumb': addonicon, 'fanart': addonfanart } } main = [mall_shows, madd_show, mget_queue] add_entries(main) xbmcplugin.endOfDirectory(pluginhandle)
def root(): mall_movies = {'name': TRANSLATE(30005), 'mode': 'getAllMovies', 'type': 'dir', 'images': {'thumb': addonicon, 'fanart': addonfanart}} madd_movie = {'name': TRANSLATE(30009), 'mode': 'addMovie', 'type': 'dir', 'images': {'thumb': addonicon, 'fanart': addonfanart}} msearch_missing = {'name': TRANSLATE(30010), 'mode': 'searchMissing', 'type': 'dir', 'images': {'thumb': addonicon, 'fanart': addonfanart}} mget_queue = {'name': TRANSLATE(30011), 'mode': 'getQueue', 'type': 'dir', 'images': {'thumb': addonicon, 'fanart': addonfanart}} main = [madd_movie, mall_movies, msearch_missing, mget_queue] add_entries(main) xbmcplugin.endOfDirectory(pluginhandle)
def root(): mall_shows = { 'name': TRANSLATE(30005), 'mode': 'getAllShows', 'type': 'dir' } madd_show = {'name': TRANSLATE(30009), 'mode': 'addShow', 'type': 'dir'} main = [mall_shows, madd_show] add_entries(main) xbmcplugin.endOfDirectory(pluginhandle)
def get_queue(): data = snr.get_queue() shows = [] for show in data: xbmc.log("Sonarr get_queue: Show: " + str(show)) showname = show['series']['title'] xbmc.log("Sonarr get_queue: Timeleft: " + str(show['timeleft'])) name = showname + " S" + str( show['episode']['seasonNumber']) + "E" + str( show['episode']['episodeNumber']) try: thumb = show['series']['images'][1]['url'] except IndexError: thumb = '' try: fanart = show['series']['images'][2]['url'] except IndexError: fanart = '' xbmc.log("Sonarr get_queue: Error setting Artwork...") totalsize = show['size'] * 1e-9 perc = 100 - (100 * float(show['sizeleft']) / float(show['size'])) name += ' [COLOR FF3576F9]%s%%[/COLOR] ' % round(perc, 1) name += ' [COLOR FF3576F9]of %sGB[/COLOR] ' % round(totalsize, 2) # name += ' [COLOR FF3576F9]Time Remaining: %s[/COLOR]' % str(show['timeleft']) show_id = show['id'] seasons = 'na' dir_show = get_appended_path(dir_shows, str(show_id)) file = 'seasons.json' file_path = get_appended_path(dir_show, file) write_json(file_path, seasons) if 'overview' in show: plot = show['overview'] else: plot = '' shows.append({ 'name': name, 'url': str(show_id), 'mode': 'getRoot', 'type': 'dir', 'images': { 'thumb': thumb, 'fanart': fanart }, 'plot': plot }) if shows == []: shows.append({ 'name': 'No Current Downloads', 'url': '', 'mode': 'getRoot', 'type': 'dir' }) add_entries(shows) xbmcplugin.endOfDirectory(pluginhandle)
def list_alphabet(): items = [] for i in range(ord('A'), ord('Z') + 1): name = chr(i) url = '%sletter=%s&page=1' % (baseurl, name) items.append({ "name": name, "url": url, "mode": "index", "type": "dir", "infolabels": {"title": name}, "images": {"thumb": icon, "fanart": fanart}}) add_entries(items) set_view() xbmcplugin.endOfDirectory(pluginhandle)
def index(url): items = [] data = get_json(url) nonce = data['nonce'] for item in data['dokus']: dokuId = item['dokuId'] url = item['youtubeId'] desc = item['description'] name = item['title'] thumb = item['cover'] fanart = get_fanart(url) duration = item['length'] date_raw = item['date'] date = clean_date(date_raw) source = get_item_src(item['dokuSrc']) source_desc = "%s%s" % (TRANSLATE(30043), source[:9]) if source == '': source_desc = '' perc_raw = item['voting']['voteCountInPerc'] perc = get_item_perc(perc_raw) vote_raw = item['voting']['voteCountAll'] vote = get_item_vote(vote_raw) cm = [(TRANSLATE(30054), 'XBMC.RunPlugin(%s?mode=vote_up&url=%s-%s)' % (sys.argv[0], dokuId, nonce)), (TRANSLATE(30055), 'XBMC.RunPlugin(%s?mode=vote_down&url=%s-%s)' % (sys.argv[0], dokuId, nonce))] desc = get_desc(date, perc, vote, source_desc, desc) items.append({ "name": name, "url": url, "mode": "play", "type": "video", "infolabels": {"title": name, "plot": desc, "duration": duration, "aired": date, "votes": vote_raw, "rating": (float(perc_raw) / 10), "studio": source, "year": date[-4:], "genre": "Doku"}, "images": {"thumb": thumb, "fanart": fanart}, "cm": cm}) if 'nextpage' in data['query']: url = (data['query']['nextpage']) name = TRANSLATE(30030) items.append({ "name": name, "url": url, "mode": "index", "type": "dir", "infolabels": {"title": name}, "images": {"thumb": imageDir + '10.png'}}) if 'prevpage' in data['query']: url = (data['query']['prevpage']) name = TRANSLATE(30031) items.append({ "name": name, "url": url, "mode": "index", "type": "dir", "infolabels": {"title": name}, "images": {"thumb": imageDir + '11.png'}}) if show_mm: name = TRANSLATE(30032) items.append({ "name": name, "url": "", "mode": "", "type": "", "infolabels": {"title": name}, "images": {"thumb": imageDir + '12.png'}}) add_entries(items) set_view() xbmcplugin.endOfDirectory(pluginhandle)
def get_cat(): items = [] url = '%sgetCats' % baseurl data = get_json(url) for item in data: name = item['name'] url = item['url'] items.append({ "name": name, "url": url, "mode": "index", "type": "dir", "infolabels": {"title": name}, "images": {"thumb": icon, "fanart": fanart}}) #addDir(name, url, 'index', icon) add_entries(items) set_view() xbmcplugin.endOfDirectory(pluginhandle)
def list_seasons(show_id): seasons = [] #show_id = xbmc.getInfoLabel("ListItem.tvshowtitle") dir_show = get_appended_path(dir_shows, str(show_id)) file_db = get_appended_path(dir_show, 'seasons.json') data = read_json(file_db) #show_id = xbmc.getInfoLabel("ListItem.tvshowtitle") for season in data: name = get_season_name(season) season_id = season['seasonNumber'] seasons.append({ 'name': name, 'url': str(show_id), 'season': str(season_id), 'mode': 'getSeason', 'type': 'dir' }) add_entries(seasons) xbmcplugin.endOfDirectory(pluginhandle)
def list_seasons(show_id): seasons = [] thumb = xbmc.getInfoLabel('ListItem.Art(thumb)') fanart = xbmc.getInfoLabel('ListItem.Art(fanart)') dir_show = get_appended_path(dir_shows, str(show_id)) file_db = get_appended_path(dir_show, 'seasons.json') data = read_json(file_db) for season in data: xbmc.log("Sonarr list_seasons: " + str(season)) name = get_season_name(season) season_id = season['seasonNumber'] seasons.append({ 'name': name, 'url': str(show_id), 'season': str(season_id), 'mode': 'getSeason', 'type': 'dir', 'images': { 'thumb': thumb, 'fanart': fanart } }) add_entries(seasons) xbmcplugin.endOfDirectory(pluginhandle)
def get_addons(): xbmc.log(log_msg + '!GET ADDONS!', loglevel) addons = [] addons_listing = [] path = dir_db xbmc.log(log_msg + 'path: ' + path, loglevel) for subdir, dirs, files in os.walk(path): for db_file in files: filepath = subdir + os.sep + db_file if filepath.endswith(".json"): name = db_file[:db_file.rfind(".json")] addons.append(name) for name in addons: addon_id = name # url = addon_id name = get_addon_name(addon_id) thumb = get_addon_icon(addon_id) fanart = get_addon_fanart(addon_id) cm = get_cm(["addons"], addon_id) addons_listing.append({ "name": name, "url": addon_id, "mode": "episodes", "type": "dir", "infolabels": {"title": name}, "images": {"thumb": thumb, "fanart": fanart}, "cm": cm}) add_entries(addons_listing)
def main(): main_menu = get_main_menu() add_entries(main_menu) set_view() xbmcplugin.endOfDirectory(pluginhandle)
def list_shows(data): shows = [] for show in data: xbmc.log("Sonarr list_shows: " + str(show), xbmc.LOGINFO) name = show['title'] try: thumb = host_url + show['images'][1]['url'] + '&apikey={}'.format( api_key) except IndexError: thumb = '' try: fanart = host_url + show['images'][2]['url'] + '&apikey={}'.format( api_key) except IndexError: fanart = '' xbmc.log("Sonarr list_shows: Error setting Artwork...") xbmc.log("THUMBB " + str(thumb)) show_id = show['id'] seasons = show['seasons'] dir_show = get_appended_path(dir_shows, str(show_id)) file = 'seasons.json' file_path = get_appended_path(dir_show, file) write_json(file_path, seasons) totaleps = 0 eps = 0 for season in show['seasons']: if season['monitored'] == True: totaleps += int(season['statistics']['totalEpisodeCount']) eps += int(season['statistics']['episodeCount']) # Get percentage if vw_perc: if totaleps > 0: perc = int(eps / totaleps * 100) else: perc = 100 if perc == 100: perc = '[COLOR FF3576F9]{}%[/COLOR]'.format(perc) # blue elif 50 <= perc < 100: perc = '[COLOR FFFA7544]{}%[/COLOR]'.format(perc) # yellow elif perc < 50: perc = '[COLOR FFF7290A]{}%[/COLOR]'.format(perc) # red name += ' ' + str(perc) # get episodes counter if vw_total: epi_count = str(eps) epi_total_count = str(totaleps) name += ' {}/{} '.format(epi_count, epi_total_count) if 'overview' in show: plot = show['overview'] else: plot = '' name += ' [' + show['status'] + ']' shows.append({ 'name': name, 'url': str(show_id), 'mode': 'getShow', 'type': 'dir', 'images': { 'thumb': thumb, 'fanart': fanart }, 'plot': str(plot) }) add_entries(shows) xbmcplugin.endOfDirectory(pluginhandle)
def root(): add_entries([{"name": "Addons", "mode": "addons", "type": "dir"}])
def list_movies(data): #xbmc.log( "LISTT: DATA" + str(data), xbmc.LOGINFO) shows = [] qdata = snr.get_queue() #xbmc.log( "LISTT: QDATA" + str(qdata), xbmc.LOGINFO) qshows = [] qnames = [] for qshow in qdata: xbmc.log( "LISTT: " + str(qnames)) name = qshow['movie']['title'] qnames.append((name)) if qshow['movie']['images']: thumb = qshow['movie']['images'][0]['url'] else: thumb = None if len(qshow['movie']['images']) > 1: fanart = qshow['movie']['images'][1]['url'] else: fanart = None totalsize = qshow['size'] * 1e-9 perc = 100 - (100 * float(qshow['sizeleft'])/float(qshow['size'])) name += ' [COLOR FF00FF00]Downloading %s%%[/COLOR] ' % round(perc, 1) name += ' [COLOR FF00FF00]of %sGB[/COLOR] ' % round(totalsize, 2) show_id = qshow['movie']['id'] #seasons = 'na' #dir_show = get_appended_path(dir_movies, str(show_id)) #file = 'seasons.json' #file_path = get_appended_path(dir_show, file) #write_json(file_path, seasons) shows.append({'name': name, 'url': str(show_id), 'mode': 'getMovie', 'type': 'dir', 'images': {'thumb': thumb, 'fanart': fanart}}) # thumb = host_url + qshow['images'][0]['url'] + '?lastWrite=&apikey={}'.format(api_key) #banner = host_url + show['images'][1]['url'] + '&apikey={}'.format(api_key) # fanart = host_url + qshow['images'][1]['url'] + '?lastWrite=&apikey={}'.format(api_key) xbmc.log( "LISTT: " + str(qnames)) for show in data: #xbmc.log("SHOW: " + str(show), xbmc.LOGINFO) name = show['title'] down = str(show['downloaded']) if down == 'True': totalsize = show['movieFile']['size'] * 1e-9 xbmc.log( "LISTT: " + str(totalsize)) name += ' [COLOR FF3576F9]Downloaded[/COLOR] ' width = str(show['movieFile']['mediaInfo']['width']) audiochan = str(show['movieFile']['mediaInfo']['audioChannels']) audiocodec = str(show['movieFile']['mediaInfo']['audioFormat']) if width == '1920': name += '[COLOR FF3576F9] 1080p[/COLOR] ' if audiochan == '6': name += '[COLOR FF3576F9] 5.1[/COLOR] ' name += '[COLOR FF3576F9] %s[/COLOR] ' % audiocodec name += ' [COLOR FF3576F9] %sGB[/COLOR] ' % round(totalsize, 2) if show['images']: thumb = host_url + show['images'][0]['url'] + '?lastWrite=&apikey={}'.format(api_key) else: thumb = None #banner = host_url + show['images'][1]['url'] + '&apikey={}'.format(api_key) if len(show['images']) > 1: fanart = host_url + show['images'][1]['url'] + '?lastWrite=&apikey={}'.format(api_key) else: fanart = None show_id = show['id'] #seasons = 'na' #dir_show = get_appended_path(dir_movies, str(show_id)) #file = 'seasons.json' #file_path = get_appended_path(dir_show, file) #write_json(file_path, seasons) shows.append({'name': name, 'url': str(show_id), 'mode': 'getMovie', 'type': 'dir', 'images': {'thumb': thumb, 'fanart': fanart}}) else: if name in qnames: xbmc.log( "LISTT: SKIPPING " + str(name)) else: name += ' [COLOR FFFF0000]Missing[/COLOR] ' if show['images']: thumb = host_url + show['images'][0]['url'] + '?lastWrite=&apikey={}'.format(api_key) else: thumb = None #banner = host_url + show['images'][1]['url'] + '&apikey={}'.format(api_key) if len(show['images']) > 1: fanart = host_url + show['images'][1]['url'] + '?lastWrite=&apikey={}'.format(api_key) else: fanart = None show_id = show['id'] #seasons = 'na' #dir_show = get_appended_path(dir_movies, str(show_id)) #file = 'seasons.json' #file_path = get_appended_path(dir_show, file) #write_json(file_path, seasons) shows.append({'name': name, 'url': str(show_id), 'mode': 'getMovie', 'type': 'dir', 'images': {'thumb': thumb, 'fanart': fanart}}) # name += ' [COLOR FFF7290A]Missing[/COLOR] ' add_entries(shows) #Sort ignoring 'The' xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) xbmcplugin.endOfDirectory(pluginhandle) guiUpdateTimer = threading.Timer( 60.0, # fire after 60 seconds refreshGuiItems) guiUpdateTimer.start()