예제 #1
0
	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 = getLS(40046).upper(), getLS(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.getHighlightColor(), item['status'].capitalize())
					folder_name = string_tools.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, offscreen=True)
					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()
예제 #2
0
	def query_results_to_dialog(self, query):
		if not self.api_key: return
		try:
			sysaddon = argv[0]
			downloadMenu = getLS(40048)
			query = '@name+%s' % query
			url = (self.base_link + self.search_link % (self.api_key, query, 'extended', 'no', '')).replace(' ', '+')
			response = requests.get(url, timeout=20).json()
			if 'files' not in response: # with reuselanguageinvoker on an empty directory must be loaded, do not use sys.exit()
				control.hide() ; control.notification(title=32001, message=33049)
			try:
				files = response['files']
				files.sort(key=lambda k: k['name'])
			except: files = []
		except:
			from resources.lib.modules import log_utils
			log_utils.error()
		for count, item in enumerate(files, 1):
			try:
				if item['is_ready'] == '1' and item['type'] == 'video':
					cm = []
					name = string_tools.strip_non_ascii_and_unprintable(item['name'])
					file_id = item['id']
					url_dl = item['url_dl']
					if url_dl == '': continue
					size = str(round(float(int(item['size'])) / 1048576000, 1))
					label = '%02d | [B]%s GB[/B] | [I]%s [/I]' % (count, size, name)
					url = 'furk_resolve_forPlayback&url=%s' % file_id
					cm.append((downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=furk)' %
										(sysaddon, quote_plus(name), quote_plus(furk_icon), file_id)))
					self.addDirectoryItem(label, url, furk_icon, '', cm)
			except:
				from resources.lib.modules import log_utils
				log_utils.error()
		self.endDirectory()
예제 #3
0
    def query_results_to_dialog(self, query):
        from sys import argv
        try:
            sysaddon, syshandle = argv[0], int(argv[1])
            downloadMenu = control.lang(40048)
            url = '%s%s' % (self.base_link, self.search_link)
            params = SEARCH_PARAMS
            params['pby'] = 350  # Results per Page
            params[
                'safeO'] = 1  # 1 is the moderation (adult filter) ON, 0 is OFF.
            # params['gps'] = params['sbj'] = query # gps stands for "group search" and does so by keywords, sbj=subject and can limit results, use gps only
            params['gps'] = query
            results = self._get(url, params)
            files = self._process_files(results)
            files.sort(key=lambda k: k['name'])
        except:
            from resources.lib.modules import log_utils
            log_utils.error()

        for count, item in enumerate(files, 1):
            try:
                cm = []
                name = string_tools.strip_non_ascii_and_unprintable(
                    item['name'])
                url_dl = item['url_dl']
                sysurl_dl = quote_plus(url_dl)
                size = str(round(float(int(item['rawSize'])) / 1048576000, 1))
                label = '%02d | [B]%s GB[/B] | [I]%s [/I]' % (count, size,
                                                              name)

                url = '%s?action=en_resolve_forPlayback&url=%s' % (sysaddon,
                                                                   sysurl_dl)

                cm.append((
                    downloadMenu,
                    'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=easynews)'
                    % (sysaddon, quote_plus(name), quote_plus(en_icon),
                       sysurl_dl)))
                item = control.item(label=label, offscreen=True)
                item.addContextMenuItems(cm)
                item.setArt({
                    'icon': en_icon,
                    'poster': en_icon,
                    'thumb': en_icon,
                    'fanart': addonFanart,
                    'banner': en_icon
                })
                item.setInfo(type='video', infoLabels='')
                item.setLabel(label)
                control.addItem(handle=syshandle,
                                url=url,
                                listitem=item,
                                isFolder=False)
            except:
                from resources.lib.modules import log_utils
                log_utils.error()
        control.content(syshandle, 'files')
        control.directory(syshandle, cacheToDisc=True)
예제 #4
0
 def entry_loop(entry):
     entry = entry.get('e')
     name = entry[0].get('n') if isinstance(
         entry, list) else entry.get('n')
     if not name.lower().endswith(tuple(extensions)):
         return entry_loop(entry)
     else:
         return string_tools.strip_non_ascii_and_unprintable(
             name)
예제 #5
0
	def my_downloads_to_listItem(self, page):
		try:
			from datetime import datetime
			import time
			sysaddon, syshandle = argv[0], int(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 = getLS(40048), getLS(40050)
		for count, item in enumerate(my_downloads, 1):
			if page > 1: count += (page-1) * 50
			try: 
				cm = []
				try: datetime_object = datetime.strptime(item['generated'], FormatDateTime).date()
				except TypeError: datetime_object = datetime(*(time.strptime(item['generated'], FormatDateTime)[0:6])).date()
				name = string_tools.strip_non_ascii_and_unprintable(item['filename'])
				size = float(int(item['filesize'])) / 1073741824
				label = '%02d | %.2f GB | %s  | [I]%s [/I]' % (count, size, datetime_object, name)
				url_link = item['download']
				url = '%s?action=play_URL&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, offscreen=True)
				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=False)
			except:
				log_utils.error()
		if page < pages:
			page += 1
			next = True
		else: next = False
		if next:
			try:
				nextMenu = getLS(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, offscreen=True)
				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()
		control.content(syshandle, 'files')
		control.directory(syshandle, cacheToDisc=True)
예제 #6
0
    def user_cloud_to_listItem(self, folder_id=None):
        sysaddon, syshandle = argv[0], int(argv[1])
        folder_str, deleteMenu = getLS(40046).upper(), getLS(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 = string_tools.strip_non_ascii_and_unprintable(
                    item['filename'])
                id = item['id']
                status_str = '[COLOR %s]%s[/COLOR]' % (
                    control.getHighlightColor(), 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, offscreen=True)
                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=True)
            except:
                log_utils.error()
        control.content(syshandle, 'files')
        control.directory(syshandle, cacheToDisc=True)
예제 #7
0
	def user_files(self):
		if not self.api_key: return
		try:
			url = self.base_link + self.get_user_files_link % self.api_key
			response = requests.get(url, timeout=20).json()
			files = response['files']
		except:
			from resources.lib.modules import log_utils
			log_utils.error()
		for count, item in enumerate(files, 1):
			try:
				cached = True if 'url_dl' in item else False
				files_str = 'files'

				if cached:
					files_num_video = item['files_num_video']
					name = string_tools.strip_non_ascii_and_unprintable(item['name'])

					item_id = item['id'] if cached else item['info_hash']
					url_dl = item['url_dl'] if cached else item['info_hash']

					size = str(round(float(item['size']) / 1048576000, 1))
					label = '%02d | [B]%s GB[/B] | [B]%s %s[/B] |[I] %s [/I]' % (count, size, files_num_video, files_str, name)

					# url_dl = ''
					# for x in accepted_extensions:
						# if item['url_dl'].endswith(x): url_dl = item['url_dl']
						# else: continue
					# if url_dl == '': continue

					# if not int(item['files_num_video_player']) > 1:
						# if int(item['ss_num']) > 0: thumb = item['ss_urls'][0]
						# else: thumb = ''
						# self.addDirectoryItem(label , url_dl, thumb, '', isAction=False)
					self.addDirectoryItem(label , url_dl, furk_icon, '', isAction=False)
				else: pass
			except:
				from resources.lib.modules import log_utils
				log_utils.error()
		self.endDirectory()
예제 #8
0
    def browse_user_cloud(self, folder):
        sysaddon, syshandle = argv[0], int(argv[1])
        extensions = supported_video_extensions()
        torrent_folder = jsloads(folder)
        links = torrent_folder['links']
        # links = [i for i in links if i['filename'].lower().endswith(tuple(extensions))]
        status_code = torrent_folder['statusCode']
        file_str, downloadMenu, deleteMenu = getLS(40047).upper(), getLS(
            40048), getLS(40050)
        for count, item in enumerate(links, 1):
            try:
                cm = []
                url_link = item['link']
                name = string_tools.strip_non_ascii_and_unprintable(
                    item['filename'])
                if name.lower().endswith(invalid_extensions): continue

                if not name.lower().endswith(tuple(extensions)):
                    files = item['files']
                    entry = files[0].get('e')
                    name = entry[0].get('n') if isinstance(
                        entry, list) else entry.get('n')

                    def entry_loop(entry):
                        entry = entry.get('e')
                        name = entry[0].get('n') if isinstance(
                            entry, list) else entry.get('n')
                        if not name.lower().endswith(tuple(extensions)):
                            return entry_loop(entry)
                        else:
                            return string_tools.strip_non_ascii_and_unprintable(
                                name)

                    if not name.lower().endswith(tuple(extensions)):
                        name = entry_loop(entry)
                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)
                if status_code == 4:
                    url = '%s?action=play_URL&url=%s&caller=alldebrid&type=unrestrict' % (
                        sysaddon, url_link)
                else:
                    url = ''
                cm.append((
                    downloadMenu,
                    'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=alldebrid)'
                    % (sysaddon, quote_plus(name), quote_plus(ad_icon),
                       url_link)))
                item = control.item(label=label, offscreen=True)
                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=False)
            except:
                log_utils.error()
        control.content(syshandle, 'files')
        control.directory(syshandle, cacheToDisc=True)
예제 #9
0
 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 = getLS(40046).upper(), getLS(
         40050), getLS(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 = string_tools.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, offscreen=True)
             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)
예제 #10
0
    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 = getLS(
            40046).upper(), getLS(40047).upper(), getLS(40048), getLS(
                40049), getLS(40050), getLS(40051)
        for count, item in enumerate(transfer_files, 1):
            try:
                cm = []
                type = 'folder' if item['file_id'] is None else 'file'
                name = string_tools.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.getHighlightColor(), 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=play_URL&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, offscreen=True)
                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)
예제 #11
0
 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 = getLS(
         40046).upper(), getLS(40047).upper(), getLS(40048), getLS(
             40049), getLS(40050)
     for count, item in enumerate(cloud_files, 1):
         try:
             cm = []
             type = item['type']
             name = string_tools.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=play_URL&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, offscreen=True)
             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)