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)
示例#3
0
    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 ''
示例#4
0
    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 ''
示例#5
0
    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)
示例#6
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 = 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)
示例#7
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 = 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)
示例#8
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 = 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)