Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -124,7 +124,9 @@ def peliculas(item):
|
|||||||
@support.scrape
|
@support.scrape
|
||||||
def episodios(item):
|
def episodios(item):
|
||||||
anime=True
|
anime=True
|
||||||
patronBlock= r'<div class="server\s*active\s*"(?P<block>.*?)</ul>'
|
data = support.match(item, headers=headers)[1]
|
||||||
|
if 'VVVVID' in data: patronBlock= r'<div class="server\s*active\s*"(?P<block>.*?)</ul>'
|
||||||
|
else: patronblock= 'server active(?P<block>.*?)server hidden'
|
||||||
patron = r'<li><a [^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+" href="(?P<url>[^"]+)"[^>]+>(?P<episode>[^<]+)<'
|
patron = r'<li><a [^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+"[^=]+="[^"]+" href="(?P<url>[^"]+)"[^>]+>(?P<episode>[^<]+)<'
|
||||||
def itemHook(item):
|
def itemHook(item):
|
||||||
item.title += support.typo(item.fulltitle,'-- bold')
|
item.title += support.typo(item.fulltitle,'-- bold')
|
||||||
|
|||||||
+121
-59
@@ -5,6 +5,7 @@
|
|||||||
import requests, re
|
import requests, re
|
||||||
from core import support, tmdb
|
from core import support, tmdb
|
||||||
from core.item import Item
|
from core.item import Item
|
||||||
|
from specials import autorenumber
|
||||||
|
|
||||||
__channel__ = "vvvvid"
|
__channel__ = "vvvvid"
|
||||||
host = support.config.get_channel_url(__channel__)
|
host = support.config.get_channel_url(__channel__)
|
||||||
@@ -19,70 +20,94 @@ conn_id = current_session.get(login_page, headers=headers).json()['data']['conn_
|
|||||||
payload = {'conn_id': conn_id}
|
payload = {'conn_id': conn_id}
|
||||||
|
|
||||||
main_host = host
|
main_host = host
|
||||||
host += '/vvvvid/ondemand'
|
host += '/vvvvid/ondemand/'
|
||||||
list_servers = ['vvvvid']
|
list_servers = ['vvvvid']
|
||||||
list_quality = ['default']
|
list_quality = ['default']
|
||||||
|
|
||||||
@support.menu
|
@support.menu
|
||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
anime = ['/anime/channels/',
|
anime = ['anime/',
|
||||||
('In Evidenza',['/anime/channel/10005/last/', 'peliculas', 'sort']),
|
('In Evidenza',['anime/', 'peliculas', 'channel/10005/last/']),
|
||||||
('Popolari',['/anime/channel/10003/last/', 'peliculas', 'sort']),
|
('Popolari',['anime/', 'peliculas', 'channel/10002/last/']),
|
||||||
('Nuove Uscite',['/anime/channel/10007/last/', 'peliculas', 'sort']),
|
('Nuove Uscite',['anime/', 'peliculas', 'channel/10007/last/']),
|
||||||
('Generi',['/anime/channels/', 'peliculas', '/anime/channel/10004/last/?category=']),
|
('Generi',['anime/', 'peliculas', 'channel/10004/last/?category=']),
|
||||||
('A-Z',['/anime/channels/', 'peliculas', '/anime/channel/10003/last/?filter=']),
|
('A-Z',['anime/', 'peliculas', 'channel/10003/last/?filter='])
|
||||||
('Extra',['/anime/channels/', 'peliculas', '/anime/channel/10010/last/?extras='])
|
]
|
||||||
|
film = ['film/',
|
||||||
|
('In Evidenza',['film/', 'peliculas', 'channel/10005/last/']),
|
||||||
|
('Popolari',['film/', 'peliculas', 'channel/10002/last/']),
|
||||||
|
('Nuove Uscite',['film/', 'peliculas', 'channel/10007/last/']),
|
||||||
|
('Generi',['film/', 'peliculas', 'channel/10004/last/?category=']),
|
||||||
|
('A-Z',['film/', 'peliculas', 'channel/10003/last/?filter=']),
|
||||||
|
]
|
||||||
|
tvshow = ['series/',
|
||||||
|
('In Evidenza',['series/', 'peliculas', 'channel/10005/last/']),
|
||||||
|
('Popolari',['series/', 'peliculas', 'channel/10002/last/']),
|
||||||
|
('Nuove Uscite',['series/', 'peliculas', 'channel/10007/last/']),
|
||||||
|
('Generi',['series/', 'peliculas', 'channel/10004/last/?category=']),
|
||||||
|
('A-Z',['series/', 'peliculas', 'channel/10003/last/?filter='])
|
||||||
|
]
|
||||||
|
show = [('Show bold',['show/', 'peliculas', 'channel/10005/last/', 'tvshow']),
|
||||||
|
('In Evidenza submenu',['show/', 'peliculas', 'channel/10005/last/', 'tvshow']),
|
||||||
|
('Popolari submenu',['show/', 'peliculas', 'channel/10002/last/', 'tvshow']),
|
||||||
|
('Nuove Uscite submenu',['show/', 'peliculas', 'channel/10007/last/', 'tvshow']),
|
||||||
|
('Generi submenu',['show/', 'peliculas', 'channel/10004/last/?category=', 'tvshow']),
|
||||||
|
('A-Z submenu',['show/', 'peliculas', 'channel/10003/last/?filter=', 'tvshow']),
|
||||||
|
('Cerca Show... bold submenu', ['show/', 'search', '', 'tvshow'])
|
||||||
|
]
|
||||||
|
kids = [('Kids bold',['kids/', 'peliculas', 'channel/10005/last/', 'tvshow']),
|
||||||
|
('In Evidenza submenu',['kids/', 'peliculas', 'channel/10005/last/', 'tvshow']),
|
||||||
|
('Popolari submenu',['kids/', 'peliculas', 'channel/10002/last/', 'tvshow']),
|
||||||
|
('Nuove Uscite submenu',['kids/', 'peliculas', 'channel/10007/last/', 'tvshow']),
|
||||||
|
('Generi submenu',['kids/', 'peliculas', 'channel/10004/last/?category=', 'tvshow']),
|
||||||
|
('A-Z submenu',['kids/', 'peliculas', 'channel/10003/last/?filter=', 'tvshow']),
|
||||||
|
('Cerca Show... bold submenu', ['kids/', 'search', '', 'tvshow'])
|
||||||
]
|
]
|
||||||
return locals()
|
return locals()
|
||||||
|
|
||||||
|
def search(item, text):
|
||||||
|
support.log(text)
|
||||||
|
itemlist = []
|
||||||
|
if 'film' in item.url: item.contentType = 'movie'
|
||||||
|
else: item.contentType = 'tvshow'
|
||||||
|
item.search = text
|
||||||
|
itemlist = peliculas(item)
|
||||||
|
return itemlist
|
||||||
|
|
||||||
def peliculas(item):
|
def peliculas(item):
|
||||||
itemlist = []
|
itemlist = []
|
||||||
blacklist = ['Generi','A - Z', 'Extra']
|
if not item.args:
|
||||||
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
json_file = current_session.get(item.url + 'channels', headers=headers, params=payload).json()
|
||||||
support.log(json_file)
|
names = [i['filter'] for i in json_file['data'] if 'filter' in i][0]
|
||||||
if 'data' in json_file:
|
for name in names:
|
||||||
if not item.args:
|
url = item.url + 'channel/10003/last/?filter=' + str(name)
|
||||||
names = [i['filter'] for i in json_file['data'] if 'filter' in i][0]
|
json_file = current_session.get(url, headers=headers, params=payload).json()
|
||||||
for name in names:
|
if 'data' in json_file:
|
||||||
support.log(name)
|
|
||||||
url = item.url + '10003/last/?filter=' + str(name)
|
|
||||||
json_file = current_session.get(url, headers=headers, params=payload).json()
|
json_file = current_session.get(url, headers=headers, params=payload).json()
|
||||||
if 'data' in json_file:
|
make_itemlist(itemlist, item, json_file)
|
||||||
json_file = current_session.get(url, headers=headers, params=payload).json()
|
|
||||||
for key in json_file['data']:
|
elif ('=' not in item.args) and ('=' not in item.url):
|
||||||
support.log(key['thumbnail'])
|
json_file = current_session.get(item.url + item.args, headers=headers, params=payload).json()
|
||||||
itemlist.append(
|
make_itemlist(itemlist, item, json_file)
|
||||||
Item(
|
|
||||||
channel = item.channel,
|
elif '=' in item.args:
|
||||||
title = key['title'],
|
json_file = current_session.get(item.url + 'channels', headers=headers, params=payload).json()
|
||||||
fulltitle= key['title'],
|
Filter = support.match(item.args,r'\?([^=]+)=')[0][0]
|
||||||
show= key['title'],
|
keys = [i[Filter] for i in json_file['data'] if Filter in i][0]
|
||||||
url= host + '/' + str(key['show_id']) + '/seasons/',
|
for key in keys:
|
||||||
action= 'episodios'
|
if key not in ['1','2']:
|
||||||
))
|
|
||||||
elif item.args == 'sort':
|
|
||||||
for key in json_file['data']:
|
|
||||||
for key in json_file['data']:
|
|
||||||
itemlist.append(
|
|
||||||
Item(
|
|
||||||
channel = item.channel,
|
|
||||||
title = key['title'],
|
|
||||||
fulltitle= key['title'],
|
|
||||||
show= key['title'],
|
|
||||||
url= host + '/' + str(key['show_id']) + '/seasons/',
|
|
||||||
action= 'episodios',
|
|
||||||
thumbnail= key['thumbnail']
|
|
||||||
))
|
|
||||||
elif 'last' in item.args:
|
|
||||||
Filter = support.match(item.args,r'\?([^=]+)=')[0][0]
|
|
||||||
keys = [i[Filter] for i in json_file['data'] if Filter in i][0]
|
|
||||||
for key in keys:
|
|
||||||
itemlist.append(
|
itemlist.append(
|
||||||
Item(channel = item.channel,
|
Item(channel = item.channel,
|
||||||
title = key if Filter == 'filter' else key['name'],
|
title = support.typo(key.upper() if Filter == 'filter' else key['name'], 'bold'),
|
||||||
url = host + item.args + (key if Filter == 'filter' else str(key['id'])),
|
url = item.url + item.args + (key if Filter == 'filter' else str(key['id'])),
|
||||||
action = 'peliculas',
|
action = 'peliculas',
|
||||||
args = 'sort'))
|
args = 'filters',
|
||||||
|
contentType = item.contentType))
|
||||||
|
|
||||||
|
else :
|
||||||
|
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
||||||
|
make_itemlist(itemlist, item, json_file)
|
||||||
|
if item.contentType != 'movie': autorenumber.renumber(itemlist)
|
||||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
@@ -90,30 +115,67 @@ def episodios(item):
|
|||||||
itemlist = []
|
itemlist = []
|
||||||
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
||||||
show_id = str(json_file['data'][0]['show_id'])
|
show_id = str(json_file['data'][0]['show_id'])
|
||||||
|
|
||||||
for key in json_file['data'][0]['episodes']:
|
for key in json_file['data'][0]['episodes']:
|
||||||
support.log(key)
|
|
||||||
support.log('KEY= ',key)
|
|
||||||
itemlist.append(
|
itemlist.append(
|
||||||
Item(
|
Item(
|
||||||
channel = item.channel,
|
channel = item.channel,
|
||||||
title = 'Episodio ' + str(key['number']) + ' - ' + key['title'],
|
title = 'Episodio ' + str(key['number']) + ' - ' + key['title'],
|
||||||
fulltitle= item.fulltitle,
|
fulltitle= item.fulltitle,
|
||||||
show= item.show,
|
show= item.show,
|
||||||
url= host + '/' + show_id + '/season/' + str(key['season_id']) + '/',
|
url= host + show_id + '/season/' + str(key['season_id']) + '/',
|
||||||
action= 'findvideos',
|
action= 'findvideos',
|
||||||
video_id= key['video_id']
|
video_id= key['video_id'],
|
||||||
|
contentType = item.contentType
|
||||||
))
|
))
|
||||||
|
autorenumber.renumber(itemlist, item, 'bold')
|
||||||
|
support.videolibrary(itemlist,item)
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
def findvideos(item):
|
def findvideos(item):
|
||||||
from lib import vvvvid_decoder
|
from lib import vvvvid_decoder
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
if item.contentType == 'movie':
|
||||||
|
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
||||||
|
item.url = host + str(json_file['data'][0]['show_id']) + '/season/' + str(json_file['data'][0]['episodes'][0]['season_id']) + '/'
|
||||||
|
item.video_id = json_file['data'][0]['episodes'][0]['video_id']
|
||||||
|
|
||||||
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
json_file = current_session.get(item.url, headers=headers, params=payload).json()
|
||||||
support.log(json_file['data'])
|
|
||||||
for episode in json_file['data']:
|
for episode in json_file['data']:
|
||||||
if episode['video_id'] == item.video_id:
|
if episode['video_id'] == item.video_id:
|
||||||
url = vvvvid_decoder.dec_ei(episode['embed_info'])
|
url = vvvvid_decoder.dec_ei(episode['embed_info'] or episode['embed_info'])
|
||||||
|
if 'youtube' in url: item.url = url
|
||||||
item.url = url.replace('manifest.f4m','master.m3u8').replace('http://','https://').replace('/z/','/i/')
|
item.url = url.replace('manifest.f4m','master.m3u8').replace('http://','https://').replace('/z/','/i/')
|
||||||
if 'https' not in item.url: item.url = url='https://or01.top-ix.org/videomg/_definst_/mp4:' + item.url + '/playlist.m3u'
|
if 'https' not in item.url:
|
||||||
return support.server(item)
|
url = support.match(item, url='https://or01.top-ix.org/videomg/_definst_/mp4:' + item.url + '/playlist.m3u')[1]
|
||||||
|
url = url.split()[-1]
|
||||||
|
itemlist.append(
|
||||||
|
Item(action= 'play',
|
||||||
|
title='direct',
|
||||||
|
url= 'https://or01.top-ix.org/videomg/_definst_/mp4:' + item.url + '/' + url,
|
||||||
|
server= 'directo')
|
||||||
|
)
|
||||||
|
return support.server(item, itemlist=itemlist)
|
||||||
|
|
||||||
|
def make_itemlist(itemlist, item, data):
|
||||||
|
search = item.search if item.search else ''
|
||||||
|
infoLabels = {}
|
||||||
|
for key in data['data']:
|
||||||
|
if search.lower() in key['title'].lower():
|
||||||
|
infoLabels['year'] = key['date_published']
|
||||||
|
infoLabels['title'] = infoLabels['tvshowtitle'] = key['title']
|
||||||
|
support.log(infoLabels)
|
||||||
|
itemlist.append(
|
||||||
|
Item(
|
||||||
|
channel = item.channel,
|
||||||
|
title = support.typo(key['title'], 'bold'),
|
||||||
|
fulltitle= key['title'],
|
||||||
|
show= key['title'],
|
||||||
|
url= host + str(key['show_id']) + '/seasons/',
|
||||||
|
action= 'findvideos' if item.contentType == 'movie' else 'episodios',
|
||||||
|
contentType = item.contentType,
|
||||||
|
contentSerieName= key['title'] if item.contentType != 'movie' else '',
|
||||||
|
contentTitle= key['title'] if item.contentType == 'movie' else '',
|
||||||
|
thumbnail= key['thumbnail'],
|
||||||
|
infoLabels=infoLabels
|
||||||
|
))
|
||||||
|
return itemlist
|
||||||
+14
-31
@@ -157,34 +157,14 @@ def scrapeLang(scraped, lang, longtitle):
|
|||||||
# e credo sia utile per filtertools
|
# e credo sia utile per filtertools
|
||||||
language = ''
|
language = ''
|
||||||
|
|
||||||
## if scraped['lang']:
|
if scraped['lang']:
|
||||||
## if 'ita' in scraped['lang'].lower():
|
|
||||||
## language = 'ITA'
|
|
||||||
## if 'sub' in scraped['lang'].lower():
|
|
||||||
## language = 'Sub-' + language
|
|
||||||
## # se scraped['lang'] è None
|
|
||||||
## # nei siti dove la lingua è opzionale per il sub-ita e manca l'ita
|
|
||||||
## else:
|
|
||||||
## lang = 'ITA'
|
|
||||||
## if not language: language = lang
|
|
||||||
## if language: longtitle += typo(language, '_ [] color kod')
|
|
||||||
|
|
||||||
if not scraped['lang'] and not lang:
|
|
||||||
#pass
|
|
||||||
language = 'ITA' # setta contentLanguage
|
|
||||||
elif not scraped['lang'] and lang:
|
|
||||||
# in caso di deflang attiva
|
|
||||||
language = lang
|
|
||||||
if language != 'ITA':
|
|
||||||
longtitle += typo(language, '_ [] color kod')
|
|
||||||
else:
|
|
||||||
if 'ita' in scraped['lang'].lower():
|
if 'ita' in scraped['lang'].lower():
|
||||||
language = 'ITA'
|
language = 'ITA'
|
||||||
if 'sub' in scraped['lang'].lower():
|
if 'sub' in scraped['lang'].lower():
|
||||||
language = 'Sub-' + language
|
language = 'Sub-' + language
|
||||||
|
|
||||||
if language != '':
|
if not language: language = lang
|
||||||
longtitle += typo(language, '_ [] color kod')
|
if language: longtitle += typo(language, '_ [] color kod')
|
||||||
|
|
||||||
return language, longtitle
|
return language, longtitle
|
||||||
|
|
||||||
@@ -221,9 +201,9 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t
|
|||||||
scraped[kk] = val
|
scraped[kk] = val
|
||||||
|
|
||||||
if scraped['season'] != None:
|
if scraped['season'] != None:
|
||||||
stagione = scraped['season']
|
season = scraped['season']
|
||||||
if stagione:
|
if stagione:
|
||||||
episode = stagione +'x'+ scraped['episode']
|
episode = season +'x'+ scraped['episode']
|
||||||
else:
|
else:
|
||||||
episode = re.sub(r'\s-\s|-|x|–|×', 'x', scraped['episode']) if scraped['episode'] else ''
|
episode = re.sub(r'\s-\s|-|x|–|×', 'x', scraped['episode']) if scraped['episode'] else ''
|
||||||
|
|
||||||
@@ -236,13 +216,14 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t
|
|||||||
|
|
||||||
# make formatted Title [longtitle]
|
# make formatted Title [longtitle]
|
||||||
s = ' - '
|
s = ' - '
|
||||||
title = episode + (s if episode and title else '') + title
|
title = episode + (s if episode and title else '') + title
|
||||||
longtitle = title + (s if title and title2 else '') + title2
|
longtitle = title + (s if title and title2 else '') + title2
|
||||||
longtitle = typo(longtitle, 'bold')
|
longtitle = typo(longtitle, 'bold')
|
||||||
longtitle += (typo(Type,'_ () bold') if Type else '') + (typo(quality, '_ [] color kod') if quality else '')
|
longtitle += (typo(Type,'_ () bold') if Type else '') + (typo(quality, '_ [] color kod') if quality else '')
|
||||||
|
|
||||||
|
|
||||||
|
lang1, longtitle = scrapeLang(scraped, lang, longtitle)
|
||||||
|
|
||||||
lang, longtitle = scrapeLang(scraped, lang, longtitle)
|
|
||||||
if lang == '': lang = 'ITA'
|
|
||||||
# if title is set, probably this is a list of episodes or video sources
|
# if title is set, probably this is a list of episodes or video sources
|
||||||
# necessaria l'aggiunta di == scraped["title"] altrimenti non prende i gruppi dopo le categorie
|
# necessaria l'aggiunta di == scraped["title"] altrimenti non prende i gruppi dopo le categorie
|
||||||
if item.infoLabels["title"] == scraped["title"]:
|
if item.infoLabels["title"] == scraped["title"]:
|
||||||
@@ -296,8 +277,8 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t
|
|||||||
args=item.args,
|
args=item.args,
|
||||||
contentSerieName= title if item.contentType or CT != 'movie' and function != 'episodios' else item.fulltitle if function == 'episodios' else '',
|
contentSerieName= title if item.contentType or CT != 'movie' and function != 'episodios' else item.fulltitle if function == 'episodios' else '',
|
||||||
contentTitle= title if item.contentType or CT == 'movie' else '',
|
contentTitle= title if item.contentType or CT == 'movie' else '',
|
||||||
contentLanguage = lang,
|
contentLanguage = lang1,
|
||||||
ep=episode if episode else ''
|
contentEpisodeNumber=episode if episode else ''
|
||||||
)
|
)
|
||||||
|
|
||||||
for lg in list(set(listGroups).difference(known_keys)):
|
for lg in list(set(listGroups).difference(known_keys)):
|
||||||
@@ -384,8 +365,10 @@ def scrape(func):
|
|||||||
blockItemlist, blockMatches = scrapeBlock(item, args, bl['block'], patron, headers, action, pagination, debug,
|
blockItemlist, blockMatches = scrapeBlock(item, args, bl['block'], patron, headers, action, pagination, debug,
|
||||||
typeContentDict, typeActionDict, blacklist, search, pag, function, lang)
|
typeContentDict, typeActionDict, blacklist, search, pag, function, lang)
|
||||||
for it in blockItemlist:
|
for it in blockItemlist:
|
||||||
|
log('IT LANG ----> ', it)
|
||||||
if 'lang' in bl:
|
if 'lang' in bl:
|
||||||
it.contentLanguage, it.title = scrapeLang(bl, it.contentLanguage, it.title)
|
it.contentLanguage, it.title = scrapeLang(bl, it.contentLanguage, it.title)
|
||||||
|
log('IT LANG ----> ', it.contentLanguage)
|
||||||
if 'quality' in bl and bl['quality']:
|
if 'quality' in bl and bl['quality']:
|
||||||
it.quality = bl['quality'].strip()
|
it.quality = bl['quality'].strip()
|
||||||
it.title = it.title + typo(bl['quality'].strip(), '_ [] color kod')
|
it.title = it.title + typo(bl['quality'].strip(), '_ [] color kod')
|
||||||
|
|||||||
@@ -3,6 +3,11 @@
|
|||||||
"find_videos": {
|
"find_videos": {
|
||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "((?:http://|https://).*?m3u8)",
|
||||||
|
"url": "\\1"
|
||||||
|
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pattern": "(http://[a-zA-Z0-9]+\\.mysites\\.com\\/get_file\\/.*?\\.mp4)",
|
"pattern": "(http://[a-zA-Z0-9]+\\.mysites\\.com\\/get_file\\/.*?\\.mp4)",
|
||||||
"url": "\\1"
|
"url": "\\1"
|
||||||
@@ -35,7 +40,7 @@
|
|||||||
},
|
},
|
||||||
"free": true,
|
"free": true,
|
||||||
"id": "directo",
|
"id": "directo",
|
||||||
"name": "directo",
|
"name": "direct",
|
||||||
"settings": [
|
"settings": [
|
||||||
{
|
{
|
||||||
"default": false,
|
"default": false,
|
||||||
|
|||||||
+3
-2
@@ -1,12 +1,13 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from platformcode import logger
|
from platformcode import logger, config
|
||||||
|
|
||||||
|
|
||||||
# Returns an array of possible video url's from the page_url
|
# Returns an array of possible video url's from the page_url
|
||||||
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("(page_url='%s')" % page_url)
|
logger.info("(page_url='%s')" % page_url)
|
||||||
|
logger.info('PAGE URL= ' + page_url)
|
||||||
|
|
||||||
video_urls = [["%s [directo]" % page_url[-4:], page_url]]
|
video_urls = [["%s %s" % (page_url[-4:], config.get_localized_string(30137)), page_url]]
|
||||||
|
|
||||||
return video_urls
|
return video_urls
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
"find_videos": {
|
"find_videos": {
|
||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
|
||||||
"pattern": "(https://vvvvid-vh.akamaihd.net/i/.*?m3u8)",
|
|
||||||
"url": "\\1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pattern": "https://www.vvvvid.it/.*?show/([a-z0-9/-]+)",
|
"pattern": "https://www.vvvvid.it/.*?show/([a-z0-9/-]+)",
|
||||||
"url": "https://www.vvvvid.it/show/\\1"
|
"url": "https://www.vvvvid.it/show/\\1"
|
||||||
|
|||||||
+20
-26
@@ -27,37 +27,31 @@ def test_video_exists(page_url):
|
|||||||
|
|
||||||
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
video_urls = []
|
video_urls = []
|
||||||
# if Direct
|
|
||||||
if 'm3u8' in page_url:
|
|
||||||
filename = '[B]' + re.findall('/([a-zA-Z0-9_]+.mp4)', page_url)[0] + '[/B]'
|
|
||||||
video_urls.append([filename, str(page_url)])
|
|
||||||
|
|
||||||
# if Page
|
page_url = page_url.replace("/show/","/#!show/")
|
||||||
else:
|
|
||||||
page_url = page_url.replace("/show/","/#!show/")
|
|
||||||
|
|
||||||
# Getting info from given URL
|
# Getting info from given URL
|
||||||
show_id = re.findall("#!show/([0-9]+)/", page_url)[0]
|
show_id = re.findall("#!show/([0-9]+)/", page_url)[0]
|
||||||
name = re.findall(show_id + "/(.+?)/", page_url)[0]
|
name = re.findall(show_id + "/(.+?)/", page_url)[0]
|
||||||
season_id = re.findall(name + "/(.+?)/", page_url)[0]
|
season_id = re.findall(name + "/(.+?)/", page_url)[0]
|
||||||
video_id = re.findall(season_id + "/(.+?)/", page_url)[0]
|
video_id = re.findall(season_id + "/(.+?)/", page_url)[0]
|
||||||
|
|
||||||
# Getting info from Site
|
# Getting info from Site
|
||||||
json_url = "https://www.vvvvid.it/vvvvid/ondemand/" + show_id + '/season/' +season_id + '/'
|
json_url = "https://www.vvvvid.it/vvvvid/ondemand/" + show_id + '/season/' +season_id + '/'
|
||||||
# logger.info('URL= ' + json_url)
|
# logger.info('URL= ' + json_url)
|
||||||
json_file = current_session.get(json_url, headers=headers, params=payload).json()
|
json_file = current_session.get(json_url, headers=headers, params=payload).json()
|
||||||
# logger.info(json_file['data'])
|
logger.info(json_file['data'])
|
||||||
|
|
||||||
# Search for the correct episode
|
|
||||||
for episode in json_file['data']:
|
|
||||||
# import web_pdb; web_pdb.set_trace()
|
|
||||||
if episode['video_id'] == int(video_id):
|
|
||||||
ep_title = '[B]' + episode['title'] + '[/B]'
|
|
||||||
embed_info = vvvvid_decoder.dec_ei(episode['embed_info'])
|
|
||||||
embed_info = embed_info.replace('manifest.f4m','master.m3u8').replace('http://','https://').replace('/z/','/i/')
|
|
||||||
|
|
||||||
|
# Search for the correct episode
|
||||||
|
for episode in json_file['data']:
|
||||||
# import web_pdb; web_pdb.set_trace()
|
# import web_pdb; web_pdb.set_trace()
|
||||||
|
if episode['video_id'] == int(video_id):
|
||||||
|
ep_title = '[B]' + episode['title'] + '[/B]'
|
||||||
|
embed_info = vvvvid_decoder.dec_ei(episode['embed_info'])
|
||||||
|
embed_info = embed_info.replace('manifest.f4m','master.m3u8').replace('http://','https://').replace('/z/','/i/')
|
||||||
|
|
||||||
video_urls.append([ep_title, str(embed_info)])
|
# import web_pdb; web_pdb.set_trace()
|
||||||
|
|
||||||
|
video_urls.append([ep_title, str(embed_info)])
|
||||||
|
|
||||||
return video_urls
|
return video_urls
|
||||||
@@ -172,6 +172,8 @@ class Kdicc():
|
|||||||
# per siti irraggiungibili senza DNS corretti
|
# per siti irraggiungibili senza DNS corretti
|
||||||
#[Errno 111] Connection refused
|
#[Errno 111] Connection refused
|
||||||
rslt['code'] = 111
|
rslt['code'] = 111
|
||||||
|
except:
|
||||||
|
rslt['code'] = 'Connection error'
|
||||||
return rslt
|
return rslt
|
||||||
|
|
||||||
def view_Advise(self, txt = '' ):
|
def view_Advise(self, txt = '' ):
|
||||||
|
|||||||
+37
-20
@@ -12,7 +12,7 @@ from threading import Thread
|
|||||||
from channelselector import get_thumb, auto_filter
|
from channelselector import get_thumb, auto_filter
|
||||||
from core import channeltools
|
from core import channeltools
|
||||||
from core import jsontools
|
from core import jsontools
|
||||||
from core import scrapertools
|
from core import scrapertools, support
|
||||||
from core.item import Item
|
from core.item import Item
|
||||||
from platformcode import config, logger
|
from platformcode import config, logger
|
||||||
from platformcode import platformtools
|
from platformcode import platformtools
|
||||||
@@ -28,7 +28,7 @@ perfil = [['0xFF0B7B92', '0xFF89FDFB', '0xFFACD5D4'],
|
|||||||
['0xFFA5DEE5', '0xFFE0F9B5', '0xFFFEFDCA'],
|
['0xFFA5DEE5', '0xFFE0F9B5', '0xFFFEFDCA'],
|
||||||
['0xFFF23557', '0xFF22B2DA', '0xFFF0D43A']]
|
['0xFFF23557', '0xFF22B2DA', '0xFFF0D43A']]
|
||||||
|
|
||||||
color1, color2, color3 = ["white", "white", "white"]
|
color1, color2, color3 = ["red", "0xFF65B3DA", "yellow"]
|
||||||
# color1, color2, color3 = perfil[__perfil__]
|
# color1, color2, color3 = perfil[__perfil__]
|
||||||
|
|
||||||
list_newest = []
|
list_newest = []
|
||||||
@@ -392,16 +392,17 @@ def get_newest(channel_id, categoria):
|
|||||||
|
|
||||||
|
|
||||||
def get_title(item):
|
def get_title(item):
|
||||||
|
support.log("ITEM NEWEST ->", item)
|
||||||
if item.contentSerieName: # Si es una serie
|
if item.contentSerieName: # Si es una serie
|
||||||
title = item.contentSerieName
|
title = item.contentSerieName
|
||||||
|
#title = re.compile("\[.*?\]", re.DOTALL).sub("", item.contentSerieName)
|
||||||
if not scrapertools.get_season_and_episode(title) and item.contentEpisodeNumber:
|
if not scrapertools.get_season_and_episode(title) and item.contentEpisodeNumber:
|
||||||
if not item.contentSeason:
|
if not item.contentSeason:
|
||||||
item.contentSeason = '1'
|
item.contentSeason = '1'
|
||||||
title = "%s - %sx%s" % (title, item.contentSeason, str(item.contentEpisodeNumber).zfill(2))
|
title = "%s - %sx%s" % (title, item.contentSeason, str(item.contentEpisodeNumber).zfill(2))
|
||||||
#4l3x87 - fix to add Sub-ITA in newest
|
## #4l3x87 - fix to add Sub-ITA in newest
|
||||||
if item.contentLanguage:
|
## if item.contentLanguage:
|
||||||
title+=" "+item.contentLanguage
|
## title+=" "+item.contentLanguage
|
||||||
|
|
||||||
|
|
||||||
elif item.contentTitle: # Si es una pelicula con el canal adaptado
|
elif item.contentTitle: # Si es una pelicula con el canal adaptado
|
||||||
title = item.contentTitle
|
title = item.contentTitle
|
||||||
@@ -415,6 +416,19 @@ def get_title(item):
|
|||||||
title = re.compile("\[/*B\]", re.DOTALL).sub("", title)
|
title = re.compile("\[/*B\]", re.DOTALL).sub("", title)
|
||||||
title = re.compile("\[/*I\]", re.DOTALL).sub("", title)
|
title = re.compile("\[/*I\]", re.DOTALL).sub("", title)
|
||||||
|
|
||||||
|
title = '[B]'+title+'[/B]'
|
||||||
|
|
||||||
|
if item.contentLanguage == '':
|
||||||
|
pass
|
||||||
|
elif type(item.contentLanguage) == list and len(item.contentLanguage) ==1:
|
||||||
|
title += support.typo(item.contentLanguage[0], '_ [] color kod')
|
||||||
|
elif type(item.contentLanguage) != '':
|
||||||
|
title += support.typo(item.contentLanguage, '_ [] color kod')
|
||||||
|
elif type(item.contentLanguage) == list:
|
||||||
|
title += item.contentLanguage
|
||||||
|
|
||||||
|
if item.quality:
|
||||||
|
title += support.typo(item.quality, '_ [] color kod')
|
||||||
return title
|
return title
|
||||||
|
|
||||||
|
|
||||||
@@ -423,8 +437,11 @@ def no_group(list_result_canal):
|
|||||||
global channels_id_name
|
global channels_id_name
|
||||||
|
|
||||||
for i in list_result_canal:
|
for i in list_result_canal:
|
||||||
i.title = get_title(i) + " [" + channels_id_name[i.channel] + "]"
|
support.log("NO GROUP i -> ", i)
|
||||||
i.text_color = color3
|
canale = channels_id_name[i.channel]
|
||||||
|
canale = '[COLOR yellow]'+canale+'[/COLOR]'
|
||||||
|
i.title = get_title(i) + " [" + canale + "]"
|
||||||
|
# i.text_color = color3
|
||||||
|
|
||||||
itemlist.append(i.clone())
|
itemlist.append(i.clone())
|
||||||
|
|
||||||
@@ -449,12 +466,12 @@ def group_by_channel(list_result_canal):
|
|||||||
itemlist.append(Item(channel="news", title=channels_id_name[c] + ':', text_color=color1, text_bold=True))
|
itemlist.append(Item(channel="news", title=channels_id_name[c] + ':', text_color=color1, text_bold=True))
|
||||||
|
|
||||||
for i in dict_canales[c]:
|
for i in dict_canales[c]:
|
||||||
if i.contentQuality:
|
## if i.contentQuality:
|
||||||
i.title += ' (%s)' % i.contentQuality
|
## i.title += ' (%s)' % i.contentQuality
|
||||||
if i.language:
|
## if i.contentLanguage:
|
||||||
i.title += ' [%s]' % i.language
|
## i.title += ' [%s]' % i.contentLanguage
|
||||||
i.title = ' %s' % i.title
|
## i.title = ' %s' % i.title
|
||||||
i.text_color = color3
|
#### i.text_color = color3
|
||||||
itemlist.append(i.clone())
|
itemlist.append(i.clone())
|
||||||
|
|
||||||
return itemlist
|
return itemlist
|
||||||
@@ -505,7 +522,7 @@ def group_by_content(list_result_canal):
|
|||||||
else:
|
else:
|
||||||
new_item = v[0].clone(title=title)
|
new_item = v[0].clone(title=title)
|
||||||
|
|
||||||
new_item.text_color = color3
|
## new_item.text_color = color3
|
||||||
list_result.append(new_item)
|
list_result.append(new_item)
|
||||||
|
|
||||||
return sorted(list_result, key=lambda it: it.title.lower())
|
return sorted(list_result, key=lambda it: it.title.lower())
|
||||||
@@ -521,11 +538,11 @@ def show_channels(item):
|
|||||||
new_item = Item()
|
new_item = Item()
|
||||||
new_item = new_item.fromurl(i)
|
new_item = new_item.fromurl(i)
|
||||||
# logger.debug(new_item.tostring())
|
# logger.debug(new_item.tostring())
|
||||||
if new_item.contentQuality:
|
## if new_item.contentQuality:
|
||||||
new_item.title += ' (%s)' % new_item.contentQuality
|
## new_item.title += ' (%s)' % new_item.contentQuality
|
||||||
if new_item.language:
|
## if new_item.language:
|
||||||
new_item.title += ' [%s]' % new_item.language
|
## new_item.title += ' [%s]' % new_item.language
|
||||||
new_item.title += ' (%s)' % channels_id_name[new_item.channel]
|
## new_item.title += ' (%s)' % channels_id_name[new_item.channel]
|
||||||
new_item.text_color = color1
|
new_item.text_color = color1
|
||||||
|
|
||||||
itemlist.append(new_item.clone())
|
itemlist.append(new_item.clone())
|
||||||
|
|||||||
Reference in New Issue
Block a user