Example #1
0
 def play(self, url):
     try:
         hmf = resolveurl.HostedMediaFile(url,
                                          include_disabled=False,
                                          include_universal=True)
         if hmf.valid_url() == True:
             link = hmf.resolve()
             if link == None or link == False:
                 link = url
         else:
             link = url
         if not 'User-Agent' in link:
             elements = urlparse.urlparse(link)
             domain = elements.scheme + '://' + elements.netloc
             uAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
             link = '%s|User-Agent=%s&Referer=%s' % (link, uAgent, domain)
         title = control.infoLabel('listitem.label')
         icon = control.infoLabel('listitem.icon')
         li = control.item(title, path=link)
         li.setProperty("IsPlayable", "true")
         li.setArt({"thumb": icon, "icon": icon})
         li.setInfo(type="video", infoLabels={"title": title})
         control.resolve(handle=int(sys.argv[1]),
                         succeeded=True,
                         listitem=li)
     except Exception:
         pass
Example #2
0
 def play(self, url):
     try:
         hmf = resolveurl.HostedMediaFile(url,
                                          include_disabled=False,
                                          include_universal=True)
         if hmf.valid_url() is True:
             link = hmf.resolve()
             if link is None or link is False:
                 link = url
         else:
             link = url
         if not 'User-Agent' in link:
             elements = urlparse.urlparse(link)
             domain = elements.scheme + '://' + elements.netloc
             uAgent = client.agent()
             link = '%s|User-Agent=%s&Referer=%s' % (link, uAgent, domain)
         title = control.infoLabel('listitem.label')
         icon = control.infoLabel('listitem.icon')
         li = control.item(title, path=link)
         li.setProperty("IsPlayable", "true")
         li.setArt({"thumb": icon, "icon": icon})
         li.setInfo(type="video", infoLabels={"title": title})
         control.resolve(handle=int(sys.argv[1]),
                         succeeded=True,
                         listitem=li)
     except Exception:
         pass
    def play(self, name='', url='', windowedtrailer=0):
        try:
            url = self.worker(name, url)
            if not url:
                return

            title = control.infoLabel('ListItem.Title')

            if not title:
                title = control.infoLabel('ListItem.Label')

            icon = control.infoLabel('ListItem.Icon')

            item = control.item(label=title,
                                iconImage=icon,
                                thumbnailImage=icon,
                                path=url)
            item.setInfo(type="video", infoLabels={'title': title})
            item.setProperty('IsPlayable', 'true')

            control.refresh()
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)

            if windowedtrailer == 1:
                control.sleep(1000)
                while control.player.isPlayingVideo():
                    control.sleep(1000)

                control.execute("Dialog.Close(%s, true)" %
                                control.getCurrentDialogId)
        except:
            import traceback
            traceback.print_exc()
Example #4
0
 def play(self,
          type='',
          name='',
          year='',
          url='',
          imdb='',
          windowedtrailer=0):
     try:
         url = self.worker(type, name, year, url, imdb)
         if not url: return
         title = control.infoLabel('ListItem.Title')
         if not title: title = control.infoLabel('ListItem.Label')
         icon = control.infoLabel('ListItem.Icon')
         item = control.item(label=title, offscreen=True)
         item.setProperty('IsPlayable', 'true')
         item.setArt({
             'icon': icon,
             'thumb': icon,
         })
         item.setInfo(type='video', infoLabels={'title': title})
         control.addItem(handle=int(argv[1]),
                         url=url,
                         listitem=item,
                         isFolder=False)
         control.refresh()
         control.resolve(handle=int(argv[1]), succeeded=True, listitem=item)
         if windowedtrailer == 1:
             control.sleep(1000)
             while control.player.isPlayingVideo():
                 control.sleep(1000)
             control.execute("Dialog.Close(%s, true)" %
                             control.getCurrentDialogId)
     except:
         from resources.lib.modules import log_utils
         log_utils.error()
Example #5
0
    def run(self, title, url, meta):
        try:
            control.sleep(200)
			

            self.totalTime = 0 ; self.currentTime = 0

            self.name = '%s' % title

            poster = meta['poster'].encode('utf-8') if 'poster' in meta else '0'
            title = meta['title'].encode('utf-8') if 'title' in meta else self.name
            print ("PLAYER ITEMS", title, url, poster)
          
            if url.startswith('http') and '.m3u8' in url:url = url
            elif "|directplay" in url:url = url.split('|')[0]
            else:
				hmf = urlresolver.HostedMediaFile(url=url, include_disabled=True, include_universal=True)
				url = hmf.resolve()
            #control.do_block_check(False)
            item = control.item(path=url)
            item.setArt({'icon': poster, 'thumb': poster, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
            item.setInfo(type='Video', infoLabels={ "Title": title} )
            print ("PLAYER ITEMS 2", title, url, meta)           

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(url, item)

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

           
        except:
            return
    def run(self, url, selectGame, side):

        if selectGame == None or side == None:
            return control.resolve(int(sys.argv[1]), True,
                                   control.item(path=url))

        command = ['java', '-jar', jarFile, selectGame, side]

        startupinfo = None
        if os.name == 'nt':
            startupinfo = subprocess.STARTUPINFO()
            startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

        self.process = subprocess.Popen(command,
                                        stdout=subprocess.PIPE,
                                        stderr=subprocess.STDOUT,
                                        startupinfo=startupinfo)

        if os.name == 'posix':
            success = False
            success, output = FuckNeulionClient.request_proxy_hack(
                selectGame, side)

        control.sleep(1000)

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

        for i in range(0, 240):
            if self.isPlayingVideo(): break
            control.sleep(1000)
        while self.isPlayingVideo():
            control.sleep(1000)
        control.sleep(5000)
Example #7
0
    def play(self, name='', url='', windowedtrailer=0):
        try:
            url = self.worker(name, url)
            if not url:return

            title = control.infoLabel('ListItem.Title')
            if not title: title = control.infoLabel('ListItem.Label')
            icon = control.infoLabel('ListItem.Icon')

            item = control.item(label=name ,iconImage=icon, thumbnailImage=icon, path=url)
            item.setInfo(type="Video",infoLabels={ "Title":name})

            item.setProperty('IsPlayable','true')
            control.resolve(handle=int(sys.argv[1]), succeeded=True, listitem=item)

            if windowedtrailer == 1:
                # The call to the play() method is non-blocking. So we delay further script execution to keep the script alive at this spot.
                # Otherwise this script will continue and probably already be garbage collected by the time the trailer has ended.
                control.sleep(1000)  # Wait until playback starts. Less than 900ms is too short (on my box). Make it one second.
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                # Close the dialog.
                # Same behaviour as the fullscreenvideo window when :
                # the media plays to the end,
                # or the user pressed one of X, ESC, or Backspace keys on the keyboard/remote to stop playback.
                control.execute("Dialog.Close(%s, true)" % control.getCurrentDialogId)      
        except:
            pass
Example #8
0
    def run(self, title, url, xbmc_id, content):
        try:
            control.sleep(200)

            self.content = 'movie' if content == 'movie' else 'episode'

            self.title = title
            self.DBID = xbmc_id
			
            self.imdb = ''
			
            self.name =  cleantitle.get(title) + str(self.DBID)
			
            #print ("PREMIUMIZE PLAYER", self.title, self.DBID, self.content, url)

            poster, thumb, fanart, meta = self.getMeta()
			
            #print ("PREMIUMIZE PLAYER 2", url, self.title, self.DBID, poster, thumb, fanart, meta)
            if self.content == 'movie': self.ids = {'imdb': self.imdb}
            else: self.ids = {'imdb': self.imdb, 'tvdb': self.imdb }
            self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')
			
            item = control.item(path=url)
			
            item.setArt({'icon': thumb, 'thumb': thumb, 'poster': thumb, 'fanart':thumb})

            item.setInfo(type='Video', infoLabels = meta)

            control.resolve(int(sys.argv[1]), True, item)
            control.window.setProperty('script.trakt.ids', json.dumps(self.ids))
            self.keepPlaybackAlive()
            control.window.clearProperty('script.trakt.ids')
        except:
            return
Example #9
0
	def play_source(self, title, year, season, episode, imdb, tmdb, tvdb, url, meta, debridPackCall=False):
		try:
			from sys import argv # some functions like ActivateWindow() throw invalid handle less this is imported here.
			if not url: raise Exception
			self.media_type = 'movie' if season is None or episode is None else 'episode'
			self.title, self.year = title, str(year)
			if self.media_type == 'movie':
				self.name, self.season, self.episode = '%s (%s)' % (title, self.year), None, None
			elif self.media_type == 'episode':
				self.name, self.season, self.episode = '%s S%02dE%02d' % (title, int(season), int(episode)), '%01d' % int(season), '%01d' % int(episode)
			self.imdb, self.tmdb, self.tvdb = imdb or '', tmdb or '', tvdb or ''
			self.ids = {'imdb': self.imdb, 'tmdb': self.tmdb, 'tvdb': self.tvdb}
## - compare meta received to database and use largest(eventually switch to a request to fetch missing db meta for item)
			self.imdb_user = control.setting('imdb.user').replace('ur', '')
			self.tmdb_key = control.setting('tmdb.api.key')
			if not self.tmdb_key: self.tmdb_key = '3320855e65a9758297fec4f7c9717698'
			self.tvdb_key = control.setting('tvdb.api.key')
			if self.media_type == 'episode': self.user = str(self.imdb_user) + str(self.tvdb_key)
			else: self.user = str(self.tmdb_key)
			self.lang = control.apiLanguage()['tvdb']
			meta1 = dict((k, v) for k, v in iter(meta.items()) if v is not None and v != '') if meta else None
			meta2 = metacache.fetch([{'imdb': self.imdb, 'tmdb': self.tmdb, 'tvdb': self.tvdb}], self.lang, self.user)[0]
			if meta2 != self.ids: meta2 = dict((k, v) for k, v in iter(meta2.items()) if v is not None and v != '')
			if meta1 is not None:
				try:
					if len(meta2) > len(meta1):
						meta2.update(meta1)
						meta = meta2
					else: meta = meta1
				except: log_utils.error()
			else: meta = meta2 if meta2 != self.ids else meta1
##################
			self.poster = meta.get('poster') if meta else ''
			self.fanart = meta.get('fanart') if meta else ''
			self.meta = meta
			poster, thumb, season_poster, fanart, banner, clearart, clearlogo, discart, meta = self.getMeta(meta)
			self.offset = Bookmarks().get(name=self.name, imdb=imdb, tmdb=tmdb, tvdb=tvdb, season=season, episode=episode, year=self.year, runtime=meta.get('duration') if meta else 0)

			if self.offset == '-1':
				log_utils.log('User requested playback cancel', level=log_utils.LOGDEBUG)
				control.notification(message=32328)
				return control.cancelPlayback()

			item = control.item(path=url)
			item.setUniqueIDs(self.ids)
			if self.media_type == 'episode':
				item.setArt({'tvshow.clearart': clearart, 'tvshow.clearlogo': clearlogo, 'tvshow.discart': discart, 'thumb': thumb, 'tvshow.poster': season_poster, 'season.poster': season_poster, 'tvshow.fanart': fanart})
			else:
				item.setArt({'clearart': clearart, 'clearlogo': clearlogo, 'discart': discart, 'thumb': thumb, 'poster': poster, 'fanart': fanart})
			if 'castandart' in meta: item.setCast(meta.get('castandart', ''))
			item.setInfo(type='video', infoLabels=control.metadataClean(meta))
			item.setProperty('IsPlayable', 'true')
			if debridPackCall: control.player.play(url, item) # seems this is only way browseDebrid pack files will play and have meta marked as watched
			else: control.resolve(int(argv[1]), True, item)
			homeWindow.setProperty('script.trakt.ids', jsdumps(self.ids))
			self.keepAlive()
			homeWindow.clearProperty('script.trakt.ids')
		except:
			log_utils.error()
			return control.cancelPlayback()
Example #10
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
Example #11
0
	def play(self, url, content=None):
		try:
			base = url

			url = resolver().get(url)
			if url is False:
				return

			control.execute('ActivateWindow(busydialog)')
			url = resolver().process(url)
			control.execute('Dialog.Close(busydialog)')

			if url is None:
				return control.notification(title='default', message=30705, icon='default', sound=(control.setting('notification.sound') == 'true'))

			if url is False:
				return

			meta = {}
			for i in ['title', 'originaltitle', 'tvshowtitle', 'year', 'season', 'episode', 'genre', 'rating', 'votes', 'director', 'writer', 'plot', 'tagline']:
				try: meta[i] = control.infoLabel('listitem.%s' % i)
				except: pass
			meta = dict((k, v) for k, v in meta.iteritems() if v != '')
			if not 'title' in meta: meta['title'] = control.infoLabel('listitem.label')
			icon = control.infoLabel('listitem.icon')

			self.name = meta['title'] ; self.year = meta['year'] if 'year' in meta else '0'

			self.getbookmark = True if (content == 'movies' or content == 'episodes') else False

			self.offset = bookmarks().get(self.name, self.year)

			f4m = resolver().f4m(url, self.name)
			if not f4m is None: return

			item = control.item(path=url, iconImage=icon, thumbnailImage=icon)
			try: item.setArt({'icon': icon})
			except: pass
			item.setInfo(type='Video', infoLabels = meta)
			control.player.play(url, item)
			control.resolve(int(sys.argv[1]), True, item)

			self.totalTime = 0 ; self.currentTime = 0

			for i in range(0, 240):
				if self.isPlayingVideo(): break
				control.sleep(1000)
			while self.isPlayingVideo():
				try:
					self.totalTime = self.getTotalTime()
					self.currentTime = self.getTime()
				except:
					pass
				control.sleep(2000)
			control.sleep(5000)
		except:
			pass
Example #12
0
    def play(self, url, content=None):
        try:
            base = url

            url = resolver().get(url)
            if url == False: return

            control.execute('ActivateWindow(busydialog)')
            url = resolver().process(url)
            control.execute('Dialog.Close(busydialog)')

            if url == None: return control.infoDialog(control.lang(30705).encode('utf-8'))
            if url == False: return

            meta = {}
            for i in ['title', 'originaltitle', 'tvshowtitle', 'year', 'season', 'episode', 'genre', 'rating', 'votes', 'director', 'writer', 'plot', 'tagline']:
                try: meta[i] = control.infoLabel('listitem.%s' % i)
                except: pass
            meta = dict((k,v) for k, v in meta.iteritems() if not v == '')
            if not 'title' in meta: meta['title'] = control.infoLabel('listitem.label')
            icon = control.infoLabel('listitem.icon')


            self.name = meta['title'] ; self.year = meta['year'] if 'year' in meta else '0'

            self.getbookmark = True if (content == 'movies' or content == 'episodes') else False

            self.offset = bookmarks().get(self.name, self.year)

            if not 'tvplayer' in url:
				if not 'itv' in url:
						f4m = resolver().f4m(url, self.name)
						if not f4m == None: return


            item = control.item(path=url, iconImage=icon, thumbnailImage=icon)
            try: item.setArt({'icon': icon})
            except: pass
            item.setInfo(type='Video', infoLabels = meta)
            control.player.play(url, item)
            control.resolve(int(sys.argv[1]), True, item)

            self.totalTime = 0 ; self.currentTime = 0

            for i in range(0, 240):
                if self.isPlayingVideo(): break
                control.sleep(1000)
            while self.isPlayingVideo():
                try:
                    self.totalTime = self.getTotalTime()
                    self.currentTime = self.getTime()
                except:
                    pass
                control.sleep(2000)
            control.sleep(5000)
        except:
            pass
Example #13
0
    def run(self, title, year, season, episode, imdb, tvdb, url, meta):

        try:
            control.sleep(200)

            self.totalTime = 0
            self.currentTime = 0

            self.content = 'movie' if season is None or episode is None else 'episode'

            self.title = title
            self.year = year
            self.name = urllib.quote_plus(title) + urllib.quote_plus(
                ' (%s)' %
                year) if self.content == 'movie' else urllib.quote_plus(
                    title) + urllib.quote_plus(' S%02dE%02d' %
                                               (int(season), int(episode)))
            self.name = urllib.unquote_plus(self.name)
            self.season = '%01d' % int(
                season) if self.content == 'episode' else None
            self.episode = '%01d' % int(
                episode) if self.content == 'episode' else None

            self.DBID = None
            self.imdb = imdb if imdb is not None else '0'
            self.tvdb = tvdb if tvdb is not None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict(
                (k, v) for k, v in self.ids.iteritems() if not v == '0')

            self.offset = bookmarks().get(self.name, self.year)

            poster, thumb, meta = self.getMeta(meta)

            item = control.item(path=url)
            item.setArt({
                'icon': thumb,
                'thumb': thumb,
                'poster': poster,
                'tvshow.poster': poster,
                'season.poster': poster
            })
            item.setInfo(type='Video', infoLabels=meta)

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(url, item)

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

            control.window.setProperty('script.trakt.ids',
                                       json.dumps(self.ids))

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')
        except Exception:
            return
Example #14
0
    def play(self, title, year, imdb, tvdb, season, episode, tvshowtitle,
             premiered, meta, url):
        try:
            if not control.addonInfo('id').lower() == control.infoLabel(
                    'Container.PluginName').lower():
                progress = True if control.setting(
                    'progress.dialog') == '1' else False
            else:
                control.resolve(int(sys.argv[1]), True, control.item(path=''))
                control.execute('Dialog.Close(okdialog)')
                progress = True

            if 'super.fav' in control.infoLabel('Container.PluginName'):
                return control.dialog.ok('Exodus',
                                         control.lang(30518).encode('utf-8'),
                                         '', '')

            items = self.getSources(title,
                                    year,
                                    imdb,
                                    tvdb,
                                    season,
                                    episode,
                                    tvshowtitle,
                                    premiered,
                                    progress=progress)

            if control.window.getProperty('PseudoTVRunning') == 'True':
                return control.resolve(
                    int(sys.argv[1]), True,
                    control.item(path=str(
                        self.sourcesDirect(items, progress=progress))))

            if items == []: raise Exception()

            if url == 'direct://':
                url = self.sourcesDirect(items, progress=progress)
            elif url == 'dialog://':
                url = self.sourcesDialog(items, progress=progress)
            elif control.setting('autoplay') == 'false':
                url = self.sourcesDialog(items, progress=progress)
            else:
                url = self.sourcesDirect(items, progress=progress)

            if url == None: raise Exception()
            if url == 'close://': return

            control.sleep(200)

            if not tvshowtitle == None: title = tvshowtitle

            from resources.lib.modules.player import player
            player().run(title, year, season, episode, imdb, tvdb, meta, url)

            return url
        except:
            control.infoDialog(control.lang(30501).encode('utf-8'))
Example #15
0
    def run(self, title, year, season, episode, imdb, tvdb, meta, url):
        try:
            self.loadingTime = time.time()
            self.totalTime = 0
            self.currentTime = 0

            self.content = 'movie' if season == None or episode == None else 'episode'

            self.title = title
            self.year = year
            self.name = '%s (%s)' % (
                title,
                year) if self.content == 'movie' else '%s S%02dE%02d' % (
                    title, int(season), int(episode))
            self.season = '%01d' % int(
                season) if self.content == 'episode' else None
            self.episode = '%01d' % int(
                episode) if self.content == 'episode' else None

            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict(
                (k, v) for k, v in self.ids.iteritems() if not v == '0')

            control.window.setProperty('script.trakt.ids',
                                       json.dumps(self.ids))

            self.getBookmark()

            poster, thumb, meta = self.getMeta(meta)
            item = control.item(path=url,
                                iconImage='DefaultVideo.png',
                                thumbnailImage=thumb)
            item.setInfo(type='Video', infoLabels=meta)
            try:
                item.setArt({
                    'poster': poster,
                    'tvshow.poster': poster,
                    'season.poster': poster
                })
            except:
                pass
            item.setProperty('Video', 'true')
            item.setProperty('IsPlayable', 'true')

            #control.do_block_check(False)
            control.player.play(url, item)
            control.resolve(int(sys.argv[1]), True, item)

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')
        except:
            return
Example #16
0
    def play(self,
             tmdb,
             imdb=None,
             season=None,
             episode=None,
             windowedtrailer=0):
        try:
            t_url = self.show_url % tmdb
            s_url = self.season_url % (tmdb, season)
            if self.content == 'tvshows':
                if not tmdb or tmdb == '0':
                    return control.infoDialog('No ID found')
                api_url = t_url
            elif self.content == 'seasons':
                if not tmdb or tmdb == '0':
                    return control.infoDialog('No ID found')
                api_url = s_url
            elif self.content == 'episodes':
                if not tmdb or tmdb == '0':
                    return control.infoDialog('No ID found')
                api_url = self.episode_url % (tmdb, season, episode)
            else:
                id = tmdb if not tmdb == '0' else imdb
                if not id or id == '0':
                    return control.infoDialog('No ID found')
                api_url = self.movie_url % id
            #log_utils.log('api_url: ' + api_url)

            results = self.get_items(api_url, t_url, s_url)
            url = self.get_url(results)
            if not url: return control.infoDialog('No trailer found')
            elif url == 'canceled': return

            icon = control.infoLabel('ListItem.Icon')
            name = control.infoLabel('ListItem.Title')

            item = control.item(label=name, path=url)
            item.setArt({'icon': icon, 'thumb': icon, 'poster': icon})
            item.setInfo(type='video', infoLabels={'title': name})
            item.setProperty('IsPlayable', 'true')
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)

            if windowedtrailer == 1:
                control.sleep(1000)
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                control.execute('Dialog.Close(%s, true)' %
                                control.getCurrentDialogId)
        except:
            log_utils.log('TMDb_trailer fail', 1)
            return
Example #17
0
    def play(self,
             name='',
             url='',
             tmdb='',
             imdb='',
             season='',
             episode='',
             windowedtrailer=0):
        try:
            if self.content not in ['tvshows', 'seasons', 'episodes']:
                name += ' %s' % control.infoLabel('ListItem.Year')
            elif self.content in ['seasons', 'episodes']:
                if season and episode:
                    name += ' %sx%02d' % (season, int(episode))
                elif season:
                    name += ' season %01d' % int(season)
            if self.content != 'episodes':
                name += ' trailer'

            url = self.worker(name, url)
            if not url:
                raise Exception('YT_trailer failed, trying TMDb')
            elif url == 'canceled':
                return

            icon = control.infoLabel('ListItem.Icon')

            item = control.item(label=name, path=url)
            item.setArt({'icon': icon, 'thumb': icon, 'poster': icon})
            item.setInfo(type='video', infoLabels={'title': name})
            item.setProperty('IsPlayable', 'true')
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)

            if windowedtrailer == 1:
                # The call to the play() method is non-blocking. So we delay further script execution to keep the script alive at this spot.
                # Otherwise this script will continue and probably already be garbage collected by the time the trailer has ended.
                control.sleep(
                    1000
                )  # Wait until playback starts. Less than 900ms is too short (on my box). Make it one second.
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                # Close the dialog.
                # Same behaviour as the fullscreenvideo window when :
                # the media plays to the end,
                # or the user pressed one of X, ESC, or Backspace keys on the keyboard/remote to stop playback.
                control.execute('Dialog.Close(%s, true)' %
                                control.getCurrentDialogId)
        except:
            log_utils.log('YT_trailer play fail', 1)
            TMDb_trailer().play(tmdb, imdb, season, episode)
Example #18
0
	def play(self, url, content=None):
		try:
			base = url
			url = resolver().get(url)
			if not url: return

			control.execute('ActivateWindow(busydialog)')
			url = resolver().process(url)
			control.execute('Dialog.Close(busydialog)')

			if not url: return control.notification(message=30705)

			meta = {}
			for i in ['title', 'originaltitle', 'tvshowtitle', 'year', 'season', 'episode', 'genre', 'rating', 'votes', 'director', 'writer', 'plot', 'tagline']:
				try: meta[i] = control.infoLabel('listitem.%s' % i)
				except: pass
			meta = dict((k, v) for k, v in control.iteritems(meta) if v and v != '0')

			if not 'title' in meta: meta['title'] = control.infoLabel('listitem.label')
			icon = control.infoLabel('listitem.icon')

			self.name = meta['title'] ; self.year = meta['year'] if 'year' in meta else '0'
			self.getbookmark = True if (content == 'movies' or content == 'episodes') else False
			self.offset = bookmarks().get(self.name, self.year)

			f4m = resolver().f4m(url, self.name)
			if not f4m is None: return

			# item = control.item(path=url, iconImage=icon, thumbnailImage=icon)  # iconImage and thumbnailImage removed in Kodi Matrix
			item = control.item(label= self.name)
			item.setProperty('IsPlayable', 'true')
			item.setArt({'icon': icon, 'thumb': icon,})
			item.setInfo(type='video', infoLabels = meta)
			item.addStreamInfo('video', {'codec': 'h264'})
			control.addItem(handle=int(argv[1]), url=url, listitem=item, isFolder=False)
			# control.player.play(url, item)
			control.resolve(handle=int(argv[1]), succeeded=True, listitem=item)

			self.totalTime = 0 ; self.currentTime = 0

			for i in range(0, 240):
				if self.isPlayingVideo(): break
				control.sleep(1000)
			while self.isPlayingVideo():
				try:
					self.totalTime = self.getTotalTime()
					self.currentTime = self.getTime()
				except: pass
				control.sleep(2000)
			control.sleep(5000)
		except: pass
Example #19
0
    def run(self, title, year, season, episode, imdb, tvdb, url, meta):
        try:
            control.sleep(200)

            self.totalTime = 0
            self.currentTime = 0

            self.content = 'movie' if season == None or episode == None else 'episode'

            self.title = title
            self.year = year
            self.name = '%s (%s)' % (
                title,
                year) if self.content == 'movie' else '%s S%02dE%02d' % (
                    title, int(season), int(episode))
            self.season = '%01d' % int(
                season) if self.content == 'episode' else None
            self.episode = '%01d' % int(
                episode) if self.content == 'episode' else None

            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict(
                (k, v) for k, v in self.ids.iteritems() if not v == '0')

            self.offset = bookmarks().get(self.name, self.year)

            poster, thumb, meta = self.getMeta(meta)
            item = control.item(path=url)
            item.setArt({
                'icon': thumb,
                'thumb': thumb,
                'poster': poster,
                'tvshow.poster': poster,
                'season.poster': poster
            })
            item.setInfo(type='Video', infoLabels=meta)

            #control.do_block_check(False)

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(url, item)

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

            self.keepPlaybackAlive()

        except:
            return
Example #20
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)
Example #21
0
    def run(self, title, year, season, episode, imdb, tvdb, meta, url):
        try:

            self.totalTime = 0 ; self.currentTime = 0

            self.content = 'movie' if season == None or episode == None else 'episode'

            self.title = title ; self.year = year
            self.name = urllib.quote_plus(title) + urllib.quote_plus(' (%s)' % year) if self.content == 'movie' else urllib.quote_plus(title) + urllib.quote_plus(' S%02dE%02d' % (int(season), int(episode)))
            self.name = urllib.unquote_plus(self.name)
            self.season = '%01d' % int(season) if self.content == 'episode' else None
            self.episode = '%01d' % int(episode) if self.content == 'episode' else None

            self.DBID = None
            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')
            
            try:
	            if control.setting('resume_playback') == 'true':
	                self.offset = bookmarks.getBookmark(self.name, season, episode, imdb, self.year)
	                if self.offset == '0': raise Exception()
	
	                minutes, seconds = divmod(float(self.offset), 60) ; hours, minutes = divmod(minutes, 60)
	                yes = control.yesnoDialog('%s %02d:%02d:%02d' % (control.lang(30461).encode('utf-8'), hours, minutes, seconds), '', '', self.name, control.lang(30463).encode('utf-8'), control.lang(30462).encode('utf-8'))
	
	                if yes: self.offset = '0'
            except:
                pass

            

            poster, thumb, meta = self.getMeta(meta)

            item = control.item(path=url)
            item.setArt({'icon': thumb, 'thumb': thumb, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
            item.setInfo(type='Video', infoLabels = meta)

            control.player.play(url, item)

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

            control.window.setProperty('script.trakt.ids', json.dumps(self.ids))

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')
        except:
            return
Example #22
0
    def play(self, name='', url='', windowedtrailer=0):
        try:
            name = control.infoLabel('ListItem.Title')
            if not name:
                name = control.infoLabel('ListItem.Label')
            if self.content == 'movies':
                name += ' ' + control.infoLabel('ListItem.Year')
            name += ' trailer'
            if self.content in ['seasons', 'episodes']:
                season = control.infoLabel('ListItem.Season')
                episode = control.infoLabel('ListItem.Episode')
                if season != '':
                    name = control.infoLabel('ListItem.TVShowTitle')
                    name += ' season %01d trailer' % int(season)
                    if episode != '':
                        name = name.replace('season ',
                                            '').replace(' trailer', '')
                        name += 'x%02d' % int(episode)

            url = self.worker(name, url)
            if not url: return

            icon = control.infoLabel('ListItem.Icon')

            item = control.item(label=name, path=url)
            item.setArt({'icon': icon, 'thumb': icon, 'poster': icon})
            item.setInfo(type="video", infoLabels={"title": name})

            item.setProperty('IsPlayable', 'true')
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)
            if windowedtrailer == 1:
                # The call to the play() method is non-blocking. So we delay further script execution to keep the script alive at this spot.
                # Otherwise this script will continue and probably already be garbage collected by the time the trailer has ended.
                control.sleep(
                    1000
                )  # Wait until playback starts. Less than 900ms is too short (on my box). Make it one second.
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                # Close the dialog.
                # Same behaviour as the fullscreenvideo window when :
                # the media plays to the end,
                # or the user pressed one of X, ESC, or Backspace keys on the keyboard/remote to stop playback.
                control.execute("Dialog.Close(%s, true)" %
                                control.getCurrentDialogId)
        except:
            pass
Example #23
0
    def play(self, url):
        try:
            url, captions = url.decode('base64').split('|', 1)
        except Exception:
            url = url.decode('base64')
            captions = ''

        html = client.request('%s?format=json' % url)
        jrequest = json.loads(html)
        url = jrequest['url']
        if url is not None:
                li = control.item(path=url)
                if len(captions) > 0:
                    li.setSubtitles([captions])
                li.setProperty("IsPlayable", "true")
                control.resolve(handle=int(sys.argv[1]), succeeded=True, listitem=li)
Example #24
0
    def play(self, title, year, imdb, tvdb, season, episode, tvshowtitle,
             premiered, meta, select):
        try:

            url = None

            control.moderator()

            items = self.getSources(title, year, imdb, tvdb, season, episode,
                                    tvshowtitle, premiered)

            select = control.setting(
                'hosts.mode') if select == None else select

            title = tvshowtitle if not tvshowtitle == None else title

            if control.window.getProperty('PseudoTVRunning') == 'True':
                return control.resolve(
                    int(sys.argv[1]), True,
                    control.item(path=str(self.sourcesDirect(items))))

            if len(items) > 0:

                if select == '1' and 'plugin' in control.infoLabel(
                        'Container.PluginName'):
                    control.window.clearProperty(self.itemProperty)
                    control.window.setProperty(self.itemProperty,
                                               json.dumps(items))

                    control.window.clearProperty(self.metaProperty)
                    control.window.setProperty(self.metaProperty, meta)

                    control.sleep(200)

                    return control.execute(
                        'Container.Update(%s?action=addItem&title=%s)' %
                        (sys.argv[0], urllib.quote_plus(title)))

                elif select == '0' or select == '1':
                    url = self.sourcesDialog(items)

                else:
                    url = self.sourcesDirect(items)

            if url == None:
                return self.errorForSources()

            try:
                meta = json.loads(meta)
            except:
                pass

            from resources.lib.modules.player import player
            player().run(title, year, season, episode, imdb, tvdb, url, meta)
        except:
            pass
Example #25
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
Example #26
0
    def run(self, meta):
        
        try:
            
            control.sleep(200);

            self.totalTime = 0; 
            self.currentTime = 0;
            self.offset = '0';

            self.content = meta['content'];
            self.ids = meta['ids'];
            self.show_id = meta['show_id'];
            self.asset_id = meta['asset_id'];


            if(meta['continueplayback'] == 0):
                self.offset = meta['progress'];


            self.item = control.item(path=meta['url']);
            
            self.item.setArt(meta['art']);

            self.item.setInfo(type='Video', infoLabels = meta['infoLabels']);


            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(meta['url'], self.item);

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

            control.window.setProperty('script.trakt.ids', json.dumps(self.ids));

            self.keepPlaybackAlive();

            control.window.clearProperty('script.trakt.ids');


        except Exception as inst:
            logger.error(inst);
            
            return;
Example #27
0
    def play(self, name, url=None, windowedtrailer=0):
        try:
            url = self.worker(name, url)
            if not url:
                return

            title = control.infoLabel('listitem.title')
            if not title:
                title = control.infoLabel('listitem.label')
            icon = control.infoLabel('listitem.icon')

            item = control.item(path=url, iconImage=icon, thumbnailImage=icon)
            try:
                item.setArt({'icon': icon})
            except Exception:
                pass
            item.setInfo(type='video',
                         infoLabels={
                             'title': title,
                             'trailer': url
                         })
            item.setProperty('IsPlayable', 'true')

            # Switching over to resolvedUrl like Documentary Indexers and other areas are being moved to
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)
            if windowedtrailer == 1:
                # The call to the play() method is non-blocking. So we delay further script execution to keep the script alive at this spot.
                # Otherwise this script will continue and probably already be garbage collected by the time the trailer has ended.
                # Wait until playback starts. Less than 900ms is too short (on my box). Make it one second.
                control.sleep(1000)
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                # Close the dialog.
                # Same behaviour as the fullscreenvideo window when :
                # the media plays to the end,
                # or the user pressed one of X, ESC, or Backspace keys on the keyboard/remote to stop playback.
                control.execute("Dialog.Close(%s, true)" %
                                control.getCurrentDialogId)
        except Exception:
            pass
Example #28
0
    def play(self,
             imdb,
             name,
             tmdb='',
             season='',
             episode='',
             windowedtrailer=0):
        try:
            if not imdb or imdb == '0': raise Exception()

            item_dict = self.get_items(imdb, name)
            if not item_dict:
                raise Exception('IMDb_trailer failed, trying TMDb')
            elif item_dict == 'canceled':
                return
            url, title, plot = item_dict['video'], item_dict[
                'title'], item_dict['description']

            icon = control.infoLabel('ListItem.Icon')

            item = control.item(label=title, path=url)
            item.setArt({'icon': icon, 'thumb': icon, 'poster': icon})
            item.setInfo(type='video',
                         infoLabels={
                             'title': title,
                             'plot': plot
                         })
            item.setProperty('IsPlayable', 'true')
            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=item)

            if windowedtrailer == 1:
                control.sleep(1000)
                while control.player.isPlayingVideo():
                    control.sleep(1000)
                control.execute('Dialog.Close(%s, true)' %
                                control.getCurrentDialogId)
        except:
            log_utils.log('IMDb_trailer fail', 1)
            TMDb_trailer().play(tmdb, imdb, season, episode)
Example #29
0
    def run(self, title, year, season, episode, imdb, tvdb, url, meta):
        try:
            control.sleep(200)

            self.totalTime = 0 ; self.currentTime = 0

            self.content = 'movie' if season == None or episode == None else 'episode'

            self.title = title ; self.year = year
            self.name = urllib.quote_plus(title) + urllib.quote_plus(' (%s)' % year) if self.content == 'movie' else urllib.quote_plus(title) + urllib.quote_plus(' S%02dE%02d' % (int(season), int(episode)))
            self.name = urllib.unquote_plus(self.name)
            self.season = '%01d' % int(season) if self.content == 'episode' else None
            self.episode = '%01d' % int(episode) if self.content == 'episode' else None

            self.DBID = None
            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')

            self.offset = bookmarks().get(self.name, self.year)

            poster, thumb, meta = self.getMeta(meta)

            item = control.item(path=url)
            item.setArt({'icon': thumb, 'thumb': thumb, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
            item.setInfo(type='Video', infoLabels = meta)

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(url, item)

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

            control.window.setProperty('script.trakt.ids', json.dumps(self.ids))

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')
        except:
            return
Example #30
0
    def run(self, meta):

        try:

            control.sleep(200)

            self.totalTime = 0
            self.currentTime = 0
            self.offset = '0'

            self.content = meta['content']
            self.ids = meta['ids']
            self.show_id = meta['show_id']
            self.asset_id = meta['asset_id']

            if (meta['continueplayback'] == 0):
                self.offset = meta['progress']

            self.item = control.item(path=meta['url'])

            self.item.setArt(meta['art'])

            self.item.setInfo(type='Video', infoLabels=meta['infoLabels'])

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(meta['url'], self.item)

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

            control.window.setProperty('script.trakt.ids',
                                       json.dumps(self.ids))

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')

        except Exception as inst:
            logger.error(inst)

            return
Example #31
0
    def run(self, url, selectGame ,side):

        if selectGame == None or side == None:
            return control.resolve(int(sys.argv[1]), True, control.item(path=url))


        if not control.setting('droid') == 'true':

            command = ['java','-jar',jarFile,selectGame,side]

            startupinfo = None
            if os.name == 'nt':
                startupinfo = subprocess.STARTUPINFO()
                startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

            self.process = subprocess.Popen(command,
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT,
                startupinfo=startupinfo)

            if os.name == 'posix':
                success = False
                success, output = FuckNeulionClient.request_proxy_hack(selectGame,side)

        else:

            if os.name == 'posix':
                success = False


        control.sleep(1000)

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

        for i in range(0, 240):
            if self.isPlayingVideo(): break
            control.sleep(1000)
        while self.isPlayingVideo():
            control.sleep(1000)
        control.sleep(5000)
Example #32
0
    def play(self, title, year, imdb, tvdb, season, episode, tvshowtitle, premiered, meta, select):
        try:
            sysloc = [urlparse.urlparse(sys.argv[0]).netloc, '', 'plugin.video.live.streamspro', 'plugin.video.tinklepad']

            sysplg = True if control.infoLabel('Container.PluginName') in sysloc else False

            syslib = False #True if '.strm' in str(control.infoLabel('ListItem.FileName')) else False

            items = self.getSources(title, year, imdb, tvdb, season, episode, tvshowtitle, premiered)

            select = control.setting('hosts.mode') if select == None else select

            title = tvshowtitle if not tvshowtitle == None else title

            url = None


            if syslib == True or sysplg == False:
                items = []

            if control.window.getProperty('PseudoTVRunning') == 'True':
                return control.resolve(int(sys.argv[1]), True, control.item(path=str(self.sourcesDirect(items))))

            if len(items) > 0:

                if select == '1' and 'plugin' in control.infoLabel('Container.PluginName'):
                    control.window.clearProperty(self.itemProperty)
                    control.window.setProperty(self.itemProperty, json.dumps(items))

                    control.window.clearProperty(self.metaProperty)
                    control.window.setProperty(self.metaProperty, meta)

                    control.sleep(200)

                    return control.execute('Container.Update(%s?action=addItem&title=%s)' % (sys.argv[0], urllib.quote_plus(title.encode('utf-8'))))

                elif select == '0' or select == '1':
                    url = self.sourcesDialog(items)

                else:
                    url = self.sourcesDirect(items)


            if url == None:
                return self.errorForSources()

            meta = json.loads(meta)

            from resources.lib.modules.player import player
            player().run(title, year, season, episode, imdb, tvdb, url, meta)
        except:
            pass
Example #33
0
    def play(self, url, title, icon):
        url = urlparse.urljoin(self.base_main_link, url)

        try:
            html = client.request(url, timeout=10)
            vid_url = re.compile('file: "(.*?)"', re.DOTALL).findall(html)[0]
            if 'http:' in vid_url:
                vid_url = vid_url.replace('http:', 'https:')
            vid_url = '%s|User-Agent=%s' % (vid_url, client.randomagent())

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

            control.resolve(handle=int(sys.argv[1]),
                            succeeded=True,
                            listitem=li)
        except Exception:
            failure = traceback.format_exc()
            log_utils.log('B98 - Failed to Play: \n' + str(failure))
            return
Example #34
0
    def run(self, title, year, season, episode, imdb, tvdb, url, meta):
        try:
            control.sleep(200)

            self.totalTime = 0 ; self.currentTime = 0
            self.original_meta = meta
            self.content = 'movie' if season == None or episode == None else 'episode'
            self.title = title ; self.year = year
            self.name = '%s (%s)' % (title, year) if self.content == 'movie' else '%s S%02dE%02d' % (title, int(season), int(episode))
            self.season = '%01d' % int(season) if self.content == 'episode' else None
            self.episode = '%01d' % int(episode) if self.content == 'episode' else None

            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')

            self.offset = bookmarks().get(self.name, self.year)



            poster, thumb, meta = self.getMeta(meta)
            item = control.item(path=url)
            item.setArt({'icon': thumb, 'thumb': thumb, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
            item.setInfo(type='Video', infoLabels = meta)

            # control.do_block_check(False)

            if 'plugin' in control.infoLabel('Container.PluginName'):
                control.player.play(url, item)

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

            self.keepPlaybackAlive()

            
        except:
            return
Example #35
0
    def run(self, title, year, season, episode, imdb, tvdb, meta, url):
        try:
            self.loadingTime = time.time()
            self.totalTime = 0 ; self.currentTime = 0

            self.content = 'movie' if season == None or episode == None else 'episode'

            self.title = title ; self.year = year
            self.name = '%s (%s)' % (title, year) if self.content == 'movie' else '%s S%02dE%02d' % (title, int(season), int(episode))
            self.season = '%01d' % int(season) if self.content == 'episode' else None
            self.episode = '%01d' % int(episode) if self.content == 'episode' else None

            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
            self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')

            control.window.setProperty('script.trakt.ids', json.dumps(self.ids))

            self.getBookmark()

            poster, thumb, meta = self.getMeta(meta)
            item = control.item(path=url, iconImage='DefaultVideo.png', thumbnailImage=thumb)
            item.setInfo(type='Video', infoLabels = meta)
            try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
            except: pass
            item.setProperty('Video', 'true')
            item.setProperty('IsPlayable', 'true')

            #control.do_block_check(False)
            control.player.play(url, item)
            control.resolve(int(sys.argv[1]), True, item)

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')
        except:
            return
Example #36
0
    def play(self, title, year, imdb, tmdb, tvdb, season, episode, tvshowtitle, premiered, meta, url):
        try:
            if not control.addonInfo('id').lower() == control.infoLabel('Container.PluginName').lower():
                progress = True if control.setting('progress.dialog') == '1' else False
            else:
                control.resolve(int(sys.argv[1]), True, control.item(path=''))
                control.execute('Dialog.Close(okdialog)')
                progress = True

            if 'super.fav' in control.infoLabel('Container.PluginName'):
                return control.dialog.ok('Exodus', control.lang(30518).encode('utf-8'), '', '')

            self.sources = self.getSources(title, year, imdb, tmdb, tvdb, season, episode, tvshowtitle, premiered, progress=progress)
            self.sources = self.sourcesFilter()

            if control.window.getProperty('PseudoTVRunning') == 'True':
                return control.resolve(int(sys.argv[1]), True, control.item(path=str(self.sourcesDirect(progress=progress))))

            if self.sources == []: raise Exception()

            if url == 'direct://': url = self.sourcesDirect(progress=progress)
            elif url == 'dialog://': url = self.sourcesDialog(progress=progress)
            elif control.setting('autoplay') == 'false': url = self.sourcesDialog(progress=progress)
            else: url = self.sourcesDirect(progress=progress)

            if url == None: raise Exception()
            if url == 'close://': return

            control.sleep(200)

            if not tvshowtitle == None: title = tvshowtitle

            from resources.lib.modules.player import player
            player().run(title, year, season, episode, imdb, tmdb, tvdb, meta, url)

            return url
        except:
            control.infoDialog(control.lang(30501).encode('utf-8'))
Example #37
0
    def play(self, title, year, imdb, tvdb, season, episode, tvshowtitle, premiered, meta, select):
        try:
            url = None

            control.moderator()

            items = self.getSources(title, year, imdb, tvdb, season, episode, tvshowtitle, premiered)

            select = control.setting('hosts.mode') if select == None else select

            title = tvshowtitle if not tvshowtitle == None else title

            if control.window.getProperty('PseudoTVRunning') == 'True':
                return control.resolve(int(sys.argv[1]), True, control.item(path=str(self.sourcesDirect(items))))

            if len(items) > 0:

                if select == '1' and 'plugin' in control.infoLabel('Container.PluginName'):
                    control.window.clearProperty(self.itemProperty)
                    control.window.setProperty(self.itemProperty, json.dumps(items))

                    control.window.clearProperty(self.metaProperty)
                    control.window.setProperty(self.metaProperty, meta)

                    control.sleep(200)

                    return control.execute('Container.Update(%s?action=addItem&title=%s)' % (sys.argv[0], urllib.quote_plus(title)))

                elif select == '0' or select == '1':
                    url = self.sourcesDialog(items)

                else:
                    url = self.sourcesDirect(items)


            if url == None:
                return self.errorForSources()

            try: meta = json.loads(meta)
            except: pass

            from resources.lib.modules.player import player
            player().run(title, year, season, episode, imdb, tvdb, url, meta)
        except:
            pass
Example #38
0
    def play_source(self,
                    title,
                    year,
                    season,
                    episode,
                    imdb,
                    tmdb,
                    tvdb,
                    url,
                    meta,
                    select=None):
        try:
            if not url: raise Exception
            self.media_type = 'movie' if season is None or episode is None else 'episode'
            self.title = title
            self.year = str(year)
            if self.media_type == 'movie':
                self.name = '%s (%s)' % (title, self.year)
                self.season = None
                self.episode = None
            elif self.media_type == 'episode':
                self.name = '%s S%02dE%02d' % (title, int(season),
                                               int(episode))
                self.season = '%01d' % int(season)
                self.episode = '%01d' % int(episode)

            self.DBID = None
            self.imdb = imdb if imdb is not None else ''
            self.tmdb = tmdb if tmdb is not None else ''
            self.tvdb = tvdb if tvdb is not None else ''
            self.ids = {
                'imdb': self.imdb,
                'tmdb': self.tmdb,
                'tvdb': self.tvdb
            }

            ## - compare meta received to database and use largest(eventually switch to a request to fetch missing db meta for item)
            self.imdb_user = control.setting('imdb.user').replace('ur', '')
            self.tmdb_key = control.setting('tmdb.api.key')
            if not self.tmdb_key:
                self.tmdb_key = '3320855e65a9758297fec4f7c9717698'
            self.tvdb_key = control.setting('tvdb.api.key')
            if self.media_type == 'episode':
                self.user = str(self.imdb_user) + str(self.tvdb_key)
            else:
                self.user = str(self.tmdb_key)
            self.lang = control.apiLanguage()['tvdb']
            meta1 = meta
            meta2 = metacache.fetch([{
                'imdb': self.imdb,
                'tmdb': self.tmdb,
                'tvdb': self.tvdb
            }], self.lang, self.user)[0]
            if meta2 != self.ids:
                meta2 = dict((k, v) for k, v in control.iteritems(meta2)
                             if v is not None and v != '')
            if meta1 is not None:
                try:
                    if len(meta2) > len(meta1):
                        meta2.update(meta1)
                        meta = meta2
                    else:
                        meta = meta1
                except:
                    log_utils.error()
            else:
                meta = meta2 if meta2 != self.ids else meta1
            ##################
            self.meta = meta
            poster, thumb, season_poster, fanart, banner, clearart, clearlogo, discart, meta = self.getMeta(
                meta)
            runtime = meta.get('duration') if meta else 0
            self.offset = Bookmarks().get(name=self.name,
                                          imdb=imdb,
                                          tmdb=tmdb,
                                          tvdb=tvdb,
                                          season=season,
                                          episode=episode,
                                          year=self.year,
                                          runtime=runtime)
            item = control.item(path=url)
            item.setUniqueIDs(self.ids)
            if control.setting('disable.player.art') == 'true':
                for k in ('clearart', 'clearlogo', 'discart'):
                    meta.pop(k, None)
            if self.media_type == 'episode':
                if control.setting('disable.player.art') == 'true':
                    item.setArt({
                        'thumb': thumb,
                        'tvshow.poster': season_poster,
                        'season.poster': season_poster,
                        'tvshow.fanart': fanart
                    })
                else:
                    item.setArt({
                        'tvshow.clearart': clearart,
                        'tvshow.clearlogo': clearlogo,
                        'tvshow.discart': discart,
                        'thumb': thumb,
                        'tvshow.poster': season_poster,
                        'season.poster': season_poster,
                        'tvshow.fanart': fanart
                    })
            else:
                if control.setting('disable.player.art') == 'true':
                    item.setArt({
                        'thumb': thumb,
                        'poster': poster,
                        'fanart': fanart
                    })
                else:
                    item.setArt({
                        'clearart': clearart,
                        'clearlogo': clearlogo,
                        'discart': discart,
                        'thumb': thumb,
                        'poster': poster,
                        'fanart': fanart
                    })

            if 'castandart' in meta: item.setCast(meta.get('castandart', ''))
            item.setInfo(type='video', infoLabels=control.metadataClean(meta))
            if 'plugin' not in control.infoLabel(
                    'Container.PluginName') or select != '1':
                control.busy()
                control.resolve(int(argv[1]), True, item)
            elif select == '1':
                control.busy()
                control.player.play(url, item)
            control.homeWindow.setProperty('script.trakt.ids',
                                           jsdumps(self.ids))
            self.keepAlive()
            control.homeWindow.clearProperty('script.trakt.ids')
        except:
            log_utils.error()
            return control.cancelPlayback()
Example #39
0
    def run(self,
            title,
            year,
            season,
            episode,
            imdb,
            tvdb,
            tmdb,
            url,
            meta,
            id,
            directPlay=False):
        try:
            control.sleep(200)
            self.autoResume = control.setting('bookmarks.autoresume')
            self.nextup_timeout = control.setting('nextup.timeout')
            self.nextup_service = control.setting('nextup.service')
            self.next_episode = []
            self.seekStatus = False
            infoMeta = False
            self.filetype = 'unknown'
            self.watched = False

            self.totalTime = 0
            self.currentTime = 0
            self.lastProgress = 0
            self.original_meta = meta
            self.content = 'movie' if season == None or episode == None else 'episode'

            if self.content == 'movie' and imdb != '0' and imdb != None:
                self.filetype = 'movie'
                infoMeta = True
            else:
                infoMeta = False

            if self.content == 'episode' and imdb != '0' and imdb != None:
                self.filetype = 'episode'
                infoMeta = True

            elif self.content == 'episode' and tvdb != '0' and tvdb != None:
                self.filetype = 'episode'
                infoMeta = True

            else:
                infoMeta = False

            self.tvshowtitle = title
            self.title = title
            self.year = year

            if infoMeta == True:
                self.name = urllib.parse.quote_plus(
                    title) + urllib.parse.quote_plus(
                        ' (%s)' % year
                    ) if self.content == 'movie' else urllib.parse.quote_plus(
                        title) + urllib.parse.quote_plus(
                            ' S%02dE%02d' % (int(season), int(episode)))
            else:
                self.name = urllib.parse.quote_plus(title)
            self.bookMarkName = urllib.parse.unquote_plus(self.name)
            self.season = '%01d' % int(
                season) if self.content == 'episode' else None
            self.episode = '%01d' % int(
                episode) if self.content == 'episode' else None
            # self.Nextup = None
            self.DBID = None

            try:
                plot = meta['plot']
            except:
                plot = ''

            self.FileId = id
            self.imdb = imdb if not imdb == None else '0'
            self.tvdb = tvdb if not tvdb == None else '0'
            self.season = '%01d' % int(
                season) if self.content == 'episode' else None
            self.episode = '%01d' % int(
                episode) if self.content == 'episode' else None

            self.metaID = [self.imdb, self.tvdb]
            self.metaID = [i for i in self.metaID if not str(i) == '0']
            if self.content == 'movie': self.ids = {'imdb': self.imdb}
            else: self.ids = {'imdb': self.imdb, 'tvdb': self.imdb}
            self.ids = dict(
                (k, v) for k, v in self.ids.items() if not v == '0')

            poster, thumb, fanart, meta = self.getMeta(meta)

            item = control.item(path=url)
            self.infolabels = {"Title": title, "Plot": plot, "year": self.year}
            if self.content == 'episode' and infoMeta == True:
                self.infolabels.update({
                    "season": meta['season'],
                    "episode": meta['episode'],
                    "tvshowtitle": meta['tvshowtitle'],
                    "showtitle": meta['tvshowtitle'],
                    "tvdb": self.tvdb
                })
            self.original_meta = meta

            if self.content == 'episode':
                item.setArt({
                    'icon': thumb,
                    'thumb': fanart,
                    'poster': poster,
                    'fanart': fanart,
                    'tvshow.poster': poster,
                    'season.poster': thumb,
                    'tvshow.landscape': thumb
                })
            else:
                item.setArt({
                    'icon': thumb,
                    'thumb': thumb,
                    'poster': thumb,
                    'fanart': thumb
                })

            item.setInfo(type='Video', infoLabels=self.infolabels)

            control.player.play(url, item)

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

            control.window.setProperty('script.trakt.ids',
                                       json.dumps(self.ids))

            self.keepPlaybackAlive()

            control.window.clearProperty('script.trakt.ids')

        except:
            return
Example #40
0
	def run(self, title, year, season, episode, imdb, tvdb, url, meta, downloadType = None, downloadId = None, handle = None):
		try:
			control.sleep(200)

			self.totalTime = 0 ; self.currentTime = 0

			self.content = 'movie' if season == None or episode == None else 'episode'

			self.title = title
			self.year = year
			self.name = tools.Media.titleUniversal(metadata = meta)
			self.season = '%01d' % int(season) if self.content == 'episode' else None
			self.episode = '%01d' % int(episode) if self.content == 'episode' else None

			self.DBID = None
			self.imdb = imdb if not imdb == None else '0'
			self.tvdb = tvdb if not tvdb == None else '0'
			self.ids = {'imdb': self.imdb, 'tvdb': self.tvdb}
			self.ids = dict((k,v) for k, v in self.ids.iteritems() if not v == '0')

			self.offset = bookmarks().get(self.name, self.year)

			poster, thumb, meta = self.getMeta(meta)

			item = control.item(path=url)
			item.setArt({'icon': thumb, 'thumb': thumb, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster})
			item.setInfo(type='Video', infoLabels = meta)

			# Bubbles
			self.url = url
			self.item = item
			self.timeTotal = 0
			self.timeCurrent = 0
			self.timeProgress = 0
			self.sizeTotal = 0
			self.sizeCurrent = 0
			self.sizeProgress = 0
			self.dialog = None

			self.downloadCheck = False
			if downloadType and downloadId:
				self.file = xbmcvfs.File(url)
				self.download = downloader.Downloader(type = downloadType, id = downloadId)
				self.bufferCounter = 0
				self.bufferShow = True

				# Already check here, so that the player waits when the download is still queued/initialized.
				if not self._downloadCheck():
					return
			else:
				self.file = None
				self.download = None
				self.bufferCounter = None
				self.bufferShow = None

			self.handle = handle

			# Check debrid links
			from resources.lib.extensions import debrid
			debrid.valt()

			if 'plugin' in control.infoLabel('Container.PluginName'):
				xbmc.executebuiltin('Dialog.Close(notification,true)') # Hide the caching/download notification if still showing.
				self.play(url, item)
			self.keepPlaybackAlive()

			control.resolve(int(sys.argv[1]), True, item)
			control.window.setProperty('script.trakt.ids', json.dumps(self.ids))
			control.window.clearProperty('script.trakt.ids')
		except:
			tools.Logger.error()
Example #41
0
                                              hide_progress=hide_progress)
            else:
                link = Resolver().get(item_url['url'], link=selected_link)
                resolved = Resolver().process(link, name=item_url['name'], hide_progress=hide_progress)
            if not hide_progress:
                control.execute('Dialog.Close(busydialog)')
            if resolved:
                if playlist.size() == 0 and len(item_urls) > 1: play_now = True
                item = control.item(label=item_url['name'], iconImage=item_url['image'],
                                    thumbnailImage=item_url['image'])
                playlist.add(resolved, item)
                if play_now and not already_played and control.setting("background_list_queue") == "true":
                    play_now = False
                    already_played = True
                    control.player.play(playlist, item)
                    control.resolve(int(sys.argv[1]), True, item)
                break
            else:
                if not control.yesnoDialog(control.lang(30705).encode('utf-8'),
                                           "Would you like to try another stream?", ''):
                    break
                retrying = True
    xbmc.executebuiltin('Container.Refresh')
elif action == 'playQueue':
    from resources.lib.modules import control
    from resources.lib.indexers import bob

    playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
    if playlist.size() > 0:
        item = playlist[0]
        control.player.play(playlist, item)