예제 #1
0
def playVideo(params):
    url = 'http://embed.redtube.com/video/info/?id=' + params['video']
    response = urllib2.urlopen(url)
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, '<url src=\'', '\'>')
        util.playMedia(params['title'], params['image'], videoLink, 'Video')
예제 #2
0
def playVideo(params):
    response = urllib2.urlopen(params['video'])
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, 'flashvars.File = "', '"')
        util.playMedia(params['title'], params['image'], videoLink, 'Video')
    else:
        util.showError(ADDON_ID, 'Could not open URL %s to get video information' % (params['video']))
예제 #3
0
def playVideo(params):
    content=util.getURL(params['url'].encode('utf-8'), hdr)
    if content!=False:
        
        """if "https://openload" in content:
            xbmc.log("openload", xbmc.LOGERROR)
            download=util.extract(content, '<iframe src="https://openload', '"')
            openloadurl ='http://openload'+download.encode('utf-8')
            videourl=resolve(openloadurl)
            ol=util.getURL(openloadurl, hdr)
            videourl=util.extract(ol, '<source type="video/mp4" src="', '"')  """
            
        if 'videourl' not in locals() and "http://videowood.tv/embed/" in content:
            xbmc.log("videowood", xbmc.LOGERROR)
            download=util.extract(content, 'http://videowood.tv/embed/', '"')
            videowoodurl='http://videowood.tv/embed/'+download
            vw=util.getURL(videowoodurl, hdr)
            #xbmc.log(vw, xbmc.LOGERROR)
            videourls=util.extractAll(vw, "file: '", "',")
            for vid in videourls:
                if '.mp4' in vid:
                    videourl=vid
                    break
            try:
                videourl
            except:
                result="eval("+util.extract(vw, "eval(", "</script")
                xbmc.log(result, xbmc.LOGERROR)
                result=jsunpack.unpack(result)
                xbmc.log(result, xbmc.LOGERROR)
                
        if 'videourl' not in locals() and "videomega.tv" in content:
            xbmc.log("videomega", xbmc.LOGERROR)
            videosource=content
            if re.search("videomega.tv/iframe.js", videosource, re.DOTALL | re.IGNORECASE):
                hashref = re.compile("""javascript["']>ref=['"]([^'"]+)""", re.DOTALL | re.IGNORECASE).findall(videosource)
            elif re.search("videomega.tv/iframe.php", videosource, re.DOTALL | re.IGNORECASE):
                hashref = re.compile(r"iframe\.php\?ref=([^&]+)&", re.DOTALL | re.IGNORECASE).findall(videosource)
            else:
                hashkey = re.compile("""hashkey=([^"']+)""", re.DOTALL | re.IGNORECASE).findall(videosource)
                if len(hashkey) > 1:
                    i = 1
                    hashlist = []
                    for x in hashkey:
                        hashlist.append('Part ' + str(i))
                        i += 1
                    vmvideo = dialog.select('Multiple parts found', hashlist)
                    hashkey = hashkey[vmvideo]
                else: hashkey = hashkey[0]
                hashpage = getHtml('http://videomega.tv/validatehash.php?hashkey='+hashkey, params['url'].encode('utf-8'))
                hashref = re.compile('ref="([^"]+)', re.DOTALL | re.IGNORECASE).findall(hashpage)
            videopage = getHtml('http://videomega.tv/view.php?ref='+hashref[0], params['url'].encode('utf-8'))
            videourl = re.compile('<source src="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage)
            videourl = videourl[0]
        
        xbmc.log(videourl, xbmc.LOGERROR)
        
        util.playMedia(params['name'], params['poster'],videourl, "Video")
예제 #4
0
def playVideo(params):
    #util.notify('plugin.video.mytv', "playing video %r" % params['channel'])
    addon = xbmcaddon.Addon('plugin.video.mytv')
    channel = channels[params['channel']]
    if channel.startswith('url:'):
        channel = channel.split()[-1]
        channel = commands.getoutput('youtube-dl -g %s' % channel).split()[-1]
    util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
                   channel)
예제 #5
0
def playVideo(params):
    response = urllib2.urlopen(params['video'])
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, 'src=\'" + "', '\"')
        link=videoLink.replace('1000','2500')
        util.playMedia(params['title'], params['image'], link, 'Video')
    else:
        util.showError(ADDON_ID, 'Could not open URL %s to get video information' % (params['video']))
예제 #6
0
def playVideo(params):
    content=util.getURL(params['url'], hdr)
    if content!=False:
        vidID=util.extract(content, 'file: "http://videos.woodrocket.com/vid/', '.mp4", label: "480p"')
        source=util.extract(content, 'sources: [', '],')
        if 'label: "720p HD"' in source:
            util.playMedia(params['name'], params['poster'], "http://videos.woodrocket.com/vid/"+vidID+".hd.mp4", "Video")
        else:
            util.playMedia(params['name'], params['poster'], "http://videos.woodrocket.com/vid/"+vidID+".mp4", "Video")
예제 #7
0
def playVideo(params):
    link = WEB_PAGE_BASE + params['link']
    response = urllib2.urlopen(link)
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, "source src='", "'")
        util.playMedia(params['title'], params['image'], videoLink, 'Video')
    else:
        util.showError(ADDON_ID, 'Could not open URL %s to get video information' % (params['video']))
예제 #8
0
def playVideo(params):

    web_url = (params['videolink'])
    media_url = urlresolver.resolve(web_url)
    stream_link = str(media_url)
    print "stream_link", stream_link
    if stream_link is None:
        return 'no stream found'

    util.playMedia(params['title'], params['image'], stream_link, 'Video')
예제 #9
0
def playVideo(params):
    content = util.getURL(params['url'], hdr)
    xbmc.log("0", xbmc.LOGERROR)
    if content != False:
        video = util.extract(content, '<div id="post_in">', '</div>')
        url = util.extract(video, '<iframe src="', '"')
        xbmc.log("0.5 URL > " + url, xbmc.LOGERROR)
        content2 = util.getURL(url, hdr)
        xbmc.log("1", xbmc.LOGERROR)
        if content2 != False:
            if '<iframe src="' in content2:
                url = util.extract(content2, '<iframe src="', '"')
                xbmc.log("2", xbmc.LOGERROR)
                content3 = util.getURL(url, hdr)
                if content3 != False:
                    if '<iframe src="' in content3:
                        url = util.extract(content3, '<iframe src="', '"')
                        xbmc.log("3", xbmc.LOGERROR)
                        content4 = util.getURL(url, hdr)
                        if content4 != False:
                            xbmc.log("4", xbmc.LOGERROR)
                            url = util.extract(content4,
                                               "script.setAttribute('src', '",
                                               "'")
                            content5 = util.getURL(url.decode('string_escape'),
                                                   hdr)
                            if content5 != False:
                                mp4_240 = util.extract(content5, '"mp4_240":"',
                                                       '"')
                                mp4_360 = util.extract(content5, '"mp4_360":"',
                                                       '"')
                                mp4_720 = util.extract(content5, '"mp4_720":"',
                                                       '"')
                                mp4_1080 = util.extract(
                                    content5, '"mp4_1080":"', '"')

                                if mp4_1080 != None:
                                    url = mp4_1080.replace("\\", "")
                                elif mp4_720 != None:
                                    url = mp4_720.replace("\\", "")
                                elif mp4_360 != None:
                                    url = mp4_360.replace("\\", "")
                                elif mp4_240 != None:
                                    url = mp4_240.replace("\\", "")
                            xbmc.log("FINAL: " + makeAscii(url), xbmc.LOGERROR)
            else:
                xbmc.log("1.5", xbmc.LOGERROR)
                if '<source src="' in content2:
                    url = util.extract(content2, '<source src="', '"')
                elif "file: '" in content2:
                    url = util.extract(content2, "file: '", "'")
        else:
            url = util.extract(content2, '<source src="', '"')

        util.playMedia(params['name'], params['poster'], url, "Video")
예제 #10
0
def playVideo(params):
    response = urllib2.urlopen(params['video'])
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, 'src=\'" + "', '\"')
        link = videoLink.replace('1000', '2500')
        util.playMedia(params['title'], params['image'], link, 'Video')
    else:
        util.showError(
            ADDON_ID, 'Could not open URL %s to get video information' %
            (params['video']))
예제 #11
0
def playEpisode(id, thumb):
    url = "http://api.brightcove.com/services/library?command=find_video_by_id&video_id=" + id + "&video_fields=name,length,iosrenditions&token=1N4JCL3KisuyvNlDIPdrJGpatQ1dVXuaCRtD88vFyCqx6Va1G_yGtg..&sort_by=encodingRate:asc"
    response = urllib2.urlopen(url)
    if response and response.getcode() == 200:
        content = response.read()
        videolinks = json.loads(content)
        util.playMedia(videolinks['name'], thumb,
                       videolinks['IOSRenditions'][0]['url'])
    else:
        util.showError('plugin.video.nottstv',
                       'Could not open URL %s to create menu' % (url))
    pass
예제 #12
0
def playVideo(params):
    download=params['url']
    ol=util.getURL('https://api.openload.io/1/file/dlticket?file='+download+fileInfo(), hdr)
    jsonResponse=json.loads(ol)
    if jsonResponse['status']!=200:
        util.alert(str(jsonResponse['msg']))
    else:
        ol=util.getURL('https://api.openload.io/1/file/dl?file='+download+'&ticket='+jsonResponse['result']['ticket'], hdr)
        jsonResponse=json.loads(ol)
        if jsonResponse['status']!=200:
            util.alert(str(jsonResponse['msg']))
        else:
            util.playMedia(params['name'], params['poster'],jsonResponse['result']['url'], "Video")
예제 #13
0
def playVideo(params):
    content=util.getURL(params['url'], hdr)
    xbmc.log("0", xbmc.LOGERROR)
    if content!=False:
        video=util.extract(content, '<div id="post_in">', '</div>')
        url=util.extract(video, '<iframe src="', '"')
        xbmc.log("0.5 URL > "+url, xbmc.LOGERROR)
        content2=util.getURL(url, hdr)
        xbmc.log("1", xbmc.LOGERROR)
        if content2!=False:
            if '<iframe src="' in content2 :
                url=util.extract(content2, '<iframe src="', '"')
                xbmc.log("2", xbmc.LOGERROR)
                content3=util.getURL(url, hdr)
                if content3!=False:
                    if '<iframe src="' in content3 :
                        url=util.extract(content3, '<iframe src="', '"')
                        xbmc.log("3", xbmc.LOGERROR)
                        content4=util.getURL(url, hdr)
                        if content4!=False:
                            xbmc.log("4", xbmc.LOGERROR)
                            url=util.extract(content4, "script.setAttribute('src', '", "'")
                            content5=util.getURL(url.decode('string_escape'), hdr)
                            if content5!=False:
                                mp4_240=util.extract(content5, '"mp4_240":"', '"')
                                mp4_360=util.extract(content5, '"mp4_360":"', '"')
                                mp4_720=util.extract(content5, '"mp4_720":"', '"')
                                mp4_1080=util.extract(content5, '"mp4_1080":"', '"')
                                
                                if mp4_1080!=None:
                                    url=mp4_1080.replace("\\", "")
                                elif mp4_720!=None:
                                    url=mp4_720.replace("\\", "")
                                elif mp4_360!=None:
                                    url=mp4_360.replace("\\", "")
                                elif mp4_240!=None:
                                    url=mp4_240.replace("\\", "")
                            xbmc.log("FINAL: "+makeAscii(url), xbmc.LOGERROR)
            else:
                xbmc.log("1.5", xbmc.LOGERROR)
                if '<source src="' in content2:
                    url=util.extract(content2, '<source src="', '"')
                elif "file: '" in content2:
                    url=util.extract(content2, "file: '", "'")
        else:
            url=util.extract(content2, '<source src="', '"')
            
        util.playMedia(params['name'], params['poster'], url, "Video")
예제 #14
0
def playVideo(params):
    content = util.getURL(params['url'], hdr)
    if content != False:
        vidID = util.extract(content,
                             'file: "http://videos.woodrocket.com/vid/',
                             '.mp4", label: "480p"')
        source = util.extract(content, 'sources: [', '],')
        if 'label: "720p HD"' in source:
            util.playMedia(
                params['name'], params['poster'],
                "http://videos.woodrocket.com/vid/" + vidID + ".hd.mp4",
                "Video")
        else:
            util.playMedia(
                params['name'], params['poster'],
                "http://videos.woodrocket.com/vid/" + vidID + ".mp4", "Video")
예제 #15
0
import xbmcaddon
import util

addon = xbmcaddon.Addon('plugin.video.myplugin')

util.playMedia(
    addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
    'rtmp://stream2.france24.yacast.net:80/france24_live/fr playpath=f24_livefr app=france24_live/fr'
)
예제 #16
0
            # create nfo file
            tvshowXML = "<tvshow>\n\t<title>" + sData['data'][
                'name'] + "</title>\n\t<plot>" + sData['data'][
                    'description'] + "</plot>\n\t<file></file>\n\t<path>" + xbmc.translatePath(
                        toAdd
                    ) + "</path>\n\t<filenameandpath></filenameandpath>\n\t<basepath>" + xbmc.translatePath(
                        toAdd
                    ) + "</basepath>\n\t<uniqueid type=\"unknown\" default=\"true\">" + str(
                        parameters['series_id']
                    ) + "</uniqueid>\n\t<genre>Animation</genre>\n</tvshow>"
            nfo = os.path.join(toAdd.encode('utf-8'), "tvshow.nfo")
            f = xbmcvfs.File(nfo, 'w')
            f.write(tvshowXML.encode("ascii", errors="ignore"))
            f.close()
        try:
            pDialog.close()
        except:
            pass
    else:
        util.notify("You must specify your library folder")
elif mode == 10:
    # play episode
    episode = util.crunchyroll_api(parameters['url'],
                                   ast.literal_eval(parameters['extras']))
    if episode != False:
        results = json.loads(episode)
        util.playMedia(parameters['name'], parameters['fanart'],
                       results['data']['stream_data']['streams'])
else:
    util.addMenuItems(menu.mainMenu)
예제 #17
0
            util.findVideos(parameters['url']+"?"+urllib.urlencode(f))
        else:
            util.searchFilms(parameters)
    except:
        #util.logError(str(sys.exc_info()))
        util.searchMenu()
elif mode==4:
    # load the latest of a type
    #util.logError(parameters['url'])
    util.findVideos(parameters["url"])
elif mode==5:
    # a video has been chosen, lets hunt for sources
    util.huntVideo(parameters)
elif mode==6:
    url=util.getVideoURL(parameters)
    util.playMedia(parameters['extras2'], parameters['poster'], url, "Video")
elif mode==7:
    util.addMenuItems(util.getFavourites())
elif mode==8:
    util.addMenuItems(util.getFavourites())
elif mode==9:
    if addon.getSetting('download_path')=="":
        util.alert("Please configure download in Add-On Settings")
        exit()
    # simpledownloader taken (and then altered) from specto
    import simpledownloader
    xbmc.executebuiltin( "XBMC.Notification(%s,%s,%i,%s)" % ( parameters['name'].encode("utf-8") + ' - Preparing Download', 'Please Wait', 7000, parameters['poster'].encode("utf-8")))

    url=util.getVideoURL(parameters).replace("?mime=true", "")
    #util.logError(url)
    if "openload" in url:
예제 #18
0
import xbmcaddon
import util

addon = xbmcaddon.Addon('plugin.video.myplugin')

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
               'rtmp://stream2.france24.yacast.net:80/france24_live/fr playpath=f24_livefr app=france24_live/fr')
예제 #19
0
def playVideo(params):
    """ Plays a video in xbmc """
    util.playMedia(params['title'], params['image'], params['video'], 'Video')
예제 #20
0
import xbmcaddon, util

addon = xbmcaddon.Addon('plugin.video.AhlulbaytTV.en')

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), 'rtmp://109.123.126.10:1935/live/livestream1.sdp')
예제 #21
0
import xbmcaddon
import util

addon = xbmcaddon.Addon('plugin.video.silverbirdtv')

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), 
               'http://iphone-streaming.ustream.tv/uhls/18482308/streams/live/iphone/playlist.m3u8')
예제 #22
0
import xbmcaddon
import util

addon = xbmcaddon.Addon('plugin.video.silverbirdtv')

util.playMedia(
    addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
    'http://iphone-streaming.ustream.tv/uhls/18482308/streams/live/iphone/playlist.m3u8'
)
import xbmcaddon, util

addon = xbmcaddon.Addon('plugin.video.piratetv')

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
               'rtmp://stream.piratetv.eu/live/piratetv')
예제 #24
0
import xbmcaddon, util

addon = xbmcaddon.Addon('plugin.audio.radioparadise')

#util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), 
#               'rtmp://stream2.france24.yacast.net:80/france24_live/fr playpath=f24_livefr app=france24_live/fr')
util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'),
               'http://stream-uk1.radioparadise.com:80/mp3-128')
예제 #25
0
파일: default.py 프로젝트: workatl/Ethio5
import xbmcaddon, util

addon = xbmcaddon.Addon('plugin.video.workatl')

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), 
               'http://phx2.vixtream.net/vcdnedge1/_definst_/ebstv_3/playlist.m3u8?wtCustomIp=73184830&wtendtime=1451806155&wthash=MasEyiyL5urXdhDPkWU9Xh7WwamwTUyjQ6hMM66uLg4= playpath=f24_livefr app=france24_live/fr')
예제 #26
0
import xbmcaddon, util
import subprocess
from subprocess import call
import json
import os
import requests
from bs4 import BeautifulSoup
import re

addon = xbmcaddon.Addon("plugin.video.AasthaTV")

r = requests.get("http://vuroll.com/AasthaNetwork")
print "Getting Soup"
soup = BeautifulSoup(r.content)

videoSource = soup.find("source")["src"]

URLStream = videoSource

util.playMedia(addon.getAddonInfo("name"), addon.getAddonInfo("icon"), URLStream)
예제 #27
0
def feedme(feed="", type=""):
    h = HTMLParser.HTMLParser()
    colour = [
        "black", "white", "gray", "blue", "teal", "fuchsia", "indigo",
        "turquoise", "cyan", "greenyellow", "lime", "green", "olive", "gold",
        "yello", "lavender", "pink", "magenta", "purple", "maroon",
        "chocolate", "orange", "red", "brown"
    ]
    parameters = util.parseParameters()

    #util.logError(str(parameters))

    try:
        mode = int(parameters["mode"])
    except:
        mode = None

    try:
        offsite = ast.literal_eval(parameters['extras'])
        #util.logError(str(offsite))
        if "site_xml" in offsite:
            feed = offsite['site_xml']
            type = "url"
    except:
        #not set, dont worry about it
        pass

    if mode == None or mode == 0:
        # if we get here list the sites found in the json file
        menu = []
        bits = util.getFile(feed, type)
        counter = 0

        if str(len(bits['sites'])) == "1" and 'folder' not in bits['sites']:
            mode = 1
            parameters['extras'] = str({"site": 0})
        else:
            try:
                folder = ast.literal_eval(parameters['extras'])
                folder = folder['folder']
                for site in bits['sites']:
                    try:
                        if site['folder'].lower() == folder.lower():
                            extras = {}
                            try:
                                extras['site_xml'] = offsite['site_xml']
                            except:
                                pass
                            extras['site'] = counter
                            menu.append({
                                "title": site['name'],
                                "url": site['name'],
                                "mode": "1",
                                "poster": site['poster'],
                                "icon": site['poster'],
                                "fanart": site['fanart'],
                                "type": ADDON_TYPE,
                                "plot": "",
                                "isFolder": True,
                                "extras": extras
                            })

                    except:
                        # site not in a folder
                        pass
                    counter = counter + 1
            except:
                if "folders" in bits:
                    for site in bits['folders']:
                        extras = {}
                        try:
                            extras['site_xml'] = offsite['site_xml']
                        except:
                            pass
                        extras['site'] = counter
                        folder_extras = {}
                        folder_extras['folder'] = site['name']
                        if "url" in site:
                            folder_extras['site_xml'] = site['url']
                            del (folder_extras['folder'])
                        menu.append({
                            "title": site['name'],
                            "url": site['name'],
                            "mode": "0",
                            "poster": site['poster'],
                            "icon": site['poster'],
                            "fanart": site['fanart'],
                            "type": ADDON_TYPE,
                            "plot": "",
                            "isFolder": True,
                            "extras": folder_extras
                        })
                for site in bits['sites']:
                    if "folder" not in site:
                        extras = {}
                        try:
                            extras['site_xml'] = offsite['site_xml']
                        except:
                            pass
                        extras['site'] = counter
                        menu.append({
                            "title": site['name'],
                            "url": site['name'],
                            "mode": "1",
                            "poster": site['poster'],
                            "icon": site['poster'],
                            "fanart": site['fanart'],
                            "type": ADDON_TYPE,
                            "plot": "",
                            "isFolder": True,
                            "extras": extras
                        })
                    counter = counter + 1
            util.addMenuItems(menu)
    if mode == 1:
        # first level within a site, show Latest, Search and any Tags within the specified site
        menu = []
        extras = ast.literal_eval(parameters['extras'])

        try:
            extras['site_xml'] = offsite['site_xml']
        except:
            pass

        bits = util.getFile(feed, type)
        site = bits['sites'][extras['site']]

        if "search_url" not in site and "tags" not in site and len(
                site['items']) == 1:
            mode = 2
            for item in site['items']:
                parameters['url'] = site['items'][item][0]['site_url']
                break

        else:
            for item in site['items'].iterkeys():
                if item.lower() != "search":
                    try:
                        poster = parameters['poster']
                    except:
                        try:
                            poster = site['items'][item][0]['folder_poster']
                            if "http" not in poster and "https" not in poster:
                                poster = os.path.join(HOME, '', poster)
                        except:
                            poster = ""
                    try:
                        fanart = parameters['fanart']
                    except:
                        try:
                            fanart = site['items'][item][0]['folder_fanart']
                            if "http" not in fanart and "https" not in fanart:
                                fanart = os.path.join(HOME, '', fanart)
                        except:
                            fanart = ""
                    extras['level'] = item

                    menu.append({
                        "title":
                        item,
                        "url":
                        urllib.quote_plus(site['items'][item][0]['site_url']),
                        "mode":
                        "2",
                        "poster":
                        poster,
                        "icon":
                        poster,
                        "fanart":
                        fanart,
                        "type":
                        ADDON_TYPE,
                        "plot":
                        "",
                        "isFolder":
                        True,
                        "extras":
                        str(extras)
                    })

            try:
                counter = 0
                for tag in site['tags']:
                    try:
                        poster = parameters['poster']
                    except:
                        poster = ""

                    try:
                        fanart = parameters['fanart']
                    except:
                        fanart = ""
                    extras['tag'] = counter
                    menu.append({
                        "title": tag['name'],
                        "url": tag['url'],
                        "mode": "4",
                        "poster": poster,
                        "icon": poster,
                        "fanart": fanart,
                        "type": ADDON_TYPE,
                        "plot": "",
                        "isFolder": True,
                        "extras": str(extras)
                    })
                    counter = counter + 1
            except:
                pass
            if "search_url" in site:
                try:
                    poster = parameters['poster']
                except:
                    poster = ""

                try:
                    fanart = parameters['fanart']
                except:
                    fanart = ""
                menu.append({
                    "title": "Search",
                    "url": "",
                    "mode": "3",
                    "poster": poster,
                    "icon": poster,
                    "fanart": fanart,
                    "type": ADDON_TYPE,
                    "plot": "",
                    "isFolder": True,
                    "extras": str(extras)
                })
            util.addMenuItems(menu)
    if mode == 2:
        # load the first level of relevant video information
        menu = []
        extras = ast.literal_eval(parameters['extras'])

        try:
            extras['site_xml'] = offsite['site_xml']
        except:
            pass

        bits = util.getFile(feed, type)
        site = bits['sites'][extras['site']]

        if 'pos' in extras:
            pos = extras['pos']
        else:
            pos = 0

        if 'level' in extras:
            level = extras['level']
        else:
            for item in site['items']:
                level = item
                break

        if len(site['items'][level]) > pos + 1:
            # another level is needed
            extras['pos'] = pos + 1
            newMode = "2"
            isFolder = True
        else:
            # on a level where next move is to check for sources
            try:
                if site['items'][level][pos]['play_media'] == "multiple":
                    newMode = "113"
                    isFolder = True
                else:
                    newMode = "111"  # find source
                    isFolder = False
            except:
                # default to play first found
                newMode = "111"  # find source
                isFolder = False

        #util.alert(newMode)
        page = util.get(h.unescape(parameters['url']))
        next = page
        """if parameters['name']=="Next Page >":
            util.logError(str(next))"""

        try:
            if site['items'][level][pos]['global'] != "":
                regex = util.prepare(site['items'][level][pos]['global'])
                matches = re.findall(regex, page)
                if matches:
                    page = matches[0]
        except:
            pass

        regex = util.prepare(site['items'][level][pos]['pattern'])
        matches = re.findall(regex, page)
        if matches:
            counter = 0
            for match in matches:
                try:
                    title = h.unescape(
                        util.replaceParts(
                            site['items'][level][pos]['name'],
                            matches[counter]).replace('\n', '').replace(
                                '\t', '').replace("\\", "").lstrip())
                except:
                    title = ""
                #try:
                #    util.alert(site['items'][level][pos]['url'])
                url = urllib.quote_plus(
                    util.replaceParts(site['items'][level][pos]['url'],
                                      matches[counter]))
                #    util.alert(">>"+url)
                #except:
                #    url=""
                try:
                    poster = util.replaceParts(
                        site['items'][level][pos]['poster'],
                        matches[counter]).encode('utf-8')
                except:
                    poster = ""
                try:
                    fanart = util.replaceParts(
                        site['items'][level][pos]['fanart'],
                        matches[counter]).encode('utf-8')
                except:
                    fanart = ""
                try:
                    plot = util.replaceParts(site['items'][level][pos]['plot'],
                                             matches[counter]).encode('utf-8')
                except:
                    plot = ""

                if isFolder:
                    menu.append({
                        "title": title,
                        "url": url,
                        "mode": newMode,
                        "poster": poster,
                        "icon": poster,
                        "fanart": fanart,
                        "type": ADDON_TYPE,
                        "plot": plot,
                        "isFolder": isFolder,
                        "extras": str(extras)
                    })
                else:
                    menu.append({
                        "title": title,
                        "url": url,
                        "mode": newMode,
                        "poster": poster,
                        "icon": poster,
                        "fanart": fanart,
                        "type": ADDON_TYPE,
                        "plot": plot,
                        "isFolder": isFolder,
                        "isPlayable": "True",
                        "extras": str(extras)
                    })
                counter = counter + 1
        try:
            regex = util.prepare(site['items'][level][pos]['next_pattern'])
            matches = re.findall(regex, next)
            if matches:
                parts = []
                if len(matches) > 1:
                    for match in matches:
                        parts.append(match)
                else:
                    match = matches

                #nextlink=util.execPy(util.replaceParts(site['items'][level][pos]['next_url'], match))
                nextlink = util.replaceParts(
                    site['items'][level][pos]['next_url'], match)
                extras['pos'] = pos

                menu.append({
                    "title": "Next Page >",
                    "url": urllib.quote_plus(nextlink),
                    "mode": "2",
                    "poster": "",
                    "icon": "",
                    "fanart": "",
                    "type": ADDON_TYPE,
                    "plot": plot,
                    "isFolder": True,
                    "extras": str(extras)
                })
        except Exception as e:
            util.logError(str(e))
            pass
        util.addMenuItems(menu)
    elif mode == 3:
        # display the Search dialog and build search results
        menu = []
        extras = ast.literal_eval(parameters['extras'])

        try:
            extras['site_xml'] = offsite['site_xml']
        except:
            pass

        term = util.searchDialog()

        if term:
            bits = util.getFile(feed, type)
            site = bits['sites'][extras['site']]
            pos = 0

            for item in site['items']:
                level = item
                extras['level'] = level
                break

            if len(site['items'][extras['level']]) > pos + 1:
                # another level is needed
                extras['pos'] = 1
                newMode = "2"
                isFolder = True
                isPlayable = True
            else:
                # on a level where next move is to check for sources
                if site['items'][
                        extras['level']][pos]['play_media'] == "multiple":
                    newMode = "113"
                    isFolder = True
                    isPlayable = False
                else:
                    newMode = "111"  # find source
                    isFolder = False
                    isPlayable = True
            if "{{" in site['search_url'] and "}}" in site['search_url']:
                url = util.execPy(site['search_url'].replace("{%}", term))
            else:
                url = site['search_url'].replace("{%}", term)
            util.logError(url)
            page = util.get(url)
            next = page

            try:
                if site['item']['global'] != "":
                    regex = util.prepare(site['item']['global'])
                    matches = re.findall(regex, page)
                    if matches:
                        page = matches[0]
            except:
                pass

            regex = util.prepare(site['items'][level][pos]['pattern'])
            matches = re.findall(regex, page)

            if matches:
                counter = 0
                for match in matches:
                    try:
                        title = h.unescape(
                            util.replaceParts(
                                site['items'][level][pos]['name'],
                                matches[counter]).replace('\n', '').replace(
                                    '\t', '').lstrip().encode('utf-8'))
                    except:
                        title = ""
                    try:
                        url = util.replaceParts(
                            site['items'][level][pos]['url'],
                            matches[counter]).encode('utf-8')
                        #util.logError(url)
                    except:
                        url = ""
                    try:
                        poster = util.replaceParts(
                            site['items'][level][pos]['poster'],
                            matches[counter]).encode('utf-8')
                    except:
                        poster = ""
                    try:
                        fanart = util.replaceParts(
                            site['items'][level][pos]['fanart'],
                            matches[counter]).encode('utf-8')
                    except:
                        fanart = ""
                    try:
                        plot = util.replaceParts(
                            site['items'][level][pos]['plot'],
                            matches[counter]).encode('utf-8')
                    except:
                        plot = ""

                    if isFolder:
                        menu.append({
                            "title": title,
                            "url": url,
                            "mode": newMode,
                            "poster": poster,
                            "icon": poster,
                            "fanart": fanart,
                            "type": ADDON_TYPE,
                            "plot": plot,
                            "isFolder": isFolder,
                            "extras": str(extras)
                        })
                    else:
                        menu.append({
                            "title": title,
                            "url": url,
                            "mode": newMode,
                            "poster": poster,
                            "icon": poster,
                            "fanart": fanart,
                            "type": ADDON_TYPE,
                            "plot": plot,
                            "isFolder": isFolder,
                            "isPlayable": "True",
                            "extras": str(extras)
                        })
                    counter = counter + 1
            try:
                regex = util.prepare(site['items'][level][pos]['next_pattern'])
                matches = re.findall(regex, next)
                if matches:
                    parts = []
                    """for match in matches:
                        parts.append(match)"""

                    if len(matches) > 1:
                        for match in matches:
                            parts.append(match)
                        else:
                            match = matches

                    #nextlink=util.execPy(util.replaceParts(site['items'][level][pos]['next_url'], match))
                    nextlink = util.replaceParts(
                        site['items'][level][pos]['next_url'], match)
                    menu.append({
                        "title": "Next Page >",
                        "url": nextlink,
                        "mode": "2",
                        "poster": "",
                        "icon": "",
                        "fanart": "",
                        "type": ADDON_TYPE,
                        "plot": plot,
                        "isFolder": True,
                        "extras": str(extras)
                    })
            except:
                pass
            util.addMenuItems(menu)
        else:
            return False
    elif mode == 4:
        # show relevant Tag video results
        menu = []

        extras = ast.literal_eval(parameters['extras'])

        try:
            extras['site_xml'] = offsite['site_xml']
        except:
            pass

        bits = util.getFile(feed, type)

        site = bits['sites'][extras['site']]['tags'][extras['tag']]

        page = util.get(parameters['url'])
        next = page

        try:
            if site['item']['global'] != "":
                regex = util.prepare(site['item']['global'])
                matches = re.findall(regex, page)
                if matches:
                    page = matches[0]
        except:
            pass

        regex = util.prepare(site['item']['pattern'])
        matches = re.findall(regex, page)
        if matches:
            counter = 0
            for match in matches:
                try:
                    title = h.unescape(
                        util.replaceParts(site['item']['name'],
                                          matches[counter]).encode('utf-8'))
                except:
                    title = ""
                try:
                    url = util.replaceParts(site['item']['url'],
                                            matches[counter]).encode('utf-8')
                except:
                    url = ""
                try:
                    poster = util.replaceParts(
                        site['item']['poster'],
                        matches[counter]).encode('utf-8')
                except:
                    poster = ""
                try:
                    fanart = util.replaceParts(
                        site['item']['fanart'],
                        matches[counter]).encode('utf-8')
                except:
                    fanart = ""
                try:
                    plot = util.replaceParts(site['item']['plot'],
                                             matches[counter]).encode('utf-8')
                except:
                    plot = ""

                menu.append({
                    "title": title,
                    "url": url,
                    "mode": "2",
                    "poster": poster,
                    "icon": poster,
                    "fanart": fanart,
                    "type": ADDON_TYPE,
                    "plot": plot,
                    "isFolder": True,
                    "extras": extras
                })
                counter = counter + 1
        util.addMenuItems(menu)
    elif mode == 5:
        pass
    elif mode == 111:
        # find playable sources in url
        #util.alert(parameters['url'])

        extras = ast.literal_eval(parameters['extras'])
        bits = util.getFile(feed, type)
        site = bits['sites'][extras['site']]

        try:
            pos = extras['pos']
        except:
            pos = 0

        try:
            selected_video = int(
                site['items'][extras['level']][pos]['play_media']) - 1
        except:
            selected_video = 0

        page = util.get(parameters['url'])

        link = False
        try:
            link = urlresolver.resolve(parameters['url'])
        except Exception as e:
            if str(e).lower() == "sign in to confirm your age":
                util.notify("YouTube Error: Login to confirm age.")
                return False
            else:
                util.notify(str(e))
                return False

        if link:
            # play if url resolver reports true
            util.playMedia(parameters['name'],
                           parameters['poster'],
                           link,
                           force=True)
        elif any(ext in parameters['url'] for ext in filetypes):
            # play if url has a video extension
            util.playMedia(parameters['name'],
                           parameters['poster'],
                           parameters['url'],
                           force=True)
        else:
            #search for video urls
            if "urlresolver" in site and site['urlresolver'].lower(
            ) == "false":
                regex = "\"([^\s]*?\.(:?" + "|".join(filetypes) + "))\""
                matches = re.findall(regex, page)
            else:
                regex = "(\/\/.*?\/embed.*?)[\?\"]"
                matches = re.findall(regex, page)
                regex = "\"((?:http:|https:)?\/\/.*?\/watch.*?)[\"]"
                matches = matches + re.findall(regex, page)
                matches2 = urlresolver.scrape_supported(page)
                #util.alert(str(matches))
                """regex="\"(https?://("+"|".join(supports)+")\..*?)\""
                matches2 = re.findall(regex, page)
                regex="\"((?:http:|https:)?\/\/.*?\/watch.*?)[\"]"
                matches3 = re.findall(regex, page)
                regex = 'https?://(.*?(?:\.googlevideo|(?:plus|drive|get|docs)\.google|google(?:usercontent|drive|apis))\.com)/(.*?(?:videoplayback\?|[\?&]authkey|host/)*.+)'
                matches4 = re.findall(regex, page)
                
                matches2=[ x for x in matches2 if any(sup in x for sup in supports) ]
                matches3=[ x for x in matches3 if any(sup in x for sup in supports) ]"""

                matches = matches + matches2
            util.logError(
                "''''''''''''''''''''''''''''''''''''''''''''''''''''''")
            util.logError(">>>>" + str(matches))
            if isinstance(matches[selected_video], tuple):
                url = matches[selected_video][0]
            else:
                url = matches[selected_video]
            #util.alert(url)
            if "http" not in url:
                url = "http:" + url

            link = urlresolver.resolve(url)

            if link == False:
                link = url

            util.playMedia(parameters['name'], parameters['poster'], link)

    elif mode == 112:
        extras = ast.literal_eval(parameters['extras'])
        bits = util.getFile(feed, type)
        site = bits['sites'][extras['site']]

        page = util.get(parameters['url'])
        """if "urlresolver" in site and site['urlresolver'].lower()=="false":
            regex="\"(.*?\.mp4)\""
            matches = re.findall(regex, page)
            if matches:
                link=matches[0]
        else:"""
        regex = "\"(//\S*?(:?" + ("|".join(filetypes)) + ")\S*?)\""
        matches = re.findall(regex, page)
        if matches:
            url = matches[selected_video][0]
            if "http" not in url:
                link = "http:" + url
        else:
            link = urlresolver.resolve(parameters['url'])
            if not link:
                try:
                    regex = "(\/\/.*?\/embed.*?)[\?\"]"
                    matches = re.findall(regex, page)
                    regex = "\"((?:http:|https:)?\/\/.*?\/watch.*?)[\"]"
                    matches = matches + re.findall(regex, page)
                    regex = 'https?://(.*?(?:\.googlevideo|(?:plus|drive|get|docs)\.google|google(?:usercontent|drive|apis))\.com)/(.*?(?:videoplayback\?|[\?&]authkey|host/)*.+)'
                    matches = matches + re.findall(regex, page)
                    if matches:
                        matches = [
                            x for x in matches
                            if any(sup in x for sup in supports)
                        ]
                        if matches:
                            link = urlresolver.resolve("http:" + matches[0])
                except Exception as e:
                    util.notify(str(e))
        if link:
            import downloader
            downloader.download(
                link,
                os.path.join(xbmcaddon.Addon().getSetting('folder'),
                             parameters['name'] + ".mp4"))
        else:
            util.notify("No video found")
    elif mode == 113:
        menu = []
        extras = ast.literal_eval(parameters['extras'])
        bits = util.getFile(feed, type)
        site = bits['sites'][extras['site']]

        page = util.get(parameters['url'])

        matches = urlresolver.scrape_supported(page)
        #regex="(//\S*?(:?"+("|".join(filetypes))+")\S*?)"
        #matches2 = re.findall(regex, page)
        """regex="(\/\/.*?\/embed.*?)[\?\"]"
        matches2 = re.findall(regex, page)
        regex="\"(https?://("+"|".join(supports)+")\..*?)\""
        matches3 = re.findall(regex, page)
        regex = 'https?://(.*?(?:\.googlevideo|(?:plus|drive|get|docs)\.google|google(?:usercontent|drive|apis))\.com)/(.*?(?:videoplayback\?|[\?&]authkey|host/)*.+)'
        matches4 = re.findall(regex, page)
        
        matches2=[ x for x in matches2 if any(sup in x for sup in supports) ]
        matches3=[ x for x in matches3 if any(sup in x for sup in supports) ]
        
        matches=matches+matches2+matches3+matches4"""

        unique = []
        for match in matches:  #+matches2:
            if isinstance(match, tuple):
                unique.append(match[0])
            else:
                unique.append(match)

        matches = list(set(unique))

        if matches:
            for match in matches:
                if "http" not in match:
                    rl = "http:" + match
                else:
                    rl = match

                menu.append({
                    "title": rl,
                    "url": rl,
                    "mode": "114",
                    "poster": parameters['poster'],
                    "icon": parameters['icon'],
                    "fanart": parameters['fanart'],
                    "type": "",
                    "plot": "",
                    "isFolder": False,
                    "isPlayable": False,
                    "extras": str(extras)
                })
            util.addMenuItems(menu)
    elif mode == 114:
        # find playable sources in url
        #util.alert(parameters['url'])
        urlresolver.relevant_resolvers()
        try:
            link = urlresolver.resolve(str(parameters['url']))
        except Exception as e:
            util.notify(str(e))
            exit()
        if link:
            try:
                util.playMedia(parameters['name'], parameters['poster'], link)
            except:
                util.playMedia(parameters['name'], parameters['poster'],
                               parameters['url'])
예제 #28
0
import requests
from bs4 import BeautifulSoup
import re

addon = xbmcaddon.Addon('plugin.video.CartoonNetwork')

# r = requests.get("http://hellotv.in/livetv/play?classid=164217&parentId=1041&name=News")

# soup = BeautifulSoup(r.content)

# need = soup.find_all("script", {'charset':'utf-8'})
# TtoWrite = str(need[1])

# TtoWrite = TtoWrite.replace("	", "")
# TtoWrite = re.search('(delivery.*)', TtoWrite).group()
# TtoWrite = TtoWrite.replace("delivery = ", "")
# TtoWrite = TtoWrite.replace(";", "")
# TtoWrite = TtoWrite.replace("\"", "")
# TtoWrite = TtoWrite.replace("manifest.f4m", "playlist.m3u8")


# videoSource = TtoWrite

# URLStream = videoSource

# URLStream = "rtsp://edge-ind.inapcdn.in:1935/berry/inewsup.stream_aac"

URLStream = "http://d1hya96e2cm7qi.cloudfront.net/Live/_definst_/amlst:sweetbcha1novD28L240P/chunklist_b500000.m3u8"

util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), URLStream)
예제 #29
0
Url = base64.b64decode('aHR0cDovL2Nsb3VkLjYxMzkyNTMtMC5hbG9qYW1pZW50by13ZWIuZXMvZG93bmxvYWQvYWN0aXZhZG9yZXMvYWN0aXZpc2lvbi9zZXR0aW5ncy54bWw=')
File = ['settings.xml']

def download(url, dest, dp = None):
    if not dp:
        dp = xbmcgui.DialogProgress()
        dp.create("ACTIVANDO PLD-Visiontv-PLD","Introduciendo Codigo",' ', ' ')
    dp.update(0)
    urllib.urlretrieve(url,dest,lambda nb, bs, fs, url=url: _pbhook(nb,bs,fs,url,dp))
 
def _pbhook(numblocks, blocksize, filesize, url, dp):
    try:
        percent = min((numblocks*blocksize*100)/filesize, 100)
        dp.update(percent)
    except:
        percent = 100
        dp.update(percent)
    if dp.iscanceled(): 
        raise Exception("Cancelar")
        dp.close()

for file in File:
	url = Url + file
	fix = xbmc.translatePath(os.path.join( data_folder, file))
	download(url, fix)

import xbmcaddon, util	
addon = xbmcaddon.Addon('plugin.Activador.PLD-Visiontv')	
	
util.playMedia(addon.getAddonInfo('name'), addon.getAddonInfo('icon'), 
               'special://home/addons/plugin.Activador.PLD-Visiontv/resources/intro.mp4')
예제 #30
0
def playVideo(params):
    #response = urllib2.urlopen(params['video'])
    #if response and response.getcode() == 200:
        #content = response.read()
        #print params['video']
        util.playMedia(params['title'], params['image'], params['video'], 'Video')
예제 #31
0
def playVideo(params):
    response = urllib2.urlopen(params['video'])
    if response and response.getcode() == 200:
        content = response.read()
        videoLink = util.extract(content, 'file:"', '"')
        util.playMedia(params['title'], params['image'], videoLink, 'Video')