Rrewritten

This commit is contained in:
Alhaziel
2019-03-28 20:42:08 +01:00
committed by mac12m99
parent 49ee98ee7f
commit 5edff6f38b
2 changed files with 147 additions and 119 deletions
@@ -6,7 +6,7 @@
"language": ["ita"], "language": ["ita"],
"thumbnail": "https:\/\/serietvonline.com\/wp-content\/uploads\/2016\/08\/logo2016-1.png", "thumbnail": "https:\/\/serietvonline.com\/wp-content\/uploads\/2016\/08\/logo2016-1.png",
"bannermenu": "https:\/\/serietvonline.com\/wp-content\/uploads\/2016\/08\/logo2016-1.png", "bannermenu": "https:\/\/serietvonline.com\/wp-content\/uploads\/2016\/08\/logo2016-1.png",
"categories": ["anime","tvshow"], "categories": ["anime","tvshow","movie"],
"settings": [ "settings": [
{ {
"id": "include_in_global_search", "id": "include_in_global_search",
+146 -118
View File
@@ -1,189 +1,224 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ------------------------------------------------------------ # ------------------------------------------------------------
# Ringraziamo Icarus crew
# Canale per serietvonline # Canale per serietvonline
# ---------------------------------------------------------- # ----------------------------------------------------------
import re import re
import urlparse
from core import httptools, scrapertools, servertools from core import httptools, scrapertoolsV2, servertools, tmdb
from core.item import Item from core.item import Item
from core import tmdb
from lib import unshortenit from lib import unshortenit
from platformcode import logger, config from platformcode import logger, config
from channels import support from channels import autoplay
from channels.support import menu
from channelselector import thumb
host = "https://serietvonline.co" host = "https://serietvonline.co"
headers = [['Referer', host]] headers = [['Referer', host]]
PERPAGE = 14 IDIOMAS = {'Italiano': 'IT'}
list_language = IDIOMAS.values()
list_servers = ['wstream', 'backin', 'akvideo', 'vidto', 'nowvideo']
list_quality = ['default']
PERPAGE = 30
def mainlist(item): def mainlist(item):
logger.info("kod.serietvonline mainlist") logger.info(item.channel + 'mainlist')
itemlist=[] itemlist = web_menu()
data = httptools.downloadpage(host, headers=headers).data menu(itemlist, "Cerca Film... color blue", 'search', '', 'movie')
matches = scrapertools.find_multiple_matches(data, r'<li class="page_item.*?><a href="([^"]+)">(.*?)<\/a>') menu(itemlist, "Cerca Serie... color blue", 'search', '', 'episode')
blacklist = ['DMCA','Contatti','Attenzione NON FARTI OSCURARE']
for url, title in matches:
if not title in blacklist:
title = '[B]' + title.replace('Lista ','') + '[/B]'
support.menu(itemlist,title,'lista_serie',url)
support.menu(itemlist,"[COLOR blue]Cerca...[/COLOR]",'search')
autoplay.init(item.channel, list_servers, list_quality)
autoplay.show_option(item.channel, itemlist)
return itemlist return itemlist
def web_menu():
itemlist=[]
data = httptools.downloadpage(host, headers=headers).data
matches = scrapertoolsV2.find_multiple_matches(data, r'<li class="page_item.*?><a href="([^"]+)">(.*?)<\/a>')
blacklist = ['DMCA','Contatti','Attenzione NON FARTI OSCURARE']
for url, title in matches:
if not title in blacklist:
title = title.replace('Lista ','') + ' bold'
if 'film' in title.lower():
contentType = 'movie'
else:
contentType = 'episode'
menu(itemlist, title, 'peliculas', url,contentType=contentType)
return itemlist
def search(item, texto): def search(item, texto):
logger.info("kod.serietvonline search " + texto) logger.info(item.channel + 'search' + texto)
item.url = host + "/?s= " + texto
return search_peliculas(item)
def search_peliculas(item):
logger.info(item.channel + 'search_peliculas')
logger.info('TYPE= ' + item.contentType)
if item.contentType == 'movie':
action = 'findvideos'
else:
action = 'episodios'
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url, headers=headers).data
logger.info('DATA SEARCH= ' + data)
url = host + "/?s= " + texto patron = r'<a href="([^"]+)"><span[^>]+><[^>]+><\/a>[^h]+h2>(.*?)<'
data = httptools.downloadpage(url, headers=headers).data
# Estrae i contenuti
patron = '<a href="([^"]+)"><span[^>]+><[^>]+><\/a>[^h]+h2>(.*?)<'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches: for url, title in matches:
scrapedplot = ""
scrapedthumbnail = "" title = scrapertoolsV2.decodeHtmlentities(title)
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="episodios", action=action,
fulltitle=scrapedtitle, contentType=item.contentType,
show=scrapedtitle, fulltitle=title,
title=scrapedtitle, show=title,
url=scrapedurl, title=title,
thumbnail=scrapedthumbnail, url=url))
plot=scrapedplot,
extra=item.extra, next_page = scrapertoolsV2.find_single_match(data, "<a rel='nofollow' class=previouspostslink href='([^']+)'")
folder=True))
if next_page != "":
# Paginazione
patronvideos = '<div class="siguiente"><a href="([^"]+)">'
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if len(matches) > 0:
scrapedurl = urlparse.urljoin(item.url, matches[0])
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="serietv", action="search_peliculas",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]", contentType=item.contentType,
url=scrapedurl, title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]",
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png", url=next_page))
extra=item.extra,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist return itemlist
def lista_serie(item): def peliculas(item):
logger.info("kod.serietvonline novità") logger.info(item.channel + 'peliculas')
itemlist = [] itemlist = []
p = 1 if item.contentType == 'movie':
action = 'findvideos'
else:
action = 'episodios'
page = 1
if '{}' in item.url: if '{}' in item.url:
item.url, p = item.url.split('{}') item.url, page = item.url.split('{}')
p = int(p) page = int(page)
data = httptools.downloadpage(item.url, headers=headers).data data = httptools.downloadpage(item.url, headers=headers).data
block = scrapertoolsV2.find_single_match(data, r'id="lcp_instance_0">(.*?)<\/ul>')
matches = re.compile(r'<a\s*href="([^"]+)" title="([^<]+)">[^<]+</a>', re.DOTALL).findall(block)
blocco = scrapertools.find_single_match(data, 'id="lcp_instance_0">(.*?)</ul>') for i, (url, title) in enumerate(matches):
patron='<a\s*href="([^"]+)" title="([^<]+)">[^<]+</a>' if (page - 1) * PERPAGE > i: continue
matches = re.compile(patron, re.DOTALL).findall(blocco) if i >= page * PERPAGE: break
scrapertools.printMatches(matches) title = scrapertoolsV2.decodeHtmlentities(title)
itemlist.append(
Item(channel=item.channel,
action=action,
title=title,
fulltitle=title,
url=url,
contentType=item.contentType,
show=title))
for i, (scrapedurl, scrapedtitle) in enumerate(matches): if len(matches) >= page * PERPAGE:
if (p - 1) * PERPAGE > i: continue url = item.url + '{}' + str(page + 1)
if i >= p * PERPAGE: break
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
itemlist.append(Item(channel=item.channel,
action="episodios",
title=scrapedtitle,
fulltitle=scrapedtitle,
url=scrapedurl,
fanart=item.fanart if item.fanart != "" else item.scrapedthumbnail,
show=item.fulltitle,
folder=True))
if len(matches) >= p * PERPAGE:
scrapedurl = item.url + '{}' + str(p + 1)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
extra=item.extra, extra=item.extra,
action="lista_serie", action="peliculas",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]", title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]",
url=scrapedurl, url=url,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png", thumbnail=thumb(),
folder=True)) contentType=item.contentType))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist return itemlist
def episodios(item): def episodios(item):
logger.info("kod.serietvonline episodios") logger.info(item.channel + 'episodios')
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url, headers=headers).data data = httptools.downloadpage(item.url, headers=headers).data
logger.info('DATA=' + data) block= scrapertoolsV2.find_single_match(data, r'<table>(.*?)<\/table>')
blocco = scrapertools.find_single_match(data, '<table>(.*?)<\/table>')
patron = '<tr><td>(.*?)</td><tr>' matches = re.compile(r'<tr><td>(.*?)</td><tr>', re.DOTALL).findall(block)
matches = re.compile(patron, re.DOTALL).findall(blocco)
scrapertools.printMatches(matches)
for puntata in matches: for episode in matches:
puntata = "<td class=\"title\">" + puntata episode = "<td class=\"title\">" + episode
# logger.debug(puntata) logger.info('EPISODE= ' + episode)
scrapedtitle = scrapertools.find_single_match(puntata, '<td class="title">(.*?)</td>') title = scrapertoolsV2.find_single_match(episode, '<td class="title">(.*?)</td>')
scrapedtitle = scrapedtitle.replace(item.title, "") title = title.replace(item.title, "")
if scrapertoolsV2.find_single_match(title, '([0-9]+x[0-9]+)'):
title = scrapertoolsV2.find_single_match(title, '([0-9]+x[0-9]+)') + ' - ' + re.sub('([0-9]+x[0-9]+)',' -',title)
elif scrapertoolsV2.find_single_match(title, ' ([0-9][0-9])') and not scrapertoolsV2.find_single_match(title, ' ([0-9][0-9][0-9])'):
title = '1x' + scrapertoolsV2.find_single_match(title, ' ([0-9]+)') + ' - ' + re.sub(' ([0-9]+)',' -',title)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action="findvideos",
fulltitle=scrapedtitle, fulltitle=title,
show=scrapedtitle, show=title,
title="[COLOR azure]" + scrapedtitle + "[/COLOR]", title=title,
url=puntata, url=episode,
thumbnail=item.scrapedthumbnail,
plot=item.scrapedplot,
folder=True)) folder=True))
if config.get_videolibrary_support() and len(itemlist) > 0:
itemlist.append(
Item(channel=item.channel, title='[COLOR blue][B]'+config.get_localized_string(30161)+'[/B][/COLOR]', url=item.url,
action="add_serie_to_library", extra="episodios", show=item.show))
return itemlist return itemlist
def findvideos(item): def findvideos(item):
logger.info("kod.serietvonline findvideos") logger.info(item.channel + 'findvideos')
itemlist = [] itemlist=[]
logger.info('TYPE= ' + item.contentType)
if item.contentType == 'movie':
data = httptools.downloadpage(item.url, headers=headers).data
logger.info('DATA= ' + data)
item.url= scrapertoolsV2.find_single_match(data, r'<table>(.*?)<\/table>')
patron = "<a\s*href='([^']+)[^>]+>[^>]+>([^<]+)<\/a>" urls = scrapertoolsV2.find_multiple_matches(item.url, r"<a href='([^']+)'.*?>.*?>.*?([a-zA-Z]+).*?<\/a>")
matches = re.compile(patron, re.DOTALL).findall(item.url)
for url, server in urls:
for scrapedurl, scrapedserver in matches:
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="play", action='play',
fulltitle=item.scrapedtitle, title=item.title + ' [COLOR blue][' + server + '][/COLOR]',
show=item.scrapedtitle, server=server,
title="[COLOR blue]" + item.title + "[/COLOR][COLOR orange]" + scrapedserver + "[/COLOR]", url=url))
url=scrapedurl,
thumbnail=item.scrapedthumbnail, autoplay.start(itemlist, item)
plot=item.scrapedplot,
folder=True)) if item.contentType != 'episode':
if config.get_videolibrary_support() and len(itemlist) > 0:
itemlist.append(
Item(channel=item.channel, title='[COLOR blue][B]'+config.get_localized_string(30161)+'[/B][/COLOR]', url=item.url,
action="add_pelicula_to_library", extra="findvideos", contentTitle=item.fulltitle))
return itemlist return itemlist
def play(item): def play(item):
data = item.url
data, c = unshortenit.unshorten(data) data, c = unshortenit.unshorten(item.url)
itemlist = servertools.find_video_items(data=data) itemlist = servertools.find_video_items(data=data)
@@ -197,10 +232,3 @@ def play(item):
return itemlist return itemlist
thumbnail_fanart = "https://superrepo.org/static/images/fanart/original/script.artwork.downloader.jpg"
ThumbnailHome = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Dynamic-blue-up.svg/580px-Dynamic-blue-up.svg.png"
thumbnail_novita = "http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"
thumbnail_lista = "http://www.ilmioprofessionista.it/wp-content/uploads/2015/04/TVSeries3.png"
thumbnail_top = "http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"
thumbnail_cerca = "http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search"
thumbnail_successivo = "http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png"