def openseasons(params): print '=== def openseasons(%s): ===' % params try: series_id = params['series_id'] except: print 'ERROR: Не указан ключевой параметр series_id' return False # Получение метаданных meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % series_id) if meta_http != None: meta_json = demjson.decode(meta_http) # Парсинг метаданных meta_info = kbutils.getmetadata(meta_json, series_id) else: meta_info = None http = kbutils.KBREQUEST('/films/%s/seasons' % series_id) if http == None: return False djson = demjson.decode(http) series_id = djson['series_id'] # int seasons = djson['seasons'] # array if len(seasons) > 0: series_img = kbutils.POSTER(series_id) for season in seasons: info = {} if meta_info != None: info = meta_info.copy() season_num = season['num'] # int 1 episodes_count = season['episodes_count'] # int 29 start_date = season[ 'start_date'] #.encode('utf-8') # str 2003-02-01 end_date = season[ 'end_date'] #.encode('utf-8') # str 2004-03-16 if start_date == None: start_date = '' else: start_date = start_date.encode('utf-8') if end_date == None: end_date = '' else: end_date = end_date.encode('utf-8') if (start_date == '') and (end_date == ''): date_block = '' else: date_block = ' [%s : %s]' % (start_date, end_date) info['title'] = '%s : Сезон %d%s' % (info['title'], season_num, date_block) info['premiered'] = start_date info['season'] = int(season_num) li = xbmcgui.ListItem(info['title'], iconImage=series_img, thumbnailImage=series_img) li.setInfo(type='video', infoLabels=info) uri = '%s?mode=openepisodes&series_id=%s&season_num=%s' % ( sys.argv[0], series_id, season_num) xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True, totalItems=episodes_count) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.endOfDirectory(h)
def openepisodes(params): print '=== def openepisodes(%s): ===' % params try: series_id = params['series_id'] season_num = params['season_num'] except: print 'ERROR: Не указан ключевой параметр series_id или season_num' return False # Получение метаданных meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % series_id) if meta_http != None: meta_json = demjson.decode(meta_http) # Парсинг метаданных meta_info = kbutils.getmetadata(meta_json, series_id) else: meta_info = None http = kbutils.KBREQUEST('/films/%s/seasons/%s/episodes' % (series_id, season_num)) if http == None: return False djson = demjson.decode(http) series_id = djson['series_id'] # int 1 season_num = djson['season_num'] # int 1 episodes = djson['episodes'] # array if len(episodes) > 0: series_img = kbutils.POSTER(series_id) for episode in episodes: info = {} if meta_info != None: info = meta_info.copy() episode_num = episode['num'] # int 1 episode_name = episode['name'].encode('utf-8') # str Role Play release_date = episode[ 'release_date'] #3.encode('utf-8') # str 2003-02-01 info['title'] = '%d. %s' % (episode_num, episode_name) if release_date != None: info['premiered'] = release_date info['premiered'] = release_date info['episode'] = int(episode_num) info['season'] = int(season_num) li = xbmcgui.ListItem(info['title'], iconImage=series_img, thumbnailImage=series_img) li.setInfo(type='video', infoLabels=info) uri = '%s?mode=openfilm&series_id=%d&season_num=%d&episode_num=%d' % ( sys.argv[0], series_id, season_num, episode_num) xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.endOfDirectory(h)
def openseasons(params): print '=== def openseasons(%s): ===' % params try: series_id = params['series_id'] except: print 'ERROR: Не указан ключевой параметр series_id' return False # Получение метаданных meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % series_id) if meta_http != None: meta_json = demjson.decode(meta_http) # Парсинг метаданных meta_info = kbutils.getmetadata(meta_json, series_id) else: meta_info = None http = kbutils.KBREQUEST('/films/%s/seasons' % series_id) if http == None: return False djson = demjson.decode(http) series_id = djson['series_id'] # int seasons = djson['seasons'] # array if len(seasons) > 0: series_img = kbutils.POSTER(series_id) for season in seasons: info = {} if meta_info != None: info = meta_info.copy() season_num = season['num'] # int 1 episodes_count = season['episodes_count'] # int 29 start_date = season['start_date'] #.encode('utf-8') # str 2003-02-01 end_date = season['end_date'] #.encode('utf-8') # str 2004-03-16 if start_date == None: start_date = '' else: start_date = start_date.encode('utf-8') if end_date == None: end_date = '' else: end_date = end_date.encode('utf-8') if (start_date == '') and (end_date == ''): date_block = '' else: date_block = ' [%s : %s]' % (start_date, end_date) info['title'] = '%s : Сезон %d%s' % (info['title'], season_num, date_block) info['premiered'] = start_date info['season'] = int(season_num) li = xbmcgui.ListItem(info['title'], iconImage = series_img, thumbnailImage = series_img) li.setInfo(type = 'video', infoLabels = info) uri = '%s?mode=openepisodes&series_id=%s&season_num=%s' % (sys.argv[0], series_id, season_num) xbmcplugin.addDirectoryItem(h, uri, li, isFolder = True, totalItems = episodes_count) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.endOfDirectory(h)
def openepisodes(params): print '=== def openepisodes(%s): ===' % params try: series_id = params['series_id'] season_num = params['season_num'] except: print 'ERROR: Не указан ключевой параметр series_id или season_num' return False # Получение метаданных meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % series_id) if meta_http != None: meta_json = demjson.decode(meta_http) # Парсинг метаданных meta_info = kbutils.getmetadata(meta_json, series_id) else: meta_info = None http = kbutils.KBREQUEST('/films/%s/seasons/%s/episodes' % (series_id, season_num)) if http == None: return False djson = demjson.decode(http) series_id = djson['series_id'] # int 1 season_num = djson['season_num'] # int 1 episodes = djson['episodes'] # array if len(episodes) > 0: series_img = kbutils.POSTER(series_id) for episode in episodes: info = {} if meta_info != None: info = meta_info.copy() episode_num = episode['num'] # int 1 episode_name = episode['name'].encode('utf-8') # str Role Play release_date = episode['release_date'] #3.encode('utf-8') # str 2003-02-01 info['title'] = '%d. %s'%(episode_num, episode_name) if release_date != None: info['premiered'] = release_date info['premiered'] = release_date info['episode'] = int(episode_num) info['season'] = int(season_num) li = xbmcgui.ListItem(info['title'], iconImage = series_img, thumbnailImage = series_img) li.setInfo(type = 'video', infoLabels = info) uri = '%s?mode=openfilm&series_id=%d&season_num=%d&episode_num=%d'%(sys.argv[0],series_id,season_num,episode_num) xbmcplugin.addDirectoryItem(h, uri, li, isFolder = True) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.endOfDirectory(h)
def loadtorrent(params): print '=== def loadtorrent(%s): ===' % params try: dhash = params['hash'] film_id = params['film_id'] dlpath = urllib.unquote_plus(params['dlpath']) except: print 'ERROR: Не указан ключевой параметр hash, dlpath или film_id' return False rtc = kbutils.get_rtc() rtpath = rtc.get_directory() print 'rTorrent base dir (rtpath) = %s' % rtpath dpath = rtpath if kbutils.rtc_select == 'true': print 'Указан выбор каталога загрузки...' dpa = [] for ddir in os.listdir(rtpath): dpa.append(ddir) s = xbmcgui.Dialog().select('Куда качать?', dpa) if s < 0: print 'Не выбрано, выход...' return True else: dpath = os.path.join(rtpath, dpa[s]) dpath = os.path.join(dpath, dlpath) print 'Download path [%s]' % dpath if not os.path.exists(dpath): os.makedirs(dpath) print 'Path %s created...' % dpath else: print 'Path %s exists...' % dpath url_gt = '/torrents/%s/direct-link' % dhash print 'url_gt GET: %s' % url_gt http3 = kbutils.KBREQUEST(url_gt) if http3 == None: return False djson2 = demjson.decode(http3) #print djson2 tf_url = djson2['url'] print 'Direct Link = %s' % tf_url meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % film_id) if meta_http != None: meta_json = demjson.decode(meta_http) meta_info = kbutils.getmetadata(meta_json, film_id) else: meta_info = None try: if len(meta_info['cast']) > 0: casts = '' for cucast in meta_info['cast']: casts += ',%s' % urllib.quote_plus(cucast) if casts != '': casts = casts[1:] meta_info['cast'] = casts except: pass custom2 = '&film_id=%s' % film_id if meta_info != None: for cinfo in meta_info: custom2 += '&%s=%s' % (cinfo, urllib.quote_plus(str(meta_info[cinfo]))) custom2 = custom2[1:] # 'd.set_custom2="%s"'%custom2 rtc.load_start(tf_url, 'd.set_directory="%s"'%dpath, 'd.set_custom1="kinobaza"', 'd.set_custom=kbmeta,%s'%custom2)
def filmsbrowse(params): print '=== def filmsbrowse(%s): ===' % params try: href = urllib.unquote_plus(params['href']) params['href'] = href except: href = '' try: params['query'] = urllib.unquote_plus(params['query']) except: pass GL = params.copy() del GL['mode'] del GL['href'] #url = http = kbutils.KBREQUEST('%s?%s'%(href,urllib.urlencode(GL))) djson = demjson.decode(http) #print djson # Если подключен rTorrent - генерируем список подкаталогов, для проверки загрузки rtc = kbutils.get_rtc() if rtc != None: base_dl_path = rtc.get_directory() dpa = [] if (kbutils.rtc_select == 'true'): for ddir in os.listdir(base_dl_path): dpa.append(os.path.join(base_dl_path, ddir)) else: dpa.append(os.path.join(base_dl_path)) for cur in djson: info = kbutils.getmetadata(cur, cur['id']) if rtc != None: for chkdir in dpa: if os.path.exists(os.path.join(chkdir, str(cur['id']))): info['title'] = '[DL] %s'%info['title'] break li = xbmcgui.ListItem(label = info['title'], iconImage = info['iconImage'], thumbnailImage = info['thumbnailImage']) li.setInfo(type = 'video', infoLabels = info) if cur['type'] == 'movie': #li.setProperty('IsPlayable', 'true') uri = '%s?mode=openfilm&film_id=%s'%(sys.argv[0], cur['id']) if not xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True): break elif cur['type'] == 'series': uri = '%s?mode=openseasons&series_id=%s'%(sys.argv[0], cur['id']) if not xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True): break else: kbutils.showMessage('Ой, "%s"' % film_type, 'Не могу добавить этот тип фильма') if len(djson) == int(params['limit']): li = xbmcgui.ListItem('Далее >', iconImage=icon, thumbnailImage=icon) params['offset'] = str(int(params['offset'])+int(params['limit'])) uri = '%s?%s'%(sys.argv[0],urllib.urlencode(params)) xbmcplugin.addDirectoryItem(h, uri, li, isFolder = True, totalItems = kbutils.LIST_LIMIT()) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_UNSORTED) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_ALBUM) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DURATION) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_GENRE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_RATING) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_RUNTIME) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_TITLE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_YEAR) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_LABEL) xbmcplugin.endOfDirectory(h)
def loadtorrent(params): print '=== def loadtorrent(%s): ===' % params try: dhash = params['hash'] film_id = params['film_id'] dlpath = urllib.unquote_plus(params['dlpath']) except: print 'ERROR: Не указан ключевой параметр hash, dlpath или film_id' return False rtc = kbutils.get_rtc() rtpath = rtc.get_directory() print 'rTorrent base dir (rtpath) = %s' % rtpath dpath = rtpath if kbutils.rtc_select == 'true': print 'Указан выбор каталога загрузки...' dpa = [] for ddir in os.listdir(rtpath): dpa.append(ddir) s = xbmcgui.Dialog().select('Куда качать?', dpa) if s < 0: print 'Не выбрано, выход...' return True else: dpath = os.path.join(rtpath, dpa[s]) dpath = os.path.join(dpath, dlpath) print 'Download path [%s]' % dpath if not os.path.exists(dpath): os.makedirs(dpath) print 'Path %s created...' % dpath else: print 'Path %s exists...' % dpath url_gt = '/torrents/%s/direct-link' % dhash print 'url_gt GET: %s' % url_gt http3 = kbutils.KBREQUEST(url_gt) if http3 == None: return False djson2 = demjson.decode(http3) #print djson2 tf_url = djson2['url'] print 'Direct Link = %s' % tf_url meta_http = kbutils.KBREQUEST('/films/%s?fields_mask=63' % film_id) if meta_http != None: meta_json = demjson.decode(meta_http) meta_info = kbutils.getmetadata(meta_json, film_id) else: meta_info = None try: if len(meta_info['cast']) > 0: casts = '' for cucast in meta_info['cast']: casts += ',%s' % urllib.quote_plus(cucast) if casts != '': casts = casts[1:] meta_info['cast'] = casts except: pass custom2 = '&film_id=%s' % film_id if meta_info != None: for cinfo in meta_info: custom2 += '&%s=%s' % (cinfo, urllib.quote_plus(str(meta_info[cinfo]))) custom2 = custom2[1:] # 'd.set_custom2="%s"'%custom2 rtc.load_start(tf_url, 'd.set_directory="%s"' % dpath, 'd.set_custom1="kinobaza"', 'd.set_custom=kbmeta,%s' % custom2)
def filmsbrowse(params): print '=== def filmsbrowse(%s): ===' % params try: href = urllib.unquote_plus(params['href']) params['href'] = href except: href = '' try: params['query'] = urllib.unquote_plus(params['query']) except: pass GL = params.copy() del GL['mode'] del GL['href'] #url = http = kbutils.KBREQUEST('%s?%s' % (href, urllib.urlencode(GL))) djson = demjson.decode(http) #print djson # Если подключен rTorrent - генерируем список подкаталогов, для проверки загрузки rtc = kbutils.get_rtc() if rtc != None: base_dl_path = rtc.get_directory() dpa = [] if (kbutils.rtc_select == 'true'): for ddir in os.listdir(base_dl_path): dpa.append(os.path.join(base_dl_path, ddir)) else: dpa.append(os.path.join(base_dl_path)) for cur in djson: info = kbutils.getmetadata(cur, cur['id']) if rtc != None: for chkdir in dpa: if os.path.exists(os.path.join(chkdir, str(cur['id']))): info['title'] = '[DL] %s' % info['title'] break li = xbmcgui.ListItem(label=info['title'], iconImage=info['iconImage'], thumbnailImage=info['thumbnailImage']) li.setInfo(type='video', infoLabels=info) if cur['type'] == 'movie': #li.setProperty('IsPlayable', 'true') uri = '%s?mode=openfilm&film_id=%s' % (sys.argv[0], cur['id']) if not xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True): break elif cur['type'] == 'series': uri = '%s?mode=openseasons&series_id=%s' % (sys.argv[0], cur['id']) if not xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True): break else: kbutils.showMessage('Ой, "%s"' % film_type, 'Не могу добавить этот тип фильма') if len(djson) == int(params['limit']): li = xbmcgui.ListItem('Далее >', iconImage=icon, thumbnailImage=icon) params['offset'] = str(int(params['offset']) + int(params['limit'])) uri = '%s?%s' % (sys.argv[0], urllib.urlencode(params)) xbmcplugin.addDirectoryItem(h, uri, li, isFolder=True, totalItems=kbutils.LIST_LIMIT()) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_UNSORTED) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_ALBUM) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DATE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_DURATION) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_GENRE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_TITLE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_RATING) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_RUNTIME) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_TITLE) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_VIDEO_YEAR) xbmcplugin.addSortMethod(h, xbmcplugin.SORT_METHOD_LABEL) xbmcplugin.endOfDirectory(h)