- Fix AnimeWorld

- Fix Toonitalia
 - Fix DoodStream
 - Nuovo Server NinjaStream
 - Nuovo Server OkStrem
 - Nuovo Server Userload
This commit is contained in:
Alhaziel01
2021-01-15 17:08:26 +01:00
parent 52d2a1f1a3
commit 471e543ac5
10 changed files with 229 additions and 14 deletions

View File

@@ -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)

View File

@@ -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+)?(?: &#8211; )?(?P<title>[^<]+)<a (?P<url>.*?)(?:<br|</p)'
patron = r'(?: /> |<p>)(?P<episode>\d+.\d+)?(?: &#8211; )?(?P<title>[^<]+)<a (?P<data>.*?)(?:<br|</p)'
else:
patron = r'<br />\s*<a href="(?P<url>[^"]+)" target="_blank" rel="noopener[^>]+>(?P<episode>\d+.\d+)?(?: &#8211; )?(?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 )

View File

@@ -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)

View File

@@ -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
View 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
View 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('&quot;','"').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
View 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
View 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
View 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
View 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