- Fix AnimeWorld
- Fix Toonitalia - Fix DoodStream - Nuovo Server NinjaStream - Nuovo Server OkStrem - Nuovo Server Userload
This commit is contained in:
@@ -174,7 +174,7 @@ def peliculas(item):
|
||||
@support.scrape
|
||||
def episodios(item):
|
||||
anime=True
|
||||
pagination = 25
|
||||
pagination = 50
|
||||
# data = get_data(item)
|
||||
patronBlock= r'<div class="server\s*active\s*"(?P<block>.*?)(?:<div class="server|<link)'
|
||||
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(item, headers=headers, patron=r'data-name="(\d+)">([^<]+)<')
|
||||
data = resp.data
|
||||
|
||||
for ID, name in resp.matches:
|
||||
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
|
||||
@@ -201,17 +202,21 @@ def findvideos(item):
|
||||
epID, epurl = match
|
||||
if 'vvvvid' in name.lower():
|
||||
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():
|
||||
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
|
||||
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)
|
||||
|
||||
@@ -108,7 +108,7 @@ def episodios(item):
|
||||
anime = True
|
||||
data = support.match(item, headers=headers).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:
|
||||
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):
|
||||
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)
|
||||
|
||||
# if item.options['continue']:
|
||||
if actual_time < mark_time:
|
||||
if 10 < actual_time < mark_time:
|
||||
item.played_time = actual_time
|
||||
else: item.played_time = 0
|
||||
platformtools.set_played_time(item)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"ignore_urls": [],
|
||||
"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"
|
||||
}
|
||||
]
|
||||
|
||||
41
servers/ninjastream.json
Normal file
41
servers/ninjastream.json
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
30
servers/ninjastream.py
Normal file
30
servers/ninjastream.py
Normal file
@@ -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
|
||||
41
servers/okstream.json
Normal file
41
servers/okstream.json
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
28
servers/okstream.py
Normal file
28
servers/okstream.py
Normal file
@@ -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
|
||||
41
servers/userload.json
Normal file
41
servers/userload.json
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
29
servers/userload.py
Normal file
29
servers/userload.py
Normal file
@@ -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