예제 #1
0
def PlayTrailer(youtube_id):
    import YDStreamExtractor
    YDStreamExtractor.disableDASHVideo(True)
    vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
    if vid:
        stream_url = vid.streamURL()
        log("Youtube Trailer:" + stream_url)
        xbmc.executebuiltin("PlayMedia(%s)" % stream_url)
def showVideo(url):
    if url:
        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True)

        vid = YDStreamExtractor.getVideoInfo(url, quality=1)
        url = vid.streamURL()
    plugin.set_resolved_url({'path':url, 'info': {'type': 'Video'}})
예제 #3
0
def play_trailer(youtube_id="", listitem=None, popstack=False):
    if not listitem:
        listitem = xbmcgui.ListItem(xbmc.getLocalizedString(20410))
        listitem.setInfo('video', {'Title': xbmc.getLocalizedString(20410), 'Genre': 'Youtube Video'})
    import YDStreamExtractor
    YDStreamExtractor.disableDASHVideo(True)
    vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
    if vid:
        stream_url = vid.streamURL()
        PlayMedia(stream_url, listitem, popstack)
 def getVideo(self, episodePagePath):
     videoUrlRegex = re.compile(
         r"<iframe (?:.+?)\s+src=\"(?P<video_page>https*://www.youtube.com[-_a-zA-Z0-9\/]+)?")
     videoPageSource = super(Swarnavahini, self).getSource(episodePagePath)
     # print "video page source="+videoPageSource
     YDStreamExtractor.disableDASHVideo(True)
     video_urls = videoUrlRegex.findall(videoPageSource)
     url = video_urls[0]
     vid = YDStreamExtractor.getVideoInfo(url, quality=1)
     return vid.streamURL()
예제 #5
0
def PlayTrailer(youtube_id="", listitem=None, popstack=False):
    if not listitem:
        listitem =xbmcgui.ListItem ('Trailer')
        listitem.setInfo('video', {'Title': 'Trailer', 'Genre': 'Youtube Video'})
    import YDStreamExtractor
    YDStreamExtractor.disableDASHVideo(True)
    vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
    if vid:
        stream_url = vid.streamURL()
        log("Youtube Trailer:" + stream_url)
        PlayMedia(stream_url, listitem, popstack)
예제 #6
0
def PlayTrailer(youtube_id="", listitem=None, popstack=False):
    if not listitem:
        listitem = xbmcgui.ListItem(xbmc.getLocalizedString(20410))
        listitem.setInfo('video', {'Title': xbmc.getLocalizedString(20410), 'Genre': 'Youtube Video'})
    import YDStreamExtractor
    YDStreamExtractor.disableDASHVideo(True)
    vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
    if vid:
        stream_url = vid.streamURL()
        log("Youtube Trailer:" + stream_url)
        PlayMedia(stream_url, listitem, popstack)
예제 #7
0
def playVideo(name, url):
        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True) #Kodi (XBMC) only plays the video for DASH streams, so you don't want these normally. Of course these are the only 1080p streams on YouTube

#        url = "https://www.youtube.com/watch?v=" + url #a youtube ID will work as well and of course you could pass the url of another site
        vid = YDStreamExtractor.getVideoInfo(url,quality=1) #quality is 0=SD, 1=720p, 2=1080p and is a maximum
        stream_url = vid.streamURL() #This is what Kodi (XBMC) will play
        print "stream_url =", stream_url
        img = " "
        listitem = xbmcgui.ListItem(name, iconImage=img, thumbnailImage=img)
        playfile = xbmc.Player()
        playfile.play(stream_url, listitem)
예제 #8
0
    def resolve(self, url):
        html = client.request(url)
        soup = webutils.bs(html)
        video = soup.find('iframe')['src']
        if 'youtube' in video:
            yt_id = self.yt_video_id(video)
            l = 'http://www.youtube.com/watch?v=' + yt_id

            import YDStreamExtractor
            YDStreamExtractor.disableDASHVideo(True)
            vid = YDStreamExtractor.getVideoInfo(l, quality=1)
            resolved = vid.streamURL()
            return resolved
예제 #9
0
 def playYoutubeVideo(self, youtube_id="", listitem=None, popstack=True):
     if not listitem:
         listitem = xbmcgui.ListItem(xbmc.getLocalizedString(20410))
         listitem.setInfo('video', {'Title': xbmc.getLocalizedString(20410), 'Genre': 'Youtube Video'})
     import YDStreamExtractor
     YDStreamExtractor.disableDASHVideo(True)
     if youtube_id:
         vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
         if vid:
             stream_url = vid.streamURL()
             self.play(stream_url, listitem)
     else:
         Notify("no youtube id found")
예제 #10
0
파일: n1.py 프로젝트: kevintone/tdbaddon
	def resolve(self,url):
		html = client.request(url)
		soup = webutils.bs(html)
		video=soup.find('iframe')['src']
		if 'youtube' in video:
			yt_id = self.yt_video_id(video)
			l = 'http://www.youtube.com/watch?v=' + yt_id

			import YDStreamExtractor
			YDStreamExtractor.disableDASHVideo(True) 
			vid = YDStreamExtractor.getVideoInfo(l,quality=1) 
			resolved = vid.streamURL() 
			return resolved
예제 #11
0
def playVideo(name, url):
        pass#print"In playVideo url =", url
        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True) #Kodi (XBMC) only plays the video for DASH streams, so you don't want these normally. Of course these are the only 1080p streams on YouTube
#        url = "https://www.youtube.com/watch?v=" + url #a youtube ID will work as well and of course you could pass the url of another site
        vid = YDStreamExtractor.getVideoInfo(url,quality=1) #quality is 0=SD, 1=720p, 2=1080p and is a maximum
        stream_url = vid.streamURL() #This is what Kodi (XBMC) will play
        pass#print"stream_url =", stream_url
        n1 = stream_url.find("|", 0)
        stream_url = stream_url[:n1]
        pass#print"stream_url 2=", stream_url
        img = " "
        playfile = xbmc.Player()
        playfile.play(stream_url)        
예제 #12
0
 def playYoutubeVideo(self, youtube_id="", listitem=None, popstack=True):
     if not listitem:
         listitem = xbmcgui.ListItem(xbmc.getLocalizedString(20410))
         listitem.setInfo('video', {'Title': xbmc.getLocalizedString(20410), 'Genre': 'Youtube Video'})
     import YDStreamExtractor
     YDStreamExtractor.disableDASHVideo(True)
     if youtube_id:
         vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
         if vid:
             stream_url = vid.streamURL()
             log("Youtube Trailer:" + stream_url)
             self.play(stream_url, listitem)
     else:
         Notify("no youtube id found")
 def playYoutubeVideo(self, youtube_id="", listitem=None, popstack=True):
     if not listitem:
         listitem = xbmcgui.ListItem ('Trailer')
         listitem.setInfo('video', {'Title': listitem.getProperty('Label'), 'Plot': listitem.getProperty('Description'), 'Genre': 'Youtube Video'})
     import YDStreamExtractor
     YDStreamExtractor.disableDASHVideo(True)
     if youtube_id:
         vid = YDStreamExtractor.getVideoInfo(youtube_id, quality=1)
         if vid:
             stream_url = vid.streamURL()
             log("Youtube Trailer:" + stream_url)
             self.play(stream_url, listitem)
     else:
         Notify("no youtube id found")
예제 #14
0
def playVideo(name, url):
    import YDStreamExtractor
    YDStreamExtractor.disableDASHVideo(
        True
    )  #Kodi (XBMC) only plays the video for DASH streams, so you don't want these normally. Of course these are the only 1080p streams on YouTube

    #        url = "https://www.youtube.com/watch?v=" + url #a youtube ID will work as well and of course you could pass the url of another site
    vid = YDStreamExtractor.getVideoInfo(
        url, quality=1)  #quality is 0=SD, 1=720p, 2=1080p and is a maximum
    stream_url = vid.streamURL()  #This is what Kodi (XBMC) will play
    print "stream_url =", stream_url
    img = " "
    listitem = xbmcgui.ListItem(name, iconImage=img, thumbnailImage=img)
    playfile = xbmc.Player()
    playfile.play(stream_url, listitem)
예제 #15
0
	def youtubeDLDownload(self,vid,path,target=None):
		import YDStreamExtractor as StreamExtractor 
		import YDStreamUtils as StreamUtils	
		if not target: target = self.chooseDirectory()
		if not target: return
		
		with StreamUtils.DownloadProgress() as prog:
			try:
				StreamExtractor.disableDASHVideo(True)
				StreamExtractor.setOutputCallback(prog)
				result = StreamExtractor.downloadVideo(vid,path)
			finally:
				StreamExtractor.setOutputCallback(None)
		if not result and result.status != 'canceled':
				xbmcgui.Dialog().ok(T(32103),'[CR]',result.message)
		elif result:
			xbmcgui.Dialog().ok(T(32062),T(32104),'[CR]',result.filepath)
		if target:
			xbmcvfs.copy(result.filepath,os.path.join(target,os.path.basename(result.filepath)))
			xbmcvfs.delete(result.filepath)
예제 #16
0
 def youtubeDLDownload(self,vid,path,target=None):
     import YDStreamExtractor as StreamExtractor 
     import YDStreamUtils as StreamUtils    
     if not target: target = self.chooseDirectory()
     if not target: return
     
     with StreamUtils.DownloadProgress() as prog:
         try:
             StreamExtractor.disableDASHVideo(True)
             StreamExtractor.setOutputCallback(prog)
             result = StreamExtractor.downloadVideo(vid,path)
         finally:
             StreamExtractor.setOutputCallback(None)
     if not result and result.status != 'canceled':
             xbmcgui.Dialog().ok(T(32103),'[CR]',result.message)
     elif result:
         xbmcgui.Dialog().ok(T(32062),T(32104),'[CR]',result.filepath)
     if target:
         xbmcvfs.copy(result.filepath,os.path.join(target,os.path.basename(result.filepath)))
         xbmcvfs.delete(result.filepath)
예제 #17
0
    def resolve(self, url):
        html = client.request(url)
        soup = webutils.bs(html)

        try:
            rreg = '<param name="playerID" value="(.+?)" /><param name="@videoPlayer" value="(.+?)" />'
            ids = re.compile(rreg).findall(html)[0]
            l = 'http://c.brightcove.com/services/viewer/federated_f9?&width=690&height=388&flashID=bcExperienceObj0&bgcolor=%23FFFFFF&ConvivaConfig.events=%20%3CConvivaEventsMap%3E%20%3Cevent%20name%3D%22mediaPlay%22%20module%3D%22videoPlayer%22%20eventType%3D%22mediaPlay%22%3E%20%3C%2Fevent%3E%20%3Cevent%20name%3D%22mediaError%22%20module%3D%22videoPlayer%22%20eventType%3D%22mediaError%22%3E%20%3Cattr%20key%3D%22errorCode%22%20type%3D%22eventField%22%20value%3D%22code%22%2F%3E%20%3C%2Fevent%3E%20%3C%2FConvivaEventsMap%3E%20&playerID=' + ids[
                0] + '&%40videoPlayer=' + ids[
                    1] + '&isVid=true&isUI=true&playerKey=AQ~~%2CAAAA1DWaSzk~%2CCZSkTksiPhQqITLsbi03E4KbEIFdh_zL'

        except:
            link = soup.find('iframe',
                             {'class': 'media-youtube-player'})['src']
            yt_id = self.yt_video_id(link)
            l = 'http://www.youtube.com/watch?v=' + yt_id

        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True)
        vid = YDStreamExtractor.getVideoInfo(l, quality=1)
        resolved = vid.streamURL()
        return resolved
예제 #18
0
파일: default.py 프로젝트: bialagary/mw
        downloader.download(filename, params)

elif mode[0] == 'open_option':
    url = args['url'][0]
    img = args['img'][0]
    help = args['help'][0]
    title = get_title(help)
    url = url.replace('temporarylink.net', 'moevideo.net')
    link, need = getlink_nbahd(url)
    if need:
        try:
            import urlresolver
            link = urlresolver.resolve(link)
        except:
            import YDStreamExtractor
            YDStreamExtractor.disableDASHVideo(True)
            vid = YDStreamExtractor.getVideoInfo(link, quality=1)
            link = vid.streamURL()

    li = xbmcgui.ListItem(title, iconImage=img)
    li.setThumbnailImage(img)
    xbmc.Player().play(listitem=li, item=link)

elif mode[0] == 'teams':
    team_list = get_teams()
    for i in range(len(team_list)):
        link = team_list[i][1]
        name = team_list[i][0]
        img = team_list[i][2]

        url = build_url({
예제 #19
0
    def getDirectEpisodeLink(self, episode_dirty_link, hosting):
        """
        Gets a dirty link of an episode, returns direct link to
        a video and subtitle link if exist (for smotret-anime).
        """
        # TODO: выбор разрешения.
        with requests.Session() as s:
            s.headers.update(self.headers)
            r = s.get(episode_dirty_link)
            soup = BeautifulSoup(r.text, 'html.parser')
            player = soup.find('div', class_='video-link').a.get('href')

            # для smotret-anime нужны куки. Получение оных
            print('HOSTING IS', hosting)
            if hosting == 'smotret-anime.ru':
                try:
                    with open(os.path.join(userdata, u'cookies.pickle'),
                              'rb') as f:
                        cookies = pickle.load(f)
                        cookies['ads-blocked'] = '0'
                        s.cookies['watchedPromoVideo'] = '1531058305789'
                        s.cookies['viboomShown2'] = '1531058284737'
                except Exception as e:
                    print('CANT OPEN FILE, EXCEPTION:', e)
                    r = s.get(player)
                    s.cookies['ads-blocked'] = '0'
                    s.cookies['watchedPromoVideo'] = '1531058305789'
                    s.cookies['viboomShown2'] = '1531058284737'
                    cookies = s.cookies
                r = s.get(player, cookies=cookies)
                print('COOKIES IS', cookies)
                print('PROFILE DIR IS:', userdata)
                with open(os.path.join(userdata, u'cookies.pickle'),
                          'wb') as f:
                    pickle.dump(s.cookies, f)
            else:
                r = s.get(player)
            soup = BeautifulSoup(r.text, 'html.parser')

        if hosting == 'smotret-anime.ru':
            middle_serv = 'http://127.0.0.1:8900/playlist.m3u8?'
            page_url = soup.find('video', {
                'id': 'main-video'
            }).get('data-page-url')
            try:
                srcs = soup.find('video', {'id': 'main-video'})['data-sources']
            except TypeError:
                return None
            try:
                ass = soup.find('video',
                                {'id': 'main-video'})['data-subtitles']
                ass = 'https://smotret-anime.ru/' + ass
            except TypeError:
                ass = None

            print('src is', srcs)
            srcs_json = json.loads(srcs)
            print('json_is', srcs_json)
            urls = srcs_json[0]['urls']  # 0 здесь значит лучшее кач-во
            if len(urls) > 1:  # если ссылок на эп. больше чем 1
                serv_request = middle_serv + '+'.join(urls)
                return serv_request, ass

            elif len(urls) == 1:
                if re.search(r'\.big\-sword', urls[0]):
                    #rpage = requests.get(page_url, headers=self.headers)
                    #sasoup = BeautifulSoup(rpage.text, 'html5lib')
                    #cards = sasoup.find('div', {
                    #    'class': 'card-content m-translation-view-download'})
                    #if cards:
                    #    url = cards.find_all('a')[0].get('href')
                    #    return url, ass
                    serv_request = middle_serv + urls[0]
                    return serv_request, ass
                return urls[0], ass

            else:
                return None

        elif hosting == 'vk.com':
            YDStreamExtractor.disableDASHVideo(True)
            vid = YDStreamExtractor.getVideoInfo(player, quality=1)
            if not vid:
                return None
            stream_url = vid.streamURL()
            print('RUTUBE STREAM URL', stream_url)
            return (stream_url, None)

        elif hosting == 'sibnet.ru':
            sibnet = 'http://video.sibnet.ru'
            script = soup.find('script',
                               type='text/javascript',
                               charset=None,
                               src=None).text
            m3u8_link = re.findall(r',{src: "(.+.m3u8)", type', script)
            if not m3u8_link:
                return None
            surl = sibnet + m3u8_link[0]
            return (surl, None)

#        elif hosting == 'myvi.ru':
#            script = soup.find_all('script')[-1]
#            dirty_url = re.findall(r'v=(.+?)\\', script.text)[0]
#            murl = urllib.unquote(dirty_url)
#            return murl

        elif hosting == 'animedia.tv':
            # Как-нибудь в следующий раз
            return None

        elif hosting == 'mail.ru':
            return None

        elif hosting == 'sovetromantica.com':
            script = soup.body.script
            link = re.search(r'player\.src\(.+?\)', script.string)
            url = None
            if link:
                url = link.group()
                url = url.strip('player.src(\'').rstrip('\')')
            else:
                src = soup.body.video.source
                url = src.get('src') if src else None
            if not url:
                return None
            return (url, None)

        else:
            return None
예제 #20
0
파일: balkanje.py 프로젝트: bialagary/mw
def download_epizodu(title,url):
    try:
        soup=get_soup(url)
        tag=soup.find('div',{'id':'Playerholder'})
        frames=tag.findAll('iframe')
        if len(frames)>1:
            sources=[]
            for i in range(len(frames)):
                sources+=['%s. dio'%(i+1)]
            dialog = xbmcgui.Dialog()
            index = dialog.select('Odaberite:', sources)
            li = xbmcgui.ListItem('%s'%title)
            li.setInfo('video', { 'title': '%s'%title })
            if index>-1:
                link=frames[index]
                title=title+' (%s od %s)'%(index+1,len(frames))

                
                link=link['src']
                try:
                    from lib.resolvers import dailymotion
                    resolved=dailymotion.resolve(link)
                    resolved=resolved[0]['url']
        
                except:

                    try:
                        import urlresolver
                        resolved=urlresolver.resolve(link)
                    except:
                        try:
                            import YDStreamExtractor
                            YDStreamExtractor.disableDASHVideo(True) 
                            vid = YDStreamExtractor.getVideoInfo(link,quality=1) 
                            resolved = vid.streamURL() 
                        except:
                            pass
                
            

            
                download(title,resolved)

                return
            else:
                return

    except:
        pass

    try:   
        soup=get_soup(url)
        link=soup.findAll('iframe')[1]['src']
       
    except:

        try:
            soup=get_soup(url)
            link=soup.findAll('iframe')[1]['src']
          
        except:
            try:
                soup=get_soup(url)
                try:
                    link=soup.find('div',{'id':'Playerholder'}).find('embed')['src']
                except:
                    link=soup.find('div',{'id':'Playerholder'}).find('iframe')['src']
               
            except:
                html=read_url(url).lower()
                ind=html.index('player.src')
                html=html[ind:ind+80]
                
                reg=r'watch\?v=(.+?)"'
                link=re.findall(re.compile(reg),html)[0]
                
                link='http://www.youtube.com/watch?v=' + link


    if 'moevideo' in link or 'playreplay' in link :
        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True) 
        vid = YDStreamExtractor.getVideoInfo(link,quality=1) 
        resolved = vid.streamURL() 
    
    else:          
        try:
            from lib.resolvers import dailymotion
            resolved=dailymotion.resolve(link)
            resolved=resolved[0]['url']

        except:

            try:
                import urlresolver
                resolved=urlresolver.resolve(link)
            except:
                try:
                    import YDStreamExtractor
                    YDStreamExtractor.disableDASHVideo(True) 
                    vid = YDStreamExtractor.getVideoInfo(link,quality=1) 
                    resolved = vid.streamURL() 
                except:
                    pass
            

    download(title,resolved)
예제 #21
0
    def _StartInfoActions(self):
        for info in self.infos:
            ########### Images #####################
            if info == 'xkcd':
                passDataToSkin('XKCD', GetXKCDInfo(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'flickr':
                passDataToSkin('Flickr', GetFlickrImages(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'cyanide':
                passDataToSkin('CyanideHappiness', GetCandHInfo(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'dailybabes':
                passDataToSkin('DailyBabes', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('DailyBabes', GetDailyBabes(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'dailybabe':
                passDataToSkin('DailyBabe', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('DailyBabe', GetDailyBabes(single=True), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            ########### Audio #####################
            elif info == 'discography':
                passDataToSkin('Discography', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                Discography = GetDiscography(self.ArtistName)
                if len(Discography) == 0:
                    Discography = GetArtistTopAlbums(self.Artist_mbid)
                passDataToSkin('Discography', Discography, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'mostlovedtracks':
                passDataToSkin('MostLovedTracks', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('MostLovedTracks', GetMostLovedTracks(self.ArtistName), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'artistdetails':
                passDataToSkin('Discography', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('MusicVideos', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                ArtistDetails = GetArtistDetails(self.ArtistName)
                if "audiodbid" in ArtistDetails:
                    MusicVideos = GetMusicVideos(ArtistDetails["audiodbid"])
                    passDataToSkin('MusicVideos', MusicVideos, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('Discography', GetDiscography(self.ArtistName), self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passHomeDataToSkin(ArtistDetails, self.prop_prefix)
            elif info == 'albuminfo':
                if self.id:
                    AlbumDetails = GetAlbumDetails(self.id)
                    Trackinfo = GetTrackDetails(self.id)
                    passHomeDataToSkin(AlbumDetails, self.prop_prefix)
                    passDataToSkin('Trackinfo', Trackinfo, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'albumshouts':
                passDataToSkin('Shout', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.ArtistName and self.AlbumName:
                    passDataToSkin('Shout', GetAlbumShouts(self.ArtistName, self.AlbumName), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'artistshouts':
                passDataToSkin('Shout', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.ArtistName:
                    passDataToSkin('Shout', GetArtistShouts(self.ArtistName), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'topartists':
                passDataToSkin('TopArtists', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('TopArtists', GetTopArtists(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'hypedartists':
                passDataToSkin('HypedArtists', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('HypedArtists', GetHypedArtists(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            ### RottenTomatoesMovies #################################################################################
            elif info == 'intheaters':
                passDataToSkin('InTheatersMovies', GetRottenTomatoesMovies("movies/in_theaters"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'boxoffice':
                passDataToSkin('BoxOffice', GetRottenTomatoesMovies("movies/box_office"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'opening':
                passDataToSkin('Opening', GetRottenTomatoesMovies("movies/opening"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'comingsoon':
                passDataToSkin('ComingSoonMovies', GetRottenTomatoesMovies("movies/upcoming"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'toprentals':
                passDataToSkin('TopRentals', GetRottenTomatoesMovies("dvds/top_rentals"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'currentdvdreleases':
                passDataToSkin('CurrentDVDs', GetRottenTomatoesMovies("dvds/current_releases"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'newdvdreleases':
                passDataToSkin('NewDVDs', GetRottenTomatoesMovies("dvds/new_releases"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'upcomingdvds':
                passDataToSkin('UpcomingDVDs', GetRottenTomatoesMovies("dvds/upcoming"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            ### The MovieDB ##########################################################################################
            elif info == 'incinemas':
                passDataToSkin('InCinemasMovies', GetMovieDBMovies("now_playing"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'upcoming':
                passDataToSkin('UpcomingMovies', GetMovieDBMovies("upcoming"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'topratedmovies':
                passDataToSkin('TopRatedMovies', GetMovieDBMovies("top_rated"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'popularmovies':
                passDataToSkin('PopularMovies', GetMovieDBMovies("popular"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'airingtodaytvshows':
                passDataToSkin('AiringTodayTVShows', GetMovieDBTVShows("airing_today"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'onairtvshows':
                passDataToSkin('OnAirTVShows', GetMovieDBTVShows("on_the_air"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'topratedtvshows':
                passDataToSkin('TopRatedTVShows', GetMovieDBTVShows("top_rated"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'populartvshows':
                passDataToSkin('PopularTVShows', GetMovieDBTVShows("popular"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'similarmovies':
                passDataToSkin('SimilarMovies', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.id:
                    MovieId = self.id
                elif self.dbid and (int(self.dbid) > -1):
                    MovieId = GetImdbID("movie", self.dbid)
                    log("IMDBId from local DB:" + str(MovieId))
                else:
                    MovieId = ""
                if MovieId:
                    passDataToSkin('SimilarMovies', GetSimilarMovies(MovieId), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'studio':
                passDataToSkin('StudioInfo', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.studio:
                    CompanyId = SearchforCompany(self.studio)
                    passDataToSkin('StudioInfo', GetCompanyInfo(CompanyId), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'set':
                passDataToSkin('MovieSetItems', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.dbid and not "show" in str(self.type):
                    name = GetMovieSetName(self.dbid)
                    if name:
                        self.setid = SearchForSet(name)
                if self.setid:
                    SetData = GetSetMovies(self.setid)
                    if SetData:
                        passDataToSkin('MovieSetItems', SetData, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'movielists':
                passDataToSkin('MovieLists', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.dbid:
                    movieid = GetImdbID("movie", self.dbid)
                    log("MovieDB Id:" + str(movieid))
                    if movieid:
                        passDataToSkin('MovieLists', GetMovieLists(movieid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'keywords':
                passDataToSkin('Keywords', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.dbid:
                    movieid = GetImdbID("movie", self.dbid)
                    log("MovieDB Id:" + str(movieid))
                    if movieid:
                        passDataToSkin('Keywords', GetMovieKeywords(movieid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'popularpeople':
                passDataToSkin('PopularPeople', GetPopularActorList(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'extendedinfo':
                from DialogVideoInfo import DialogVideoInfo
                if self.handle:
                    xbmcplugin.endOfDirectory(self.handle)
                dialog = DialogVideoInfo(u'script-%s-DialogVideoInfo.xml' % __addonname__, __cwd__, id=self.id, dbid=self.dbid, imdbid=self.imdbid, name=self.name)
                dialog.doModal()
            elif info == 'extendedactorinfo':
                    from DialogActorInfo import DialogActorInfo
                    dialog = DialogActorInfo(u'script-%s-DialogInfo.xml' % __addonname__, __cwd__, id=self.id, name=self.name)
                    dialog.doModal()

            elif info == 'extendedtvinfo':
                if self.id:
                    tvshowinfo = GetTVShowInfo(self.id)
                    if tvshowinfo:
             #           prettyprint(tvshowinfo)
                        passHomeDataToSkin(tvshowinfo[0], self.prop_prefix)
            elif info == 'seasoninfo':
                passDataToSkin("SeasonVideos", None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.tvshow and self.season:
                    seasoninfo, videos = GetSeasonInfo(self.tvshow, self.season)
                    passHomeDataToSkin(seasoninfo, self.prop_prefix)
                    passDataToSkin("SeasonVideos", videos, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'directormovies':
                passDataToSkin('DirectorMovies', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.director:
                    directorid = GetPersonID(self.director)
                    if directorid:
                        passDataToSkin('DirectorMovies', GetDirectorMovies(directorid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'writermovies':
                passDataToSkin('WriterMovies', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.writer and not self.writer.split(" / ")[0] == self.director.split(" / ")[0]:
                    writerid = GetPersonID(self.writer)
                    if writerid:
                        passDataToSkin('WriterMovies', GetDirectorMovies(writerid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'similarmoviestrakt':
                passDataToSkin('SimilarTrakt', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if (self.id or self.dbid):
                    if self.dbid:
                        movieid = GetImdbID("movie", self.dbid)
                    else:
                        movieid = self.id
                    passDataToSkin('SimilarMovies', GetSimilarTrakt("movie", movieid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'similartvshowstrakt':
                passDataToSkin('SimilarTrakt', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if (self.id or self.dbid):
                    if self.dbid:
                        if self.type == "episode":
                            tvshowid = GetImdbIDfromEpisode(self.dbid)
                        else:
                            tvshowid = GetImdbID("tvshow", self.dbid)
                    else:
                        tvshowid = self.id
                    passDataToSkin('SimilarTVShows', GetSimilarTrakt("show", tvshowid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'airingshows':
                passDataToSkin('AiringShows', GetTraktCalendarShows("shows"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'premiereshows':
                passDataToSkin('PremiereShows', GetTraktCalendarShows("premieres"), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'trendingshows':
                passDataToSkin('TrendingShows', GetTrendingShows(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'trendingmovies':
                passDataToSkin('TrendingMovies', GetTrendingMovies(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'similarartistsinlibrary':
                passDataToSkin('SimilarArtists', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.Artist_mbid:
                    passDataToSkin('SimilarArtists', GetSimilarArtistsInLibrary(self.Artist_mbid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'artistevents':
                passDataToSkin('ArtistEvents', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.Artist_mbid:
                    passDataToSkin('ArtistEvents', GetEvents(self.Artist_mbid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'youtubesearch':
                homewindow.setProperty('%sSearchValue' % self.prop_prefix, self.id)  # set properties
                passDataToSkin('YoutubeSearch', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.id:
                    passDataToSkin('YoutubeSearch', GetYoutubeSearchVideosV3(self.id, self.hd, self.orderby), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'youtubeplaylist':
                passDataToSkin('YoutubePlaylist', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.id:
                    passDataToSkin('YoutubePlaylist', GetYoutubePlaylistVideos(self.id), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'youtubeusersearch':
                passDataToSkin('YoutubeUserSearch', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.id:
                    passDataToSkin('YoutubeUserSearch', GetYoutubeUserVideos(self.id), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'nearevents':
                passDataToSkin('NearEvents', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('NearEvents', GetNearEvents(self.tag, self.festivalsonly, self.lat, self.lon, self.location, self.distance), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'trackinfo':
                homewindow.setProperty('%sSummary' % self.prop_prefix, "")  # set properties
                if self.ArtistName and self.TrackName:
                    TrackInfo = GetTrackInfo(self.ArtistName, self.TrackName)
                    homewindow.setProperty('%sSummary' % self.prop_prefix, TrackInfo["summary"])  # set properties
            elif info == 'venueevents':
                passDataToSkin('VenueEvents', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                if self.location:
                    self.id = GetVenueID(self.location)
                if self.id:
                    passDataToSkin('VenueEvents', GetVenueEvents(self.id), self.prop_prefix, self.window, self.control, self.handle, self.limit)
                else:
                    Notify("Error", "Could not find venue")
            elif info == 'topartistsnearevents':
                passDataToSkin('TopArtistsNearEvents', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                artists = GetXBMCArtists()
                events = GetArtistNearEvents(artists["result"]["artists"][0:49])
                passDataToSkin('TopArtistsNearEvents', events, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'channels':
                channels = create_channel_list()
          #      prettyprint(channels)
            elif info == 'favourites':
                if self.id:
                    favourites = GetFavouriteswithType(self.id)
                else:
                    favourites = GetFavourites()
                    homewindow.setProperty('favourite.count', str(len(favourites)))
                    if len(favourites) > 0:
                        homewindow.setProperty('favourite.1.name', favourites[-1]["Label"])
                passDataToSkin('Favourites', favourites, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'json':
                passDataToSkin('RSS', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                videos = GetYoutubeVideos(self.feed, self.prop_prefix)
                passDataToSkin('RSS', videos, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'similarlocal' and self.dbid:
                passDataToSkin('SimilarLocalMovies', None, self.prop_prefix, self.window, self.control, self.handle, self.limit)
                passDataToSkin('SimilarLocalMovies', GetSimilarFromOwnLibrary(self.dbid), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'iconpanel':
                passDataToSkin('IconPanel', GetIconPanel(1), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'weather':
                passDataToSkin('WeatherImages', GetWeatherImages(), self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'updatexbmcdatabasewithartistmbidbg':
                SetMusicBrainzIDsForAllArtists(False, False)
            elif info == 'setfocus':
                self.control = ""  # workaround to avoid breaking PlayMedia
                xbmc.executebuiltin("SetFocus(22222)")
            elif info == 'playliststats':
                GetPlaylistStats(self.id)
            elif info == "sortletters":
                listitems = GetSortLetters(self.path, self.id)
                passDataToSkin('SortLetters', listitems, self.prop_prefix, self.window, self.control, self.handle, self.limit)
            elif info == 'slideshow':
                windowid = xbmcgui.getCurrentWindowId()
                Window = xbmcgui.Window(windowid)
                focusid = Window.getFocusId()
                itemlist = Window.getFocus()
                numitems = itemlist.getSelectedPosition()
                log("items:" + str(numitems))
                for i in range(0, numitems):
                    Notify(item.getProperty("Image"))
            elif info == 'action':
                xbmc.executebuiltin(self.id)
            elif info == "youtubevideo":
                if self.id:
                    self.control = ""  # workaround to avoid breaking PlayMedia
                    import YDStreamExtractor
                    YDStreamExtractor.disableDASHVideo(True)
                    vid = YDStreamExtractor.getVideoInfo(self.id, quality=1)
                    stream_url = vid.streamURL()
                    log("Youtube Trailer:" + stream_url)
                    xbmc.executebuiltin("PlayMedia(%s)" % stream_url)
            elif info == 'playtrailer':
                xbmc.executebuiltin("ActivateWindow(busydialog)")
                xbmc.sleep(500)
                if self.id:
                    MovieId = self.id
                elif self.dbid and (int(self.dbid) > -1):
                    MovieId = GetImdbID("movie", self.dbid)
                    log("MovieDBID from local DB:" + str(MovieId))
                elif self.imdbid:
                    MovieId = GetMovieDBID(self.imdbid)
                else:
                    MovieId = ""
                if MovieId:
                    trailer = GetTrailer(MovieId)
                    xbmc.executebuiltin("Dialog.Close(busydialog)")
                    if trailer:
                        xbmc.executebuiltin("PlayMedia(%s)" % trailer)
                        self.control = ""  # workaround to avoid breaking PlayMedia
                    else:
                        Notify("Error", "No Trailer available")
            elif info == 'updatexbmcdatabasewithartistmbid':
                SetMusicBrainzIDsForAllArtists(True, False)
예제 #22
0
파일: balkanje.py 프로젝트: bialagary/mw
def download_epizodu(title, url):
    try:
        soup = get_soup(url)
        tag = soup.find('div', {'id': 'Playerholder'})
        frames = tag.findAll('iframe')
        if len(frames) > 1:
            sources = []
            for i in range(len(frames)):
                sources += ['%s. dio' % (i + 1)]
            dialog = xbmcgui.Dialog()
            index = dialog.select('Odaberite:', sources)
            li = xbmcgui.ListItem('%s' % title)
            li.setInfo('video', {'title': '%s' % title})
            if index > -1:
                link = frames[index]
                title = title + ' (%s od %s)' % (index + 1, len(frames))

                link = link['src']
                try:
                    from lib.resolvers import dailymotion
                    resolved = dailymotion.resolve(link)
                    resolved = resolved[0]['url']

                except:

                    try:
                        import urlresolver
                        resolved = urlresolver.resolve(link)
                    except:
                        try:
                            import YDStreamExtractor
                            YDStreamExtractor.disableDASHVideo(True)
                            vid = YDStreamExtractor.getVideoInfo(link,
                                                                 quality=1)
                            resolved = vid.streamURL()
                        except:
                            pass

                download(title, resolved)

                return
            else:
                return

    except:
        pass

    try:
        soup = get_soup(url)
        link = soup.findAll('iframe')[1]['src']

    except:

        try:
            soup = get_soup(url)
            link = soup.findAll('iframe')[1]['src']

        except:
            try:
                soup = get_soup(url)
                try:
                    link = soup.find('div', {
                        'id': 'Playerholder'
                    }).find('embed')['src']
                except:
                    link = soup.find('div', {
                        'id': 'Playerholder'
                    }).find('iframe')['src']

            except:
                html = read_url(url).lower()
                ind = html.index('player.src')
                html = html[ind:ind + 80]

                reg = r'watch\?v=(.+?)"'
                link = re.findall(re.compile(reg), html)[0]

                link = 'http://www.youtube.com/watch?v=' + link

    if 'moevideo' in link or 'playreplay' in link:
        import YDStreamExtractor
        YDStreamExtractor.disableDASHVideo(True)
        vid = YDStreamExtractor.getVideoInfo(link, quality=1)
        resolved = vid.streamURL()

    else:
        try:
            from lib.resolvers import dailymotion
            resolved = dailymotion.resolve(link)
            resolved = resolved[0]['url']

        except:

            try:
                import urlresolver
                resolved = urlresolver.resolve(link)
            except:
                try:
                    import YDStreamExtractor
                    YDStreamExtractor.disableDASHVideo(True)
                    vid = YDStreamExtractor.getVideoInfo(link, quality=1)
                    resolved = vid.streamURL()
                except:
                    pass

    download(title, resolved)
예제 #23
0
 def onClick(self, controlID):
     homewindow.setProperty("WindowColor", xbmc.getInfoLabel("Window(home).Property(movie.ImageColor)"))
     if controlID in [50, 750]:
         actorid = self.getControl(controlID).getSelectedItem().getProperty("id")
         AddToWindowStack("video", self.MovieId)
         dialog = DialogActorInfo.DialogActorInfo(u'script-%s-DialogInfo.xml' % __addonname__, __cwd__, id=actorid)
         self.close()
         dialog.doModal()
     elif controlID in [150, 250]:
         movieid = self.getControl(controlID).getSelectedItem().getProperty("id")
         self.close()
         AddToWindowStack("video", self.MovieId)
         dialog = DialogVideoInfo(u'script-%s-DialogVideoInfo.xml' % __addonname__, __cwd__, id=movieid)
         dialog.doModal()
     elif controlID == 350:
         listitem = self.getControl(350).getSelectedItem()
         import YDStreamExtractor
         YDStreamExtractor.disableDASHVideo(True)
         vid = YDStreamExtractor.getVideoInfo(listitem.getProperty("youtube_id"), quality=1)
         stream_url = vid.streamURL()
         self.close()
         log("Youtube Trailer:" + stream_url)
         xbmc.executebuiltin("PlayMedia(%s)" % stream_url)
     elif controlID == 550:
         xbmc.executebuiltin("ActivateWindow(busydialog)")
         studioitems = GetCompanyInfo(self.getControl(controlID).getSelectedItem().getProperty("id"))
         AddToWindowStack("video", self.MovieId)
         self.close()
         dialog = DialogVideoList.DialogVideoList(u'script-%s-VideoList.xml' % __addonname__, __cwd__, listitems=studioitems)
         xbmc.executebuiltin("Dialog.Close(busydialog)")
         dialog.doModal()
     elif controlID == 950:
         xbmc.executebuiltin("ActivateWindow(busydialog)")
         keywordid = self.getControl(controlID).getSelectedItem().getProperty("id")
         keyworditems = GetMoviesWithKeyword(keywordid)
         AddToWindowStack("video", self.MovieId)
         self.close()
         xbmc.executebuiltin("Dialog.Close(busydialog)")
         dialog = DialogVideoList.DialogVideoList(u'script-%s-VideoList.xml' % __addonname__, __cwd__, listitems=keyworditems)
         dialog.doModal()
     elif controlID == 850:
         xbmc.executebuiltin("ActivateWindow(busydialog)")
         genreid = self.getControl(controlID).getSelectedItem().getProperty("id")
         genreitems = GetMoviesWithGenre(genreid)
         AddToWindowStack("video", self.MovieId)
         self.close()
         dialog = DialogVideoList.DialogVideoList(u'script-%s-VideoList.xml' % __addonname__, __cwd__, listitems=genreitems)
         xbmc.executebuiltin("Dialog.Close(busydialog)")
         dialog.doModal()
     elif controlID == 650:
         xbmc.executebuiltin("ActivateWindow(busydialog)")
         country = self.getControl(controlID).getSelectedItem().getProperty("iso_3166_1")
         certification = self.getControl(controlID).getSelectedItem().getProperty("certification")
         cert_items = GetMoviesWithCertification(country, certification)
         AddToWindowStack("video", self.MovieId)
         self.close()
         dialog = DialogVideoList.DialogVideoList(u'script-%s-VideoList.xml' % __addonname__, __cwd__, listitems=cert_items)
         xbmc.executebuiltin("Dialog.Close(busydialog)")
         dialog.doModal()
     elif controlID == 450:
         xbmc.executebuiltin("ActivateWindow(busydialog)")
         list_items = GetMoviesFromList(self.getControl(controlID).getSelectedItem().getProperty("id"))
         self.close()
         AddToWindowStack("video", self.MovieId)
         dialog = DialogVideoList.DialogVideoList(u'script-%s-VideoList.xml' % __addonname__, __cwd__, listitems=list_items)
         xbmc.executebuiltin("Dialog.Close(busydialog)")
         dialog.doModal()