def user_torrents_to_listItem(self): try: sysaddon, syshandle = argv[0], int(argv[1]) torrent_files = self.user_torrents() if not torrent_files: return # torrent_files = [i for i in torrent_files if i['status'] == 'downloaded'] folder_str, deleteMenu = control.lang(40046).upper(), control.lang( 40050) for count, item in enumerate(torrent_files, 1): try: cm = [] isFolder = True if item['status'] == 'downloaded' else False status = '[COLOR %s]%s[/COLOR]' % ( control.getColor(control.setting('highlight.color')), item['status'].capitalize()) folder_name = control.strip_non_ascii_and_unprintable( item['filename']) label = '%02d | [B]%s[/B] - %s | [B]%s[/B] | [I]%s [/I]' % ( count, status, str(item['progress']) + '%', folder_str, folder_name) url = '%s?action=rd_BrowseUserTorrents&id=%s' % ( sysaddon, item['id']) if isFolder else None cm.append(( deleteMenu % 'Torrent', 'RunPlugin(%s?action=rd_DeleteUserTorrent&id=%s&name=%s)' % (sysaddon, item['id'], quote_plus(folder_name)))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) item.setInfo(type='video', infoLabels='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True) except: log_utils.error()
def user_cloud_to_listItem(self, folder_id=None): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) folder_str, deleteMenu = control.lang(40046).upper(), control.lang( 40050) cloud_dict = self.user_cloud()['magnets'] cloud_dict = [i for i in cloud_dict if i['statusCode'] == 4] for count, item in enumerate(cloud_dict, 1): try: cm = [] folder_name = control.strip_non_ascii_and_unprintable( item['filename']) id = item['id'] status_str = '[COLOR %s]%s[/COLOR]' % ( control.getColor(control.setting('highlight.color')), item['status'].capitalize()) label = '%02d | [B]%s[/B] | [B]%s[/B] | [I]%s [/I]' % ( count, status_str, folder_str, folder_name) url = '%s?action=ad_BrowseUserCloud&source=%s' % ( sysaddon, quote_plus(jsdumps(item))) cm.append( (deleteMenu % 'Transfer', 'RunPlugin(%s?action=ad_DeleteTransfer&id=%s&name=%s)' % (sysaddon, id, folder_name))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': ad_icon, 'poster': ad_icon, 'thumb': ad_icon, 'fanart': addonFanart, 'banner': ad_icon }) item.setInfo(type='video', infoLabels='') video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def furk_meta_search(self, url): if self.api_key == '': return '' control.busy() try: s = requests.Session() url = (self.base_link + self.search_link % (self.api_key, url)).replace(' ', '+') # url = (self.base_link + self.search_link % (self.api_key, url, 'extended', 'full', '')).replace(' ', '+') p = s.get(url) p = json.loads(p.text) files = p['files'] except: log_utils.error() return '' for i in files: try: name = control.strip_non_ascii_and_unprintable(i['name']) url_dl = '' for x in accepted_extensions: if 'url_dl' in i: if i['url_dl'].endswith(x): url_dl = i['url_dl'] else: continue else: continue if url_dl == '': continue if not int(i['files_num_video_player']) > 1: if int(i['ss_num']) > 0: thumb = i['ss_urls'][0] else: thumb = '' self.addDirectoryItem(name, url_dl, thumb, '', False) else: # self.addDirectoryItem(i['name'].encode('utf-8'), i['url_dl'], '', '') continue except: log_utils.error() control.hide() self.endDirectory() return ''
def user_files(self): if self.api_key == '': return '' try: url = self.base_link + self.get_user_files_link % self.api_key p = self.session.get(url).json() files = p['files'] except: from resources.lib.modules import log_utils log_utils.error() return '' for i in files: # id = i['id'] # log_utils.log('id = %s' % id, __name__, log_utils.LOGDEBUG) # test = self.base_link + self.tfile_link % (self.api_key, id) # log_utils.log('test = %s' % test, __name__, log_utils.LOGDEBUG) # test2 = s.get(test).json() # log_utils.log('test2 = %s' % test2, __name__, log_utils.LOGDEBUG) try: name = control.strip_non_ascii_and_unprintable(i['name']) url_dl = '' for x in accepted_extensions: if i['url_dl'].endswith(x): url_dl = i['url_dl'] else: continue if url_dl == '': continue if not int(i['files_num_video_player']) > 1: if int(i['ss_num']) > 0: thumb = i['ss_urls'][0] else: thumb = '' self.addDirectoryItem(name, url_dl, thumb, '', False) else: pass except: from resources.lib.modules import log_utils log_utils.error() self.endDirectory() return ''
def my_downloads_to_listItem(self, page): try: from datetime import datetime sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) my_downloads, pages = self.downloads(page) except: my_downloads = None if not my_downloads: return extensions = supported_video_extensions() my_downloads = [ i for i in my_downloads if i['download'].lower().endswith(tuple(extensions)) ] downloadMenu, deleteMenu = control.lang(40048), control.lang(40050) for count, item in enumerate(my_downloads, 1): if page > 1: count += (page - 1) * 50 try: cm = [] generated = datetime.strptime(item['generated'], FormatDateTime) generated = generated.strftime('%Y-%m-%d') name = control.strip_non_ascii_and_unprintable( item['filename']) size = float(int(item['filesize'])) / 1073741824 label = '%02d | %.2f GB | %s | [I]%s [/I]' % (count, size, generated, name) url_link = item['download'] url = '%s?action=playURL&url=%s' % (sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=realdebrid)' % (sysaddon, quote_plus(name), quote_plus(rd_icon), url_link))) cm.append( (deleteMenu % 'File', 'RunPlugin(%s?action=rd_DeleteDownload&id=%s&name=%s)' % (sysaddon, item['id'], name))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) item.setInfo(type='video', infoLabels='') video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: log_utils.error() pass if page < pages: page += 1 next = True else: next = False if next: try: nextMenu = control.lang(32053) url = '%s?action=rd_MyDownloads&query=%s' % (sysaddon, page) page = ' [I](%s)[/I]' % page nextMenu = '[COLOR skyblue]' + nextMenu + page + '[/COLOR]' item = control.item(label=nextMenu) icon = control.addonNext() item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: log_utils.error() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def user_transfers_to_listItem(self): try: sysaddon, syshandle = argv[0], int(argv[1]) extensions = supported_video_extensions() transfer_files = self.user_transfers() if not transfer_files: if self.server_notifications: control.notification( message='Request Failure-Empty Content', icon=pm_icon) log_utils.log('Premiumize.me: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return except: log_utils.error() return folder_str, file_str, downloadMenu, renameMenu, deleteMenu, clearFinishedMenu = control.lang(40046).upper(),\ control.lang(40047).upper(), control.lang(40048), control.lang(40049), control.lang(40050), control.lang(40051) for count, item in enumerate(transfer_files, 1): try: cm = [] type = 'folder' if item['file_id'] is None else 'file' name = control.strip_non_ascii_and_unprintable(item['name']) status = item['status'] progress = item['progress'] if status == 'finished': progress = 100 else: try: progress = re.findall(r'(?:\d{0,1}\.{0,1})(\d+)', str(progress))[0][:2] except: progress = 'UNKNOWN' if type == 'folder': isFolder = True if status == 'finished' else False status_str = '[COLOR %s]%s[/COLOR]' % (control.getColor( control.setting('highlight.color')), status.capitalize()) label = '%02d | [B]%s[/B] - %s | [B]%s[/B] | [I]%s [/I]' % ( count, status_str, str(progress) + '%', folder_str, name) url = '%s?action=pm_MyFiles&id=%s&name=%s' % ( sysaddon, item['folder_id'], quote_plus(name)) # Till PM addresses issue with item also being removed from public acess if item not accessed for 60 days this option is disabled. # cm.append((clearFinishedMenu, 'RunPlugin(%s?action=pm_ClearFinishedTransfers)' % sysaddon)) else: isFolder = False details = self.item_details(item['file_id']) if not details: if self.server_notifications: control.notification( message='Request Failure-Empty Content', icon=pm_icon) log_utils.log( 'Premiumize.me: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return url_link = details['link'] if url_link.startswith('/'): url_link = 'https' + url_link size = details['size'] display_size = float(int(size)) / 1073741824 label = '%02d | %s%% | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, str(progress), file_str, display_size, name) url = '%s?action=playURL&url=%s' % (sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=premiumize)' % (sysaddon, quote_plus(name), quote_plus(pm_icon), url_link))) cm.append( (deleteMenu % 'Transfer', 'RunPlugin(%s?action=pm_DeleteTransfer&id=%s&name=%s)' % (sysaddon, item['id'], quote_plus(name)))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': pm_icon, 'poster': pm_icon, 'thumb': pm_icon, 'fanart': addonFanart, 'banner': pm_icon }) item.setInfo(type='video', infoLabels='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def my_files_to_listItem(self, folder_id=None, folder_name=None): try: sysaddon, syshandle = argv[0], int(argv[1]) extensions = supported_video_extensions() cloud_files = self.my_files(folder_id) if not cloud_files: if self.server_notifications: control.notification( message='Request Failure-Empty Content', icon=pm_icon) log_utils.log('Premiumize.me: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return cloud_files = [ i for i in cloud_files if ('link' in i and i['link'].lower().endswith( tuple(extensions))) or i['type'] == 'folder' ] cloud_files = sorted(cloud_files, key=lambda k: k['name']) cloud_files = sorted(cloud_files, key=lambda k: k['type'], reverse=True) except: log_utils.error() return folder_str, file_str, downloadMenu, renameMenu, deleteMenu = control.lang( 40046).upper(), control.lang(40047).upper(), control.lang( 40048), control.lang(40049), control.lang(40050) for count, item in enumerate(cloud_files, 1): try: cm = [] type = item['type'] name = control.strip_non_ascii_and_unprintable(item['name']) if type == 'folder': isFolder = True size = 0 label = '%02d | [B]%s[/B] | [I]%s [/I]' % ( count, folder_str, name) url = '%s?action=pm_MyFiles&id=%s&name=%s' % ( sysaddon, item['id'], quote_plus(name)) else: isFolder = False url_link = item['link'] if url_link.startswith('/'): url_link = 'https' + url_link size = item['size'] display_size = float(int(size)) / 1073741824 label = '%02d | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, file_str, display_size, name) url = '%s?action=playURL&url=%s' % (sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=premiumize)' % (sysaddon, quote_plus(name), quote_plus(pm_icon), url_link))) cm.append( (renameMenu % type.capitalize(), 'RunPlugin(%s?action=pm_Rename&type=%s&id=%s&name=%s)' % (sysaddon, type, item['id'], quote_plus(name)))) cm.append( (deleteMenu % type.capitalize(), 'RunPlugin(%s?action=pm_Delete&type=%s&id=%s&name=%s)' % (sysaddon, type, item['id'], quote_plus(name)))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': pm_icon, 'poster': pm_icon, 'thumb': pm_icon, 'fanart': addonFanart, 'banner': pm_icon }) item.setInfo(type='video', infoLabels='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def user_transfers_to_listItem(self): sysaddon, syshandle = argv[0], int(argv[1]) transfer_files = self.user_cloud()['magnets'] if not transfer_files: if self.server_notifications: control.notification(message='Request Failure-Empty Content', icon=ad_icon) log_utils.log('AllDebrid: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return folder_str, deleteMenu, restartMenu = control.lang( 40046).upper(), control.lang(40050), control.lang(40008) for count, item in enumerate(transfer_files, 1): try: status_code = item['statusCode'] if status_code in (0, 1, 2, 3): active = True downloaded = item['downloaded'] size = item['size'] try: percent = str(round(float(downloaded) / size * 100, 1)) except: percent = '0' else: active = False folder_name = control.strip_non_ascii_and_unprintable( item['filename']) id = item['id'] status_str = '[COLOR %s]%s[/COLOR]' % ( control.getHighlightColor(), item['status'].capitalize()) if active: label = '%02d | [B]%s[/B] - %s | [B]%s[/B]' % ( count, status_str, str(percent) + '%', folder_name) else: label = '%02d | [B]%s[/B] | [B]%s[/B] | [I]%s [/I]' % ( count, status_str, folder_str, folder_name) if status_code == 4: url = '%s?action=ad_BrowseUserCloud&source=%s' % ( sysaddon, quote_plus(jsdumps(item))) isFolder = True else: url = '' isFolder = False cm = [] cm.append( (deleteMenu % 'Transfer', 'RunPlugin(%s?action=ad_DeleteTransfer&id=%s&name=%s)' % (sysaddon, id, folder_name))) if status_code in (6, 7, 9, 10): cm.append(( restartMenu, 'RunPlugin(%s?action=ad_RestartTransfer&id=%s&name=%s)' % (sysaddon, id, folder_name))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': ad_icon, 'poster': ad_icon, 'thumb': ad_icon, 'fanart': addonFanart, 'banner': ad_icon }) item.setInfo(type='video', infoLabels='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)