def playVideo(link): page = helper.load_page(baseLink + urllib.unquote(link)) extractYouTubeId = re.compile( "<div data-youtube=\"(.*?)\" id=\"yt_video\">") youTubeInfo = extractYouTubeId.search(page) if youTubeInfo is not None: youTubeId = youTubeInfo.group(1) streamUrl = "plugin://plugin.video.youtube/?action=play_video&videoid=" + youTubeId helper.setResolvedUrl(streamUrl) else: #bitsontherun extractVideoId = re.compile( "<div id=\"container\" style=\"display: none;\"><script type=\"text/javascript\" src=\"(http://content.bitsontherun.com/players/.*?-.*?.js)\"></script></div>" ) videoInfo = extractVideoId.search(page) if videoInfo is not None: jsURL = videoInfo.group(1) bitsontherunJS = helper.load_page(jsURL) extractVideoUrl = re.compile( "botrObject.swf\(\n\t\".*?\",\n\t\".*?\",\n\t\".*?\",\n\t\"(.*?)\"," ) videoUrlInfo = extractVideoUrl.search(bitsontherunJS) videoUrl = videoUrlInfo.group(1) #videoUrl = videoUrl.replace("conversions/","http://v.jwpcdn.com/") helper.setResolvedUrl(videoUrl)
def playVideo(link): playlistLink = "http://www.nickjr.com/dynamo/video/data/mrssGen.jhtml?type=network&loc=sidebar&hub=njParentsHub&mode=playlist&mgid=mgid:cms:item:nickjr.com:" playlistLink = playlistLink+link page = helper.load_page(playlistLink,True) media = helper.extractMrss(page) player = media[0]['player'] link = media[0]['url'] response = urllib.urlopen(urllib.unquote(player)) mediaPlayer = response.geturl() page = helper.load_page(urllib.unquote(link)) extractRtmpUrls = re.compile("<rendition.*?height=[\"\']+([0-9]*)[\"\']+.*?>[\n\ \t]*<src>(.*?)</src>[\n\ \t]*</rendition>") streamUrl = "" streamHeight = 0 for rtmpItem in extractRtmpUrls.finditer(page): if rtmpItem.group(1)>streamHeight: streamUrl = rtmpItem.group(2) streamUrl = streamUrl + " swfUrl=" + mediaPlayer + " swfVfy=1" helper.setResolvedUrl(streamUrl)
def playVideo(link): playlistLink = "http://www.nickjr.com/dynamo/video/data/mrssGen.jhtml?type=network&loc=sidebar&hub=njParentsHub&mode=playlist&mgid=mgid:cms:item:nickjr.com:" playlistLink = playlistLink + link page = helper.load_page(playlistLink, True) media = helper.extractMrss(page) player = media[0]['player'] link = media[0]['url'] response = urllib.urlopen(urllib.unquote(player)) mediaPlayer = response.geturl() page = helper.load_page(urllib.unquote(link)) extractRtmpUrls = re.compile( "<rendition.*?height=[\"\']+([0-9]*)[\"\']+.*?>[\n\ \t]*<src>(.*?)</src>[\n\ \t]*</rendition>" ) streamUrl = "" streamHeight = 0 for rtmpItem in extractRtmpUrls.finditer(page): if rtmpItem.group(1) > streamHeight: streamUrl = rtmpItem.group(2) streamUrl = streamUrl + " swfUrl=" + mediaPlayer + " swfVfy=1" helper.setResolvedUrl(streamUrl)
def playVideo(link): page = helper.load_page(link, True) #print page #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=98219f70556227be25075e61f0505fbf&1%3Aservice=session&3%3Aks=%7B1%3Aresult%3Aks%7D&2%3Aaction=get&ignoreNull=1&3%3Aservice=uiconf&1%3Aaction=startWidgetSession&2%3Aks=%7B1%3Aresult%3Aks%7D&3%3Aid=6607922&3%3Aaction=get&clientTag=kdp%3Av3%2E5%2E53%2Eb&1%3Aexpiry=86400&1%3AwidgetId=%5F628012&2%3Aservice=widget&2%3Aid=%5F628012 #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=b02f05c63e3bede1bb42077f37fb6b03&4%3Afilter%3AorderBy=%2BcreatedAt&4%3Afilter%3AobjectType=KalturaMetadataFilter&ks=YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow%3D%3D&3%3AcontextDataParams%3AstreamerType=auto&5%3Afilter%3AobjectType=KalturaCuePointFilter&1%3Aservice=baseentry&clientTag=kdp%3Av3%2E5%2E53%2Eb&4%3Afilter%3AobjectIdEqual=0%5Fm6d8wsry&4%3Afilter%3AmetadataObjectTypeEqual=1&4%3Aaction=list&ignoreNull=1&2%3Aservice=flavorasset&4%3Apager%3ApageSize=1&2%3Aaction=getWebPlayableByEntryId&2%3AentryId=0%5Fm6d8wsry&3%3AentryId=0%5Fm6d8wsry&5%3Aaction=list&1%3AentryId=0%5Fm6d8wsry&5%3Aservice=cuepoint%5Fcuepoint&1%3Aversion=%2D1&4%3Aservice=metadata%5Fmetadata&5%3Afilter%3AentryIdEqual=0%5Fm6d8wsry&1%3Aaction=get&3%3Aaction=getContextData&3%3AcontextDataParams%3AobjectType=KalturaEntryContextDataParams&3%3Aservice=baseentry&4%3Apager%3AobjectType=KalturaFilterPager #http://cdnapi.kaltura.com/index.php/partnerservices2/executeplaylist?uid=&format=8&partner_id=628012&subp_id=628012&playlist_id=0_l5kr39y0 #http://cdnapi.kaltura.com/p/628012/sp/628012/playManifest/entryId/0_m6d8wsry/format/rtmp/protocol/rtmp/cdnHost/vp.disney.go.com/player/latest//storageId/1252/ks/YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow==/uiConfId/6607922/a/a.f4m? #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=b02f05c63e3bede1bb42077f37fb6b03&4%3Afilter%3AobjectType=KalturaMetadataFilter&ks=YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow%3D%3D&4%3Apager%3ApageSize=1&4%3Afilter%3AmetadataObjectTypeEqual=1&4%3Afilter%3AobjectIdEqual=0%5Fm6d8wsry&4%3Afilter%3AorderBy=%2BcreatedAt&5%3Afilter%3AobjectType=KalturaCuePointFilter&1%3Aaction=get&clientTag=kdp%3Av3%2E5%2E53%2Eb&ignoreNull=1&5%3Aaction=list&3%3AcontextDataParams%3AstreamerType=auto&4%3Aaction=list&2%3Aaction=getWebPlayableByEntryId&1%3Aservice=baseentry&4%3Aservice=metadata%5Fmetadata&5%3Afilter%3AentryIdEqual=0%5Fm6d8wsry&3%3Aaction=getContextData&3%3AentryId=0%5Fm6d8wsry&3%3Aservice=baseentry&3%3AcontextDataParams%3AobjectType=KalturaEntryContextDataParams&1%3AentryId=0%5Fm6d8wsry&5%3Aservice=cuepoint%5Fcuepoint&4%3Apager%3AobjectType=KalturaFilterPager&1%3Aversion=%2D1&2%3Aservice=flavorasset&2%3AentryId=0%5Fm6d8wsry #http://cdnapi.kaltura.com/p/628012/sp/628012/playManifest/entryId/0_m6d8wsry/format/rtmp/protocol/rtmp/cdnHost/vp.disney.go.com/player/latest//storageId/1252/ks/YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow==/uiConfId/6607922/a/a.f4m? #var tilePackVars = { configXMLPath: "http://disney.go.com/disneyjunior/data/videoConfig?cid=1944089" }; extractId = re.compile( "\{ configXMLPath: \"http://disney.go.com/disneyjunior/data/videoConfig\?cid=([0-9]*)\" \}" ).search(page) if extractId is not None: playlistLink = "http://disney.go.com/disneyjunior/data/videoPlaylist?cid=" + extractId.group( 1) xmlPage = helper.load_page(playlistLink) xmlPage = xmlPage.replace(" & ", " & ") xmlDom = minidom.parseString(xmlPage) playChapter = xmlDom.getElementsByTagName("chapter")[0] for chapter in xmlDom.getElementsByTagName("chapter"): if chapter.getAttribute("playFirst") == "true": playChapter = chapter playerItem = xbmcgui.ListItem(playChapter.getAttribute("title")) playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO) playlist.clear() for video in playChapter.getElementsByTagName("video"): streamUrl = video.getAttribute("streamurl") app = " app=" + streamUrl[streamUrl.find("/", 8) + 1:] flashVer = " flashver=WIN%2010,3,181,26" #flashVer = "" swfUrl = " swfUrl=http://a.dolimg.com/en-US/disneyjunior/swf/videoplayerShell_MPF.swf swfVfy=1" pageUrl = " pageUrl=" + link playpath = " playpath=" + video.getAttribute("progurl") streamUrl = streamUrl[:streamUrl.find( "/", 8)] + swfUrl + app + pageUrl + flashVer + playpath print streamUrl helper.setResolvedUrl(streamUrl) #return False listItem = xbmcgui.ListItem(streamUrl, path=streamUrl) #listItem.setProperty("PlayPath", streamUrl); listItem.setProperty('IsPlayable', 'true') playlist.add(url=streamUrl, listitem=listItem) player = xbmc.Player() player.play(playlist, playerItem) return False
def playVideo(link): page = helper.load_page(link,True) #print page #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=98219f70556227be25075e61f0505fbf&1%3Aservice=session&3%3Aks=%7B1%3Aresult%3Aks%7D&2%3Aaction=get&ignoreNull=1&3%3Aservice=uiconf&1%3Aaction=startWidgetSession&2%3Aks=%7B1%3Aresult%3Aks%7D&3%3Aid=6607922&3%3Aaction=get&clientTag=kdp%3Av3%2E5%2E53%2Eb&1%3Aexpiry=86400&1%3AwidgetId=%5F628012&2%3Aservice=widget&2%3Aid=%5F628012 #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=b02f05c63e3bede1bb42077f37fb6b03&4%3Afilter%3AorderBy=%2BcreatedAt&4%3Afilter%3AobjectType=KalturaMetadataFilter&ks=YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow%3D%3D&3%3AcontextDataParams%3AstreamerType=auto&5%3Afilter%3AobjectType=KalturaCuePointFilter&1%3Aservice=baseentry&clientTag=kdp%3Av3%2E5%2E53%2Eb&4%3Afilter%3AobjectIdEqual=0%5Fm6d8wsry&4%3Afilter%3AmetadataObjectTypeEqual=1&4%3Aaction=list&ignoreNull=1&2%3Aservice=flavorasset&4%3Apager%3ApageSize=1&2%3Aaction=getWebPlayableByEntryId&2%3AentryId=0%5Fm6d8wsry&3%3AentryId=0%5Fm6d8wsry&5%3Aaction=list&1%3AentryId=0%5Fm6d8wsry&5%3Aservice=cuepoint%5Fcuepoint&1%3Aversion=%2D1&4%3Aservice=metadata%5Fmetadata&5%3Afilter%3AentryIdEqual=0%5Fm6d8wsry&1%3Aaction=get&3%3Aaction=getContextData&3%3AcontextDataParams%3AobjectType=KalturaEntryContextDataParams&3%3Aservice=baseentry&4%3Apager%3AobjectType=KalturaFilterPager #http://cdnapi.kaltura.com/index.php/partnerservices2/executeplaylist?uid=&format=8&partner_id=628012&subp_id=628012&playlist_id=0_l5kr39y0 #http://cdnapi.kaltura.com/p/628012/sp/628012/playManifest/entryId/0_m6d8wsry/format/rtmp/protocol/rtmp/cdnHost/vp.disney.go.com/player/latest//storageId/1252/ks/YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow==/uiConfId/6607922/a/a.f4m? #http://cdnapi.kaltura.com//api_v3/index.php?service=multirequest&action=null&kalsig=b02f05c63e3bede1bb42077f37fb6b03&4%3Afilter%3AobjectType=KalturaMetadataFilter&ks=YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow%3D%3D&4%3Apager%3ApageSize=1&4%3Afilter%3AmetadataObjectTypeEqual=1&4%3Afilter%3AobjectIdEqual=0%5Fm6d8wsry&4%3Afilter%3AorderBy=%2BcreatedAt&5%3Afilter%3AobjectType=KalturaCuePointFilter&1%3Aaction=get&clientTag=kdp%3Av3%2E5%2E53%2Eb&ignoreNull=1&5%3Aaction=list&3%3AcontextDataParams%3AstreamerType=auto&4%3Aaction=list&2%3Aaction=getWebPlayableByEntryId&1%3Aservice=baseentry&4%3Aservice=metadata%5Fmetadata&5%3Afilter%3AentryIdEqual=0%5Fm6d8wsry&3%3Aaction=getContextData&3%3AentryId=0%5Fm6d8wsry&3%3Aservice=baseentry&3%3AcontextDataParams%3AobjectType=KalturaEntryContextDataParams&1%3AentryId=0%5Fm6d8wsry&5%3Aservice=cuepoint%5Fcuepoint&4%3Apager%3AobjectType=KalturaFilterPager&1%3Aversion=%2D1&2%3Aservice=flavorasset&2%3AentryId=0%5Fm6d8wsry #http://cdnapi.kaltura.com/p/628012/sp/628012/playManifest/entryId/0_m6d8wsry/format/rtmp/protocol/rtmp/cdnHost/vp.disney.go.com/player/latest//storageId/1252/ks/YzRjYTUyNjI4ZDFjZjE1MDk2ZjZiZTgzMThiOGI1M2JmNDkxMmE3M3w2MjgwMTI7NjI4MDEyOzEzNDE0Njg3NTQ7MDsxMzQxMzgyMzU0LjEzNDk7MDt2aWV3Oio7Ow==/uiConfId/6607922/a/a.f4m? #var tilePackVars = { configXMLPath: "http://disney.go.com/disneyjunior/data/videoConfig?cid=1944089" }; extractId = re.compile("\{ configXMLPath: \"http://disney.go.com/disneyjunior/data/videoConfig\?cid=([0-9]*)\" \}").search(page) if extractId is not None: playlistLink = "http://disney.go.com/disneyjunior/data/videoPlaylist?cid="+extractId.group(1) xmlPage = helper.load_page(playlistLink) xmlPage = xmlPage.replace(" & "," & ") xmlDom = minidom.parseString(xmlPage) playChapter = xmlDom.getElementsByTagName("chapter")[0] for chapter in xmlDom.getElementsByTagName("chapter"): if chapter.getAttribute("playFirst") == "true": playChapter = chapter playerItem = xbmcgui.ListItem(playChapter.getAttribute("title")) playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO); playlist.clear(); for video in playChapter.getElementsByTagName("video"): streamUrl = video.getAttribute("streamurl") app = " app="+streamUrl[streamUrl.find("/",8)+1:] flashVer = " flashver=WIN%2010,3,181,26" #flashVer = "" swfUrl = " swfUrl=http://a.dolimg.com/en-US/disneyjunior/swf/videoplayerShell_MPF.swf swfVfy=1" pageUrl = " pageUrl="+link playpath = " playpath="+video.getAttribute("progurl") streamUrl = streamUrl[:streamUrl.find("/",8)] + swfUrl + app + pageUrl + flashVer + playpath print streamUrl helper.setResolvedUrl(streamUrl) #return False listItem = xbmcgui.ListItem(streamUrl, path=streamUrl); #listItem.setProperty("PlayPath", streamUrl); listItem.setProperty('IsPlayable', 'true') playlist.add(url=streamUrl, listitem=listItem) player = xbmc.Player() player.play(playlist, playerItem) return False
def playVideo(link): streamUrl = helper.load_page(link, True, getRedirect=True) if not streamUrl == link: streamUrl = streamUrl.replace("<break>", " playpath=MP4:") else: streamPage = helper.load_page(link, True) extractUrl = re.compile("<url>(.*?)</url>") streamUrl = extractUrl.search(streamPage).group(1) streamUrl = streamUrl.replace("<", "<") streamUrl = streamUrl.replace(">", ">") streamUrl = streamUrl.replace("&", "&") streamUrl = streamUrl.replace("<break>", " playpath=") helper.setResolvedUrl(streamUrl)
def mainPage(): page = helper.load_page(baseLink) extractShow = re.compile( "<a href=\"(.*?)\" target=\"_self\"><img src=\"(.*?)\".*?alt=\"Watch (.*?) on KidMango.com!\" /></a>" ) for show in extractShow.finditer(page): link = show.group(1).replace("comtinpo", "com/tinpo") print link page = urllib.urlopen(link) if page.getcode() != 404: page = page.read() extractContentId = re.compile("contentId : '([0-9]*)',").search( page) if extractContentId is not None: contentId = extractContentId.group(1) feedUrl = "http://cms.springboard.gorillanation.com/xml_feeds_advanced/index/891/rss1/" + contentId + "/" helper.addDirectoryItem( show.group(3), { "channel": thisChannel, "action": "showVideos", "link": feedUrl }, show.group(2)) helper.endOfDirectory()
def showVideos(feedUrl): feed = helper.load_page(urllib.unquote(feedUrl)) media = helper.extractMrss(feed) for video in media: parameters = { "channel": thisChannel, "action": "playVideo", "link": video['url'] } helper.addDirectoryItem(video['title'], parameters, video['img'], False, duration=video['duration'], plot=video['plot']) #Next page extractNextPage = re.compile( "<atom:link rel=\"next\" href=\"(.*)\" />").search(feed) if extractNextPage is not None: helper.addDirectoryItem( "Show more", { "channel": thisChannel, "action": "showVideos", "link": extractNextPage.group(1) }, "") helper.endOfDirectory()
def showVideos(link): link = urllib.unquote(link) page = helper.load_page(link) extractShowMoreButton = re.compile('<a href="(.*?)" class="lite-button">') extractSections = extractSection.findall(page) if len(extractSections) == 1: showVideosSection(link, extractSections[0][0]) return False else: for section in extractSections: sectionLink = link sectionTitle = section[0] sectionHtml = section[1] showMoreButton = extractShowMoreButton.search(sectionHtml) sectionLinkSection = sectionTitle if showMoreButton is not None: sectionLink = baseLink + showMoreButton.group(1) sectionLinkSection = "/" helper.addDirectoryItem( sectionTitle, { "channel": thisChannel, "action": "showVideosSection", "link": sectionLink, "section": sectionLinkSection, }, "", ) helper.endOfDirectory()
def showVideosSection(link, section): link = urllib.unquote(link) showSection = urllib.unquote_plus(section) page = helper.load_page(link) extractVideo = re.compile("<section class=\".*?\">.*?<img src=\"(.*?)\".*?<a href=\"(.*?)\" class=\"title\">(.*?)</a>.*?<p>(.*?)</p>.*?<span class=\"content-item-short-description\">(.*?)</span>.*?</section>", re.DOTALL) sectionHtml = ""; if showSection != "": extractSections = extractSection.finditer(page) for section in extractSections: sectionTitle = section.group(1) if sectionTitle == showSection: sectionHtml = section.group(2) else: sectionHtml = page for video in extractVideo.finditer(sectionHtml): videoTitle = video.group(3) + " (" + video.group(4).strip() + ")" videoImg = baseLink + video.group(1) videoLink = baseLink + video.group(2) videoPlot = video.group(5) helper.addDirectoryItem(videoTitle, {"channel":thisChannel, "action":"playVideo", "link":videoLink}, videoImg, False,plot=videoPlot) helper.endOfDirectory()
def subPageXml(link, action="videoPage"): if action == "videoPage": nextAction = "subPageXml" isFolder = True elif action == "playVideo": nextAction = "videoPageXml" isFolder = False xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for sprite in xmlDom.getElementsByTagName("sprite"): if sprite.getAttribute("class") == "com.disney.disneyjunior.classes.sprites.TileAsset video": menu_name = sprite.getElementsByTagName("text")[0].firstChild.data menu_name = helper.removeTags(menu_name) menu_link = sprite.getElementsByTagName("a")[0].getAttribute("href") menu_img = sprite.getElementsByTagName("img")[0].getAttribute("src") parameters = {"channel":thisChannel, "action":action, "link":menu_link} helper.addDirectoryItem(menu_name,parameters,menu_img,folder=isFolder) menuNode = xmlDom.getElementById("next") for a in xmlDom.getElementsByTagName("a"): if a.getAttribute("id") == "next": parameters = {"channel":thisChannel, "action":nextAction, "link":a.getAttribute("href")} helper.addDirectoryItem("Next page",parameters) helper.endOfDirectory()
def showVideos(link): link = urllib.unquote(link) page = helper.load_page(link) extractShowMoreButton = re.compile( "<a href=\"(.*?)\" class=\"lite-button\">") extractSections = extractSection.findall(page) if len(extractSections) == 1: showVideosSection(link, extractSections[0][0]) return False else: for section in extractSections: sectionLink = link sectionTitle = section[0] sectionHtml = section[1] showMoreButton = extractShowMoreButton.search(sectionHtml) sectionLinkSection = sectionTitle if showMoreButton is not None: sectionLink = baseLink + showMoreButton.group(1) sectionLinkSection = "/" helper.addDirectoryItem( sectionTitle, { "channel": thisChannel, "action": "showVideosSection", "link": sectionLink, "section": sectionLinkSection }, "") helper.endOfDirectory()
def mainPage(): page = helper.load_page(baseLink + "/videos") heroCats = re.compile( "<ul id=\"hero_cats\">(.*?</ul><ul id=\"more_cats\">.*?)</ul>", re.DOTALL).search(page).group(1) items = re.compile( "<a href=\"(/videos/category/(.*?))\" class=\".*?\"><span>(.*?)</span></a>" ).finditer(heroCats) helper.addDirectoryItem("All", { "channel": thisChannel, "action": "showCategory", "link": "/videos" }) for category in items: catName = category.group(3) catLink = category.group(1) catImg = baseLink + "/assets/icons/cats/" + category.group(2).replace( "+", "_") + "_normal.png" helper.addDirectoryItem(catName, { "channel": thisChannel, "action": "showCategory", "link": catLink }, catImg) helper.endOfDirectory()
def showSubMenu(level1=-1): page = helper.load_page(baseLink) mainMenu = extractMenu(page) if level1 == -1: menu = mainMenu else: menu = mainMenu[int(level1)]['children'] counter = 0 for menuItem in menu: menu_name = menuItem['name'] menu_link = menuItem['link'] if len(menuItem['children']): helper.addDirectoryItem(menuItem['name'], { "channel": thisChannel, "action": "showSubMenu", "link": counter }) else: helper.addDirectoryItem(menuItem['name'], { "channel": thisChannel, "action": "showVideos", "link": menu_link }) counter = counter + 1 helper.endOfDirectory()
def extractMenu(parent=None): page = helper.load_page(baseLink) extractChannels = re.compile("<div id=\"video-navigation\">(.*?)</div>",re.DOTALL) extractChannel = re.compile("<li.*?href=\"\?c=(.*?)\">(.*?)</a>") channels = extractChannels.search(page).group(1) channels = channels.replace("</li>","</li>\n") channels = channels.replace("</a>","</a>\n") menuList = [] parent = -1; hasParent = False for line in channels.split("\n"): if line.find("<ul class=\"level_1\">") > -1: hasParent = True channel = extractChannel.search(line) if channel is not None: if not hasParent: parent = parent + 1 menuList.append({"name" : channel.group(2), "link" : channel.group(1), "children" : []}) else: menuList[parent]['children'].append({"name" : channel.group(2), "link" : channel.group(1), "children" : []}) if line.find("</ul>") > -1: hasParent = False return menuList
def playVideo(mediaId): link = metaframeLink % (mediaId) page = helper.load_page(link) data = json.loads(page) streamUrl = data['videos']['limelight700']['uri'] helper.setResolvedUrl(streamUrl)
def videoPageXml(link, start, showName): xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for release in xmlDom.getElementsByTagName("Release"): titles = release.getElementsByTagName("title") menu_name = release.getElementsByTagName("title")[len(titles) - 1].firstChild.data clip = "" for customData in release.getElementsByTagName("CustomDataElement"): if customData.getElementsByTagName( "title")[0].firstChild.data == "Episode_Title": if customData.getElementsByTagName( "value")[0].firstChild is not None: menu_name = customData.getElementsByTagName( "value")[0].firstChild.data if customData.getElementsByTagName( "title")[0].firstChild.data == "IsClip": if customData.getElementsByTagName( "value")[0].firstChild.data == "true": clip = " (Clip)" menu_name = menu_name + clip menu_link = release.getElementsByTagName("URL")[0].firstChild.data menu_img = "" if release.getElementsByTagName( "thumbnailURL")[0].firstChild is not None: menu_img = release.getElementsByTagName( "thumbnailURL")[0].firstChild.data menu_duration = str( int(release.getElementsByTagName("length")[0].firstChild.data) / 1000 / 60) parameters = { "channel": thisChannel, "action": "playVideo", "link": menu_link } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False, duration=menu_duration) total_count = int( xmlDom.getElementsByTagName("totalCount")[0].firstChild.data) if int(start) + 20 < total_count: menu_link = videoPageLink % (str(int(start) + 20), str(int(start) + 40), showName, affiliate, player, playerQuery) parameters = { "channel": thisChannel, "action": "videoPageXml", "link": menu_link, "start": str(int(start) + 20), "name": showName } helper.addDirectoryItem("Show more", parameters) helper.endOfDirectory()
def showVideos(id): feedLink = releasesFeedLink+id page = helper.load_page(feedLink) data = json.loads(page) for releaseItem in data['items']: length = str(int(releaseItem['length'])/1000/60) parameters = {"channel":thisChannel, "action" : "playVideo", "link": releaseItem['URL']} helper.addDirectoryItem(releaseItem['title'], parameters, releaseItem['thumbnailURL'],False,duration=length) helper.endOfDirectory()
def playVideo(link): page = helper.load_page(urllib.unquote(link)) videoPlayer = re.compile("brightcove_mediaId: ([0-9]*),").search(page).group(1) stream = brightcovePlayer.play(const, playerID, videoPlayer, publisherID, playerKey) rtmpbase = stream[1][0:stream[1].find("&")] playpath = stream[1][stream[1].find("&") + 1:] finalurl = rtmpbase + ' playpath=' + playpath helper.setResolvedUrl(finalurl)
def playVideo(link): page = helper.load_page(urllib.unquote(link)) videoPlayer = ( re.compile('<input type="hidden" name="asset-id" value="([0-9]*)" id="asset-id" />').search(page).group(1) ) stream = brightcovePlayer.play(const, playerID, videoPlayer, publisherID, playerKey) rtmpbase = stream[1][0 : stream[1].find("&")] playpath = stream[1][stream[1].find("&") + 1 :] finalurl = rtmpbase + " playpath=" + playpath helper.setResolvedUrl(finalurl)
def showVideos(link): link ="http://media.treehousetv.com/videos.ashx?c="+urllib.unquote(link) page = helper.load_page(link) data = json.loads(page) for video in data: menu_link = video["Id"] menu_name = video["Name"] menu_img = video["ThumbnailURL"] parameters = {"channel":thisChannel,"action":"playVideo","link":menu_link} helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False) helper.endOfDirectory()
def mainPage(): page = helper.load_page(apiLink%("kids-video-landing")) data = json.loads(page) items = data['config']['promos'][0]['items'] for category in items: catName = helper.removeHtmlSpecialChars(category['title']) catLink = apiLink%(category['urlAlias']) catImg = baseLink+category['thumbnail']; helper.addDirectoryItem(catName, {"channel":thisChannel,"action":"showCategory","link":catLink}, catImg) helper.endOfDirectory()
def playVideo(link): page = helper.load_page(urllib.unquote(link)) videoPlayer = re.compile( "<input type=\"hidden\" name=\"asset-id\" value=\"([0-9]*)\" id=\"asset-id\" />" ).search(page).group(1) stream = brightcovePlayer.play(const, playerID, videoPlayer, publisherID, playerKey) rtmpbase = stream[1][0:stream[1].find("&")] playpath = stream[1][stream[1].find("&") + 1:] finalurl = rtmpbase + ' playpath=' + playpath helper.setResolvedUrl(finalurl)
def playVideo(link): page = helper.load_page(baseLink + urllib.unquote(link)) extractYouTubeId = re.compile("<div data-youtube=\"(.*?)\" id=\"yt_video\">") youTubeInfo = extractYouTubeId.search(page) if youTubeInfo is not None: youTubeId = youTubeInfo.group(1) streamUrl = "plugin://plugin.video.youtube/?action=play_video&videoid=" + youTubeId helper.setResolvedUrl(streamUrl) else: #bitsontherun extractVideoId = re.compile("<div id=\"container\" style=\"display: none;\"><script type=\"text/javascript\" src=\"(http://content.bitsontherun.com/players/.*?-.*?.js)\"></script></div>") videoInfo = extractVideoId.search(page) if videoInfo is not None: jsURL = videoInfo.group(1) bitsontherunJS = helper.load_page(jsURL) extractVideoUrl = re.compile("botrObject.swf\(\n\t\".*?\",\n\t\".*?\",\n\t\".*?\",\n\t\"(.*?)\",") videoUrlInfo = extractVideoUrl.search(bitsontherunJS) videoUrl = videoUrlInfo.group(1); #videoUrl = videoUrl.replace("conversions/","http://v.jwpcdn.com/") helper.setResolvedUrl(videoUrl)
def showSubMenu(feedLink): page = helper.load_page(feedLink) data = json.loads(page) for categoryItem in data['items']: action = "showCategory" if categoryItem['hasChildren'] == False: action = "showVideos" print categoryItem['title'] print categoryItem['ID'] parameters = {"channel":thisChannel, "action" : action, "link": categoryItem['ID']} helper.addDirectoryItem(categoryItem['title'], parameters, categoryItem['thumbnailURL']) helper.endOfDirectory()
def showVideos(feedUrl): feed = helper.load_page(urllib.unquote(feedUrl)) media = helper.extractMrss(feed) for video in media: parameters = {"channel":thisChannel,"action":"playVideo","link":video['url']} helper.addDirectoryItem(video['title'], parameters, video['img'], False, duration=video['duration'], plot=video['plot']) #Next page extractNextPage = re.compile("<atom:link rel=\"next\" href=\"(.*)\" />").search(feed) if extractNextPage is not None: helper.addDirectoryItem("Show more", {"channel":thisChannel,"action":"showVideos","link":extractNextPage.group(1)}, "") helper.endOfDirectory()
def mainPage(): page = helper.load_page(baseLink+"/video") extractChannels = re.compile("<ul id=\"channelCarousel_ul\">(.*?)</ul>",re.DOTALL) extractChannel = re.compile("<a href=\"(.*?)\".*?alt=\"(.*?)\" src=\"(.*?)\"",re.DOTALL) channels = extractChannels.search(page).group(1) for channel in extractChannel.finditer(channels): menu_link = baseLink+channel.group(1) menu_name = channel.group(2) menu_img = baseLink+channel.group(3) parameters = {"channel":thisChannel,"action":"showVideos","link":menu_link} helper.addDirectoryItem(menu_name, parameters, menu_img) helper.endOfDirectory()
def showVideos(link): page = helper.load_page(urllib.unquote(link)) extractVideos = re.compile("<ul id=\"videoList_ul\">(.*?)</ul>",re.DOTALL) extractVideo = re.compile("<li class=\"vidItem [a-z]*\" id=\"video_(.*?)\".*?src=\"(.*?)\".*?<span id=\".*?\">(.*?)</span>",re.DOTALL) videos = extractVideos.search(page).group(1) for video in extractVideo.finditer(videos): menu_link = video.group(1) menu_name = helper.removeHtmlSpecialChars(video.group(3)) menu_img = video.group(2) parameters = {"channel":thisChannel,"action":"playVideo","link":menu_link} helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False) helper.endOfDirectory()
def showShows(link): page = helper.load_page(urllib.unquote(link)) extractShow = re.compile("<section class=\".*?content-item-vertical.*?\">.*?<div class=\"thumbimg\">.*?src=\"(.*?)\".*?href=\"(.*?)\".*?>(.*?)</a>", re.DOTALL) for show in extractShow.finditer(page): showImg = baseLink + show.group(1) showLink = baseLink + show.group(2) + "/videos" showTitle = show.group(3) showPage = urllib.urlopen(showLink) if showLink == showPage.geturl(): if extractSection.search(showPage.read()) is not None: helper.addDirectoryItem(showTitle, {"channel":thisChannel, "action":"showVideos", "link":showLink}, showImg) helper.endOfDirectory()
def mainPage(): page = helper.load_page(baseLink + "/videos") heroCats = re.compile("<ul id=\"hero_cats\">(.*?</ul><ul id=\"more_cats\">.*?)</ul>", re.DOTALL).search(page).group(1) items = re.compile("<a href=\"(/videos/category/(.*?))\" class=\".*?\"><span>(.*?)</span></a>").finditer(heroCats) helper.addDirectoryItem("All", {"channel":thisChannel, "action":"showCategory", "link":"/videos"}) for category in items: catName = category.group(3) catLink = category.group(1) catImg = baseLink + "/assets/icons/cats/" + category.group(2).replace("+", "_") + "_normal.png" helper.addDirectoryItem(catName, {"channel":thisChannel, "action":"showCategory", "link":catLink}, catImg) helper.endOfDirectory()
def showCategory(link): page = helper.load_page(urllib.unquote(link)) page = page.replace("\xED","\xc3\xad") data = json.loads(page) items = data['config']['promos'][0]['items'] for video in items: vidName = helper.removeHtmlSpecialChars(video['title']) vidId = video['id'] vidImg = video['thumbnail'] helper.addDirectoryItem(vidName, {"channel":thisChannel,"action":"playVideo","link":vidId}, vidImg, False) helper.endOfDirectory()
def showVideos(link): link = "http://media.treehousetv.com/videos.ashx?c=" + urllib.unquote(link) page = helper.load_page(link) data = json.loads(page) for video in data: menu_link = video["Id"] menu_name = video["Name"] menu_img = video["ThumbnailURL"] parameters = { "channel": thisChannel, "action": "playVideo", "link": menu_link } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False) helper.endOfDirectory()
def mainPage(): page = helper.load_page(baseLink) extractShow = re.compile("<a href=\"(.*?)\" target=\"_self\"><img src=\"(.*?)\".*?alt=\"Watch (.*?) on KidMango.com!\" /></a>") for show in extractShow.finditer(page): link = show.group(1).replace("comtinpo","com/tinpo") print link page = urllib.urlopen(link) if page.getcode() != 404: page =page.read() extractContentId = re.compile("contentId : '([0-9]*)',").search(page) if extractContentId is not None: contentId = extractContentId.group(1) feedUrl = "http://cms.springboard.gorillanation.com/xml_feeds_advanced/index/891/rss1/"+contentId+"/" helper.addDirectoryItem(show.group(3), {"channel":thisChannel,"action":"showVideos","link":feedUrl}, show.group(2)) helper.endOfDirectory()
def mainPage(): page = helper.load_page(apiLink % ("kids-video-landing")) data = json.loads(page) items = data['config']['promos'][0]['items'] for category in items: catName = helper.removeHtmlSpecialChars(category['title']) catLink = apiLink % (category['urlAlias']) catImg = baseLink + category['thumbnail'] helper.addDirectoryItem(catName, { "channel": thisChannel, "action": "showCategory", "link": catLink }, catImg) helper.endOfDirectory()
def mainPage(): xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for entry in xmlDom.getElementsByTagName("entry"): youtubeUrl = entry.getElementsByTagName("id")[0].firstChild.data youtubeId = youtubeUrl[youtubeUrl.rfind("/")+1:] title = entry.getElementsByTagName("title")[0].firstChild.data descirption = entry.getElementsByTagName("content")[0].firstChild.data img = entry.getElementsByTagName("media:thumbnail")[0].getAttribute("url") videoDuration = entry.getElementsByTagName("media:content")[0].getAttribute("duration") videoDuration = str(int(videoDuration)/60) parameters = {"channel":thisChannel,"action":"playVideo","id":youtubeId} helper.addDirectoryItem(title, parameters, img, False, plot=descirption, duration=videoDuration) helper.endOfDirectory()
def videoPageXml(link, start, showName): xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for release in xmlDom.getElementsByTagName("Release"): titles = release.getElementsByTagName("title") menu_name = release.getElementsByTagName("title")[len(titles) - 1].firstChild.data clip = "" for customData in release.getElementsByTagName("CustomDataElement"): if customData.getElementsByTagName("title")[0].firstChild.data == "Episode_Title": if customData.getElementsByTagName("value")[0].firstChild is not None: menu_name = customData.getElementsByTagName("value")[0].firstChild.data if customData.getElementsByTagName("title")[0].firstChild.data == "IsClip": if customData.getElementsByTagName("value")[0].firstChild.data == "true": clip = " (Clip)" menu_name = menu_name + clip menu_link = release.getElementsByTagName("URL")[0].firstChild.data menu_img = "" if release.getElementsByTagName("thumbnailURL")[0].firstChild is not None: menu_img = release.getElementsByTagName("thumbnailURL")[0].firstChild.data menu_duration = str(int(release.getElementsByTagName("length")[0].firstChild.data) / 1000 / 60) parameters = {"channel": thisChannel, "action": "playVideo", "link": menu_link} helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False, duration=menu_duration) total_count = int(xmlDom.getElementsByTagName("totalCount")[0].firstChild.data) if int(start) + 20 < total_count: menu_link = videoPageLink % ( str(int(start) + 20), str(int(start) + 40), showName, affiliate, player, playerQuery, ) parameters = { "channel": thisChannel, "action": "videoPageXml", "link": menu_link, "start": str(int(start) + 20), "name": showName, } helper.addDirectoryItem("Show more", parameters) helper.endOfDirectory()
def subPageXml(link): xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for category in xmlDom.getElementsByTagName("Category"): menu_name = category.getElementsByTagName("fullTitle")[0].firstChild.data menu_link = videoPageLink % ("1", "20", menu_name, affiliate, player, playerQuery) menu_img = "" menuImgItem = category.getElementsByTagName("CustomDataElement")[0].getElementsByTagName("value")[0].firstChild if menuImgItem is not None: menu_img = menuImgItem.data parameters = { "channel": thisChannel, "action": "videoPageXml", "link": menu_link, "start": "1", "name": menu_name, } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=True) helper.endOfDirectory()
def showCategory(link): page = helper.load_page(urllib.unquote(link)) page = page.replace("\xED", "\xc3\xad") data = json.loads(page) items = data['config']['promos'][0]['items'] for video in items: vidName = helper.removeHtmlSpecialChars(video['title']) vidId = video['id'] vidImg = video['thumbnail'] helper.addDirectoryItem(vidName, { "channel": thisChannel, "action": "playVideo", "link": vidId }, vidImg, False) helper.endOfDirectory()
def subPageXml(link, action="videoPage"): if action == "videoPage": nextAction = "subPageXml" isFolder = True elif action == "playVideo": nextAction = "videoPageXml" isFolder = False xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for sprite in xmlDom.getElementsByTagName("sprite"): if sprite.getAttribute( "class" ) == "com.disney.disneyjunior.classes.sprites.TileAsset video": menu_name = sprite.getElementsByTagName("text")[0].firstChild.data menu_name = helper.removeTags(menu_name) menu_link = sprite.getElementsByTagName("a")[0].getAttribute( "href") menu_img = sprite.getElementsByTagName("img")[0].getAttribute( "src") parameters = { "channel": thisChannel, "action": action, "link": menu_link } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=isFolder) menuNode = xmlDom.getElementById("next") for a in xmlDom.getElementsByTagName("a"): if a.getAttribute("id") == "next": parameters = { "channel": thisChannel, "action": nextAction, "link": a.getAttribute("href") } helper.addDirectoryItem("Next page", parameters) helper.endOfDirectory()
def showVideos(link): page = helper.load_page(urllib.unquote(link)) extractVideos = re.compile("<ul id=\"videoList_ul\">(.*?)</ul>", re.DOTALL) extractVideo = re.compile( "<li class=\"vidItem [a-z]*\" id=\"video_(.*?)\".*?src=\"(.*?)\".*?<span id=\".*?\">(.*?)</span>", re.DOTALL) videos = extractVideos.search(page).group(1) for video in extractVideo.finditer(videos): menu_link = video.group(1) menu_name = helper.removeHtmlSpecialChars(video.group(3)) menu_img = video.group(2) parameters = { "channel": thisChannel, "action": "playVideo", "link": menu_link } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=False) helper.endOfDirectory()
def mainPage(): page = helper.load_page(baseLink + "/video") extractChannels = re.compile("<ul id=\"channelCarousel_ul\">(.*?)</ul>", re.DOTALL) extractChannel = re.compile( "<a href=\"(.*?)\".*?alt=\"(.*?)\" src=\"(.*?)\"", re.DOTALL) channels = extractChannels.search(page).group(1) for channel in extractChannel.finditer(channels): menu_link = baseLink + channel.group(1) menu_name = channel.group(2) menu_img = baseLink + channel.group(3) parameters = { "channel": thisChannel, "action": "showVideos", "link": menu_link } helper.addDirectoryItem(menu_name, parameters, menu_img) helper.endOfDirectory()
def showSubMenu(level1=-1): page = helper.load_page(baseLink) mainMenu = extractMenu(page) if level1 == -1: menu = mainMenu else: menu = mainMenu[int(level1)]['children'] counter = 0 for menuItem in menu: menu_name = menuItem['name']; menu_link = menuItem['link']; if len(menuItem['children']): helper.addDirectoryItem(menuItem['name'], {"channel":thisChannel, "action" : "showSubMenu", "link": counter}) else: helper.addDirectoryItem(menuItem['name'], {"channel":thisChannel, "action" : "showVideos", "link": menu_link}) counter = counter + 1 helper.endOfDirectory()
def showCategory(link): page = helper.load_page(baseLink+urllib.unquote(link)) extractVideos = re.compile("<div class=\"peepshow\">.*?<a href=\"(.*?)\">(.*?)</a>.*?<img.*?src=\"(.*?)\".*?<p>(.*?)</p>",re.DOTALL) for video in extractVideos.finditer(page): vidName = video.group(2) vidName = helper.removeHtmlSpecialChars(vidName) vidLink = video.group(1) vidImg = video.group(3) vidPlot = video.group(4) parameters = {"channel":thisChannel, "action":"playVideo", "link":vidLink} helper.addDirectoryItem(vidName, parameters, vidImg, False, plot=vidPlot) extractNextPage = re.compile("<li class=\"next\"><a href=\"(.*?)\" rel=\"next\">Next") nextPage = extractNextPage.search(page) if nextPage is not None: helper.addDirectoryItem("Show more", {"channel":thisChannel, "action":"showCategory", "link":nextPage.group(1)}) helper.endOfDirectory()
def extractMenu(parent=None): page = helper.load_page(baseLink) extractChannels = re.compile("<div id=\"video-navigation\">(.*?)</div>", re.DOTALL) extractChannel = re.compile("<li.*?href=\"\?c=(.*?)\">(.*?)</a>") channels = extractChannels.search(page).group(1) channels = channels.replace("</li>", "</li>\n") channels = channels.replace("</a>", "</a>\n") menuList = [] parent = -1 hasParent = False for line in channels.split("\n"): if line.find("<ul class=\"level_1\">") > -1: hasParent = True channel = extractChannel.search(line) if channel is not None: if not hasParent: parent = parent + 1 menuList.append({ "name": channel.group(2), "link": channel.group(1), "children": [] }) else: menuList[parent]['children'].append({ "name": channel.group(2), "link": channel.group(1), "children": [] }) if line.find("</ul>") > -1: hasParent = False return menuList
def playVideo(link): page = helper.load_page(baseLink + urllib.unquote(link)) extractYouTubeId = re.compile( "<div data-youtube=\"(.*?)\" id=\"yt_video\">") youTubeInfo = extractYouTubeId.search(page) if youTubeInfo is not None: youTubeId = youTubeInfo.group(1) streamUrl = "plugin://plugin.video.youtube/?action=play_video&videoid=" + youTubeId helper.setResolvedUrl(streamUrl) else: const = "07e6acedf6c0f426a377e5b3ba077229e6e826f9" publisherID = "1521649306001" extractVideo = re.compile( "<param name=\"playerID\" value=\"([0-9]*)\".*?name=\"playerKey\" value=\"(.*?)\".*name=\"@videoPlayer\" value=\"([0-9]*)\"" ) video = extractVideo.search(page) playerID = video.group(1) playerKey = video.group(2) videoPlayer = video.group(3) stream = brightcovePlayer.play(const, playerID, videoPlayer, publisherID, playerKey) vidStr = "?videoId=" + videoPlayer + "&lineUpId=&pubId=" + publisherID + "&playerId=" + playerID + "&affiliateId=" rtmpbase = stream[1][0:stream[1].find("&")] conn = stream[1][stream[1].find("&") + 1:] playpath = conn[0:conn.find("&")] + vidStr app = rtmpbase[rtmpbase.find("/", 7) + 1:-1] + vidStr finalurl = rtmpbase + ' playpath=' + playpath + " conn=B:0 conn=S:" + conn + " app=" + app helper.setResolvedUrl(finalurl)
def playVideo(link): page = helper.load_page(baseLink + urllib.unquote(link)) extractYouTubeId = re.compile('<div data-youtube="(.*?)" id="yt_video">') youTubeInfo = extractYouTubeId.search(page) if youTubeInfo is not None: youTubeId = youTubeInfo.group(1) streamUrl = "plugin://plugin.video.youtube/?action=play_video&videoid=" + youTubeId helper.setResolvedUrl(streamUrl) else: const = "07e6acedf6c0f426a377e5b3ba077229e6e826f9" publisherID = "1521649306001" extractVideo = re.compile( '<param name="playerID" value="([0-9]*)".*?name="playerKey" value="(.*?)".*name="@videoPlayer" value="([0-9]*)"' ) video = extractVideo.search(page) playerID = video.group(1) playerKey = video.group(2) videoPlayer = video.group(3) stream = brightcovePlayer.play(const, playerID, videoPlayer, publisherID, playerKey) vidStr = ( "?videoId=" + videoPlayer + "&lineUpId=&pubId=" + publisherID + "&playerId=" + playerID + "&affiliateId=" ) rtmpbase = stream[1][0 : stream[1].find("&")] conn = stream[1][stream[1].find("&") + 1 :] playpath = conn[0 : conn.find("&")] + vidStr app = rtmpbase[rtmpbase.find("/", 7) + 1 : -1] + vidStr finalurl = rtmpbase + " playpath=" + playpath + " conn=B:0 conn=S:" + conn + " app=" + app helper.setResolvedUrl(finalurl)
def showCategory(link): page = helper.load_page(baseLink + urllib.unquote(link)) extractVideos = re.compile( "<div class=\"peepshow\">.*?<a href=\"(.*?)\">(.*?)</a>.*?<img.*?src=\"(.*?)\".*?<p>(.*?)</p>", re.DOTALL) for video in extractVideos.finditer(page): vidName = video.group(2) vidName = helper.removeHtmlSpecialChars(vidName) vidLink = video.group(1) vidImg = video.group(3) vidPlot = video.group(4) parameters = { "channel": thisChannel, "action": "playVideo", "link": vidLink } helper.addDirectoryItem(vidName, parameters, vidImg, False, plot=vidPlot) extractNextPage = re.compile( "<li class=\"next\"><a href=\"(.*?)\" rel=\"next\">Next") nextPage = extractNextPage.search(page) if nextPage is not None: helper.addDirectoryItem( "Show more", { "channel": thisChannel, "action": "showCategory", "link": nextPage.group(1) }) helper.endOfDirectory()
def subPageXml(link): xmlPage = helper.load_page(link) xmlDom = minidom.parseString(xmlPage) for category in xmlDom.getElementsByTagName("Category"): menu_name = category.getElementsByTagName( "fullTitle")[0].firstChild.data menu_link = videoPageLink % ("1", "20", menu_name, affiliate, player, playerQuery) menu_img = "" menuImgItem = category.getElementsByTagName( "CustomDataElement")[0].getElementsByTagName("value")[0].firstChild if menuImgItem is not None: menu_img = menuImgItem.data parameters = { "channel": thisChannel, "action": "videoPageXml", "link": menu_link, "start": "1", "name": menu_name } helper.addDirectoryItem(menu_name, parameters, menu_img, folder=True) helper.endOfDirectory()
def videoPage(link): page = helper.load_page(urllib.unquote(link)) extractXml = re.compile("tileService: \"(.*?)\" };").search(page) if extractXml is not None: videoPageXml(extractXml.group(1).replace("%26", "&"))
def videoPage(link): page = helper.load_page(urllib.unquote(link)) extractXml = re.compile("tileService: \"(.*?)\" };").search(page) if extractXml is not None: videoPageXml(extractXml.group(1).replace("%26","&"))