This commit is contained in:
Alhaziel
2019-03-29 19:47:56 +01:00
committed by mac12m99
parent dabfee5843
commit f6a5bfbfc6
2 changed files with 92 additions and 314 deletions
+79 -294
View File
@@ -1,14 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ------------------------------------------------------------ # ------------------------------------------------------------
# *AddonNamer* - XBMC Plugin
# Canale per altadefinizione01 # Canale per altadefinizione01
# ------------------------------------------------------------ # ------------------------------------------------------------
import re import re
import urlparse import urlparse
from channels import autoplay from channels import filtertools, autoplay, support
from channels import filtertools from core import servertools, httptools, tmdb, scrapertoolsV2
from core import scrapertools, servertools, httptools, tmdb, scrapertoolsV2
from core.item import Item from core.item import Item
from platformcode import logger, config from platformcode import logger, config
@@ -23,59 +21,48 @@ list_quality = ['default']
__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'altadefinizione01') __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'altadefinizione01')
__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'altadefinizione01') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'altadefinizione01')
headers = None headers = [['Referer', host]]
blacklist_categorie = ['Altadefinizione01', 'Altadefinizione.to'] blacklist_categorie = ['Altadefinizione01', 'Altadefinizione.to']
def mainlist(item): def mainlist(item):
logger.info("kod.altadefinizione01 mainlist") support.log()
itemlist =[]
support.menu(itemlist, 'Al Cinema bold','peliculas',host+'/cinema/')
support.menu(itemlist, 'Ultimi Film Inseriti bold','peliculas',host)
support.menu(itemlist, 'Film Sub-ITA','peliculas',host+'/sub-ita/')
support.menu(itemlist, 'Film Ordine Alfabetico submenu','AZlist',host+'/catalog/')
support.menu(itemlist, 'Categorie Film submenu','categories',host)
support.menu(itemlist, 'Cerca... color blue','search')
autoplay.init(item.channel, list_servers, list_quality) autoplay.init(item.channel, list_servers, list_quality)
itemlist = [Item(channel=item.channel,
title="[COLOR azure]In sala[/COLOR]",
action="sala",
url="%s/page/1/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="[COLOR azure]Ultimi film inseriti[/COLOR]",
action="peliculas",
url="%s/page/1/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="[COLOR azure]Sub ITA[/COLOR]",
action="subIta",
url="%s/sub-ita/" % host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="[COLOR azure]Categorie film[/COLOR]",
action="categorias",
url=host,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png"),
Item(channel=item.channel,
title="[COLOR yellow]Cerca...[/COLOR]",
action="search",
extra="movie",
thumbnail="http://dc467.4shared.com/img/fEbJqOum/s7/13feaf0c8c0/Search")]
autoplay.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist)
return itemlist return itemlist
def categories(item):
support.log(item)
return support.scrape(item,'<li><a href="([^"]+)">(.*?)</a></li>',['url','title'],headers,'Altadefinizione01',patron_block='<ul class="kategori_list">(.*?)</ul>',action='peliculas',url_host=host)
def AZlist(item):
support.log()
return support.scrape(item,r'<a title="([^"]+)" href="([^"]+)"',['title','url'],headers,patron_block=r'<div class="movies-letter">(.*?)<\/div>',action='peliculas_list',url_host=host)
def newest(categoria): def newest(categoria):
logger.info("kod.altadefinizione01 newest" + categoria) # import web_pdb; web_pdb.set_trace()
support.log(categoria)
itemlist = [] itemlist = []
item = Item() item = Item()
try: try:
if categoria == "film": if categoria == "peliculas":
item.url = host item.url = host
item.action = "peliculas" item.action = "peliculas"
itemlist = peliculas(item) itemlist = peliculas(item)
if itemlist[-1].action == "peliculas": if itemlist[-1].action == "peliculas":
itemlist.pop() itemlist.pop()
# Continua la ricerca in caso di errore # Continua la ricerca in caso di errore
except: except:
import sys import sys
@@ -86,124 +73,8 @@ def newest(categoria):
return itemlist return itemlist
def createItem(data, item, itemlist, scrapedurl, scrapedtitle, scrapedthumbnail, scrapedquality, subDiv, subText):
info = scrapertoolsV2.find_multiple_matches(data, '<span class="ml-label">([0-9]+)+<\/span>.*?<span class="ml-label">(.*?)<\/span>.*?<p class="ml-cat".*?<p>(.*?)<\/p>.*?<a href="(.*?)" class="ml-watch">')
infoLabels = {}
for infoLabels['year'], duration, scrapedplot, checkUrl in info:
if checkUrl == scrapedurl:
break
infoLabels['duration'] = int(duration.replace(' min', '')) * 60 # calcolo la durata in secondi
scrapedthumbnail = host + scrapedthumbnail
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
fulltitle = scrapedtitle
if subDiv:
fulltitle += ' (' + subText + ')'
fulltitle += ' [' + scrapedquality.strip() + ']'
itemlist.append(
Item(channel=item.channel,
action="findvideos",
text_color="azure",
contentType="movie",
contentTitle=scrapedtitle,
contentQuality=scrapedquality.strip(),
plot=scrapedplot,
title=fulltitle,
url=scrapedurl,
infoLabels=infoLabels,
thumbnail=scrapedthumbnail))
def sala(item):
logger.info("kod.altadefinizione01 peliculas")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url, headers=headers).data
# The categories are the options for the combo
patron = '<div class="ml-mask">.*?<div class="cover_kapsul".*?<a href="(.*?)">.*?<img .*?src="(.*?)".*?alt="(.*?)".*?<div class="trdublaj">(.*?)<\/div>.(<div class="sub_ita">(.*?)<\/div>|())'
matches = scrapertoolsV2.find_multiple_matches(data, patron)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedquality, subDiv, subText, empty in matches:
createItem(data, item, itemlist, scrapedurl, scrapedtitle, scrapedthumbnail, scrapedquality, subDiv, subText)
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def subIta(item):
logger.info("kod.altadefinizione01 subita")
return peliculas(item, sub=True)
def peliculas(item, sub=False):
logger.info("kod.altadefinizione01 peliculas")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url, headers=headers).data
# The categories are the options for the combo
patron = '<div class="cover_kapsul ml-mask".*?<a href="(.*?)">(.*?)<\/a>.*?<img .*?src="(.*?)".*?<div class="trdublaj">(.*?)<\/div>.(<div class="sub_ita">(.*?)<\/div>|())'
matches = scrapertoolsV2.find_multiple_matches(data, patron)
for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedquality, subDiv, subText, empty in matches:
if sub or not subDiv:
createItem(data, item, itemlist, scrapedurl, scrapedtitle, scrapedthumbnail, scrapedquality, subDiv, subText)
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
# Paginazione
patronvideos = '<span>[^<]+</span>[^<]+<a href="(.*?)">'
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if len(matches) > 0:
scrapedurl = urlparse.urljoin(item.url, matches[0])
action = "peliculas" if not sub else "subIta"
itemlist.append(
Item(channel=item.channel,
action=action,
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]",
url=scrapedurl,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png",
folder=True))
return itemlist
def categorias(item):
logger.info("kod.altadefinizione01 categorias")
itemlist = []
# data = scrapertools.cache_page(item.url)
data = httptools.downloadpage(item.url, headers=headers).data
# Narrow search by selecting only the combo
bloque = scrapertools.get_match(data, '<ul class="kategori_list">(.*?)</ul>')
# The categories are the options for the combo
patron = '<li><a href="([^"]+)">(.*?)</a></li>'
matches = re.compile(patron, re.DOTALL).findall(bloque)
for scrapedurl, scrapedtitle in matches:
if not scrapedtitle in blacklist_categorie:
scrapedurl = host + scrapedurl
itemlist.append(
Item(channel=item.channel,
action="subIta",
title="[COLOR azure]" + scrapedtitle + "[/COLOR]",
url=scrapedurl,
thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png",
folder=True))
return itemlist
def search(item, texto): def search(item, texto):
logger.info("[altadefinizione01.py] " + item.url + " search " + texto) support.log(texto)
item.url = "%s/index.php?do=search&story=%s&subaction=search" % ( item.url = "%s/index.php?do=search&story=%s&subaction=search" % (
host, texto) host, texto)
try: try:
@@ -219,157 +90,71 @@ def search(item, texto):
return [] return []
def findvideos(item): def peliculas(item):
logger.info("[altadefinizione01.py] findvideos") support.log()
# Carica la pagina
if item.contentType == "episode":
data = item.url
else:
data = httptools.downloadpage(item.url, headers=headers).data
itemlist = servertools.find_video_items(data=data)
for videoitem in itemlist:
videoitem.title = "".join([item.title, '[COLOR green][B]' + videoitem.title + '[/B][/COLOR]'])
videoitem.fulltitle = item.fulltitle
videoitem.show = item.show
videoitem.thumbnail = item.thumbnail
videoitem.channel = item.channel
videoitem.contentType = item.contentType
videoitem.language = IDIOMAS['Italiano']
# Requerido para Filtrar enlaces
if __comprueba_enlaces__:
itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__)
# Requerido para FilterTools
itemlist = filtertools.get_links(itemlist, item, list_language)
# Requerido para AutoPlay
autoplay.start(itemlist, item)
if item.contentType != 'episode':
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append(
Item(channel=item.channel, title='[COLOR yellow][B]Aggiungi alla videoteca[/B][/COLOR]', url=item.url,
action="add_pelicula_to_library", extra="findvideos", contentTitle=item.contentTitle))
return itemlist
""" def peliculas_tv(item):
logger.info("kod.altadefinizionezone peliculas")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url, headers=headers).data
patron = '<section class="main">(.*?)</section>'
data = scrapertools.find_single_match(data, patron)
# Estrae i contenuti
patron = '<h2 class="titleFilm"><a href="([^"]+)">(.*?)</a></h2>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
scrapedplot = ""
scrapedthumbnail = ""
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
itemlist.append(
Item(channel=item.channel,
action="seasons",
fulltitle=scrapedtitle,
contentType='tv',
contentTitle=scrapedtitle,
show=scrapedtitle,
title="[COLOR azure]" + scrapedtitle + "[/COLOR]",
url=scrapedurl,
thumbnail=scrapedthumbnail,
plot=scrapedplot,
folder=True))
tmdb.set_infoLabels(itemlist)
# Paginazione
patronvideos = '<span>.*?</span>.*?href="(.*?)">'
matches = re.compile(patronvideos, re.DOTALL).findall(data)
if matches:
scrapedurl = urlparse.urljoin(item.url, matches[0])
itemlist.append(
Item(channel=item.channel,
action="peliculas_tv",
title="[COLOR lightgreen]" + config.get_localized_string(30992) + "[/COLOR]",
url=scrapedurl,
thumbnail="http://2.bp.blogspot.com/-fE9tzwmjaeQ/UcM2apxDtjI/AAAAAAAAeeg/WKSGM2TADLM/s1600/pager+old.png",
folder=True))
return itemlist
def seasons(item):
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url, headers=headers).data data = httptools.downloadpage(item.url, headers=headers).data
patron = '<li><a href="([^"]+)" data-toggle="tab">(.*?)</a></li>' patron = r'<div class="cover_kapsul ml-mask".*?<a href="(.*?)">(.*?)<\/a>.*?<img .*?src="(.*?)".*?<div class="trdublaj">(.*?)<\/div>.(<div class="sub_ita">(.*?)<\/div>|())'
matches = re.compile(patron, re.DOTALL).findall(data) matches = scrapertoolsV2.find_multiple_matches(data, patron)
for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedquality, subDiv, subText, empty in matches:
info = scrapertoolsV2.find_multiple_matches(data, r'<span class="ml-label">([0-9]+)+<\/span>.*?<span class="ml-label">(.*?)<\/span>.*?<p class="ml-cat".*?<p>(.*?)<\/p>.*?<a href="(.*?)" class="ml-watch">')
infoLabels = {}
for infoLabels['year'], duration, scrapedplot, checkUrl in info:
if checkUrl == scrapedurl:
break
for scrapedurl, scrapedseason in matches: infoLabels['duration'] = int(duration.replace(' min', '')) * 60 # calcolo la durata in secondi
scrapedurl = item.url + scrapedurl scrapedthumbnail = host + scrapedthumbnail
scrapedtitle = item.title scrapedtitle = scrapertoolsV2.decodeHtmlentities(scrapedtitle)
fulltitle = scrapedtitle
itemlist.append( if subDiv:
Item(channel=item.channel, fulltitle += support.typo(subText + ' _ () color limegreen')
action="episodios", fulltitle += support.typo(scrapedquality.strip()+ ' _ [] color blue')
fulltitle=scrapedtitle,
show=scrapedtitle,
title="[COLOR azure]" + scrapedtitle + "[/COLOR]" + " " + "Stagione " + scrapedseason,
url=scrapedurl,
thumbnail=item.scrapedthumbnail,
plot=item.scrapedplot,
folder=True))
return itemlist
def episodios(item):
itemlist = []
data = httptools.downloadpage(item.url, headers=headers).data
patron = 'class="tab-pane fade" id="%s">(.*?)class="tab-pane fade"' % item.url.split('#')[1]
bloque = scrapertools.find_single_match(data, patron)
patron = 'class="text-muted">.*?<[^>]+>(.*?)<[^>]+>[^>]+>[^>][^>]+>[^<]+<a href="#" class="slink" id="megadrive-(.*?)" data-link="(.*?)"'
matches = re.compile(patron, re.DOTALL).findall(bloque)
for scrapedtitle, scrapedepi, scrapedurl in matches:
scrapedthumbnail = ""
scrapedplot = ""
scrapedepi = scrapedepi.split('_')[0] + "x" + scrapedepi.split('_')[1].zfill(2)
scrapedtitle = scrapedepi + scrapertools.decodeHtmlentities(scrapedtitle)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action="findvideos",
contentType="episode", contentType=item.contenType,
contentTitle=scrapedtitle,
contentQuality=scrapedquality.strip(),
plot=scrapedplot,
title=fulltitle,
fulltitle=scrapedtitle, fulltitle=scrapedtitle,
show=scrapedtitle, show=scrapedtitle,
title="[COLOR azure]" + scrapedtitle + "[/COLOR]",
url=scrapedurl, url=scrapedurl,
thumbnail=scrapedthumbnail, infoLabels=infoLabels,
plot=scrapedplot, thumbnail=scrapedthumbnail))
folder=True))
# Comandi di servizio tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
if config.get_videolibrary_support() and len(itemlist) != 0: support.nextPage(itemlist,item,data,'<span>[^<]+</span>[^<]+<a href="(.*?)">')
itemlist.append(
Item(channel=item.channel,
title="[COLOR lightblue]%s[/COLOR]" % config.get_localized_string(30161),
url=item.url,
action="add_serie_to_library",
extra="episodios",
show=item.show))
return itemlist """ return itemlist
def peliculas_list(item):
support.log()
block = r'<tbody>(.*)<\/tbody>'
patron = r'<td class="mlnh-thumb"><a href="([^"]+)" title="([^"]+)".*?> <img.*?src="([^"]+)".*?<td class="mlnh-3">([0-9]+)<\/td><td class="mlnh-4">(.*?)<\/td>'
return support.scrape(item,patron, ['url','title','year','quality'],patron_block=block)
def findvideos(item):
support.log()
itemlist = support.server(item, headers=headers)
# Requerido para Filtrar enlaces
if __comprueba_enlaces__:
itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__)
# Requerido para FilterTools
itemlist = filtertools.get_links(itemlist, item, list_language)
# Requerido para AutoPlay
autoplay.start(itemlist, item)
support.videolibrary(itemlist, item, 'color blue')
return itemlist
+13 -20
View File
@@ -8,8 +8,7 @@ from core import httptools, scrapertoolsV2, servertools, tmdb
from core.item import Item from core.item import Item
from lib import unshortenit from lib import unshortenit
from platformcode import logger, config from platformcode import logger, config
from channels import autoplay from channels import autoplay, support
from channels.support import menu
from channelselector import thumb from channelselector import thumb
host = "https://serietvonline.co" host = "https://serietvonline.co"
@@ -26,8 +25,8 @@ def mainlist(item):
logger.info(item.channel + 'mainlist') logger.info(item.channel + 'mainlist')
itemlist = web_menu() itemlist = web_menu()
menu(itemlist, "Cerca Film... color blue", 'search', '', 'movie') support.menu(itemlist, "Cerca Film... color blue", 'search', '', 'movie')
menu(itemlist, "Cerca Serie... color blue", 'search', '', 'episode') support.menu(itemlist, "Cerca Serie... color blue", 'search', '', 'episode')
autoplay.init(item.channel, list_servers, list_quality) autoplay.init(item.channel, list_servers, list_quality)
autoplay.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist)
@@ -49,7 +48,7 @@ def web_menu():
contentType = 'movie' contentType = 'movie'
else: else:
contentType = 'episode' contentType = 'episode'
menu(itemlist, title, 'peliculas', url,contentType=contentType) support.menu(itemlist, title, 'peliculas', url,contentType=contentType)
return itemlist return itemlist
@@ -88,7 +87,7 @@ def search_peliculas(item):
contentType=item.contentType, contentType=item.contentType,
fulltitle=title, fulltitle=title,
show=title, show=title,
title=title, title=title,
url=url)) url=url))
next_page = scrapertoolsV2.find_single_match(data, "<a rel='nofollow' class=previouspostslink href='([^']+)'") next_page = scrapertoolsV2.find_single_match(data, "<a rel='nofollow' class=previouspostslink href='([^']+)'")
@@ -97,7 +96,7 @@ def search_peliculas(item):
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="search_peliculas", action="search_peliculas",
contentType=item.contentType, contentType=item.contentType,
title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]", title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]",
url=next_page)) url=next_page))
@@ -131,6 +130,7 @@ def peliculas(item):
Item(channel=item.channel, Item(channel=item.channel,
action=action, action=action,
title=title, title=title,
contentTitle=title,
fulltitle=title, fulltitle=title,
url=url, url=url,
contentType=item.contentType, contentType=item.contentType,
@@ -140,7 +140,6 @@ def peliculas(item):
url = item.url + '{}' + str(page + 1) url = item.url + '{}' + str(page + 1)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
extra=item.extra,
action="peliculas", action="peliculas",
title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]", title="[COLOR blue]" + config.get_localized_string(30992) + " >[/COLOR]",
url=url, url=url,
@@ -175,13 +174,9 @@ def episodios(item):
fulltitle=title, fulltitle=title,
show=title, show=title,
title=title, title=title,
url=episode, url=episode))
folder=True))
if config.get_videolibrary_support() and len(itemlist) > 0: support.videolibrary(itemlist,item,'bold color blue')
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
@@ -196,7 +191,7 @@ def findvideos(item):
item.url= scrapertoolsV2.find_single_match(data, r'<table>(.*?)<\/table>') item.url= scrapertoolsV2.find_single_match(data, r'<table>(.*?)<\/table>')
urls = scrapertoolsV2.find_multiple_matches(item.url, r"<a href='([^']+)'.*?>.*?>.*?([a-zA-Z]+).*?<\/a>") urls = scrapertoolsV2.find_multiple_matches(item.url, r"<a href='([^']+)'.*?>.*?>.*?([a-zA-Z]+).*?<\/a>")
logger.info('EXTRA= ' + item.extra)
for url, server in urls: for url, server in urls:
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
@@ -207,11 +202,7 @@ def findvideos(item):
autoplay.start(itemlist, item) autoplay.start(itemlist, item)
if item.contentType != 'episode': support.videolibrary(itemlist,item,'bold color blue')
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
@@ -232,3 +223,5 @@ def play(item):
return itemlist return itemlist