def setUp(self): self.errorFont = pygame.font.Font(None, 24) util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'title.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'name.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'server.png')] self.nameTxt = UI.TextInput(500, None, 46, 300, 350) self.serverTxt = UI.TextInput(500, None, 46, 300, 390) self.nameTxt.setText("player%d" % random.randint(10000, 99999)) self.serverTxt.setText("localhost") self.connButton = UI.Button(util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'connect.png')], util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'connect_over.png')], 660, 430) self.connButton.setOnClick(self.doConnect) self.MAIN.eventManager.addHandler(self.nameTxt) self.MAIN.eventManager.addHandler(self.serverTxt) self.MAIN.eventManager.addHandler(self.connButton) self.MAIN.cam.addOverlay(self.nameTxt) self.MAIN.cam.addOverlay(self.serverTxt) self.MAIN.cam.addOverlay(self.connButton) self.MAIN.cam.addOverlay(self) if self.errorMessage != "": self.renderedErrorMsg = self.errorFont.render(self.errorMessage, True, (255,0,0)) super(TitleScene, self).setUp()
def setUp(self, onlineMode=True): # self.world = World.World(util.WORLDBOUNDS(), util.GRAVITY, True) self.world = World.World(util.GRAVITY, True) self.world.setCamera(self.MAIN.cam) if self.MAIN.client: self.world.setGameClient(self.MAIN.client) self.makeWorld() self.MAIN.cam.setStage(util.getFile(util.IMAGES, "STAGE", self.stage.stageFile)) xbound = ((self.stage.MINX + 200), (self.stage.MAXX - 200)) ybound = ((self.stage.MINY + 200), (self.stage.MAXY - 200)) self.mainChar = Character.Character(self.world, True, self.MAIN.client.charId, 1, 1, xbound, ybound) self.mainChar.name = "person" if self.MAIN.client: self.mainChar.setPlayerId(self.MAIN.client.playerId) self.hud = hud.hud() self.mainChar.linkHud(self.hud) self.controller = Controller.Controller(self.mainChar) self.world.setMainCharacter(self.mainChar) self.MAIN.cam.addOverlay(self.hud) self.world.addActor(self.mainChar) if False: # Set True, for debugging, dangerous self.MAIN.cam.addActor(self.stage.getSprites()) self.MAIN.cam.setFocus(self.mainChar) self.MAIN.cam.setFocusPoint((util.CANVAS_WIDTH / 2, util.CANVAS_HEIGHT / 2)) self.MAIN.cam.setBackground( util.getFile(util.IMAGES, "BG", "1.jpg"), self.stage.getWidth(), self.stage.getHeight() ) self.MAIN.eventManager.addHandler(self.controller) self.world.addContactListener(self.mainChar.getCharContact()) self.mainChar.spawn() if not self.pickupsRendered: np = [] for pu in self.pickups: npu = (self.world,) + pu[1:] pus = Pickup.Pickup(*npu) self.world.addActor(pus) np.append(pus) self.pickups = np if not onlineMode: self.pu = Pickup.Pickup(self.world, 02, 0, 40.8616, 2.16167) self.world.addActor(self.pu) if onlineMode: self.getOtherPlayers() self.network = True Thread(target=self.networkLoop).start() super(GameScene, self).setUp()
def draw(self, surface, offset=(0,0)): surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'title.png')], (0,0)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'name.png')], (100,350)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "TITLE", 'server.png')], (100,390)) if self.loading: if time.time() > self.loadingAnim: self.dots += 1 if self.dots > 3: self.dots = 0 txt = "Loading" + "."*self.dots self.renderedErrorMsg = self.errorFont.render(txt, True, (255,0,0)) self.loadingAnim = time.time() + .25 if self.renderedErrorMsg != None: surface.blit(self.renderedErrorMsg, (100, 300))
def draw(self, surface, offset): pygame.draw.rect(surface,(0,0,0),self.border,1) pygame.draw.rect(surface,(255,255,255),self.fill,0) surface.blit(self.title, (self.x+2,self.y+3)) pygame.draw.line(surface, (0,0,0), (self.x,self.y+16), (self.x+self.width-1,self.y+16)) pygame.draw.line(surface, (0,0,0), (self.x,self.y+19), (self.x+self.width-1,self.y+19)) cx,cy = self.createRect.left,self.createRect.top if self.highlight: surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'create_over.png')], (self.x+cx, self.y+cy)) else: surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'create.png')], (self.x+cx, self.y+cy)) self.roomNameTxt.draw(surface,offset)
def setUp(self): self.chatData = [] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'title.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'chat_back.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'users_back.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'rooms_back.png')] self.roomList = UI.List(766,490, None, 20,0,45) self.userList = UI.List(768,768-46, None, 20,768,45) self.chatList = UI.List(766,232, None, 20, 0, 45+490+2) self.chatList.selectable(False) self.chatTxt = UI.TextInput(766, None, 20, 0, 768-19) self.chatTxt.setEnterFunc(self.onTextEnter) self.createButton = UI.Button(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'create.png')], util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'create_over.png')], 477, 5) self.createButton.setOnClick(self.createClick) self.joinButton = UI.Button(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'join.png')], util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'join_over.png')], 627, 5) self.joinButton.setOnClick(self.joinClick) self.MAIN.eventManager.addHandler(self.joinButton) self.MAIN.eventManager.addHandler(self.createButton) self.MAIN.eventManager.addHandler(self.roomList) self.MAIN.eventManager.addHandler(self.userList) self.MAIN.eventManager.addHandler(self.chatList) self.MAIN.eventManager.addHandler(self.chatTxt) self.MAIN.cam.addOverlay(self) self.MAIN.cam.addOverlay(self.joinButton) self.MAIN.cam.addOverlay(self.createButton) self.MAIN.cam.addOverlay(self.roomList) self.MAIN.cam.addOverlay(self.userList) self.MAIN.cam.addOverlay(self.chatList) self.MAIN.cam.addOverlay(self.chatTxt) self.updateRooms() self.updatePlayers() """ self.MAIN.cam.addOverlay(self.chatTxt) self.MAIN.cam.addOverlay(self.createButton) self.MAIN.cam.addOverlay(self.joinButton) self.MAIN.cam.addOverlay(self) """ super(LobbyScene, self).setUp()
def setUp(self): self.chatData = [] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'chat_back.png')] util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'users_back.png')] fontFile = os.path.join(util.IMAGES['HUD'], "def.ttf") self.roomFont = pygame.font.Font(fontFile, 30) self.roomF_Rendered = self.roomFont.render(self.getRoomName(self.MAIN.client.roomId, self.MAIN.client.roomName), False, (0, 0, 0)) self.userList = UI.List(768,768-46, None, 20,768,45) self.chatList = UI.List(766,464, None, 20, 0, 45+490+2-232) self.chatList.selectable(False) self.chatTxt = UI.TextInput(766, None, 20, 0, 768-19) self.chatTxt.setEnterFunc(self.onTextEnter) self.startButton = UI.Button(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'start.png')], util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'start_over.png')], 477, 5) self.startButton.setOnClick(self.onStart) self.leaveButton = UI.Button(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'leave.png')], util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'leave_over.png')], 627, 5) self.leaveButton.setOnClick(self.onLeave) self.MAIN.eventManager.addHandler(self.startButton) self.MAIN.eventManager.addHandler(self.leaveButton) self.MAIN.eventManager.addHandler(self.userList) self.MAIN.eventManager.addHandler(self.chatList) self.MAIN.eventManager.addHandler(self.chatTxt) self.MAIN.cam.addOverlay(self) self.MAIN.cam.addOverlay(self.startButton) self.MAIN.cam.addOverlay(self.leaveButton) self.MAIN.cam.addOverlay(self.userList) self.MAIN.cam.addOverlay(self.chatList) self.MAIN.cam.addOverlay(self.chatTxt) self.updatePlayers() super(RoomScene, self).setUp()
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'])
def draw(self, surface, offset=(0,0)): surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'title.png')], (0,0)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'users_back.png')], (788,219)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'chat_back.png')], (250,624)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'rooms_back.png')], (219,252))
def draw(self, surface, offset=(0,0)): surface.blit(self.roomF_Rendered, (10,45)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'users_back.png')], (788,219)) surface.blit(util.IMAGECACHE[util.getFile(util.IMAGES, "LOBBY", 'chat_back.png')], (250,624-(232/2)))
def execute(): try: opts, args = getopt.getopt(sys.argv[1:], "dhqstwcxb", [ "quiet", "help", "start-viewer", "start", "debug=", "copyright", "version", "warn", "tempdir=", "format=", "css=", "base=", "css-dump", "xml-dump", "xhtml", "xml", "html", "encoding=", "system", "profile", ]) except getopt.GetoptError: usage() sys.exit(2) errors = 0 startviewer = 0 quiet = 0 debug = 0 tempdir = None format = "pdf" css = None xhtml = None encoding = None xml_output = None base_dir = None log_level = logging.ERROR log_format = LOG_FORMAT for o, a in opts: if o in ("-h", "--help"): # Hilfe anzeigen usage() sys.exit() if o in ("-s", "--start-viewer", "--start"): # Anzeigeprogramm starten startviewer = 1 if o in ("-q", "--quiet"): # Output unterdr�cken quiet = 1 if o in ("-w", "--warn"): # Warnings log_level = min(log_level, logging.WARN) # If also -d ignore -w if o in ("-d", "--debug"): # Debug log_level = logging.DEBUG log_format = LOG_FORMAT_DEBUG if a: log_level = int(a) if o in ("--copyright", "--version"): print COPYRIGHT sys.exit(0) if o in ("--system",): print COPYRIGHT print print "SYSTEM INFORMATIONS" print "--------------------------------------------" print "OS: ", sys.platform print "Python: ", sys.version print "html5lib: ", "?" import reportlab print "Reportlab: ", reportlab.Version sys.exit(0) if o in ("-t", "--format"): # Format XXX ??? format = a if o in ("-b", "--base"): base_dir = a if o in ("--encoding",) and a: # Encoding encoding = a if o in ("-c", "--css"): # CSS css = file(a, "r").read() if o in ("--css-dump",): # CSS dump print DEFAULT_CSS return if o in ("--xml-dump",): xml_output = sys.stdout if o in ("-x", "--xml", "--xhtml"): xhtml = True elif o in ("--html",): xhtml = False if not quiet: try: logging.basicConfig( level=log_level, format=log_format) except: # XXX Logging doesn't work for Python 2.3 logging.basicConfig() if len(args) not in (1, 2): usage() sys.exit(2) if len(args) == 2: a_src, a_dest = args else: a_src = args[0] a_dest = None if "*" in a_src: a_src = glob.glob(a_src) # print a_src else: a_src = [a_src] for src in a_src: # If not forced to parse in a special way have a look # at the filename suffix if xhtml is None: xhtml = src.lower().endswith(".xml") lc = None if src == "-" or base_dir is not None: # Output to console fsrc = sys.stdin wpath = os.getcwd() if base_dir: wpath = base_dir else: if src.startswith("http:") or src.startswith("https:"): wpath = src fsrc = getFile(src).getFile() src = "".join(urlparse.urlsplit(src)[1:3]).replace("/", "-") else: fsrc = wpath = os.path.abspath(src) fsrc = open(fsrc, "rb") if a_dest is None: dest_part = src if dest_part.lower().endswith(".html") or dest_part.lower().endswith(".htm"): dest_part = ".".join(src.split(".")[:-1]) dest = dest_part + "." + format.lower() for i in xrange(10): try: open(dest, "wb").close() break except: pass dest = dest_part + "-%d.%s" % (i, format.lower()) else: dest = a_dest fdestclose = 0 if dest == "-" or base_dir: if sys.platform == "win32": import msvcrt msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) fdest = sys.stdout startviewer = 0 else: dest = os.path.abspath(dest) try: open(dest, "wb").close() except: print "File '%s' seems to be in use of another application." % dest sys.exit(2) fdest = open(dest, "wb") fdestclose = 1 if not quiet: print "Converting %s to %s..." % (src, dest) pdf = pisaDocument( fsrc, fdest, debug=debug, path=wpath, errout=sys.stdout, tempdir=tempdir, format=format, link_callback=lc, default_css=css, xhtml=xhtml, encoding=encoding, xml_output=xml_output, ) if xml_output: xml_output.getvalue() if fdestclose: fdest.close() if (not errors) and startviewer: if not quiet: print "Open viewer for file %s" % dest startViewer(dest)