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')
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']))
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")
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)
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']))
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")
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']))
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')
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")
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']))
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
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")
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")
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")
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' )
# 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)
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:
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')
def playVideo(params): """ Plays a video in xbmc """ util.playMedia(params['title'], params['image'], params['video'], 'Video')
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')
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 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')
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')
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')
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)
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'])
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)
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')
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')
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')