def parse_videos(item, tipo, data): logger.info("pelisalacarta.seriesdanko parse_videos") itemlist = [] pattern = "<td.+?<img src='/assets/img/banderas/([^\.]+).+?</td><td.+?>(.*?)</td><td.+?" \ "<img src='/assets/img/servidores/([^\.]+).+?</td><td.+?href='([^']+)'.+?>.*?</a></td>" \ "<td.+?>(.+?)</td><td.+?>(.*?)</td>" links = re.findall(pattern, data, re.MULTILINE | re.DOTALL) for language, date, server, link, uploader, quality in links: if quality == "": quality = "SD" title = "{tipo} en {server} [{idioma}] [{quality}] ({uploader}: {fecha})".\ format(tipo=tipo, server=server, idioma=IDIOMAS.get(language, "OVOS"), quality=quality, uploader=uploader, fecha=date) itemlist.append(Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, link), action="play", show=item.show, language=IDIOMAS.get(language, "OVOS"), quality=quality, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT+"|guardar filtro")) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) return itemlist
def parseVideos(item, typeStr, data): videoPatternsStr = [ '<tr.+?<span>(?P<date>.+?)</span>.*?banderas/(?P<language>[^\.]+).+?href="(?P<link>[^"]+).+?servidores/' '(?P<server>[^\.]+).*?</td>.*?<td>.*?<span>(?P<uploader>.+?)</span>.*?<span>(?P<quality>.*?)</span>', '<tr.+?banderas/(?P<language>[^\.]+).+?<td[^>]*>(?P<date>.+?)</td>.+?href=[\'"](?P<link>[^\'"]+)' '.+?servidores/(?P<server>[^\.]+).*?</td>.*?<td[^>]*>.*?<a[^>]+>(?P<uploader>.+?)</a>.*?</td>.*?<td[^>]*>' '(?P<quality>.*?)</td>.*?</tr>' ] for vPatStr in videoPatternsStr: vPattIter = re.compile(vPatStr, re.MULTILINE | re.DOTALL).finditer(data) itemlist = [] for vMatch in vPattIter: vFields = vMatch.groupdict() quality = vFields.get("quality") if not quality: quality = "SD" title = "{0} en {1} [{2}] [{3}] ({4}: {5})"\ .format(typeStr, vFields.get("server"), IDIOMAS.get(vFields.get("language"), "OVOS"), quality, vFields.get("uploader"), vFields.get("date")) itemlist.append(Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, vFields.get("link")), action="play", show=item.show, language=IDIOMAS.get(vFields.get("language"), "OVOS"), quality=quality, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT+"|guardar filtro")) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) if len(itemlist) > 0: return itemlist return []
def parse_videos(item, tipo, data): logger.info("pelisalacarta.seriesdanko parse_videos") itemlist = [] pattern = "<td.+?<img src='/assets/img/banderas/([^\.]+).+?</td><td.+?>(.*?)</td><td.+?" \ "<img src='/assets/img/servidores/([^\.]+).+?</td><td.+?href='([^']+)'.+?>.*?</a></td>" \ "<td.+?>(.+?)</td><td.+?>(.*?)</td>" links = re.findall(pattern, data, re.MULTILINE | re.DOTALL) for language, date, server, link, uploader, quality in links: if quality == "": quality = "SD" title = "{tipo} en {server} [{idioma}] [{quality}] ({uploader}: {fecha})".\ format(tipo=tipo, server=server, idioma=IDIOMAS.get(language, "OVOS"), quality=quality, uploader=uploader, fecha=date) itemlist.append( Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, link), action="play", show=item.show, language=IDIOMAS.get(language, "OVOS"), quality=quality, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT + "|guardar filtro")) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) return itemlist
def episodios(item): logger.info("pelisalacarta.seriesdanko episodios") itemlist = [] data = scrapertools.cache_page(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |<Br>|<BR>|<br>|<br/>|<br />|-\s", "", data) data = re.sub(r"<!--.*?-->", "", data) data = re.sub(r"a> <img src=/assets/img/banderas/", "a><idioma>", data) data = re.sub(r"<img src=/assets/img/banderas/", "|", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+>\s+<", "</idioma><", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+>", "", data) patron = '<div id="T1".*?' patron += "<img src='([^']+)'" matches = re.compile(patron, re.DOTALL).findall(data) if len(matches) > 0: thumbnail = matches[0] patron = "<a href='([^']+)'>(.*?)</a><idioma>(.*?)</idioma>" matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle, scrapedidioma in matches: idioma = "" for i in scrapedidioma.split("|"): idioma += " [" + IDIOMAS.get(i, "OVOS") + "]" title = scrapedtitle + idioma itemlist.append( Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, scrapedurl), action="findvideos", show=item.show, thumbnail=thumbnail, plot="", language=idioma, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT)) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) # Opción "Añadir esta serie a la biblioteca de XBMC" if config.get_library_support() and len(itemlist) > 0: itemlist.append( Item(channel=item.channel, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show)) return itemlist
def episodios(item): logger.info("pelisalacarta.seriesdanko episodios") itemlist = [] data = scrapertools.cache_page(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |<Br>|<BR>|<br>|<br/>|<br />|-\s", "", data) data = re.sub(r"<!--.*?-->", "", data) data = re.sub(r"a> <img src=/assets/img/banderas/", "a><idioma>", data) data = re.sub(r"<img src=/assets/img/banderas/", "|", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+>\s+<", "</idioma><", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+>", "", data) patron = '<div id="T1".*?' patron += "<img src='([^']+)'" matches = re.compile(patron, re.DOTALL).findall(data) if len(matches) > 0: thumbnail = matches[0] patron = "<a href='([^']+)'>(.*?)</a><idioma>(.*?)</idioma>" matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle, scrapedidioma in matches: idioma = "" for i in scrapedidioma.split("|"): idioma += " [" + IDIOMAS.get(i, "OVOS") + "]" title = scrapedtitle + idioma itemlist.append(Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, scrapedurl), action="findvideos", show=item.show, thumbnail=thumbnail, plot="", language=idioma, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT)) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) # Opción "Añadir esta serie a la biblioteca de XBMC" if config.get_library_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show)) return itemlist
def episodios(item): logger.info("pelisalacarta.seriesblanco episodios") itemlist = [] # Descarga la página data = scrapertools.anti_cloudflare(item.url, headers=CHANNEL_HEADERS, host=CHANNEL_HOST) data = re.sub(r"\n|\r|\t|\s{2}| |<Br>|<BR>|<br>|<br/>|<br />|-\s", "", data) data = re.sub(r"<!--.*?-->", "", data) data = unicode(data, "iso-8859-1", errors="replace").encode("utf-8") data = re.sub(r"a></td><td> <img src=/banderas/", "a><idioma/", data) data = re.sub(r"<img src=/banderas/", "|", data) data = re.sub(r"\s\|", "|", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+><", "/idioma><", data) data = re.sub(r"\.png border='\d+' height='\d+' width='\d+'[^>]+>", "", data) patron = "<img id='port_serie' src='([^']+)'.*?<li data-content=\"settings\"><p>(.*?)</p>" matches = re.compile(patron, re.DOTALL).findall(data) thumbnail = "" plot = "" for scrapedthumbnail, scrapedplot in matches: thumbnail = scrapedthumbnail plot = scrapedplot ''' <td> <a href='/serie/534/temporada-1/capitulo-00/the-big-bang-theory.html'>1x00 - Capitulo 00 </a> </td> <td> <img src=/banderas/vo.png border='0' height='15' width='25' /> <img src=/banderas/vos.png border='0' height='15' width='25' /> </td> ''' patron = "<a href='([^']+)'>([^<]+)</a><idioma/([^/]+)/idioma>" matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle, scrapedidioma in matches: idioma = "" for i in scrapedidioma.split("|"): idioma += " [" + IDIOMAS.get(i, "OVOS") + "]" title = item.show + " - " + scrapedtitle + idioma itemlist.append(Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, scrapedurl), action="findvideos", show=item.show, thumbnail=thumbnail, plot=plot, language=idioma, list_idiomas=list_idiomas, list_calidad=CALIDADES, context=CONTEXT)) if len(itemlist) == 0 and "<title>404 Not Found</title>" in data: itemlist.append(Item(channel=item.channel, title="la url '" + item.url + "' parece no estar disponible en la web. Iténtalo más tarde.", url=item.url, action="series")) if len(itemlist) > 0 and OPCION_FILTRO: itemlist = filtertools.get_filtered_links(itemlist, item.channel) # Opción "Añadir esta serie a la biblioteca de XBMC" if config.get_library_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show)) return itemlist