eurostreaming e fix vari su altadefinizione01_L, fix wstream, add servers vari (#47)

* eurostreaming by support e fix

* fix wstream

* aggiunto servers turbovid

* server nowvideo

* in channelselector aggiunta una voce e fix vari

* fix support per episode

* fix title2 cleahtml

* fix per speedvideo

* fix cinemalibero

aggiunta configurazione canale per cambio host automatico

* fix support item.language

* migliorie codice server deltabit turbobit
This commit is contained in:
greko
2019-06-06 22:32:50 +02:00
committed by mac12m99
parent c8b55e7ab0
commit f1222d0232
17 changed files with 421 additions and 204 deletions
+5 -3
View File
@@ -10,7 +10,8 @@
"fix" : "reimpostato url e modificato file per KOD", "fix" : "reimpostato url e modificato file per KOD",
"change_date": "2019-30-04", "change_date": "2019-30-04",
"categories": [ "categories": [
"movie" "movie",
"vosi"
], ],
"settings": [ "settings": [
{ {
@@ -30,7 +31,7 @@
"visible": true "visible": true
}, },
{ {
"id": "include_in_newest_film", "id": "include_in_newest_peliculas",
"type": "bool", "type": "bool",
"label": "Includi in Novità", "label": "Includi in Novità",
"default": true, "default": true,
@@ -79,7 +80,8 @@
"visible": true, "visible": true,
"lvalues": [ "lvalues": [
"Non filtrare", "Non filtrare",
"IT" "ITA",
"vosi"
] ]
}, },
{ {
+1 -9
View File
@@ -1,9 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# -*- Channel Altadefinizione01L Film - Serie -*- # -*- Channel Altadefinizione01L Film - Serie -*-
# -*- Creato per Alfa-addon -*-
# -*- e adattato for KOD -*-
# -*- By Greko -*- # -*- By Greko -*-
# -*- last change: 26/05/2019
import channelselector import channelselector
from specials import autoplay from specials import autoplay
@@ -18,10 +15,7 @@ __channel__ = "altadefinizione01_link"
list_servers = ['supervideo', 'streamcherry','rapidvideo', 'streamango', 'openload'] list_servers = ['supervideo', 'streamcherry','rapidvideo', 'streamango', 'openload']
list_quality = ['default'] list_quality = ['default']
#host = config.get_setting("channel_host", __channel__) host = config.get_setting("channel_host", __channel__)
host = config.get_channel_url(__channel__)
checklinks = config.get_setting('checklinks', __channel__)
checklinks_number = config.get_setting('checklinks_number', __channel__)
headers = [['Referer', host]] headers = [['Referer', host]]
# =========== home menu =================== # =========== home menu ===================
@@ -157,6 +151,4 @@ def findvideos(item):
# Requerido para AutoPlay # Requerido para AutoPlay
autoplay.start(itemlist, item) autoplay.start(itemlist, item)
support.videolibrary(itemlist, item, 'color kod')
return itemlist return itemlist
+8
View File
@@ -8,6 +8,14 @@
"banner": "https://www.cinemalibero.center/wp-content/themes/Cinemalibero%202.0/images/logo02.png", "banner": "https://www.cinemalibero.center/wp-content/themes/Cinemalibero%202.0/images/logo02.png",
"categories": ["tvshow", "movie","anime"], "categories": ["tvshow", "movie","anime"],
"settings": [ "settings": [
{
"id": "channel_host",
"type": "text",
"label": "Host del canale",
"default": "https://www.cinemalibero.fun/",
"enabled": true,
"visible": true
},
{ {
"id": "include_in_global_search", "id": "include_in_global_search",
"type": "bool", "type": "bool",
+11 -2
View File
@@ -11,6 +11,7 @@ from lib import unshortenit
from platformcode import config from platformcode import config
from platformcode import logger from platformcode import logger
from specials import autoplay from specials import autoplay
import channelselector
# Necessario per Autoplay # Necessario per Autoplay
IDIOMAS = {'Italiano': 'IT'} IDIOMAS = {'Italiano': 'IT'}
@@ -24,10 +25,9 @@ checklinks_number = config.get_setting('checklinks_number', 'cinemalibero')
__channel__ = "cinemalibero" __channel__ = "cinemalibero"
host = config.get_channel_url(__channel__) host = config.get_channel_url(__channel__)
headers = [['Referer', host]] headers = [['Referer', host]]
def mainlist(item): def mainlist(item):
logger.info('[cinemalibero.py] mainlist') logger.info('[cinemalibero.py] mainlist')
@@ -45,6 +45,15 @@ def mainlist(item):
autoplay.show_option(item.channel, itemlist) # Necessario per Autoplay (Menu Configurazione) autoplay.show_option(item.channel, itemlist) # Necessario per Autoplay (Menu Configurazione)
itemlist.append(
Item(channel='setting',
action="channel_config",
title=support.typo("Configurazione Canale color lime"),
config=item.channel,
folder=False,
thumbnail=channelselector.get_thumb('setting_0.png'))
)
return itemlist return itemlist
+10 -43
View File
@@ -6,8 +6,16 @@
"language": ["ita"], "language": ["ita"],
"thumbnail": "https://eurostreaming.cafe/wp-content/uploads/2017/08/logocafe.png", "thumbnail": "https://eurostreaming.cafe/wp-content/uploads/2017/08/logocafe.png",
"bannermenu": "https://eurostreaming.cafe/wp-content/uploads/2017/08/logocafe.png", "bannermenu": "https://eurostreaming.cafe/wp-content/uploads/2017/08/logocafe.png",
"categories": ["tvshow","anime"], "categories": ["tvshow","anime","vosi"],
"settings": [ "settings": [
{
"id": "channel_host",
"type": "text",
"label": "Host del canale",
"default": "https://eurostreaming.cafe/",
"enabled": true,
"visible": true
},
{ {
"id": "include_in_global_search", "id": "include_in_global_search",
"type": "bool", "type": "bool",
@@ -16,14 +24,6 @@
"enabled": true, "enabled": true,
"visible": true "visible": true
}, },
{
"id": "modo_grafico",
"type": "bool",
"label": "Cerca informazioni extra",
"default": true,
"enabled": true,
"visible": true
},
{ {
"id": "include_in_newest_series", "id": "include_in_newest_series",
"type": "bool", "type": "bool",
@@ -40,23 +40,6 @@
"enabled": true, "enabled": true,
"visible": true "visible": true
}, },
{
"id": "checklinks",
"type": "bool",
"label": "Verifica se i link esistono",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "checklinks_number",
"type": "list",
"label": "Numero de link da verificare",
"default": 1,
"enabled": true,
"visible": "eq(-1,true)",
"lvalues": [ "5", "10", "15", "20" ]
},
{ {
"id": "filter_languages", "id": "filter_languages",
"type": "list", "type": "list",
@@ -66,25 +49,9 @@
"visible": true, "visible": true,
"lvalues": [ "lvalues": [
"Non filtrare", "Non filtrare",
"Italiano", "ITA",
"vosi" "vosi"
] ]
},
{
"id": "perfil",
"type": "list",
"label": "profilo dei colori",
"default": 0,
"enabled": true,
"visible": true,
"lvalues": [
"Sin color",
"Perfil 5",
"Perfil 4",
"Perfil 3",
"Perfil 2",
"Perfil 1"
]
} }
] ]
} }
+80 -63
View File
@@ -1,57 +1,71 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# ------------------------------------------------------------ # ------------------------------------------------------------
# Canale per Eurostreaming # Canale per Eurostreaming
# adattamento di Cineblog01
# by Greko # by Greko
# ------------------------------------------------------------ # ------------------------------------------------------------
""" """
Riscritto per poter usufruire del modulo support. Riscritto per poter usufruire del modulo support.
Problemi noti: Problemi noti:
Alcun regex possono migliorare Le regex non prendono tutto...
server versystream : 'http://vcrypt.net/very/' # VeryS non decodifica il link :http://vcrypt.net/fastshield/ server versystream : 'http://vcrypt.net/very/' # VeryS non decodifica il link :http://vcrypt.net/fastshield/
server nowvideo.club da implementare nella cartella servers, altri server nei meandri del sito?! alcuni server tra cui nowvideo.club non sono implementati nella cartella servers
Alcune sezioni di anime-cartoni non vanno, alcune hanno solo la lista degli episodi, ma non hanno link Alcune sezioni di anime-cartoni non vanno, alcune hanno solo la lista degli episodi, ma non hanno link
altre cambiano la struttura altre cambiano la struttura
La sezione novità non fa apparire il titolo degli episodi La sezione novità non fa apparire il titolo degli episodi
In episodios è stata aggiunta la possibilità di configurare la videoteca
""" """
import re import channelselector
from specials import autoplay, filtertools
from core import scrapertoolsV2, httptools, tmdb, support from core import scrapertoolsV2, httptools, servertools, tmdb, support
from core.item import Item from core.item import Item
from platformcode import logger, config from platformcode import logger, config
from specials import autoplay
__channel__ = "eurostreaming" __channel__ = "eurostreaming"
host = config.get_channel_url(__channel__) host = config.get_channel_url(__channel__)
headers = ['Referer', host] headers = ['Referer', host]
IDIOMAS = {'Italiano': 'IT'}
list_language = IDIOMAS.values()
list_servers = ['verystream', 'wstream', 'speedvideo', 'flashx', 'nowvideo', 'streamango', 'deltabit', 'openload'] list_servers = ['verystream', 'wstream', 'speedvideo', 'flashx', 'nowvideo', 'streamango', 'deltabit', 'openload']
list_quality = ['default'] list_quality = ['default']
checklinks = config.get_setting('checklinks', 'eurostreaming') __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'eurostreaming')
checklinks_number = config.get_setting('checklinks_number', 'eurostreaming') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'eurostreaming')
IDIOMAS = {'Italiano': 'ITA', 'Sub-ITA':'vosi'}
list_language = IDIOMAS.values()
def mainlist(item): def mainlist(item):
#import web_pdb; web_pdb.set_trace()
support.log() support.log()
itemlist = [] itemlist = []
support.menu(itemlist, 'Serie TV', 'serietv', host, 'tvshow') # mettere sempre episode per serietv, anime!! support.menu(itemlist, 'Serie TV', 'serietv', host, contentType = 'episode') # mettere sempre episode per serietv, anime!!
support.menu(itemlist, 'Serie TV Archivio submenu', 'serietv', host + "category/serie-tv-archive/", 'tvshow') support.menu(itemlist, 'Serie TV Archivio submenu', 'serietv', host + "category/serie-tv-archive/", contentType = 'episode')
support.menu(itemlist, 'Ultimi Aggiornamenti submenu', 'serietv', host + 'aggiornamento-episodi/', 'tvshow', args='True') support.menu(itemlist, 'Ultimi Aggiornamenti submenu', 'serietv', host + 'aggiornamento-episodi/', args='True', contentType = 'episode')
support.menu(itemlist, 'Anime / Cartoni', 'serietv', host + 'category/anime-cartoni-animati/', 'tvshow') support.menu(itemlist, 'Anime / Cartoni', 'serietv', host + 'category/anime-cartoni-animati/', contentType = 'episode')
support.menu(itemlist, 'Cerca...', 'search', host, 'tvshow') support.menu(itemlist, 'Cerca...', 'search', host, contentType = 'episode')
## itemlist = filtertools.show_option(itemlist, item.channel, list_language, list_quality)
# richiesto per autoplay # richiesto per autoplay
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)
itemlist.append(
Item(channel='setting',
action="channel_config",
title=support.typo("Configurazione Canale color lime"),
config=item.channel,
folder=False,
thumbnail=channelselector.get_thumb('setting_0.png'))
)
return itemlist return itemlist
def serietv(item): def serietv(item):
#import web_pdb; web_pdb.set_trace()
# lista serie tv
support.log() support.log()
itemlist = [] itemlist = []
if item.args: if item.args:
@@ -65,69 +79,76 @@ def serietv(item):
patronNext='a class="next page-numbers" href="?([^>"]+)">Avanti &raquo;</a>' patronNext='a class="next page-numbers" href="?([^>"]+)">Avanti &raquo;</a>'
itemlist = support.scrape(item, patron_block='', patron=patron, listGroups=listGroups, itemlist = support.scrape(item, patron_block='', patron=patron, listGroups=listGroups,
patronNext=patronNext, patronNext=patronNext, action='episodios')
action='episodios')
return itemlist return itemlist
def episodios(item): def episodios(item):
support.log() ## import web_pdb; web_pdb.set_trace()
support.log("episodios")
itemlist = [] itemlist = []
# Carica la pagina # Carica la pagina
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
#======== #========
if 'clicca qui per aprire' in data.lower(): if 'clicca qui per aprire' in data.lower():
item.url = scrapertoolsV2.find_single_match(data, '"go_to":"(.*?)"') item.url = scrapertoolsV2.find_single_match(data, '"go_to":"([^"]+)"')
item.url = item.url.replace("\\","") item.url = item.url.replace("\\","")
# Carica la pagina # Carica la pagina
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
elif 'clicca qui</span>' in data.lower(): elif 'clicca qui</span>' in data.lower():
item.url = scrapertoolsV2.find_single_match(data, '<h2 style="text-align: center;"><a href="(.*?)">') item.url = scrapertoolsV2.find_single_match(data, '<h2 style="text-align: center;"><a href="([^"]+)">')
# Carica la pagina # Carica la pagina
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
#========= #=========
patron = r'(?:<\/span>\w+ STAGIONE\s\d+ (?:\()?(ITA|SUB ITA)(?:\))?<\/div>'\
'<div class="su-spoiler-content su-clearfix" style="display:none">|'\
'(?:\s|\Wn)?(?:<strong>)?(\d&#.*?)(?:|)?<a\s(.*?)<\/a><br\s\/>)'
## '(?:<\/span>\w+ STAGIONE\s\d+ (?:\()?(ITA|SUB ITA)(?:\))?'\
## '<\/div><div class="su-spoiler-content su-clearfix" style="display:none">|'\
## '(?:\s|\Wn)?(?:<strong>)?(\d[&#].*?)(?:|\W)?<a\s(.*?)<\/a><br\s\/>)'
## '(?:<\/span>\w+ STAGIONE\s\d+ (?:\()?(ITA|SUB ITA)(?:\))?<\/div>'\
## '<div class="su-spoiler-content su-clearfix" style="display:none">|'\
## '\s(?:<strong>)?(\d[&#].*?)<a\s(.*?)<\/a><br\s\/>)'
listGroups = ['lang', 'title', 'url']
itemlist = support.scrape(item, data=data, patron=patron,
listGroups=listGroups, action='findvideos')
matches = scrapertoolsV2.find_multiple_matches(data, # Permette la configurazione della videoteca senza andare nel menu apposito
r'<span class="su-spoiler-icon"><\/span>(.*?)</div></div>') # così si possono Attivare/Disattivare le impostazioni direttamente dalla
for match in matches: # pagina delle puntate
blocks = scrapertoolsV2.find_multiple_matches(match, r'(?:(\d&#215;[a-zA-Z0-9].*?))<br \/>') itemlist.append(
season_lang = scrapertoolsV2.find_single_match(match, r'<\/span>.*?STAGIONE\s+\d+\s\(([^<>]+)\)').strip() Item(channel='setting',
action="channel_config",
logger.info("blocks log: %s" % ( blocks )) title=support.typo("Configurazione Videoteca color lime"),
for block in blocks: plot = 'Filtra per lingua utilizzando la configurazione della videoteca.\
season_n, episode_n = scrapertoolsV2.find_single_match(block, r'(\d+)(?:&#215;|×)(\d+)') Escludi i video in sub attivando "Escludi streams... " e aggiungendo sub in Parole',
titolo = scrapertoolsV2.find_single_match(block, r'[&#;]\d+[ ]([a-zA-Z0-9;&#.\s]+)[ ]?[^<>]') config='videolibrary', #item.channel,
logger.info("block log: %s" % ( block )) folder=False,
thumbnail=channelselector.get_thumb('setting_0.png')
titolo = re.sub(r'&#215;|×', "x", titolo).replace("&#8217;","'") ))
item.infoLabels['season'] = season_n # permette di vedere il plot della stagione e...
item.infoLabels['episode'] = episode_n # permette di vedere il plot della puntata e...
itemlist.append(
Item(channel=item.channel,
action="findvideos",
contentType='episode',
title="[B]" + season_n + "x" + episode_n + " " + titolo + "[/B] " + season_lang,
fulltitle=item.title, # Titolo nel video
show=titolo + ":" + season_n + "x" + episode_n, # sottotitoletto nel video
url=block,
extra=item.extra,
thumbnail=item.thumbnail,
infoLabels=item.infoLabels
))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
support.videolibrary(itemlist, item)
itemlist = filtertools.get_links(itemlist, item, list_language)
return itemlist return itemlist
# =========== def findvideos =============
def findvideos(item):
support.log()
itemlist =[]
# Requerido para FilterTools
## itemlist = filtertools.get_links(itemlist, item, list_language)
itemlist = support.server(item, item.url)
## support.videolibrary(itemlist, item)
return itemlist
# =========== def ricerca ============= # =========== def ricerca =============
def search(item, texto): def search(item, texto):
support.log() support.log()
item.url = "%s?s=%s" % (host, texto) item.url = "%s?s=%s" % (host, texto)
try: try:
return serietv(item) return serietv(item)
# Continua la ricerca in caso di errore # Continua la ricerca in caso di errore
@@ -142,8 +163,9 @@ def newest(categoria):
support.log() support.log()
itemlist = [] itemlist = []
item = Item() item = Item()
item.contentType= 'episode'
item.args= 'True'
try: try:
item.args= 'True'
item.url = "%saggiornamento-episodi/" % host item.url = "%saggiornamento-episodi/" % host
item.action = "serietv" item.action = "serietv"
itemlist = serietv(item) itemlist = serietv(item)
@@ -160,10 +182,5 @@ def newest(categoria):
return itemlist return itemlist
def findvideos(item): def paginator(item):
support.log() pass
itemlist =[]
itemlist = support.server(item, item.url)
return itemlist
+3 -3
View File
@@ -321,7 +321,7 @@ def thumb(itemlist=[]):
icon_dict = {'channels_movie':['film'], icon_dict = {'channels_movie':['film'],
'channels_tvshow':['serie','tv','episodi','episodio'], 'channels_tvshow':['serie','tv','episodi','episodio'],
'channels_documentary':['documentari','documentario'], 'channels_documentary':['documentari','documentario'],
'news':['novità', "novita'"], 'news':['novità', "novita'", 'aggiornamenti'],
'now_playing':['cinema', 'in sala'], 'now_playing':['cinema', 'in sala'],
'channels_anime':['anime'], 'channels_anime':['anime'],
'genres':['genere', 'generi', 'categorie', 'categoria'], 'genres':['genere', 'generi', 'categorie', 'categoria'],
@@ -338,13 +338,13 @@ def thumb(itemlist=[]):
'channels_grotesque':['grottesco'], 'channels_grotesque':['grottesco'],
'channels_war':['guerra'], 'channels_war':['guerra'],
'horror':['horror'], 'horror':['horror'],
'lucky': ['fortunato'], # se potete inserire la icona anche per questa voce 'lucky': ['fortunato'],
'channels_musical':['musical'], 'channels_musical':['musical'],
'channels_mistery':['mistero', 'giallo'], 'channels_mistery':['mistero', 'giallo'],
'channels_noir':['noir'], 'channels_noir':['noir'],
'popular' : ['popolari','popolare', 'più visti'], 'popular' : ['popolari','popolare', 'più visti'],
'channels_thriller':['thriller'], 'channels_thriller':['thriller'],
'top_rated' : ['fortunato'], #da tocgliere aggiunte la voce lucky o quello che volete 'top_rated' : ['fortunato'],
'channels_western':['western'], 'channels_western':['western'],
'channels_vos':['sub','sub-ita'], 'channels_vos':['sub','sub-ita'],
'channels_romance':['romantico','sentimentale'], 'channels_romance':['romantico','sentimentale'],
+17 -5
View File
@@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
# -----------------------------------------------------------
# support functions that are needed by many channels, to no repeat the same code # support functions that are needed by many channels, to no repeat the same code
import base64 import base64
import inspect import inspect
@@ -112,8 +114,12 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
# patron = 'blablabla' # patron = 'blablabla'
# headers = [['Referer', host]] # headers = [['Referer', host]]
# blacklist = 'Request a TV serie!' # blacklist = 'Request a TV serie!'
# return support.scrape(item, itemlist, patron, ['thumb', 'quality', 'url', 'title', 'year', 'plot', 'episode', 'lang'], # return support.scrape(item, itemlist, patron, ['thumb', 'quality', 'url', 'title', 'title2', 'year', 'plot', 'episode', 'lang'],
# headers=headers, blacklist=blacklist) # headers=headers, blacklist=blacklist)
# listGroups
# thumb = immagine, quality = qualità, url = link singolo o gruppo, title = titolo film o serie, title2 = titolo aggiuntivo
# year = anno del film o della serie, plot = descrizione film o serie, episode = numero stagione - numero episodio in caso di serie,
# lang = lingua del video
# 'type' is a check for typologies of content e.g. Film or TV Series # 'type' is a check for typologies of content e.g. Film or TV Series
# 'episode' is a key to grab episode numbers if it is separated from the title # 'episode' is a key to grab episode numbers if it is separated from the title
# IMPORTANT 'type' is a special key, to work need type_content_dict={} and type_action_dict={} # IMPORTANT 'type' is a special key, to work need type_content_dict={} and type_action_dict={}
@@ -145,6 +151,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
log('MATCHES =', matches) log('MATCHES =', matches)
known_keys = ['url', 'title', 'title2', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang'] #by greko aggiunto episode known_keys = ['url', 'title', 'title2', 'episode', 'thumb', 'quality', 'year', 'plot', 'duration', 'genere', 'rating', 'type', 'lang'] #by greko aggiunto episode
lang = '' # aggiunto per gestire i siti con pagine di serietv dove si hanno i video in ita e in subita
for match in matches: for match in matches:
if len(listGroups) > len(match): # to fix a bug if len(listGroups) > len(match): # to fix a bug
@@ -158,7 +165,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
val = scrapertoolsV2.find_single_match(item.url, 'https?://[a-z0-9.-]+') + val val = scrapertoolsV2.find_single_match(item.url, 'https?://[a-z0-9.-]+') + val
scraped[kk] = val scraped[kk] = val
title = scrapertoolsV2.decodeHtmlentities(scraped["title"]).replace('"', "'").strip() # fix by greko da " a ' title = scrapertoolsV2.htmlclean(scrapertoolsV2.decodeHtmlentities(scraped["title"])).replace('', '\'').replace('"', "'").strip() # fix by greko da " a '
plot = scrapertoolsV2.htmlclean(scrapertoolsV2.decodeHtmlentities(scraped["plot"])) plot = scrapertoolsV2.htmlclean(scrapertoolsV2.decodeHtmlentities(scraped["plot"]))
longtitle = typo(title, 'bold') longtitle = typo(title, 'bold')
@@ -167,13 +174,17 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
scraped['episode'] = re.sub(r'\s-\s|-|x|&#8211', 'x' , scraped['episode']) scraped['episode'] = re.sub(r'\s-\s|-|x|&#8211', 'x' , scraped['episode'])
longtitle = typo(scraped['episode'] + ' - ', 'bold') + longtitle longtitle = typo(scraped['episode'] + ' - ', 'bold') + longtitle
if scraped['title2']: if scraped['title2']:
title2 = scrapertoolsV2.decodeHtmlentities(scraped["title2"]).replace('"', "'").strip() title2 = scrapertoolsV2.htmlclean(scrapertoolsV2.decodeHtmlentities(scraped["title2"])).replace('"', "'").strip()
longtitle = longtitle + typo(title2, 'bold _ -- _') longtitle = longtitle + typo(title2, 'bold _ -- _')
if scraped["lang"]:
if 'sub' in scraped["lang"].lower(): ## Aggiunto/modificato per gestire i siti che hanno i video
## in ita e subita delle serie tv nella stessa pagina
if scraped['lang']:
if 'sub' in scraped['lang'].lower():
lang = 'Sub-ITA' lang = 'Sub-ITA'
else: else:
lang = 'ITA' lang = 'ITA'
if lang != '':
longtitle += typo(lang, '_ [] color kod') longtitle += typo(lang, '_ [] color kod')
if item.infoLabels["title"] or item.fulltitle: # if title is set, probably this is a list of episodes or video sources if item.infoLabels["title"] or item.fulltitle: # if title is set, probably this is a list of episodes or video sources
@@ -216,6 +227,7 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
title=longtitle, title=longtitle,
fulltitle=title, fulltitle=title,
show=title, show=title,
language = lang if lang != '' else '',
quality=scraped["quality"], quality=scraped["quality"],
url=scraped["url"], url=scraped["url"],
infoLabels=infolabels, infoLabels=infolabels,
+2
View File
@@ -53,6 +53,8 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
from lib import unshortenit from lib import unshortenit
data, status = unshortenit.unshorten(url) data, status = unshortenit.unshorten(url)
logger.info("Data - Status zcrypt linkup : [%s] [%s] " %(data, status)) logger.info("Data - Status zcrypt linkup : [%s] [%s] " %(data, status))
if '/speedx/' in data: # aggiunto per server speedvideo
data = data.replace('http://linkup.pro/speedx', 'http://speedvideo.net')
# fix by greko fine # fix by greko fine
else: else:
data = "" data = ""
+33 -59
View File
@@ -1,70 +1,44 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import time from servers import turbovid
import urllib
from core import httptools
from core import scrapertools
from platformcode import logger
def test_video_exists(page_url): def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url) return turbovid.test_video_exists(page_url)
data = httptools.downloadpage(page_url).data
if "Not Found" in data or "File Does not Exist" in data:
return False, "[deltabit] El fichero no existe o ha sido borrado"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""): def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(deltabit page_url='%s')" % page_url) return turbovid.get_video_url(page_url, premium, user, password, video_password, 'deltabit')
video_urls = []
data = httptools.downloadpage(page_url).data
data = data.replace('"', "'")
page_url_post = scrapertools.find_single_match(data, "<Form method='POST' action='([^']+)'>")
imhuman = "&imhuman=" + scrapertools.find_single_match(data, "name='imhuman' value='([^']+)'").replace(" ", "+")
post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, "name='([^']+)' value='([^']*)'")}) + imhuman
time.sleep(6)
data = httptools.downloadpage(page_url_post, post=post).data
## logger.info("(data page_url='%s')" % data)
sources = scrapertools.find_single_match(data, 'sources: \[([^\]]+)\]')
for media_url in scrapertools.find_multiple_matches(sources, '"([^"]+)"'): ##import time
media_url = media_url.replace('https:', 'http:') ##import urllib
ext = scrapertools.get_filename_from_url(media_url)[-4:]
video_urls.append(["%s [deltabit]" % (ext), media_url])
return video_urls
## logger.info("deltabit url=" + page_url)
## data = httptools.downloadpage(page_url).data
## code = scrapertools.find_multiple_matches(data, '<input type="hidden" name="[^"]+" value="([^"]+)"')
## time.sleep(6)
## data = httptools.downloadpage(page_url+'?op='+code[0]+\
## '&id='+code[1]+'&fname='+code[2]+'&hash='+code[3]).data
## ##
## logger.info("DATA deltabit : %s" % data) ##from core import httptools
##from core import scrapertools
##from platformcode import logger
##
## https://deltabit.co/6zragsekoole?op=download1&usr_login=%27%27&id=6zragsekoole&fname=New.Amsterdam.2018.Episodio.1.Come.Posso.Aiutare.iTALiAN.WEBRip.x264-GeD.mkv&referer=%27%27&hash=24361-79-32-1557854113-cc51baafbf1530f43b746133fbd293ee ##
## https://deltabit.co/6zragsekoole?op=download1&usr_login=''&id=6zragsekoole&fname=New.Amsterdam.2018.Episodio.1.Come.Posso.Aiutare.iTALiAN.WEBRip.x264-GeD.mkv&referer=''&hash=24361-79-32-1557854113-cc51baafbf1530f43b746133fbd293ee ##def test_video_exists(page_url):
## logger.info("(page_url='%s')" % page_url)
## video_urls = page_url+'?op='+code[0]+'&usr_login='+code[1]+'&id='+code[2]+'&fname='+code[3]+'&referer='+code[4]+'&hash='+code[5] ## data = httptools.downloadpage(page_url).data
## if "Not Found" in data or "File Does not Exist" in data:
## logger.info("Delta bit [%s]: " % page_url) ## return False, "[deltabit] El fichero no existe o ha sido borrado"
## return True, ""
## code = scrapertools.find_single_match(data, 'name="code" value="([^"]+)') ##
## hash = scrapertools.find_single_match(data, 'name="hash" value="([^"]+)') ##
## post = "op=download1&code=%s&hash=%s&imhuman=Proceed+to+video" %(code, hash) ##def get_video_url(page_url, premium=False, user="", password="", video_password=""):
## data1 = httptools.downloadpage("http://m.vidtome.stream/playvideo/%s" %code, post=post).data #### logger.info("(deltabit page_url='%s')" % page_url)
## video_urls = [] ## video_urls = []
## media_urls = scrapertools.find_multiple_matches(data1, 'file: "([^"]+)') ## data = httptools.downloadpage(page_url).data
## for media_url in media_urls: ## data = data.replace('"', "'")
## page_url_post = scrapertools.find_single_match(data, "<Form method='POST' action='([^']+)'>")
## imhuman = "&imhuman=" + scrapertools.find_single_match(data, "name='imhuman' value='([^']+)'").replace(" ", "+")
## post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, "name='([^']+)' value='([^']*)'")}) + imhuman
## time.sleep(6)
## data = httptools.downloadpage(page_url_post, post=post).data
#### logger.info("(data page_url='%s')" % data)
## sources = scrapertools.find_single_match(data, 'sources: \[([^\]]+)\]')
##
## for media_url in scrapertools.find_multiple_matches(sources, '"([^"]+)"'):
## media_url = media_url.replace('https:', 'http:')
## ext = scrapertools.get_filename_from_url(media_url)[-4:] ## ext = scrapertools.get_filename_from_url(media_url)[-4:]
## video_urls.append(["%s [vidtomestream]" % (ext), media_url]) ## video_urls.append(["%s [deltabit]" % (ext), media_url])
## video_urls.reverse()
## for video_url in video_urls:
## logger.info("%s" % (video_url[0]))
## return video_urls ## return video_urls
+75
View File
@@ -0,0 +1,75 @@
{
"id": "nowvideo",
"name": "nowvideo",
"active": true,
"thumbnail": "http://nowvideo.club/images/logo.png",
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "nowvideo.club/(?:play|videos/)([A-z0-9]+)",
"url": "http:\/\/nowvideo.club\/play\/\\1"
},
{
"pattern": "nowvideo.club/(?:videos|play/)([A-z0-9]+)",
"url": "http:\/\/nowvideo.club\/videos/\\1"
}
]
},
"free": true,
"premium": [
"nowvideo",
"realdebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"type": "bool",
"visible": true
},
{
"default": 0,
"enabled": true,
"id": "favorites_servers_list",
"label": "@60655",
"lvalues": [
"No",
"1",
"2",
"3",
"4",
"5"
],
"type": "list",
"visible": false
},
{
"default": false,
"enabled": true,
"id": "premium",
"label": "@70272",
"type": "bool",
"visible": true
},
{
"default": "",
"enabled": "eq(-1,true)",
"id": "user",
"label": "@30014",
"type": "text",
"visible": true
},
{
"default": "",
"enabled": "eq(-2,true)+!eq(-1,'')",
"hidden": true,
"id": "password",
"label": "@30015",
"type": "text",
"visible": true
}
]
}
+74
View File
@@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
import urllib
import urlparse
from core import httptools
from core import scrapertools
from platformcode import logger#, config
headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0']]
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Not Found" in data or "File was deleted" in data or "The file is being converted" in data or "Please try again later" in data:
return False, config.get_localized_string(70293) % "NowVideo"
elif "no longer exists" in data:
return False, config.get_localized_string(70292) % "NowVideo"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
host = 'http://nowvideo.club'
logger.info("(nowvideo page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
page_url_post = scrapertools.find_single_match(data, '<Form id="[^"]+" method="POST" action="([^"]+)">')
page_url_post = page_url_post.replace('..', '')
imhuman = '&imhuman=' + scrapertools.find_single_match(data, 'name="imhuman" value="([^"]+)"').replace(" ", "+")
post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, 'name="([^"]+)" value="([^"]*)"')}) + imhuman
data = httptools.downloadpage(host + page_url_post, post=post).data
logger.info("nowvideo data page_url2 ='%s'" % data)
headers.append(['Referer', page_url])
post_data = scrapertools.find_single_match(data,"</div>\s*<script>(eval.function.p,a,c,k,e,.*?)\s*</script>")
if post_data != "":
from lib import jsunpack
data = jsunpack.unpack(post_data)
block = scrapertools.find_single_match(data, 'sources:\s*\[[^\]]+\]')
if block: data = block
media_urls = scrapertools.find_multiple_matches(data, '(http.*?\.mp4)')
_headers = urllib.urlencode(dict(headers))
for media_url in media_urls:
#logger.info("nowvideo data page_url2 ='%s'" % media_url)
video_urls.append([" mp4 [nowvideo] ", media_url + '|' + _headers])
for video_url in media_urls:
logger.info("[nowvideo.py] %s - %s" % (video_url[0], video_url[1]))
return video_urls
def find_videos(data):
encontrados = set()
devuelve = []
patronvideos = r"nowvideo.club/(?:play|videos)?([a-z0-9A-Z]+)"
logger.info("[nowvideo.py] find_videos #" + patronvideos + "#")
matches = re.compile(patronvideos, re.DOTALL).findall(data)
for match in matches:
titulo = "[nowvideo]"
url = 'http://nowvideo.club/%s' % match
if url not in encontrados:
logger.info(" url=" + url)
devuelve.append([titulo, url, 'nowvideo'])
encontrados.add(url)
else:
logger.info(" url duplicada=" + url)
return devuelve
+11 -9
View File
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##
from core import httptools, scrapertools from core import httptools, scrapertools
from platformcode import config, logger from platformcode import config, logger
def test_video_exists(page_url): def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url) logger.info("(page_url='%s')" % page_url)
@@ -14,23 +14,25 @@ def test_video_exists(page_url):
return True, "" return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
def get_video_url(page_url,
premium=False,
user="",
password="",
video_password=""):
logger.info("url=" + page_url) logger.info("url=" + page_url)
video_urls = [] video_urls = []
data = httptools.downloadpage(page_url).data data = httptools.downloadpage(page_url).data
media_urls = scrapertools.find_multiple_matches(data, r"file:[^']'([^']+)',\s*label:[^\"]\"([^\"]+)\"") media_urls = scrapertools.find_multiple_matches(data, r"file:[^']'([^']+)',\s*label:[^\"]\"([^\"]+)\"")
logger.info("speed video - media urls: %s " % media_urls)
for media_url, label in media_urls: for media_url, label in media_urls:
media_url = httptools.downloadpage(media_url, only_headers=True, follow_redirects=False).headers.get("location", "") media_url = httptools.downloadpage(media_url, only_headers=True, follow_redirects=False).headers.get("location", "")
if media_url: if media_url:
video_urls.append([label + " " + media_url.rsplit('.', 1)[1] + ' [speedvideo]', media_url]) video_urls.append([label + " " + media_url.rsplit('.', 1)[1] + ' [speedvideo]', media_url])
logger.info("speed video - media urls: %s " % video_urls)
return video_urls return video_urls
##,
## {
## "pattern": "speedvideo.net/([A-Z0-9a-z]+)",
## "url": "https:\/\/speedvideo.net\/\\1"
## }
+42
View File
@@ -0,0 +1,42 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "turbovid.me/([A-z0-9]+)",
"url": "http://turbovid.me/\\1"
}
]
},
"free": true,
"id": "turbovid",
"name": "turbovid",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"type": "bool",
"visible": true
},
{
"default": 0,
"enabled": true,
"id": "favorites_servers_list",
"label": "@60655",
"lvalues": [
"No",
"1",
"2",
"3",
"4",
"5"
],
"type": "list",
"visible": false
}
],
"thumbnail": "http://turbovid.me/img/logo.png"
}
+37
View File
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
import urllib
import time
from core import httptools
from core import scrapertools
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Not Found" in data or "File Does not Exist" in data:
return False, "[turbovid.me] El fichero no existe o ha sido borrado"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password="", server='turbovid'):
logger.info("(turbovid page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
data = data.replace('"', "'")
page_url_post = scrapertools.find_single_match(data, "<Form method='POST' action='([^']+)'>")
imhuman = "&imhuman=" + scrapertools.find_single_match(data, "name='imhuman' value='([^']+)'").replace(" ", "+")
post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, "name='([^']+)' value='([^']*)'")}) + imhuman
time.sleep(6)
data = httptools.downloadpage(page_url_post, post=post).data
logger.info("(data page_url='%s')" % data)
sources = scrapertools.find_single_match(data, 'sources: \[([^\]]+)\]')
for media_url in scrapertools.find_multiple_matches(sources, '"([^"]+)"'):
media_url = media_url.replace('https:', 'http:')
ext = scrapertools.get_filename_from_url(media_url)[-4:]
video_urls.append(["%s [turbovid]" % (ext), media_url])
return video_urls
+4
View File
@@ -9,6 +9,10 @@
{ {
"pattern": "wstream.video/(?:embed-|videos/|video/)?([a-z0-9A-Z]+)", "pattern": "wstream.video/(?:embed-|videos/|video/)?([a-z0-9A-Z]+)",
"url": "http:\/\/wstream.video\/\\1" "url": "http:\/\/wstream.video\/\\1"
},
{
"pattern": "wstream.video/(?:embed-|videos/|video/)?([a-z0-9A-Z]+)",
"url": "http:\/\/wstream.video\/video\/\\1"
} }
], ],
"ignore_urls": [ ] "ignore_urls": [ ]