def get_source(url, referer=None): logger.info() #Parche temporal por fallo en dominio principal old_dom = scrapertools.get_domain_from_url(url) new_dom = scrapertools.get_domain_from_url(host) url = re.sub(old_dom, new_dom, url) if referer is None: data = httptools.downloadpage(url).data else: data = httptools.downloadpage(url, headers={'Referer': referer}).data data = re.sub(r'\n|\r|\t| |<br>|\s{2,}', "", data) return data
def test_video_exists(page_url): global headers real_host = '116.202.226.34' headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'], ['Host', scrapertools.get_domain_from_url(page_url)]] logger.info("(page_url='%s')" % page_url) if 'wstream' in page_url: resp = httptools.downloadpage(page_url.replace(headers[1][1], real_host), headers=headers, verify=False) else: resp = httptools.downloadpage(page_url, headers=headers, verify=False) global data, real_url data = resp.data page_url = resp.url.replace(headers[1][1], real_host) if '/streaming.php' in page_url in page_url: code = httptools.downloadpage(page_url, headers=headers, follow_redirects=False, only_headers=True, verify=False).headers['location'].split('/')[-1].replace('.html', '') # logger.info('WCODE=' + code) page_url = 'https://' + real_host + '/video.php?file_code=' + code data = httptools.downloadpage(page_url, headers=headers, follow_redirects=True, verify=False).data if 'nored.icu' in str(headers): var = scrapertools.find_single_match(data, r'var [a-zA-Z0-9]+ = \[([^\]]+).*?') value = scrapertools.find_single_match(data, r'String\.fromCharCode\(parseInt\(value\) \D (\d+)') if var and value: dec = '' for v in var.split(','): dec += chr(int(v) - int(value)) page_url = 'https://' + real_host + '/video.php?file_code=' + scrapertools.find_single_match(dec, "src='([^']+)").split('/')[-1].replace('.html','') headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'],['Host', 'wstream.video']] new_data = httptools.downloadpage(page_url, headers=headers, follow_redirects=True, verify=False).data logger.info('NEW DATA: \n' + new_data) if new_data: data = new_data real_url = page_url if "Not Found" in data or "File was deleted" in data or 'Video is processing' in data or 'Sorry this video is unavailable' in data: return False, config.get_localized_string(70449) % 'Wstream' else: return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""): video_urls = [] global data host = scrapertools.get_domain_from_url(page_url) sources = scrapertools.find_multiple_matches( data, r'download_video([^"]+)[^\d]+\d+x(\d+)') if sources: sources.sort(key=lambda x: int(x[1]), reverse=True) sources = [(x[1] + 'p', x[0]) for x in sources] s = sources[ 0] # only the first to reduce the number of requests to google recaptcha code, mode, hash = eval(s[1]) dl_url = 'https://{0}/dl?op=download_orig&id={1}&mode={2}&hash={3}'.format( host, code, mode, hash) data = httptools.downloadpage(dl_url).data captcha = scrapertools.girc( data, 'https://{0}/'.format(host), base64.b64encode('https://{0}:443'.format(host).encode( 'utf-8')).decode('utf-8').replace('=', '')) if captcha: data = httptools.downloadpage(dl_url, post={ 'op': 'download_orig', 'id': code, 'mode': mode, 'hash': hash, 'g-recaptcha-response': captcha }, timeout=10).data media_url = scrapertools.find_single_match( data, 'href="([^"]+)"[^>]+>Download') if media_url: video_urls.append([s[0], media_url]) return video_urls
def findvideospeliculas(item): logger.info("[tumejortv.py] findvideospeliculas") data = scrapertools.cache_page(item.url) itemlist=[] data = scrapertools.get_match(data,'DEO ONLINE</label>(.*?)<div id="antlo_panel_derecho">') patron = '<tr>(.*?)</tr>' matches = re.compile(patron,re.DOTALL).findall(data) if DEBUG: scrapertools.printMatches(matches) for match in matches: ''' <td style="background-color:#F4FFF5;" width="5px"></td> <td style="background-color:#f2f2f2;padding:5px;"> <a href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank" rel="nofollow"> <img src="http://www.tumejortv.com/images/general/acceder.gif"> <br /> Ver </a> </td> <td style="background-color:#F4FFF5;" > <a rel="nofollow" title=" Ver " href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank"> <img src="http://www.tumejortv.com/images/gestores/Kd4wAuVbUUh8gg4q.png" alt="IMG" height="20px"><br>putlocker</a></td> <td style="background-color:#F4FFF5;" ><abbr title="1 Partes">1</abbr></td> <td style="background-color:#F4FFF5;" >BluRay-RIP</td> <td style="background-color:#F4FFF5;" ><img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/tRGyYHsBvDCDBBGk.png&mw=80&mh=24" alt="Latino" title="Latino"/></td> <td style="background-color:#F4FFF5;" ><img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/mM7jVs9QPgMysjip.png&mw=80&mh=24" alt="No" title="No"/></td> <td style="background-color:#F4FFF5;" >gonkus</td><td style="background-color:#F4FFF5;" ><a rel="nofollow" href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank" title=" Ver ">Oz un mundo de ...</a></td> ''' try: url = scrapertools.get_match(match,'<a rel="nofollow" title=" Ver " href="([^"]+)"') except: try: url = scrapertools.get_match(match,'<a rel="nofollow" title=" Bajar " href="([^"]+)"') except: logger.info("No encuentro la url en #"+match+"#") url="" try: #<br>vidxden</a></td> #<td style="background-color:#F4FFF5;" >1</td> #<td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > calidad = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+<abbr[^<]+</abbr[^<]+</td[^<]+<td[^>]+>([^<]+)</td>') except: logger.info("No encuentro la calidad en #"+match+"#") calidad="" try: servidor = scrapertools.get_match(match,'<br>([^<]+)</a></td') except: logger.info("No encuentro el servidor en #"+match+"#") servidor="" try: idioma = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+<abbr[^<]+</abbr[^<]+</td[^<]+<td[^<]+</td><td[^<]+<img src="[^"]+" alt="([^"]+)"') except: logger.info("No encuentro el idioma en #"+match+"#") idioma="" if url!="": if "www.tumejortv.com" in url: itemlist.append( Item(channel=__channel__, action="findvideos_partes" , title=scrapertools.get_domain_from_url(url).strip()+" ("+idioma+") ("+calidad+") ("+servidor+")" , url=url, thumbnail=item.thumbnail, plot=item.plot, folder=True, fulltitle=item.title)) else: itemlist.append( Item(channel=__channel__, action="play" , title=scrapertools.get_domain_from_url(url).strip()+" ("+idioma+") ("+calidad+") ("+servidor+")" , url=url, thumbnail=item.thumbnail, plot=item.plot, folder=False, fulltitle=item.title)) return itemlist
def findvideos(item): logger.info("[tumejortv.py] findvideos") data = scrapertools.cache_page(item.url) itemlist=[] ''' from servers import servertools itemlist = servertools.find_video_items(data=data) for videoitem in itemlist: videoitem.channel=__channel__ videoitem.action="play" videoitem.folder=False videoitem.title = "["+videoitem.server+"]" videoitem.fulltitle=item.fulltitle ''' ''' <tr> <td style="background-color:#F4FFF5;" width="5px"> <img src="http://www.tumejortv.com/images/general/estreno2.png" alt="Estreno2"/> </td> <td style="background-color:#f2f2f2;padding:5px;"> <a href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank" rel="nofollow"> <img src="http://www.tumejortv.com/images/general/acceder.gif"> <br /> Ver </a></td><td style="background-color:#F4FFF5;" > <a rel="nofollow" title=" Ver " href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank"> <img src="http://www.tumejortv.com/images/gestores/hmaSfmTfLQ3xULF2.png" alt="IMG" height="20px"> <br>vidxden</a></td> <td style="background-color:#F4FFF5;" >1</td> <td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > <img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/antlo-es.png&mw=80&mh=24" alt="Español" title="Español"/> </td><td style="background-color:#F4FFF5;" > <img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/mM7jVs9QPgMysjip.png&mw=80&mh=24" alt="No" title="No"/> </td> <td style="background-color:#F4FFF5;" >Carlitos(o)</td> <td style="background-color:#F4FFF5;" ><a rel="nofollow" href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank" title=" Ver ">Capitulo 306</a></td></tr> ''' #<label class="text_link">ONLINE</label>(.*?)<div id="antlo_listado_capitulos"> data = scrapertools.get_match(data,'<label class="text_link">ONLINE</label>(.*?)<div id="antlo_listado_capitulos">') #patron = '<a title="[^>]+" href="(http://www.tumejortv.com/.*?/url/\d+)"[^>]+>([^<]+)</a></td><td>([^<]+)</td><td><img src="[^"]+" alt="([^"]+)"' patron = '<tr>(.*?)</tr>' matches = re.compile(patron,re.DOTALL).findall(data) if DEBUG: scrapertools.printMatches(matches) for match in matches: try: # url = scrapertools.get_match(match,'<a rel="nofollow" href="([^"]+)" target="_blank" title=" Ver "') except: try: url = scrapertools.get_match(match,'<a rel="nofollow" title=" Bajar " href="([^"]+)"') except: logger.info("No encuentro la url en #"+match+"#") url="" try: #<br>vidxden</a></td> #<td style="background-color:#F4FFF5;" >1</td> #<td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > calidad = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+</td[^<]+<td[^>]+>([^<]+)</td>') except: logger.info("No encuentro la calidad en #"+match+"#") calidad="" try: idioma = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+</td[^<]+<td[^<]+</td><td[^<]+<img src="[^"]+" alt="([^"]+)"') except: logger.info("No encuentro el idioma en #"+match+"#") idioma="" if url!="": #http://www.tumejortv.com/peliculas/A-Roma-con-amor--2012--2/url/364905 itemlist.append( Item(channel=__channel__, action="play" , title=scrapertools.get_domain_from_url(url).strip()+" ("+idioma+") ("+calidad+")" , url=url, thumbnail=item.thumbnail, plot=item.plot, folder=False, fulltitle=item.title)) return itemlist
def wrapper(*args): itemlist = [] args = func(*args) function = func.__name__ if not 'actLike' in args else args['actLike'] # log('STACK= ',inspect.stack()[1][3]) item = args['item'] action = args['action'] if 'action' in args else 'findvideos' anime = args['anime'] if 'anime' in args else '' addVideolibrary = args[ 'addVideolibrary'] if 'addVideolibrary' in args else True search = args['search'] if 'search' in args else '' blacklist = args['blacklist'] if 'blacklist' in args else [] data = args['data'] if 'data' in args else '' patron = args['patron'] if 'patron' in args else args[ 'patronMenu'] if 'patronMenu' in args else '' if 'headers' in args: headers = args['headers'] elif 'headers' in func.__globals__: headers = func.__globals__['headers'] else: headers = '' patronNext = args['patronNext'] if 'patronNext' in args else '' patronBlock = args['patronBlock'] if 'patronBlock' in args else '' typeActionDict = args[ 'typeActionDict'] if 'typeActionDict' in args else {} typeContentDict = args[ 'typeContentDict'] if 'typeContentDict' in args else {} debug = args['debug'] if 'debug' in args else False debugBlock = args['debugBlock'] if 'debugBlock' in args else False if 'pagination' in args and inspect.stack()[1][3] not in [ 'add_tvshow', 'get_episodes', 'update', 'find_episodes' ]: pagination = args['pagination'] if args['pagination'] else 20 else: pagination = '' lang = args['deflang'] if 'deflang' in args else '' pag = item.page if item.page else 1 # pagination matches = [] log('PATRON= ', patron) if not data: page = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True, session=item.session) # if url may be changed and channel has findhost to update if (not page.data or scrapertools.get_domain_from_url( page.url) != scrapertools.get_domain_from_url(item.url) ) and 'findhost' in func.__globals__: host = func.__globals__['findhost']() parse = list(urlparse.urlparse(item.url)) from core import jsontools jsontools.update_node(host, func.__module__.split('.')[-1], 'url') parse[1] = scrapertools.get_domain_from_url(host) item.url = urlparse.urlunparse(parse) page = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True, session=item.session) data = page.data.replace("'", '"') data = re.sub('\n|\t', ' ', data) data = re.sub(r'>\s+<', '> <', data) # replace all ' with " and eliminate newline, so we don't need to worry about if patronBlock: if debugBlock: regexDbg(item, patronBlock, headers, data) blocks = scrapertools.find_multiple_matches_groups( data, patronBlock) block = "" for bl in blocks: # log(len(blocks),bl) if 'season' in bl and bl['season']: item.season = bl['season'] blockItemlist, blockMatches = scrapeBlock( item, args, bl['block'], patron, headers, action, pagination, debug, typeContentDict, typeActionDict, blacklist, search, pag, function, lang) for it in blockItemlist: if 'lang' in bl: it.contentLanguage, it.title = scrapeLang( bl, it.contentLanguage, it.title) if 'quality' in bl and bl['quality']: it.quality = bl['quality'].strip() it.title = it.title + typo(bl['quality'].strip(), '_ [] color kod') itemlist.extend(blockItemlist) matches.extend(blockMatches) elif patron: itemlist, matches = scrapeBlock(item, args, data, patron, headers, action, pagination, debug, typeContentDict, typeActionDict, blacklist, search, pag, function, lang) if 'itemlistHook' in args: itemlist = args['itemlistHook'](itemlist) if (pagination and len(matches) <= pag * pagination ) or not pagination: # next page with pagination if patronNext and inspect.stack()[1][3] != 'newest': nextPage(itemlist, item, data, patronNext, function) # next page for pagination if pagination and len(matches) > pag * pagination and not search: if inspect.stack()[1][3] != 'get_newest': itemlist.append( Item(channel=item.channel, action=item.action, contentType=item.contentType, title=typo(config.get_localized_string(30992), 'color kod bold'), fulltitle=item.fulltitle, show=item.show, url=item.url, args=item.args, page=pag + 1, thumbnail=thumb())) if action != 'play' and function != 'episodios' and 'patronMenu' not in args: tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) from specials import autorenumber if anime: if function == 'episodios' or item.action == 'episodios': autorenumber.renumber(itemlist, item, 'bold') else: autorenumber.renumber(itemlist) if anime and autorenumber.check( item) == False and not scrapertools.find_single_match( itemlist[0].title, r'(\d+.\d+)'): pass else: if addVideolibrary and (item.infoLabels["title"] or item.fulltitle): # item.fulltitle = item.infoLabels["title"] videolibrary(itemlist, item, function=function) if config.get_setting('downloadenabled') and ( function == 'episodios' or function == 'findvideos'): download(itemlist, item, function=function) if 'patronMenu' in args and itemlist: itemlist = thumb(itemlist, genre=True) if 'fullItemlistHook' in args: itemlist = args['fullItemlistHook'](itemlist) # itemlist = filterLang(item, itemlist) # causa problemi a newest return itemlist
def get_server_host(server_name): from core import scrapertools return [scrapertools.get_domain_from_url(pattern['url']) for pattern in get_server_parameters(server_name)['find_videos']['patterns']]
def findvideospeliculas(item): logger.info("pelisalacarta.channels.tumejortv findvideospeliculas") if item.url.startswith("http://www.tumejortv.com"): item.url = item.url.replace("http://www.tumejortv.com", BASE_URL) data = scrapertools.cache_page(item.url) itemlist = [] data = scrapertools.get_match( data, 'DEO ONLINE</label>(.*?)<div id="antlo_panel_derecho">') patron = '<tr>(.*?)</tr>' matches = re.compile(patron, re.DOTALL).findall(data) if DEBUG: scrapertools.printMatches(matches) for match in matches: ''' <td style="background-color:#F4FFF5;" width="5px"></td> <td style="background-color:#f2f2f2;padding:5px;"> <a href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank" rel="nofollow"> <img src="http://www.tumejortv.com/images/general/acceder.gif"> <br /> Ver </a> </td> <td style="background-color:#F4FFF5;" > <a rel="nofollow" title=" Ver " href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank"> <img src="http://www.tumejortv.com/images/gestores/Kd4wAuVbUUh8gg4q.png" alt="IMG" height="20px"><br>putlocker</a></td> <td style="background-color:#F4FFF5;" ><abbr title="1 Partes">1</abbr></td> <td style="background-color:#F4FFF5;" >BluRay-RIP</td> <td style="background-color:#F4FFF5;" ><img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/tRGyYHsBvDCDBBGk.png&mw=80&mh=24" alt="Latino" title="Latino"/></td> <td style="background-color:#F4FFF5;" ><img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/mM7jVs9QPgMysjip.png&mw=80&mh=24" alt="No" title="No"/></td> <td style="background-color:#F4FFF5;" >gonkus</td><td style="background-color:#F4FFF5;" ><a rel="nofollow" href="http://www.putlocker.com/file/5F69DEDC53BDB38B" target="_blank" title=" Ver ">Oz un mundo de ...</a></td> ''' try: url = scrapertools.get_match( match, '<a rel="nofollow" title=" Ver " href="([^"]+)"') except: try: url = scrapertools.get_match( match, '<a rel="nofollow" title=" Bajar " href="([^"]+)"') except: logger.info("No encuentro la url en #" + match + "#") url = "" try: #<br>vidxden</a></td> #<td style="background-color:#F4FFF5;" >1</td> #<td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > calidad = scrapertools.get_match( match, '<br>[^<]+</a></td[^<]+<td[^<]+<abbr[^<]+</abbr[^<]+</td[^<]+<td[^>]+>([^<]+)</td>' ) except: logger.info("No encuentro la calidad en #" + match + "#") calidad = "" try: servidor = scrapertools.get_match(match, '<br>([^<]+)</a></td') except: logger.info("No encuentro el servidor en #" + match + "#") servidor = "" try: idioma = scrapertools.get_match( match, '<br>[^<]+</a></td[^<]+<td[^<]+<abbr[^<]+</abbr[^<]+</td[^<]+<td[^<]+</td><td[^<]+<img src="[^"]+" alt="([^"]+)"' ) except: logger.info("No encuentro el idioma en #" + match + "#") idioma = "" if url != "": if "www.tumejortv.com" in url: itemlist.append( Item(channel=__channel__, action="findvideos_partes", title=scrapertools.get_domain_from_url(url).strip() + " (" + idioma + ") (" + calidad + ") (" + servidor + ")", url=url, thumbnail=item.thumbnail, plot=item.plot, folder=True, fulltitle=item.title)) else: itemlist.append( Item(channel=__channel__, action="play", title=scrapertools.get_domain_from_url(url).strip() + " (" + idioma + ") (" + calidad + ") (" + servidor + ")", url=url, thumbnail=item.thumbnail, plot=item.plot, folder=False, fulltitle=item.title)) return itemlist
def findvideos(item): logger.info("pelisalacarta.channels.tumejortv findvideos") if item.url.startswith("http://www.tumejortv.com"): item.url = item.url.replace("http://www.tumejortv.com", BASE_URL) data = scrapertools.cache_page(item.url) itemlist = [] ''' from servers import servertools itemlist = servertools.find_video_items(data=data) for videoitem in itemlist: videoitem.channel=__channel__ videoitem.action="play" videoitem.folder=False videoitem.title = "["+videoitem.server+"]" videoitem.fulltitle=item.fulltitle ''' ''' <tr> <td style="background-color:#F4FFF5;" width="5px"> <img src="http://www.tumejortv.com/images/general/estreno2.png" alt="Estreno2"/> </td> <td style="background-color:#f2f2f2;padding:5px;"> <a href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank" rel="nofollow"> <img src="http://www.tumejortv.com/images/general/acceder.gif"> <br /> Ver </a></td><td style="background-color:#F4FFF5;" > <a rel="nofollow" title=" Ver " href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank"> <img src="http://www.tumejortv.com/images/gestores/hmaSfmTfLQ3xULF2.png" alt="IMG" height="20px"> <br>vidxden</a></td> <td style="background-color:#F4FFF5;" >1</td> <td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > <img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/antlo-es.png&mw=80&mh=24" alt="Español" title="Español"/> </td><td style="background-color:#F4FFF5;" > <img src="http://www.tumejortv.com/resize_image.php?img=images/idioma/mM7jVs9QPgMysjip.png&mw=80&mh=24" alt="No" title="No"/> </td> <td style="background-color:#F4FFF5;" >Carlitos(o)</td> <td style="background-color:#F4FFF5;" ><a rel="nofollow" href="http://www.vidxden.com/tt4vyii9k1r8" target="_blank" title=" Ver ">Capitulo 306</a></td></tr> ''' #<label class="text_link">ONLINE</label>(.*?)<div id="antlo_listado_capitulos"> data = scrapertools.get_match( data, '<label class="text_link">ONLINE</label>(.*?)<div id="antlo_listado_capitulos">' ) #patron = '<a title="[^>]+" href="(http://www.tumejortv.com/.*?/url/\d+)"[^>]+>([^<]+)</a></td><td>([^<]+)</td><td><img src="[^"]+" alt="([^"]+)"' patron = '<tr>(.*?)</tr>' matches = re.compile(patron, re.DOTALL).findall(data) if DEBUG: scrapertools.printMatches(matches) for match in matches: try: # url = scrapertools.get_match( match, '<a rel="nofollow" href="([^"]+)" target="_blank" title=" Ver "' ) except: try: url = scrapertools.get_match( match, '<a rel="nofollow" title=" Bajar " href="([^"]+)"') except: logger.info("No encuentro la url en #" + match + "#") url = "" try: #<br>vidxden</a></td> #<td style="background-color:#F4FFF5;" >1</td> #<td style="background-color:#F4FFF5;" >HDTV 720p AC3 5.1</td><td style="background-color:#F4FFF5;" > ### Modificado 03-07-2014 #calidad = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+</td[^<]+<td[^>]+>([^<]+)</td>') calidad = scrapertools.get_match( match, '</abbr></td><td[^>]+>([^<]+)</td>') except: logger.info("No encuentro la calidad en #" + match + "#") calidad = "" ### Añadido 03-07-2014 try: servidor = scrapertools.get_match(match, '<br>([^<]+)</a>').strip() except: logger.info("No encuentro el servidor en #" + match + "#") servidor = "" try: ### Modificado 03-07-2014 #idioma = scrapertools.get_match(match,'<br>[^<]+</a></td[^<]+<td[^<]+</td[^<]+<td[^<]+</td><td[^<]+<img src="[^"]+" alt="([^"]+)"') idioma = scrapertools.get_match( match, '<td[^>]+><img.*?images/idioma.*?title="([^"]+)"/></td>') except: logger.info("No encuentro el idioma en #" + match + "#") idioma = "" if url != "": #http://www.tumejortv.com/peliculas/A-Roma-con-amor--2012--2/url/364905 ### Modificado 03-07-2014 #itemlist.append( Item(channel=__channel__, action="play" , title=scrapertools.get_domain_from_url(url).strip()+" ("+idioma+") ("+calidad+")" , url=url, thumbnail=item.thumbnail, plot=item.plot, folder=False, fulltitle=item.title)) itemlist.append( Item(channel=__channel__, action="play", title=scrapertools.get_domain_from_url(url).strip() + " (" + idioma + ") (" + calidad + ") (" + servidor + ")", url=url, thumbnail=item.thumbnail, plot=item.plot, folder=False, fulltitle=item.title)) return itemlist