Beispiel #1
0
 def onClick(self, controlId):
     if controlId == self.btn_close:
         self.close()
     elif controlId == self.btn_submit:
         reportText = self.getControl(self.br_input).getText()
         if len(reportText) == 0:
             xbmc.executebuiltin(
                 "XBMC.Notification(%s, %s, %s, %s)" %
                 ('The Crew Bug Report', 'Bug Report Incomplete', 4000,
                  control.addonIcon()))
             return
         self.close()
         result = webform.webform().bug_report('The Crew', reportText)
         if result is None:
             # Wait before submitting another report you f****n spammer
             xbmc.executebuiltin(
                 "XBMC.Notification(%s, %s, %s, %s)" %
                 ('The Crew Bug Report', 'Wait Before Next Submission',
                  4000, control.addonIcon()))
         elif result is False:
             # Failed to send. Site timed out or is down. Ya'll suck
             xbmc.executebuiltin(
                 "XBMC.Notification(%s, %s, %s, %s)" %
                 ('The Crew Bug Report', 'Submission Failed', 4000,
                  control.addonIcon()))
         elif result is True:
             # Bug Report worked, F**K YEAH!
             xbmc.executebuiltin(
                 "XBMC.Notification(%s, %s, %s, %s)" %
                 ('The Crew Bug Report', 'Bug Report Completed', 4000,
                  control.addonIcon()))
Beispiel #2
0
def playtorrentItem(name, id):
    torrInDownload = []
    try:
        name = name.split('/')[-1]
    except:
        name = name
    try:
        downloads = realdebrid().transferList()
        torrInDownload = [
            i for i in downloads if i['filename'].lower() == name.lower()
        ][0]
    except:
        pass

    if len(torrInDownload) > 0:
        item = control.item(label=name)
        item.setArt({'icon': control.addonIcon()})
        item.setProperty('Fanart_Image', control.addonFanart())
        infolabel = {"Title": name}
        item.setInfo(type='Video', infoLabels=infolabel)
        item.setProperty('IsPlayable', 'true')
        item = control.item(path=torrInDownload['download'])

        control.resolve(int(sys.argv[1]), True, item)

    else:
        newTorr = []

        try:
            result = torrentItemToDownload(name, id)
            if result != None: newTorr.append(result)
        except:
            pass

        time.sleep(1)

        torrItem = newTorr[0]

        if len(torrItem) > 0:
            control.infoDialog('Playing Torrent Item',
                               torrItem['filename'],
                               time=3)
            item = control.item(label=name)
            item.setArt({'icon': control.addonIcon()})
            item.setProperty('Fanart_Image', control.addonFanart())
            infolabel = {"Title": name}
            item.setInfo(type='Video', infoLabels=infolabel)
            item.setProperty('IsPlayable', 'true')
            item = control.item(path=torrItem['download'])
            control.resolve(int(sys.argv[1]), True, item)
Beispiel #3
0
def reader(url):
    sysaddon = sys.argv[0]
    syshandle = int(sys.argv[1])
    VALID_EXT = debrid.VALID_EXT

    try:
        html = feedparser.parse(url)
        rssEntries = html.entries
        for item in rssEntries:
            try:

                title = item.title
                link = item.link

                label = title
                item = control.item(label=label)
                item.setArt({'icon': control.addonIcon()})
                item.setProperty('Fanart_Image', control.addonFanart())
                infolabel = {"Title": label}
                url = '%s?action=%s&id=%s' % (sysaddon, 'rdAddTorrent',
                                              urllib.quote_plus(link))
                control.addItem(handle=syshandle,
                                url=url,
                                listitem=item,
                                isFolder=True)

            except:
                pass
    except:
        pass

    control.directory(syshandle, cacheToDisc=True)
Beispiel #4
0
def reader_cat():
    sysaddon = sys.argv[0]
    syshandle = int(sys.argv[1])
    VALID_EXT = debrid.VALID_EXT
    rsslist = rssList()
    rsslist = [i for i in rsslist]
    try:
        for x in rsslist:
            link = x['rss']
            u = link.split("//")[-1].split("/")[0].split('?')[0]
            title = u

            label = title
            item = control.item(label=label)
            item.setArt({'icon': control.addonIcon()})
            item.setProperty('Fanart_Image', control.addonFanart())
            infolabel = {"Title": label}
            url = '%s?action=%s&id=%s' % (sysaddon, 'rss_reader', link)
            control.addItem(handle=syshandle,
                            url=url,
                            listitem=item,
                            isFolder=True)
    except:
        pass

    control.directory(syshandle, cacheToDisc=True)
Beispiel #5
0
def play_next_episode(episode):
	time.sleep(3)
	while xbmc.getCondVisibility("Window.IsVisible(yesnodialog)") or xbmc.getCondVisibility("Window.IsVisible(busydialog)") or xbmc.getCondVisibility("Window.IsVisible(okdialog)"):
		time.sleep(1)

	item = episode

	from resources.lib.modules import control
	
	try: icon = item['poster']
	except: icon = control.addonIcon()
	title = item['title']
	year = item['year']
	imdb = item['imdb']
	tvdb = item['tvdb']
	tmdb = '0'
	season = item['season']
	episode = item['episode']
	tvshowtitle = item['tvshowtitle']
	premiered   = item['premiered']
	meta = item
	smartPlayMode = True
	select = control.setting('hosts.mode')
	sysmeta = urllib.quote_plus(json.dumps(meta))
	systitle = urllib.quote_plus(item['title'])
	systvshowtitle = urllib.quote_plus(item['tvshowtitle'])
	syspremiered = urllib.quote_plus(item['premiered'])
	sysaddon = sys.argv[0]
	
	control.infoDialog('Playing Next Episode...', tvshowtitle, icon=icon, time=3000)
	time.sleep(2)
	url = 'RunPlugin(%s?action=play&title=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&premiered=%s&meta=%s)' % (sysaddon, systitle, year, imdb, tvdb, season, episode, systvshowtitle, syspremiered, sysmeta)
	control.execute(url)
Beispiel #6
0
    def docu_play(self, url):
        try:
            docu_page = client.request(url)
            docu_item = client.parseDOM(docu_page,
                                        'meta',
                                        attrs={'itemprop': 'embedUrl'},
                                        ret='content')[0]
            if 'http:' not in docu_item and 'https:' not in docu_item:
                docu_item = 'https:' + docu_item
            url = docu_item

            try:
                docu_title = re.findall(
                    'meta property="og:title" content="(.+?)"', docu_page)[0]
            except Exception:
                docu_title = re.findall('<title>(.+?)</title>', docu_page)[0]

            try:
                docu_icon = re.findall(
                    'meta property="og:image" content="(.+?)"', docu_page)[0]
            except Exception:
                docu_icon = control.addonIcon()

            if 'youtube' in url:
                if 'list=' not in url:
                    video_id = client.parseDOM(
                        docu_page,
                        'div',
                        attrs={'class': 'youtube-player'},
                        ret='data-id')[0]
                    url = 'plugin://plugin.video.youtube/play/?video_id=%s' % video_id
                else:
                    playlist_id = url.split('list=')[1]
                    url = 'plugin://plugin.video.youtube/play/?playlist_id=%s&play=1' % playlist_id

            else:
                url = source_utils.uResolve(url)
                if url is None:
                    log_utils.log(
                        'Top Documentary Films: Unable to resolve url: ' +
                        str(url))
                    control.infoDialog('Invalid Host - Report To Developer: ' +
                                       str(url),
                                       sound=True,
                                       icon='INFO')
                    return

            li = control.item(docu_title, path=url)
            li.setArt({"thumb": docu_icon, "icon": docu_icon})
            li.setInfo(type="video", infoLabels={"Title": docu_title})
            li.setProperty('IsPlayable', 'true')

            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=li)
        except Exception as e:
            log_utils.log('docu_play: Exception - ' + str(e))
            pass
Beispiel #7
0
 def submitForm(self):
     reportText = self.BugForm.getText()
     self.close()
     from resources.lib.modules import webform
     result = webform.webform().bug_report('Atreides', reportText)
     if result is None:
         # Wait before submitting another report you f****n spammer
         xbmc.executebuiltin(
             "XBMC.Notification(%s, %s, %s, %s)" %
             ('Atreides Bug Report', 'Wait Before Next Submission', 4000,
              control.addonIcon()))
     elif result is False:
         # Failed to send. Site timed out or is down. Ya'll suck
         xbmc.executebuiltin("XBMC.Notification(%s, %s, %s, %s)" %
                             ('Atreides Bug Report', 'Submission Failed',
                              4000, control.addonIcon()))
     elif result is True:
         # Bug Report worked, F**K YEAH!
         xbmc.executebuiltin("XBMC.Notification(%s, %s, %s, %s)" %
                             ('Atreides Bug Report', 'Bug Report Completed',
                              4000, control.addonIcon()))
Beispiel #8
0
def torrentInfo(id):
    r = realdebrid().torrentInfo(id)
    links = r['links']
    files = r['files']

    count = 0
    for x in files:
        try:
            oriGinalName = x['path']
            if oriGinalName.startswith('/'):
                name = oriGinalName.split('/')[-1]

            ext = name.split('.')[-1].encode('utf-8')

            if ext in VALID_EXT: isPlayable = True
            else: isPlayable = False

            if not ext.lower() in VALID_EXT: raise Exception()

            label = ext.upper() + " | " + name

            item = control.item(label=label)
            item.setArt({'icon': control.addonIcon()})
            item.setProperty('Fanart_Image', control.addonFanart())

            # itemID = x['id']
            # playlink = links[count]
            # count += 1

            infolabel = {"Title": label}
            item.setInfo(type='Video', infoLabels=infolabel)
            item.setProperty('IsPlayable', 'true')

            url = url = '%s?action=%s&name=%s&id=%s' % (
                sysaddon, 'playtorrentItem', name, id)
            #item.addContextMenuItems(cm)
            control.addItem(handle=syshandle,
                            url=url,
                            listitem=item,
                            isFolder=False)
        except:
            pass

    control.content(syshandle, 'movies')
    control.directory(syshandle, cacheToDisc=True)
Beispiel #9
0
def manager():
    sysaddon = sys.argv[0]
    syshandle = int(sys.argv[1])
    VALID_EXT = debrid.VALID_EXT
    updt = '%s?action=%s' % (sysaddon, 'rss_update')
    item = control.item(label='[UPDATE NOW]')
    control.addItem(handle=syshandle, url=updt, listitem=item, isFolder=False)
    clear = '%s?action=%s' % (sysaddon, 'rss_clear')
    item = control.item(label='[CLEAR DATABASE]')
    control.addItem(handle=syshandle, url=clear, listitem=item, isFolder=False)
    try:
        r = rssDB(mode='get')
        try:
            r = sorted(r, key=lambda x: int(x['added']), reverse=True)
        except:
            pass
        for item in r:
            try:
                cm = []
                date = item['added']

                id = item['id']
                name = item['title']
                label = date + " | " + name
                item = control.item(label=label)
                item.setArt({'icon': control.addonIcon()})
                item.setProperty('Fanart_Image', control.addonFanart())
                infolabel = {"Title": label}
                cm.append(
                    ('Delete Torrent Item',
                     'RunPlugin(%s?action=rdDeleteItem&id=%s&type=torrents)' %
                     (sysaddon, id)))
                url = '%s?action=%s&id=%s' % (sysaddon, 'rdTorrentInfo', id)
                item.addContextMenuItems(cm)
                control.addItem(handle=syshandle,
                                url=url,
                                listitem=item,
                                isFolder=True)
            except:
                pass
    except:
        pass

    control.directory(syshandle, cacheToDisc=True)
Beispiel #10
0
    def docu_play(self, url):
        try:
            docu_page = client.request(url)
            docu_item = client.parseDOM(docu_page, 'div', attrs={'class': 'video'})[0]
            url = client.parseDOM(docu_item, 'iframe', ret='src')[0]

            try:
                docu_title = re.findall('meta property="og:title" content="(.+?)"', docu_page)[0]
            except Exception:
                docu_title = re.findall('<title>(.+?)</title>', docu_page)[0]

            try:
                docu_icon = re.findall('meta property="og:image" content="(.+?)"', docu_page)[0]
            except Exception:
                docu_icon = control.addonIcon()

            if 'youtube' in url:
                if 'list=' not in url:
                    video_id = url.split('embed/')[-1]
                    url = 'plugin://plugin.video.youtube/play/?video_id=%s' % video_id
                else:
                    playlist_id = url.split("=")[-1]
                    url = 'plugin://plugin.video.youtube/play/?playlist_id=%s&play=1' % playlist_id
            elif 'archive.org/embed' in url:
                archive_page = client.request(url)
                video_element = client.parseDOM(archive_page, 'source', ret='src')[0]
                url = urlparse.urljoin('https://archive.org/', video_element)
            else:
                url = source_utils.uResolve(url)
                if url is None:
                    log_utils.log('Documentary Heaven: Unable to resolve url: ' + str(url))
                    control.infoDialog('Invalid Host - Report To Developer: ' + str(url), sound=True, icon='INFO')
                    return

            li = control.item(docu_title, path=url)
            li.setArt({"thumb": docu_icon, "icon": docu_icon})
            li.setInfo(type="video", infoLabels={"Title": docu_title})
            li.setProperty('IsPlayable', 'true')

            control.resolve(handle=int(sys.argv[1]), succeeded=True, listitem=li)
        except Exception as e:
            log_utils.log('docu_play: Exception - ' + str(e))
            pass
Beispiel #11
0
def torrentList():

    r = realdebrid().torrentList()
    for item in r:
        cm = []
        status = item['status']
        id = item['id']
        name = item['filename']
        label = status.upper() + " | " + name
        item = control.item(label=label)
        item.setArt({'icon': control.addonIcon()})
        item.setProperty('Fanart_Image', control.addonFanart())
        infolabel = {"Title": label}
        cm.append(('Delete Torrent Item',
                   'RunPlugin(%s?action=rdDeleteItem&id=%s&type=torrents)' %
                   (sysaddon, id)))
        url = '%s?action=%s&id=%s' % (sysaddon, 'rdTorrentInfo', id)
        item.addContextMenuItems(cm)
        control.addItem(handle=syshandle,
                        url=url,
                        listitem=item,
                        isFolder=True)

    control.directory(syshandle, cacheToDisc=True)
Beispiel #12
0
    def onInit(self):
        self.action_exitkeys_id = [10, 13]

        try:
            image = self.item['poster']
        except:
            image = '0'
        if "fanart" in self.item: fanartimage = self.item['fanart']
        else: fanartimage = '0'
        if "fanart" in self.item: landscapeimage = self.item['fanart']
        else: landscapeimage = control.addonIcon()
        if "thumb" in self.item: thumb = self.item['thumb']
        else: thumb = '0'
        if thumb != '0' and thumb != None:
            image = fanartimage = landscapeimage = thumb
        elif fanartimage != '0' and fanartimage != None:
            image = thumb = landscapeimage = fanartimage
        elif image != '0' and image != None:
            fanartimage = thumb = landscapeimage = image

        overview = self.item['plot']
        tvshowtitle = self.item['tvshowtitle']
        name = self.item['title']
        playcount = ''

        season = self.item['season']
        episodeNum = self.item['episode']
        episodeInfo = str(season) + 'x' + str(episodeNum) + '.'

        rating = str(round(float(self.item['rating']), 1))
        year = self.item['year']
        info = year

        # set the dialog data
        self.getControl(3000).setLabel(name)
        self.getControl(3001).setText(overview)
        self.getControl(3002).setLabel(episodeInfo)
        self.getControl(3004).setLabel(info)
        self.getControl(7777).setLabel(thumb)

        if rating is not None:
            self.getControl(3003).setLabel(rating)
        else:
            self.getControl(3003).setVisible(False)

        try:
            tvShowControl = self.getControl(3007)
            if tvShowControl != None:
                tvShowControl.setLabel(tvshowtitle)
        except:
            pass

        try:
            posterControl = self.getControl(3009)
            if posterControl != None:
                posterControl.setImage(image)
        except:
            pass

        try:
            fanartControl = self.getControl(3005)
            if fanartControl != None:
                fanartControl.setImage(fanartimage)
        except:
            pass

        try:
            thumbControl = self.getControl(3008)
            if thumbControl != None:
                self.getControl(3008).setImage(thumb)
        except:
            pass

        try:
            landscapeControl = self.getControl(3010)
            if landscapeControl != None:
                self.getControl(3010).setImage(landscapeimage)
        except:
            pass

        try:
            clearartimageControl = self.getControl(3006)
            if clearartimageControl != None:
                self.getControl(3006).setImage(clearartimage)
        except:
            pass

        try:
            seasonControl = self.getControl(3015)
            if seasonControl != None:
                seasonControl.setLabel(str(season))
        except:
            pass

        try:
            episodeControl = self.getControl(3016)
            if episodeControl != None:
                episodeControl.setLabel(str(episodeNum))
        except:
            pass

        try:
            resolutionControl = self.getControl(3011)
            if resolutionControl != None:
                resolution1 = self.item['streamdetails'].get('video')
                resolution = resolution1[0].get('height')
                resolutionControl.setLabel(str(resolution))
        except:
            pass

        try:
            playcountControl = self.getControl(3018)
            if playcountControl != None:
                playcountControl.setLabel(str(playcount))
        except:
            pass
Beispiel #13
0
def nextup(episode):
    if episode == None or episode == '':
        episode = {}
        episode['poster'] = control.addonIcon()
        episode['fanart'] = control.addonIcon()
        episode['plot'] = ''
        episode['title'] = 'No episode data found'
        episode['tvshowtitle'] = 'No show data found'
        episode['season'] = '0'
        episode['episode'] = '0'
        episode['plot'] = ''
        episode['rating'] = '0.0'
        episode['year'] = '0'
        print("NEXTUP >>> NO EPISODE DATA FOUND")
        return False

    nextup_action = control.setting('nextup.action')
    skin_native = control.setting('nextup.skin.native')
    try:
        if skin_native == 'true':
            nextUpPage = NextUpInfo(
                "script-nextup-notification-NextUpInfo.xml", control.addonPath,
                "default", "1080i")
        else:
            nextUpPage = NextUpInfo("script-nextup.xml", control.addonPath,
                                    "default", "1080i")
        nextUpPage.setItem(episode)
        nextUpPage.show()

        playTime = xbmc.Player().getTime()
        totalTime = xbmc.Player().getTotalTime()

        while xbmc.Player().isPlaying() and (
                totalTime - playTime > 5
        ) and not nextUpPage.isCancel() and not nextUpPage.isWatchNow():
            xbmc.sleep(100)
            try:
                playTime = xbmc.Player().getTime()
                totalTime = xbmc.Player().getTotalTime()
            except:
                pass

        if nextUpPage.isWatchNow():
            try:
                nexUpPage.closeDialog()
            except:
                pass
            xbmc.Player().stop()
            return True

        elif nextUpPage.isCancel():
            try:
                nexUpPage.closeDialog()
            except:
                pass
            return False

        elif nextup_action == '0':  # DEFAULT PLAY
            try:
                nexUpPage.closeDialog()
            except:
                pass
            return True

        else:
            try:
                nexUpPage.closeDialog()
            except:
                pass
            return False

    except:
        return False
Beispiel #14
0
import xbmcplugin

from base64 import b64encode, b64decode
from binascii import a2b_hex

from resources.lib.modules import client, control, jsonbm, jsonmenu, log_utils, pydes, pyrsa

try:
    from urllib.parse import quote_from_bytes as orig_quote
except ImportError:
    from urllib import quote as orig_quote

sysaddon = sys.argv[0]
syshandle = int(sys.argv[1])
artPath = control.artPath()
addonIcon = control.addonIcon()
addonFanart = control.addonFanart()


def quote(s, safe=""):
    return orig_quote(s.encode("utf-8"), safe.encode("utf-8"))


class tvtap:
    def __init__(self):
        self.User_Agent = 'Dalvik/2.1.0 (Linux; U; Android 5.1.1; AFTS Build/LVY48F)'
        self.Player_User_Agent = 'mediaPlayerhttp/1.9 (Linux;Android 5.1) ExoPlayerLib/2.6.1'

        self.token_url = 'https://taptube.net/tv/index.php?case=get_channel_link_with_token_latest'
        self.list_url = 'https://taptube.net/tv/index.php?case=get_all_channels'
        self.icon_url = 'https://taptube.net/tv/%s|User-Agent=%s' % ('%s', self.User_Agent)
Beispiel #15
0
selfAddon = xbmcaddon.Addon(id=AddonID)

# ADDON SETTINGS
wizard1 = control.setting('enable_wiz1')
wizard2 = control.setting('enable_wiz2')
wizard3 = control.setting('enable_wiz3')
wizard4 = control.setting('enable_wiz4')
wizard5 = control.setting('enable_wiz5')
backupfull = control.setting('backup_database')
backupaddons = control.setting('backup_addon_data')
backupzip = control.setting("remote_backup")
USB = xbmc.translatePath(os.path.join(backupzip))

# ICONS FANARTS
ADDON_FANART = control.addonFanart()
ADDON_ICON = control.addonIcon()

# DIRECTORIES
backupdir = xbmc.translatePath(os.path.join('special://home/backupdir', ''))
packagesdir = xbmc.translatePath(
    os.path.join('special://home/addons/packages', ''))
USERDATA = xbmc.translatePath(os.path.join('special://home/userdata', ''))
ADDON_DATA = xbmc.translatePath(os.path.join(USERDATA, 'addon_data'))
HOME = xbmc.translatePath('special://home/')
HOME_ADDONS = xbmc.translatePath('special://home/addons')
backup_zip = xbmc.translatePath(
    os.path.join(backupdir, 'backup_addon_data.zip'))

# DIALOGS
dialog = xbmcgui.Dialog()
progressDialog = xbmcgui.DialogProgress()