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:
@@ -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 +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,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,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
@@ -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
@@ -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 »</a>'
|
patronNext='a class="next page-numbers" href="?([^>"]+)">Avanti »</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×[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+)(?:×|×)(\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'×|×', "x", titolo).replace("’","'")
|
))
|
||||||
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
@@ -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
@@ -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|–', 'x' , scraped['episode'])
|
scraped['episode'] = re.sub(r'\s-\s|-|x|–', '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,
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
@@ -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"
|
||||||
|
## }
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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": [ ]
|
||||||
|
|||||||
Reference in New Issue
Block a user