- Fix AnimeWorld
- Fix Toonitalia - Fix DoodStream - Nuovo Server NinjaStream - Nuovo Server OkStrem - Nuovo Server Userload
This commit is contained in:
+15
-10
@@ -174,7 +174,7 @@ def peliculas(item):
|
|||||||
@support.scrape
|
@support.scrape
|
||||||
def episodios(item):
|
def episodios(item):
|
||||||
anime=True
|
anime=True
|
||||||
pagination = 25
|
pagination = 50
|
||||||
# data = get_data(item)
|
# data = get_data(item)
|
||||||
patronBlock= r'<div class="server\s*active\s*"(?P<block>.*?)(?:<div class="server|<link)'
|
patronBlock= r'<div class="server\s*active\s*"(?P<block>.*?)(?:<div class="server|<link)'
|
||||||
patron = r'<li[^>]*>\s*<a.*?href="(?P<url>[^"]+)"[^>]*>(?P<episode>[^<]+)<'
|
patron = r'<li[^>]*>\s*<a.*?href="(?P<url>[^"]+)"[^>]*>(?P<episode>[^<]+)<'
|
||||||
@@ -194,6 +194,7 @@ def findvideos(item):
|
|||||||
# resp = support.match(get_data(item), headers=headers, patron=r'data-name="(\d+)">([^<]+)<')
|
# resp = support.match(get_data(item), headers=headers, patron=r'data-name="(\d+)">([^<]+)<')
|
||||||
resp = support.match(item, headers=headers, patron=r'data-name="(\d+)">([^<]+)<')
|
resp = support.match(item, headers=headers, patron=r'data-name="(\d+)">([^<]+)<')
|
||||||
data = resp.data
|
data = resp.data
|
||||||
|
|
||||||
for ID, name in resp.matches:
|
for ID, name in resp.matches:
|
||||||
if not item.number: item.number = support.match(item.title, patron=r'(\d+) -').match
|
if not item.number: item.number = support.match(item.title, patron=r'(\d+) -').match
|
||||||
match = support.match(data, patronBlock=r'data-name="' + ID + r'"[^>]+>(.*?)(?:<div class="(?:server|download)|link)', patron=r'data-id="([^"]+)" data-episode-num="' + (item.number if item.number else '1') + '"' + r'.*?href="([^"]+)"').match
|
match = support.match(data, patronBlock=r'data-name="' + ID + r'"[^>]+>(.*?)(?:<div class="(?:server|download)|link)', patron=r'data-id="([^"]+)" data-episode-num="' + (item.number if item.number else '1') + '"' + r'.*?href="([^"]+)"').match
|
||||||
@@ -201,17 +202,21 @@ def findvideos(item):
|
|||||||
epID, epurl = match
|
epID, epurl = match
|
||||||
if 'vvvvid' in name.lower():
|
if 'vvvvid' in name.lower():
|
||||||
urls.append(support.match(host + '/api/episode/serverPlayer?id=' + epID, headers=headers, patron=r'<a.*?href="([^"]+)"').match)
|
urls.append(support.match(host + '/api/episode/serverPlayer?id=' + epID, headers=headers, patron=r'<a.*?href="([^"]+)"').match)
|
||||||
elif 'streamtape' in name.lower():
|
|
||||||
urls.append(support.match(data, patron=r'<a href="(https://streamtape[^"]+)"').match)
|
|
||||||
elif 'beta' in name.lower():
|
|
||||||
urls.append(support.match(data, patron=r'<a href="(https://animeworld[^"]+)"').match)
|
|
||||||
elif 'server 2' in name.lower():
|
|
||||||
dataJson = support.match(host + '/api/episode/info?id=' + epID + '&alt=0', headers=headers).data
|
|
||||||
json = jsontools.load(dataJson)
|
|
||||||
title = support.match(json['grabber'], patron=r'server2.([^.]+)', string=True).match
|
|
||||||
itemlist.append(item.clone(action="play", title=title, url=json['grabber'], server='directo'))
|
|
||||||
elif 'animeworld' in name.lower():
|
elif 'animeworld' in name.lower():
|
||||||
url = support.match(data, patron=r'href="([^"]+)"\s*id="alternativeDownloadLink"', headers=headers).match
|
url = support.match(data, patron=r'href="([^"]+)"\s*id="alternativeDownloadLink"', headers=headers).match
|
||||||
title = support.match(url, patron=r'http[s]?://(?:www.)?([^.]+)', string=True).match
|
title = support.match(url, patron=r'http[s]?://(?:www.)?([^.]+)', string=True).match
|
||||||
itemlist.append(item.clone(action="play", title=title, url=url, server='directo'))
|
itemlist.append(item.clone(action="play", title=title, url=url, server='directo'))
|
||||||
|
# elif 'server 2' in name.lower():
|
||||||
|
# dataJson = support.match(host + '/api/episode/info?id=' + epID + '&alt=0', headers=headers).data
|
||||||
|
# json = jsontools.load(dataJson)
|
||||||
|
# title = support.match(json['grabber'], patron=r'server2.([^.]+)', string=True).match
|
||||||
|
# itemlist.append(item.clone(action="play", title=title, url=json['grabber'], server='directo'))
|
||||||
|
else:
|
||||||
|
dataJson = support.match(host + '/api/episode/info?id=' + epID + '&alt=0', headers=headers).data
|
||||||
|
json = jsontools.load(dataJson)
|
||||||
|
title = support.match(json['grabber'], patron=r'server2.([^.]+)', string=True).match
|
||||||
|
if title: itemlist.append(item.clone(action="play", title=title, url=json['grabber'].split('=')[-1], server='directo'))
|
||||||
|
else: itemlist.append(item.clone(action="play", title=name, url=json['grabber'], server=name))
|
||||||
|
# for item in itemlist:
|
||||||
|
# support.logger.debug(item.url)
|
||||||
return support.server(item, urls, itemlist)
|
return support.server(item, urls, itemlist)
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ def episodios(item):
|
|||||||
anime = True
|
anime = True
|
||||||
data = support.match(item, headers=headers).data
|
data = support.match(item, headers=headers).data
|
||||||
if 'https://vcrypt.net' in data:
|
if 'https://vcrypt.net' in data:
|
||||||
patron = r'(?: /> |<p>)(?P<episode>\d+.\d+)?(?: – )?(?P<title>[^<]+)<a (?P<url>.*?)(?:<br|</p)'
|
patron = r'(?: /> |<p>)(?P<episode>\d+.\d+)?(?: – )?(?P<title>[^<]+)<a (?P<data>.*?)(?:<br|</p)'
|
||||||
else:
|
else:
|
||||||
patron = r'<br />\s*<a href="(?P<url>[^"]+)" target="_blank" rel="noopener[^>]+>(?P<episode>\d+.\d+)?(?: – )?(?P<title>[^<]+)</a>'
|
patron = r'<br />\s*<a href="(?P<url>[^"]+)" target="_blank" rel="noopener[^>]+>(?P<episode>\d+.\d+)?(?: – )?(?P<title>[^<]+)</a>'
|
||||||
|
|
||||||
@@ -123,4 +123,4 @@ def episodios(item):
|
|||||||
|
|
||||||
|
|
||||||
def findvideos(item):
|
def findvideos(item):
|
||||||
return support.server(item, item.url if item.contentType != 'movie' else support.match(item.url, headers=headers).data )
|
return support.server(item, item.data if item.contentType != 'movie' else support.match(item.url, headers=headers).data )
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ def mark_auto_as_watched(item):
|
|||||||
xbmc.sleep(1000)
|
xbmc.sleep(1000)
|
||||||
|
|
||||||
# if item.options['continue']:
|
# if item.options['continue']:
|
||||||
if actual_time < mark_time:
|
if 10 < actual_time < mark_time:
|
||||||
item.played_time = actual_time
|
item.played_time = actual_time
|
||||||
else: item.played_time = 0
|
else: item.played_time = 0
|
||||||
platformtools.set_played_time(item)
|
platformtools.set_played_time(item)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"pattern": "https://dood(?:stream|).(?:watch|to|com)/((?:e|d)/[a-z0-9]+)",
|
"pattern": "https://dood(?:stream|).[^/]+/((?:e|d)/[a-z0-9]+)",
|
||||||
"url": "https://dood.to/\\1"
|
"url": "https://dood.to/\\1"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"active": true,
|
||||||
|
"find_videos": {
|
||||||
|
"ignore_urls": [],
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "ninjastream.to/(?:watch/)?([0-9a-zA-Z]+)",
|
||||||
|
"url": "https://ninjastream.to/watch/\\1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"free": true,
|
||||||
|
"id":"ninjastream",
|
||||||
|
"name": "NinjaStream",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"default": false,
|
||||||
|
"enabled": true,
|
||||||
|
"id": "black_list",
|
||||||
|
"label": "@70708",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import json
|
||||||
|
from core import support, httptools
|
||||||
|
from platformcode import logger, config
|
||||||
|
|
||||||
|
def test_video_exists(page_url):
|
||||||
|
global data
|
||||||
|
logger.debug('page url=', page_url)
|
||||||
|
response = httptools.downloadpage(page_url)
|
||||||
|
|
||||||
|
if response.code == 404:
|
||||||
|
return False, config.get_localized_string(70449) % 'NinjaStream'
|
||||||
|
else:
|
||||||
|
data = response.data
|
||||||
|
return True, ""
|
||||||
|
|
||||||
|
|
||||||
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
|
global data
|
||||||
|
logger.debug("URL", page_url)
|
||||||
|
video_urls = []
|
||||||
|
|
||||||
|
h = json.loads(support.match(data, patron='stream="([^"]+)"').match.replace('"','"').replace('\\',''))
|
||||||
|
baseurl = h['host'] + h['hash']
|
||||||
|
matches = support.match(baseurl + '/index.m3u8', patron=r'RESOLUTION=\d+x(\d+)\s*([^\s]+)').matches
|
||||||
|
|
||||||
|
for quality, url in matches:
|
||||||
|
video_urls.append(["{} {}p [NinjaStream]".format(url.split('.')[-1], quality), '{}/{}'.format(baseurl, url)])
|
||||||
|
|
||||||
|
return video_urls
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"active": true,
|
||||||
|
"find_videos": {
|
||||||
|
"ignore_urls": [],
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "okstream.cc/([0-9a-zA-Z]+)",
|
||||||
|
"url": "https://www.okstream.cc/e/\\1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"free": true,
|
||||||
|
"id":"okstream",
|
||||||
|
"name": "OkStream",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"default": false,
|
||||||
|
"enabled": true,
|
||||||
|
"id": "black_list",
|
||||||
|
"label": "@70708",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from core import httptools, scrapertools
|
||||||
|
from platformcode import logger, config
|
||||||
|
|
||||||
|
def test_video_exists(page_url):
|
||||||
|
global data
|
||||||
|
logger.debug('page url=', page_url)
|
||||||
|
response = httptools.downloadpage(page_url)
|
||||||
|
|
||||||
|
if response.code == 404:
|
||||||
|
return False, config.get_localized_string(70449) % 'OkStream'
|
||||||
|
else:
|
||||||
|
data = response.data
|
||||||
|
return True, ""
|
||||||
|
|
||||||
|
|
||||||
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
|
global data
|
||||||
|
logger.debug("URL", page_url)
|
||||||
|
video_urls = []
|
||||||
|
keys = scrapertools.find_single_match(data, '>var keys="([^"]+)"')
|
||||||
|
protection = scrapertools.find_single_match(data, '>var protection="([^"]+)"')
|
||||||
|
url = httptools.downloadpage("https://www.okstream.cc/request/", post='&morocco={}&mycountry={}'.format(keys, protection), headers={'Referer':page_url}).data
|
||||||
|
url = url.strip()
|
||||||
|
video_urls.append([url.split('.')[-1] + " [OkStream]", url])
|
||||||
|
|
||||||
|
return video_urls
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"active": true,
|
||||||
|
"find_videos": {
|
||||||
|
"ignore_urls": [],
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"pattern": "userload.co/embed/([a-z0-9]+)",
|
||||||
|
"url": "https://userload.co/e/\\1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"free": true,
|
||||||
|
"id": "userload",
|
||||||
|
"name": "userload",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"default": false,
|
||||||
|
"enabled": true,
|
||||||
|
"id": "black_list",
|
||||||
|
"label": "@70708",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import json
|
||||||
|
from core import support, httptools
|
||||||
|
from platformcode import logger, config
|
||||||
|
|
||||||
|
def test_video_exists(page_url):
|
||||||
|
global data
|
||||||
|
logger.debug('page url=', page_url)
|
||||||
|
response = httptools.downloadpage(page_url)
|
||||||
|
|
||||||
|
if response.code == 404:
|
||||||
|
return False, config.get_localized_string(70449) % 'Userload'
|
||||||
|
else:
|
||||||
|
data = response.data
|
||||||
|
return True, ""
|
||||||
|
|
||||||
|
|
||||||
|
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||||
|
global data
|
||||||
|
logger.debug("URL", page_url)
|
||||||
|
video_urls = []
|
||||||
|
var = support.match(data, patron=r"var\|\|([^']+)").match.split('|')
|
||||||
|
if var:
|
||||||
|
post = 'morocco={}&mycountry={}'.format(var[7], var[17])
|
||||||
|
url = support.match('https://userload.co/api/request/', post=post, patron=r'([^\s\r\n]+)').match
|
||||||
|
if url:
|
||||||
|
video_urls.append(["{} [Userload]".format(url.split('.')[-1]), url])
|
||||||
|
|
||||||
|
return video_urls
|
||||||
Reference in New Issue
Block a user