Merge remote-tracking branch 'origin/master'

This commit is contained in:
marco
2020-11-26 21:12:47 +01:00
9 changed files with 76 additions and 110 deletions

View File

@@ -42,7 +42,7 @@
"hd4me": "https://hd4me.net",
"ilgeniodellostreaming": "https://ilgeniodellostreaming.pet",
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.gold",
"italiaserie": "https://italiaserie.eu",
"italiaserie": "https://italiaserie.run",
"mondoserietv": "https://mondoserietv.fun",
"piratestreaming": "https://www.piratestreaming.deals",
"polpotv": "https://polpotv.life",

View File

@@ -75,7 +75,7 @@ def peliculas(item):
else:
patron = r'<div class="cover-racolta">\s*<a href="(?P<url>[^"]+)"[^>]+>\s*<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)".*?<p class="title[^>]+>(?P<title>[^<]+)<'
else:
patron = r'<article[^>]+>[^>]+>[^>]+>(?:<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)"[^>]+>)?.*?<a href="(?P<url>[^"]+)">\s*(?P<title>[^<]+)<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*<p>(?P<plot>[^<]+)<'
patron = r'<article[^>]+>[^>]+>[^>]+>(?:<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)"[^>]+>)?.*?<a href="(?P<url>[^"]+)"[^>]*>\s*(?P<title>[^<]+)<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*<p>(?P<plot>[^<]+)<'
patronNext = r'<a class="page-numbers next" href="([^"]+)">'
# select category
@@ -121,14 +121,14 @@ def episodios(item):
else:
patron = r'class="title-episodio">(?P<title>[^<]+)<(?P<url>.*?)<p'
def itemlistHook(itemlist):
counter = 0
for item in itemlist:
episode = support.match(item.title, patron=r'\d+').match
if episode == '1':
counter += 1
item.title = support.typo(str(counter) + 'x' + episode.zfill(2) + support.re.sub(r'\[[^\]]+\](?:\d+)?','',item.title),'bold')
return itemlist
# def itemlistHook(itemlist):
# counter = 0
# for item in itemlist:
# episode = support.match(item.title, patron=r'\d+').match
# if episode == '1':
# counter += 1
# item.title = support.typo(str(counter) + 'x' + episode.zfill(2) + support.re.sub(r'\[[^\]]+\](?:\d+)?','',item.title),'bold')
# return itemlist
return locals()

View File

@@ -2,7 +2,7 @@
"id": "film4k",
"name": "Film4k",
"language": ["ita"],
"active": true,
"active": false,
"thumbnail": "film4k.png",
"banner": "film4k.png",
"categories": ["tvshow", "movie", "anime"],

View File

@@ -28,7 +28,7 @@ def mainlist(item):
@support.scrape
def peliculas(item):
patronBlock = r'movies-list movies-list-full(?P<block>.*?)footer>'
patron = r'<div data-movie-id[^>]+> <a href="(?P<url>[^"]+).*?<img data-original="(?P<thumbnail>[^"]+)[^>]+>[^>]+>[^>]+>(?P<title>[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+).*?rel="tag">(?P<year>\d+).*?jt-info">(?P<duration>\d+)'
patron = r'<div data-movie-id[^>]+>\s*<a href="(?P<url>[^"]+)"[^>]+>[^>]+>[^>]+><img src="(?P<thumbnail>[^"]+)[^>]+>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+)[^>]+>[^>]+>[^>]+>(?P<year>\d*)[^>]+>[^>]+>[^>]+>(?P<duration>\d*)'
patronNext = '<li class=.active.>.*?href=.(.*?).>'
action = 'episodios'
return locals()

View File

@@ -2,22 +2,11 @@
# ------------------------------------------------------------
# Canale per italiaserie
# ------------------------------------------------------------
"""
Problemi noti che non superano il test del canale:
Avvisi:
Ulteriori info:
"""
import re
from core import support, httptools, scrapertools
from core.item import Item
from platformcode import config
from platformcode import config, logger
host = config.get_channel_url()
headers = [['Referer', host]]
@@ -25,11 +14,11 @@ headers = [['Referer', host]]
@support.menu
def mainlist(item):
support.info()
tvshow = ['/category/serie-tv/',
('Aggiornamenti', ['/ultimi-episodi/', 'peliculas', 'update']),
('Generi', ['', 'category', 'Serie-Tv per Genere'])
tvshow = ['',
('Aggiornamenti', ['/aggiornamento-episodi/', 'peliculas', 'update']),
('Top 10', ['/top-10', 'peliculas', 'top']),
('Netflix {tv submenu}', ['/genere/netflix', 'peliculas']),
('A-Z', ['/lista-completa', 'peliculas', 'a-z'])
]
return locals()
@@ -37,44 +26,46 @@ def mainlist(item):
@support.scrape
def peliculas(item):
support.info()
action = 'episodios'
patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" '\
'title="(?P<title>[^"]+)">\s*<img src="(?P<thumb>[^"]+)"[^>]+>'
patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" title="(?P<title>[^"\[]+)[^>]+>\s*<img src="(?P<thumb>[^"]+)"[^>]+>'
if item.args == 'update':
patron += r'.*?aj-eps">(?P<episode>.+?)[ ]?(?P<lang>Sub-Ita|Ita)</span>'
pagination = ''
patron = r'br />(?P<title>[^]+)[^<]+<a href="(?P<url>[^"]+)">(?P<episode>[^ ]+)\s*(?P<title2>[^\(<]+)(?:\((?P<lang>[^\)]+))??'
action = 'findvideos'
if item.args == 'top':
patron = r'<a href="(?P<url>[^"]+)">(?P<title>[^<]+)</a>[^>]+>[^>]+>[^>]+><img.*?src="(?P<thumb>[^"]+)"[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>:\s*(?P<rating>[^/]+)'
if item.args =='a-z':
pagination = ''
patron = r'<li ><a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)"'
patronNext = r'<a class="next page-numbers" href="(.*?)">'
## debug = True
def itemHook(item):
item.title = support.re.sub(r'<[^>]+>','', item.title)
return item
return locals()
@support.scrape
def episodios(item):
support.info()
res = support.match(item, patron=r'<a href="([^"]+)">&gt;')
if res.match: data = support.match(res.match).data
else: data = res.data
patronBlock = r'</i> Stagione (?P<block>(?P<season>\d+)</div> '\
'<div class="su-spoiler-content".*?)<div class="clearfix">'
patron = r'(?:(?P<season>\d+)?</div> <div class="su-spoiler-content"(:?.+?)?> )?'\
'<div class="su-link-ep">\s+<a.*?href="(?P<url>[^"]+)".*?strong>[ ]'\
'(?P<title>.+?)[ ](?P<episode>\d+-\d+|\d+)[ ](?:-\s+(?P<title2>.+?))?'\
'[ ]?(?:(?P<lang>Sub-ITA))?[ ]?</strong>'
patronBlock = r'(?:Stagione|STAGIONE)\s*(?P<lang>[^<]+)?(?:</p>)?(?P<block>.*?)</p>'
patron = r'(?:p>|/>)(?P<title>[^]+)(?P<data>.*?)(?:<br|$)'
#debug = True
def itemHook(item):
item.title = support.re.sub('<[^>]+>','', item.title)
return item
return locals()
@support.scrape
def category(item):
support.info()
action = 'peliculas'
patron = r'<li class="cat-item.*?href="(?P<url>[^"]+)".*?>(?P<title>.*?)</a>'
return locals()
@@ -111,41 +102,28 @@ def newest(categoria):
except:
import sys
for line in sys.exc_info():
support.info("{0}".format(line))
logger.error("{0}".format(line))
return []
return itemlist
def findvideos(item):
support.info()
logger.debug()
if item.args == 'update':
itemlist = []
item.infoLabels['mediatype'] = 'episode'
data = httptools.downloadpage(item.url, headers=headers).data
data = re.sub('\n|\t', ' ', data)
data = re.sub(r'>\s+<', '> <', data)
url_video = scrapertools.find_single_match(data, r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>', -1)
url_serie = scrapertools.find_single_match(data, r'<link rel="canonical" href="([^"]+)" />')
data = support.match(item.url, headers=headers).data
url_video = support.match(data, patron=r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>').matches
url_serie = support.match(data, patron=r'<link rel="canonical" href="([^"]+)" />').matches
goseries = support.typo("Vai alla Serie:", ' bold')
series = support.typo(item.contentSerieName, ' bold color kod')
itemlist = support.server(item, data=url_video)
itemlist.append(
Item(channel=item.channel,
title=goseries + series,
fulltitle=item.fulltitle,
show=item.show,
contentType='tvshow',
contentSerieName=item.contentSerieName,
url=url_serie,
action='episodios',
contentTitle=item.contentSerieName,
plot = goseries + series + "con tutte le puntate",
))
itemlist.append(item.clone(title=goseries + series, contentType='tvshow', url=url_serie, action='episodios', plot = goseries + series + "con tutte le puntate"))
return itemlist
else:
return support.server(item, data=item.url)
return support.server(item, data=item.data)

View File

@@ -13,7 +13,7 @@ headers = {'X-Requested-With': 'XMLHttpRequest'}
def mainlist(item):
item.url = host
action = 'peliculas'
patronBlock = r'<ul class="dropdown-menu(?P<block>.*?)</ul> </div'
patronBlock = r'<ul class="dropdown-menu(?P<block>.*?)</ul>\s*</div'
patron = r'<a href="(?P<url>[^"]+)"(?: class="")?>(?P<title>[^<]+)<'
def itemHook(item):
item.thumbnail = support.thumb('music')
@@ -24,7 +24,7 @@ def mainlist(item):
itemlist.append(
support.Item(
channel=item.channel,
title=support.typo('Cerca...', 'bold color kod'),
title=support.typo('Cerca...', 'bold'),
contentType='music',
url=item.url,
action='search',

View File

@@ -1392,7 +1392,7 @@ def thumb(item_itemlist_string=None, genre=False, live=False):
'_tvshow':['serie','tv', 'fiction']}
def autoselect_thumb(item, genre):
logger.debug('SPLIT',re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()))
# logger.debug('SPLIT',re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()))
if genre == False:
for thumb, titles in icon_dict.items():
if any(word in re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()) for word in search):

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
import re, time
import re, time
from lib import js2py
from core import httptools, scrapertools
from platformcode import logger, config
@@ -21,28 +21,17 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
# from core.support import dbg;dbg()
global data
logger.debug("URL", page_url)
video_urls = list()
host = "https://dood.to"
# from core.support import dbg;dbg()
video_urls = []
host = scrapertools.find_single_match(page_url, r'http[s]?://[^/]+')
new_url = scrapertools.find_single_match(data, r'<iframe src="([^"]+)"')
if new_url:
data = httptools.downloadpage(host + new_url).data
logger.debug('DATA', data)
if new_url: data = httptools.downloadpage(host + new_url).data
label = scrapertools.find_single_match(data, r'type:\s*"video/([^"]+)"')
# js_code = scrapertools.find_single_match(data, ('(function makePlay.*?;})'))
# js_code = re.sub(r"\+Date.now\(\)", '', js_code)
# js = js2py.eval_js(js_code)
# makeplay = js() + str(int(time.time()*1000))
# base_url = scrapertools.find_single_match(data, r"\$.get\('([^']+)'")
# data = httptools.downloadpage("%s%s" % (host, base_url), headers={"referer": page_url}).data
# data = re.sub(r'\s+', '', data)
base_url, token = scrapertools.find_single_match(data, r'''dsplayer\.hotkeys[^']+'([^']+).+?function\s*makePlay.+?return[^?]+([^"]+)''')
url = httptools.downloadpage(host + base_url, headers={"referer": page_url}).data
url += token + "|Referer=%s" % page_url
url = '{}{}{}|Referer={}'.format(httptools.downloadpage(host + base_url, headers={"Referer": page_url}).data, token, str(int(time.time() * 1000)), page_url)
video_urls.append([ label + ' [DooD Stream]', url])
return video_urls

View File

@@ -6,7 +6,7 @@ import re, inspect, xbmcgui
from core import httptools, jsontools, tmdb, support, filetools
from core.item import Item
from platformcode import config, platformtools
from platformcode import config, platformtools, logger
from channelselector import get_thumb
from collections import OrderedDict
@@ -25,7 +25,7 @@ list_quality = ['SD', '720', '1080', '4k']
tmdb_api = 'a1ab8b8669da03637a4b98fa39c39228'
def mainlist(item):
support.info()
logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json')
if not filetools.exists(path):
@@ -37,7 +37,7 @@ def mainlist(item):
def show_channels(item):
support.info()
logger.debug()
itemlist = []
# add context menu
@@ -77,7 +77,7 @@ def show_channels(item):
def show_menu(item):
support.info()
logger.debug()
itemlist = []
@@ -116,12 +116,12 @@ def show_menu(item):
if 'channel_name' in json and not 'disable_search' in json and 'search' not in json:
itemlist += get_search_menu(item, json, channel_name=json['channel_name'])
support.info('PAGINATION:', disable_pagination)
logger.debug('PAGINATION:', disable_pagination)
return itemlist
def search(item, text):
support.info(text)
logger.info('search',text)
itemlist = []
if item.custom_search:
@@ -170,7 +170,7 @@ def global_search(item, text):
def peliculas(item, json='', key='', itemlist=[]):
item.plot = item.thumb = item.fanart =''
support.info('PAGINATION:', item.disable_pagination)
logger.debug('PAGINATION:', item.disable_pagination)
if not json:
key = item.key
json = load_json(item)[key]
@@ -241,7 +241,7 @@ def peliculas(item, json='', key='', itemlist=[]):
def get_seasons(item):
support.info()
logger.debug()
itemlist = []
infoLabels = item.infoLabels
json = item.url if type(item.url) == dict else item.url
@@ -281,7 +281,7 @@ def get_seasons(item):
def episodios(item, json ='', key='', itemlist =[]):
support.info()
logger.debug()
infoLabels = item.infoLabels
itm=item
@@ -394,7 +394,7 @@ def episodios(item, json ='', key='', itemlist =[]):
# Find Servers
def findvideos(item):
support.info()
logger.debug()
itemlist = []
if 'links' in item.url:
json = item.url['links']
@@ -414,7 +414,7 @@ def findvideos(item):
################################ Menu ################################
def get_menu(item, json, key, itemlist=[]):
support.info()
logger.debug()
json = json[key]
for option in json:
title = option['title'] if 'title' in option else json[option] if 'search' not in option else ''
@@ -449,7 +449,7 @@ def get_menu(item, json, key, itemlist=[]):
def get_sub_menu(item, json, key, itemlist=[]):
support.info()
logger.debug()
json = json[key]
search = False
if item.menu:
@@ -488,7 +488,7 @@ def get_sub_menu(item, json, key, itemlist=[]):
def get_search_menu(item, json='', itemlist=[], channel_name=''):
support.info()
logger.debug()
if 'title' in json:
title = json['title']
elif channel_name:
@@ -514,7 +514,7 @@ def get_search_menu(item, json='', itemlist=[], channel_name=''):
def submenu(item, json, key, itemlist = [], filter_list = []):
support.info(item)
logger.debug(item)
import sys
if sys.version_info[0] >= 3:
from concurrent import futures
@@ -585,7 +585,6 @@ def filter_thread(filter, key, item, description):
if id:
thumbnail = 'https://image.tmdb.org/t/p/original' + results['profile_path'] if results['profile_path'] else item.thumbnail
json_file = httptools.downloadpage('http://api.themoviedb.org/3/person/'+ str(id) + '?api_key=' + tmdb_api + '&language=en', use_requests=True).data
support.info(json_file)
plot += jsontools.load(json_file)['biography']
if description:
@@ -620,7 +619,7 @@ def filter_thread(filter, key, item, description):
# for load json from item or url
def load_json(item, no_order=False):
support.info()
logger.debug()
if type(item) == Item:
url = item.url
filterkey = item.filterkey
@@ -645,7 +644,7 @@ def load_json(item, no_order=False):
# Load Channels json and check that the paths and channel titles are correct
def load_and_check(item):
support.info()
logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json')
file = open(path, "r")
json = jsontools.load(file.read())
@@ -667,7 +666,7 @@ def load_and_check(item):
# set extra values
def set_extra_values(item, json, path):
support.info()
logger.debug()
ret = Item()
for key in json:
if key == 'quality':
@@ -713,7 +712,7 @@ def set_extra_values(item, json, path):
# format titles
def set_title(title, language='', quality=''):
support.info()
logger.debug()
t = support.match(title, patron=r'\{([^\}]+)\}').match
if 'bold' not in t: t += ' bold'
@@ -734,7 +733,7 @@ def set_title(title, language='', quality=''):
# for relative path
def relative(key, json, path):
support.info()
logger.debug()
ret = ''
if key in json:
if key in ['thumbnail', 'poster']:
@@ -746,7 +745,7 @@ def relative(key, json, path):
def pagination(item, itemlist = []):
support.info()
logger.debug()
itlist = []
if not itemlist:
@@ -786,7 +785,7 @@ def pagination(item, itemlist = []):
return itlist
def add_channel(item):
support.info()
logger.debug()
channel_to_add = {}
json_file = ''
result = platformtools.dialog_select(config.get_localized_string(70676), [config.get_localized_string(70678), config.get_localized_string(70679)])
@@ -840,7 +839,7 @@ def add_channel(item):
return
def remove_channel(item):
support.info()
logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json')