- aggiunto nuovo canale: guardaserie.cam
- autoplay migliorato, ora i settaggi sono globali e non più per canale
- adesso in onda riscritto, ora usa EPG (ringraziamo epg-guide.com)
- Riprendi la visione di un film o episodio da server diversi (solo videoteca)
- fix e ottimizzazioni varie
This commit is contained in:
marco
2020-07-03 23:08:20 +02:00
parent 8b78c88e41
commit 0932a1969f
296 changed files with 3205 additions and 8075 deletions
-1
View File
@@ -46,6 +46,5 @@
"visible": false
}
],
"thumbnail": "server_akvideo.png",
"cloudflare": true
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://supervideo.tv/images/logo-player.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "animeid",
"name": "animeid",
"name": "AnimeID",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "anonfile",
"name": "anonfile",
"name": "AnonFile",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://anonfile.com/img/logo/logo-anonfile.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://i.postimg.cc/P5ZYJM4L/archiveorg.png"
]
}
+1 -1
View File
@@ -15,7 +15,7 @@
},
"free": true,
"id": "backin",
"name": "backin",
"name": "Backin",
"settings": [
{
"default": false,
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "badshare",
"name": "badshare",
"name": "BadShare",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://badshare.io/badshare_logo.png"
]
}
+2 -2
View File
@@ -15,7 +15,7 @@
},
"free": true,
"id": "bdupload",
"name": "bdupload",
"name": "BDUpload",
"settings": [
{
"default": false,
@@ -42,6 +42,6 @@
"visible": false
}
],
"thumbnail": "https://s18.postimg.cc/68colqvyx/logo-bdupload.png",
"version": 1
}
-47
View File
@@ -1,47 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(http://b.ter.tv/v/[A-z0-9]+)",
"url": "\\1"
},
{
"pattern": "(https://byter.tv/v/[A-z0-9]+)",
"url": "\\1"
}
]
},
"free": true,
"id": "bitertv",
"name": "Bitertv",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s18.postimg.cc/f56rayqq1/logo-bitertv.png",
"version": 1
}
-24
View File
@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import scrapertools
from platformcode import config
from platformcode import logger
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Archive no Encontrado" in data or "File has been removed" in data:
return False, config.get_localized_string(70449) % "bitertv"
return True, ""
def get_video_url(page_url, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
patron = "(?s)file: '([^']+)"
file = scrapertools.find_single_match(data, patron)
video_urls.append([".MP4 [bitertv]", file])
return video_urls
-53
View File
@@ -1,53 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(bitshare.com/files/[^/]+/[\\w.+\\-_]+)",
"url": "http://\\1"
},
{
"pattern": "(bitshare.com/files/[a-z0-9]+)[^/a-z0-9]",
"url": "http://\\1"
},
{
"pattern": "(bitshare.com/\\?f=[\\w+]+)",
"url": "http://\\1"
}
]
},
"free": false,
"id": "bitshare",
"name": "bitshare",
"premium": [
"realdebrid",
"alldebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
]
}
-19
View File
@@ -1,19 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Error - Archivo no disponible" in data or "Por favor seleccione el archivo a cargar" in data:
return False, "Archivo no encontrado"
patron = '<b>()'
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
return video_urls
+2 -3
View File
@@ -15,7 +15,7 @@
},
"free": true,
"id": "cinemaupload",
"name": "cinemaupload",
"name": "CinemaUpload",
"settings": [
{
"default": false,
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://cinemaupload.com/static/img/logo1.png"
]
}
+1 -1
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "clicknupload",
"name": "clicknupload",
"name": "Clicknupload",
"premium": [
"realdebrid",
"alldebrid"
+1 -2
View File
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_clipwatching.png"
]
}
+3 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "cloudvideo",
"name": "cloudvideo",
"name": "Cloudvideo",
"settings": [
{
"default": false,
@@ -37,6 +37,6 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_cloudvideo.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "http://i.imgur.com/SglkLAb.png?1"
]
}
+1 -2
View File
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_dailymotion.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "deltabit",
"name": "deltabit",
"name": "Deltabit",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://deltabit.co/img/logo.png"
]
}
+13 -17
View File
@@ -1,40 +1,36 @@
# -*- coding: utf-8 -*-
import time
import urllib
import time, sys
if sys.version_info[0] >= 3:
import urllib.parse as urllib
else:
import urllib
from core import httptools
from core import scrapertools
from core import httptools, scrapertools
from lib import jsunpack
from platformcode import logger, config
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
global data
data = httptools.downloadpage(page_url).data.replace('"', "'")
if "Not Found" in data or "File Does not Exist" in data:
return False, config.get_localized_string(70449) % "Deltabit"
return False, config.get_localized_string(70449) % "DeltaBit"
return True, ""
pass
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(deltabit page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
data = data.replace('"', "'")
global data
page_url_post = scrapertools.find_single_match(data, "<Form method='POST' action='([^']+)'>")
imhuman = ''
post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, "name='([^']+)' value='([^']*)'")})+ imhuman
time.sleep(6)
post = urllib.urlencode({k: v for k, v in scrapertools.find_multiple_matches(data, "name='([^']+)' value='([^']*)'")})
time.sleep(2.1)
data = httptools.downloadpage(page_url, post=post).data
videos_packed = scrapertools.find_single_match(data, r"</div>\s*<script type='text/javascript'>(eval.function.p,a,c,k,e,.*?)\s*</script>")
video_unpacked = jsunpack.unpack(videos_packed)
videos_urls = []
videos = scrapertools.find_single_match(video_unpacked, r'sources:\["([^"]+)"\]')
video_urls.append(['[DeltaBit]', videos.replace('https:','http:')])
logger.info("videos_urls #### {}".format(video_urls))
video_urls.append([videos.split('.')[-1] + ' [DeltaBit]', videos.replace('https:','http:')])
return video_urls
+5 -1
View File
@@ -4,10 +4,14 @@
"ignore_urls": [],
"patterns": [
{
"pattern": "((?:http://|https://).*?m3u8[^\"'\n]+)",
"pattern": "((?:http://|https://).*?m3u8[^\"'\n]*)",
"url": "\\1"
},
{
"pattern": "((?:http://|https://).*?.mpd[^\"'\n]*)",
"url": "\\1"
},
{
"pattern": "(http://[a-zA-Z0-9]+\\.mysites\\.com\\/get_file\\/.*?\\.mp4)",
"url": "\\1"
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "dostream",
"name": "dostream",
"name": "DoStream",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s14.postimg.cc/lczc08bsx/dostream.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "downace",
"name": "downace",
"name": "Downace",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s12.postimg.cc/4n9fmdy7x/logo-downace.png"
]
}
-46
View File
@@ -1,46 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "https://estream.to/embed-([a-z0-9]+).html",
"url": "https://estream.to/\\1.html"
},
{
"pattern": "https://estream.xyz/embed-([a-z0-9]+).html",
"url": "https://estream.to/\\1.html"
}
]
},
"free": true,
"id": "estream",
"name": "estream",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s14.postimg.cc/ibd54ayf5/estream.png"
}
-35
View File
@@ -1,35 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector Estream By Alfa development Group
# --------------------------------------------------------
import re
from core import httptools
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url)
if data.code == 404:
return False, config.get_localized_string(70449) % "Estream"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron = "<source src=([^ ]+) type='video/mp4' label='.*?x(.*?)'"
matches = re.compile(patron, re.DOTALL).findall(data)
for url, quality in matches:
video_urls.append(["%sp [estream]" % quality, url])
return video_urls
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "fastplay",
"name": "fastplay",
"name": "FastPlay",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "http://i.imgur.com/vHDcd6Y.png?1"
]
}
-1
View File
@@ -38,6 +38,5 @@
"visible": false
}
],
"thumbnail": "server_fembed.png",
"version": 1
}
+1 -1
View File
@@ -38,6 +38,6 @@
"visible": false
}
],
"thumbnail": "https://i.postimg.cc/pdswzj8G/fex.png",
"version": 1
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(https://filebebo.com/(?:e|d)/[a-zA-Z0-9]+)",
"url": "\\1"
}
]
},
"free": true,
"id": "filebebo",
"name": "filebebo",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://filebebo.com/images/logo.png"
}
-36
View File
@@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
# -*- Server Filebebo -*-
# -*- Created for Alfa-addon -*-
# -*- By the Alfa Develop Group -*-
import re
from core import httptools
from core import scrapertools
from platformcode import config
from platformcode import logger
def get_source(url):
logger.info()
data = httptools.downloadpage(url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
return data
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = get_source(page_url)
if "File was deleted" in data or "File Not Found" in data:
return False, config.get_localized_string(70449) % "Filebebo"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
video_urls = []
data = get_source(page_url)
url = scrapertools.find_single_match(data, "<source src=(.*?) type='video/.*?'")
video_urls.append(['Filebebo', url])
return video_urls
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": false,
"id": "filefactory",
"name": "filefactory",
"name": "FileFactory",
"premium": [
"realdebrid",
"alldebrid"
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_filefactory.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "filepup",
"name": "filepup",
"name": "FilePup",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "http://static.filepup.net/fplogoV2s.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "filescdn",
"name": "filescdn",
"name": "Files CDN",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s31.postimg.cc/ijne6piij/filescdn.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "https://www.filevideo.net/embed-(?:embed-|)([A-z0-9]+)",
"url": "http://filevideo.net/embed-\\1.html"
}
]
},
"free": true,
"id": "filevideo",
"name": "filevideo",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s15.postimg.cc/b7jj9dbbf/filevideo.png"
}
-42
View File
@@ -1,42 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import scrapertools
from lib import jsunpack
from platformcode import logger, config
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Not Found" in data or "File was deleted" in data:
return False, config.get_localized_string(70449) % "Filevideo"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
data = httptools.downloadpage(page_url).data
enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(eval.*?)\s*</script>")
dec_data = jsunpack.unpack(enc_data)
video_urls = []
media_urls = scrapertools.find_multiple_matches(dec_data, '\{file\s*:\s*"([^"]+)",label\s*:\s*"([^"]+)"\}')
for media_url, label in media_urls:
ext = scrapertools.get_filename_from_url(media_url)[-4:]
video_urls.append(["%s %sp [filevideo]" % (ext, label), media_url])
video_urls.reverse()
m3u8 = scrapertools.find_single_match(dec_data, '\{file\:"(.*?.m3u8)"\}')
if m3u8:
title = video_urls[-1][0].split(" ", 1)[1]
video_urls.insert(0, [".m3u8 %s" % title, m3u8])
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
+2 -3
View File
@@ -15,7 +15,7 @@
},
"free": true,
"id": "flashx",
"name": "flashx",
"name": "FlashX",
"premium": [
"realdebrid"
],
@@ -44,6 +44,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_flashx.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "flix555.com/(?:embed-|)([A-z0-9]+)",
"url": "https://flix555.com/embed-\\1.html"
}
]
},
"free": true,
"id": "flix555",
"name": "flix555",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://flix555.com/img/logo.png"
}
-44
View File
@@ -1,44 +0,0 @@
# -*- coding: utf-8 -*-
import re
from core import httptools, scrapertools
from lib import jsunpack
from platformcode import config
from platformcode import logger
data = ""
def test_video_exists(page_url):
resp = httptools.downloadpage(page_url)
global data
data = resp.data
if resp.code == 404 or '<b>File Not Found</b>' in resp.data or "<b>File is no longer available" in resp.data:
return False, config.get_localized_string(70449) % "flix555"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info()
itemlist = []
packed = scrapertools.find_single_match(data, "<script type=[\"']text/javascript[\"']>(eval.*?)</script>")
unpacked = jsunpack.unpack(packed)
# ~ logger.info(unpacked)
unpacked = re.sub(r'\n|\r|\t|\s{2,}', "", unpacked)
subtitles = scrapertools.find_single_match(unpacked, r'tracks:\s*\[\{\s*file\s*:\s*"([^"]*)"\s*,\s*label')
if "empty." in subtitles: subtitles = ""
matches = scrapertools.find_multiple_matches(unpacked, 'file\s*:\s*"([^"]*)"\s*,\s*label\s*:\s*"([^"]*)"')
if matches:
for url, lbl in matches:
if url.endswith('.srt') or url.endswith('.vtt'):
#subtitles += url
continue
itemlist.append(['.mp4 (%s) [flix555]' % lbl, url, 0, subtitles])
url = scrapertools.find_single_match(unpacked, 'file\s*:\s*"([^"]*)"\s*')
if url:
if not url.endswith('.srt') or not url.endswith('.vtt'):
itemlist.append(['.m3u8 [flix555]', url, 0, subtitles])
return itemlist
+1 -1
View File
@@ -21,7 +21,7 @@
},
"free": true,
"id": "fourshared",
"name": "fourshared",
"name": "4shared",
"premium": [
"realdebrid",
"alldebrid"
-45
View File
@@ -1,45 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(freakshare.com/files/[^/]+/[^\"'\\n ]+)",
"url": "http://\\1"
}
]
},
"free": false,
"id": "freakshare",
"name": "freakshare",
"premium": [
"realdebrid",
"alldebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
]
}
-18
View File
@@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "Este archivo no existe" in data:
return False, "Archivo no existe"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
return video_urls
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "gamovideo",
"name": "gamovideo",
"name": "GamoVideo",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_gamovideo.png"
]
}
+1 -1
View File
@@ -15,7 +15,7 @@
},
"free": false,
"id": "gigasize",
"name": "gigasize",
"name": "GigaSize",
"premium": [
"realdebrid",
"alldebrid"
+1 -1
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "googlevideo",
"name": "googlevideo",
"name": "Google Video",
"settings": [
{
"default": false,
+1 -2
View File
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_gounlimited.png"
]
}
+2 -3
View File
@@ -27,7 +27,7 @@
},
"free": true,
"id": "gvideo",
"name": "gvideo",
"name": "G Video",
"premium": [
"realdebrid",
"alldebrid"
@@ -57,6 +57,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s11.postimg.cc/giobzkprz/logo-google1.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_hdload"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_hdload"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": false,
"id": "hugefiles",
"name": "hugefiles",
"name": "Huge Files",
"premium": [
"realdebrid"
],
@@ -40,6 +40,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_hugefiles.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "idtbox",
"name": "idtbox",
"name": "ID Tbox",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://idtbox.com/img/idtbox.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "jawcloud",
"name": "jawcloud",
"name": "JawCloud",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s8.postimg.cc/b64mzlgxh/jawcloud1.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "jetload",
"name": "jetload",
"name": "Jetload",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://jetload.net/jetlogo.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "jplayer.net/v/([A-z0-9_-]+)",
"url": "https://www.jplayer.net/api/source/\\1"
}
]
},
"free": true,
"id": "jplayer",
"name": "jplayer",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": ""
}
-43
View File
@@ -1,43 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector jplayer By Alfa development Group
# --------------------------------------------------------
import sys
from platformcode import config
PY3 = False
if sys.version_info[0] >= 3: PY3 = True; unicode = str; unichr = chr; long = int
if PY3:
#from future import standard_library
#standard_library.install_aliases()
import urllib.parse as urllib # Es muy lento en PY2. En PY3 es nativo
else:
import urllib # Usamos el nativo de PY2 que es más rápido
from core import httptools
from core import jsontools
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "no longer exists" in data or "to copyright issues" in data:
return False, config.get_localized_string(70449) % "jplayer"
return True, ""
def get_video_url(page_url, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
post = urllib.urlencode({"r":"", "d":"www.jplayer.net"})
data = httptools.downloadpage(page_url, post=post).data
json = jsontools.load(data)["data"]
for _url in json:
url = _url["file"]
label = _url["label"]
video_urls.append([label +" [jplayer]", url])
return video_urls
+2 -3
View File
@@ -15,7 +15,7 @@
},
"free": true,
"id": "mailru",
"name": "mailru",
"name": "Mailru",
"settings": [
{
"default": false,
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://s26.postimg.cc/6ebn509jd/mailru1.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(mangoplay.net(?://|/)embed.php\\?data=[A-z0-9_-]+)",
"url": "https://\\1"
}
]
},
"free": true,
"id": "mangoplay",
"name": "mangoplay",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": ""
}
-28
View File
@@ -1,28 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector mangoplay By Alfa development Group
# --------------------------------------------------------
from core import httptools
from core import scrapertools
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "no longer exists" in data or "to copyright issues" in data:
return False, config.get_localized_string(70449) % "mangoplay"
return True, ""
def get_video_url(page_url, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
url = scrapertools.find_single_match(data, 'shareId = "([^"]+)')
url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "")
url = url.replace(" ","%20")
video_urls.append([".MP4 [mangoplay]", url])
return video_urls
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "https://manyvideos.xyz/embed/([A-z0-9]+)",
"url": "https://manyvideos.xyz/embed/\\1"
}
]
},
"free": true,
"id": "manyvideos",
"name": "manyvideos",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": ""
}
-38
View File
@@ -1,38 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector manyvideos By Alfa development Group
# --------------------------------------------------------
import base64
from core import httptools
from core import scrapertools
from lib import jsunpack
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
response = httptools.downloadpage(page_url)
if not response.sucess or \
"Not Found" in response.data \
or "File was deleted" in response.data \
or "is no longer available" in response.data:
return False, config.get_localized_string(70449) % "manyvideos"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info()
video_urls = []
data = httptools.downloadpage(page_url).data
data = scrapertools.find_single_match(data, 'JuicyCodes.Run\(([^\)]+)\)')
data = data.replace("+", "")
data = base64.b64decode(data)
unpack = jsunpack.unpack(data)
matches = scrapertools.find_multiple_matches(unpack, '"file":"([^"]+)","label":"([^"]+)"')
for url,quality in matches:
url = url.replace("v2.", "v1.")
video_urls.append(["[manyvideos] %s" % quality, url])
return video_urls
+1 -1
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "mediafire",
"name": "mediafire",
"name": "MediaFire",
"premium": [
"realdebrid",
"alldebrid"
+2 -3
View File
@@ -27,7 +27,7 @@
},
"free": true,
"id": "mega",
"name": "mega",
"name": "Mega",
"premium": [
"realdebrid"
],
@@ -56,6 +56,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_mega.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "megadrive.co/embed/([A-z0-9]+)",
"url": "https://megadrive.co/embed/\\1"
}
]
},
"free": true,
"id": "megadrive",
"name": "megadrive",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s8.postimg.cc/kr5olxmad/megadrive1.png"
}
-27
View File
@@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import scrapertools
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "no longer exists" in data or "to copyright issues" in data:
return False, "[Megadrive] El video ha sido borrado"
if "please+try+again+later." in data:
return False, "[Megadrive] Error de Megadrive, no se puede generar el enlace al video"
if "File has been removed due to inactivity" in data:
return False, config.get_localized_string(70449) % "Megadrive"
return True, ""
def get_video_url(page_url, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
video_urls = []
videourl = scrapertools.find_single_match(data, "<source.*?src='([^']+)")
video_urls.append([".MP4 [megadrive]", videourl])
return video_urls
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "mixdrop.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "mystream",
"name": "mystream",
"name": "MyStream",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://i.postimg.cc/t43grQdh/mystream1.png"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "myupload",
"name": "myupload",
"name": "myUpload",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}
+1 -2
View File
@@ -56,6 +56,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_netutv.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(https://nofile.io/f/\\w+)",
"url": "\\1"
}
]
},
"free": true,
"id": "nofile",
"name": "nofile",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://nofile.io/img/icons/icon-128.png"
}
-27
View File
@@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector nofile By Alfa development Group
# --------------------------------------------------------
from core import httptools
from core import scrapertools
from platformcode import logger, config
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
response = httptools.downloadpage(page_url)
if not response.sucess or "Not Found" in response.data or "File was deleted" in response.data or "is no longer available" in response.data:
return False, config.get_localized_string(70449) % "nofile"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
url = scrapertools.find_single_match(data, '<source src="([^"]+)')
url = httptools.downloadpage("https://nofile.io" + url, follow_redirects=False, only_headers=True).headers.get("location", "")
title = "mp4 [nofile]"
video_urls.append([title, url])
return video_urls
+2 -2
View File
@@ -2,7 +2,7 @@
"id": "nowvideo",
"name": "nowvideo",
"active": true,
"thumbnail": "http://nowvideo.club/images/logo.png",
"find_videos": {
"ignore_urls": [],
"patterns": [
@@ -13,7 +13,7 @@
{
"pattern": "nowvideo.club/(?:videos|play/)([A-z0-9]+)",
"url": "http:\/\/nowvideo.club\/videos/\\1"
}
}
]
},
"free": true,
+1 -2
View File
@@ -42,6 +42,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_okru.png"
]
}
+1 -2
View File
@@ -71,6 +71,5 @@
"type": "text",
"visible": true
}
],
"thumbnail": "server_onefichier.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://supervideo.tv/images/logo-player.png"
]
}
-45
View File
@@ -1,45 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(?:openload|oload|openloads)[^/]+/(?:embed|f|e|f[0-9]|c|c[0-9])?/([0-9a-zA-Z-_]+)",
"url": "https://oload.stream/f/\\1/"
}
]
},
"free": true,
"id": "openload",
"name": "openload",
"premium": [
"realdebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "server_openload.png"
}
-183
View File
@@ -1,183 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import jsontools
from core import scrapertools
from core.servertools import get_server_host
from platformcode import config, logger
host = "https://" + get_server_host('openload')[0]
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
header = {}
if "|" in page_url:
page_url, referer = page_url.split("|", 1)
header = {'Referer': referer}
data = httptools.downloadpage(page_url, headers=header, cookies=False).data
if 'Were Sorry!' in data:
data = httptools.downloadpage(page_url.replace("/embed/", "/f/"), headers=header, cookies=False).data
if 'Were Sorry!' in data:
return False, config.get_localized_string(70449) % "Openload"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info()
itemlist = []
header = {}
if "|" in page_url:
page_url, referer = page_url.split("|", 1)
header = {'Referer': referer}
data = httptools.downloadpage(page_url, cookies=False, headers=header).data
logger.info('OP DATA= ' + data)
subtitle = scrapertools.find_single_match(data, '<track kind="captions" src="([^"]+)" srclang="es"')
try:
code = scrapertools.find_single_match(data, '<p style="" id="[^"]+">(.*?)</p>' )
if not code or code == "" or code is None:
code = scrapertools.find_single_match(data, '<p id="[^"]+" style="">(.*?)</p>' )
_0x59ce16 = eval(scrapertools.find_single_match(data, '_0x59ce16=([^;]+)').replace('parseInt', 'int'))
_1x4bfb36 = eval(scrapertools.find_single_match(data, '_1x4bfb36=([^;]+)').replace('parseInt', 'int'))
parseInt = eval(scrapertools.find_single_match(data, '_0x30725e,(\(parseInt.*?)\),').replace('parseInt', 'int'))
url = decode(code, parseInt, _0x59ce16, _1x4bfb36)
url = httptools.downloadpage(url, only_headers=True, follow_redirects=False).headers.get('location')
extension = scrapertools.find_single_match(url, '(\..{,3})\?')
itemlist.append([extension, url, 0,subtitle])
except Exception:
logger.info()
if config.get_setting('api', __file__):
url = get_link_api(page_url)
extension = scrapertools.find_single_match(url, '(\..{,3})\?')
if url:
itemlist.append([extension, url, 0,subtitle])
logger.debug(itemlist)
return itemlist
def decode(code, parseInt, _0x59ce16, _1x4bfb36):
logger.info()
import math
_0x1bf6e5 = ''
ke = []
for i in range(0, len(code[0:9*8]),8):
ke.append(int(code[i:i+8],16))
_0x439a49 = 0
_0x145894 = 0
while _0x439a49 < len(code[9*8:]):
_0x5eb93a = 64
_0x896767 = 0
_0x1a873b = 0
_0x3c9d8e = 0
while True:
if _0x439a49 + 1 >= len(code[9*8:]):
_0x5eb93a = 143;
_0x3c9d8e = int(code[9*8+_0x439a49:9*8+_0x439a49+2], 16)
_0x439a49 +=2
if _0x1a873b < 6*5:
_0x332549 = _0x3c9d8e & 63
_0x896767 += _0x332549 << _0x1a873b
else:
_0x332549 = _0x3c9d8e & 63
_0x896767 += int(_0x332549 * math.pow(2, _0x1a873b))
_0x1a873b += 6
if not _0x3c9d8e >= _0x5eb93a: break
# _0x30725e = _0x896767 ^ ke[_0x145894 % 9] ^ _0x59ce16 ^ parseInt ^ _1x4bfb36
_0x30725e = _0x896767 ^ ke[_0x145894 % 9] ^ parseInt ^ _1x4bfb36
_0x2de433 = _0x5eb93a * 2 + 127
for i in range(4):
_0x3fa834 = chr(((_0x30725e & _0x2de433) >> (9*8/ 9)* i) - 1)
if _0x3fa834 != '$':
_0x1bf6e5 += _0x3fa834
_0x2de433 = (_0x2de433 << (9*8/ 9))
_0x145894 += 1
url = host + "/stream/%s?mime=true" % _0x1bf6e5
return url
def login():
logger.info()
data = httptools.downloadpage(host).data
_csrf = scrapertools.find_single_match(data, '<input type="hidden" name="_csrf" value="([^"]+)">')
post = {
'LoginForm[email]' : config.get_setting('user', __file__),
'LoginForm[password]' : config.get_setting('passowrd', __file__),
'LoginForm[rememberMe]' : 1,
'_csrf' : _csrf
}
data = httptools.downloadpage(host + '/login', post = post).data
if 'Login key has already been sent.' in data:
while True :
if 'Invalid login key.' in data:
platformtools.dialog_ok('openload', 'El código introducido no es válido\nrevisa tu correo e introduce el código correcto')
code = platformtools.dialog_input( post.get('LoginForm[loginkey]', ''),
'Introduzca el código que ha sido enviado a \'%s\'' % 'r_dav'
)
if not code:
break
else:
post['LoginForm[loginkey]'] = code
data = httptools.downloadpage(host + '/login', post = post).data
if 'Welcome back,' in data: break
def get_api_keys():
logger.info()
api_login = config.get_setting('api_login', __file__)
api_key = config.get_setting('api_key', __file__)
if not api_key or not api_login:
login()
data = httptools.downloadpage(host + '/account').data
post = {
'FTPKey[password]' : config.get_setting('password', __file__),
'_csrf' : scrapertools.find_single_match(data, '<input type="hidden" name="_csrf" value="([^"]+)">')
}
data = httptools.downloadpage(host + '/account', post = post).data
api_login = scrapertools.find_single_match(data, '<tr><td>ID:</td><td>([^<]+)</td></tr>')
api_key = scrapertools.find_single_match(data, 'Your FTP Password/API Key is: ([^<]+) </div>')
config.set_setting('api_login', api_login, __file__)
config.set_setting('api_key', api_key, __file__)
return api_login, api_key
def get_link_api(page_url):
logger.info()
api_login, api_key = get_api_keys()
file_id = scrapertools.find_single_match(page_url, '(?:embed|f)/([0-9a-zA-Z-_]+)')
data = httptools.downloadpage(host + "/api/1/file/dlticket?file=%s&login=%s&key=%s" % (file_id, api_login, api_key)).data
data = jsontools.load_json(data)
# logger.info(data)
if data["status"] == 200:
ticket = data["result"]["ticket"]
data = httptools.downloadpage(host + "/api/1/file/dl?file=%s&ticket=%s" % (file_id, ticket)).data
data = jsontools.load(data)
return data['result']['url'].replace("https", "http")
-49
View File
@@ -1,49 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(https://[a-zA-Z0-9]+\\.openloadpremium\\.com\\/m3u8\\/.*?\\.m3u8)",
"url": "\\1"
},
{
"pattern": "(https://[a-zA-Z0-9]+\\.pelisplay\\.tv/.*?m3u8.php\\?id=\\d+)",
"url": "\\1"
},
{
"pattern": "streamium\\.xyz/.*?hash=([a-zA-Z0-9]+)",
"url": "http://streamium.xyz/files/\\1"
}
]
},
"free": true,
"id": "oprem",
"name": "oprem",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
]
}
-38
View File
@@ -1,38 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector Oprem By Alfa development Group
# --------------------------------------------------------
import os
from core import httptools
from platformcode import logger, config
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if 'peliculonhd' in page_url:
import re
patron = r'/mpegTS/([^/]+)/([^\s]+)'
matches = re.compile(patron, re.DOTALL).findall(data)
for _id, quota in matches:
old = '/mpegTS/%s/%s' % (_id, quota)
gurl = 'https://lh3.googleusercontent.com/d/%s?quotaUser=%s'
new = gurl % (_id, quota)
data = data.replace(old, new)
data = data.replace('s://lh3.googleusercontent.com', '://localhost:8781')
m3u8 = os.path.join(config.get_data_path(), "op_master.m3u8")
outfile = open(m3u8, 'wb')
outfile.write(data)
outfile.close()
page_url = m3u8
from lib import servop
servop.start()
video_urls = [["%s [Oprem]" % page_url[-4:], page_url]]
return video_urls
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(?:powvideo|povw1deo|powvldeo).(?:net|xyz|com|cc)/(?:embed-|iframe-|preview-|)([a-z0-9]+)",
"url": "https://powvldeo.cc/iframe-\\1-920x360.html"
}
]
},
"free": true,
"id": "powvideo",
"name": "powvideo",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "server_powvideo.png"
}
-46
View File
@@ -1,46 +0,0 @@
# -*- coding: utf-8 -*-
import sys
from platformcode import config
PY3 = False
if sys.version_info[0] >= 3: PY3 = True; unicode = str; unichr = chr; long = int
from core import httptools
from core import scrapertools
from lib import jsunpack
from platformcode import logger
headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0']]
def test_video_exists(page_url):
referer = page_url.replace('iframe', 'preview')
httptools.downloadpage(referer)
global data
data = httptools.downloadpage(page_url, headers={'referer': referer}).data
if data == "File was deleted" or data == '':
return False, "[powvideo] El video ha sido borrado"
if 'function(p,a,c,k,e,' not in data:
return False, config.get_localized_string(70449) % "powvideo"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info()
itemlist = []
packed = scrapertools.find_single_match(data, "<script type=[\"']text/javascript[\"']>(eval.*?)</script>")
unpacked = jsunpack.unpack(packed)
url = scrapertools.find_single_match(unpacked, "(?:src):\\\\'([^\\\\]+.mp4)\\\\'")
if not PY3: from lib import alfaresolver
else: from lib import alfaresolver_py3 as alfaresolver
url = alfaresolver.decode_video_url(url, data, 2)
itemlist.append([".mp4" + " [powvideo]", url])
itemlist.sort(key=lambda x: x[0], reverse=True)
return itemlist
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "prostream.to/(?:embed-|)([A-z0-9]+)",
"url": "https://prostream.to/embed-\\1.html"
}
]
},
"free": true,
"id": "prostream",
"name": "prostream",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://prostream.to/assets/img/logo.png"
}
-33
View File
@@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector Prostream By Alfa development Group
# --------------------------------------------------------
from core import httptools
from core import scrapertools
from lib import jsunpack
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
global data
data = httptools.downloadpage(page_url).data
if "File is no longer available" in data:
return False, config.get_localized_string(70449) % "Prostream"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
video_urls = []
ext = 'mp4'
packed = scrapertools.find_single_match(data, "text/javascript'>(eval.*?)\s*</script>")
unpacked = jsunpack.unpack(packed)
media_url = scrapertools.find_single_match(unpacked, r'sources:\s*\["([^"]+)"')
ext = media_url[-4:]
video_urls.append(["%s [Prostream]" % (ext), media_url])
return video_urls
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": false,
"id": "rapidgator",
"name": "rapidgator",
"name": "Rapid Gator",
"premium": [
"realdebrid",
"alldebrid"
@@ -41,6 +41,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_rapidgator.png"
]
}
-42
View File
@@ -1,42 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(?:rapidvideo|rapidvid).(?:org|com|to|is)/(?:\\?v=|e/|embed/|v/|d/)([A-z0-9]+)",
"url": "https://www.rapidvideo.com/e/\\1"
}
]
},
"free": true,
"id": "rapidvideo",
"name": "rapidvideo",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s26.postimg.cc/y5arjad1l/rapidvideo1.png"
}
-53
View File
@@ -1,53 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import scrapertools
from platformcode import config, logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
response = httptools.downloadpage(page_url)
if response.code == 404:
return False, config.get_localized_string(70449) % "RapidVideo"
if not response.data or "urlopen error [Errno 1]" in str(response.code):
if config.is_xbmc():
return False, config.get_localized_string(70302) % "RapidVideo"
elif config.get_platform() == "plex":
return False, config.get_localized_string(70303) % "RapidVideo"
elif config.get_platform() == "mediaserver":
return False, config.get_localized_string(70304) % "RapidVideo"
if "Object not found" in response.data:
return False, config.get_localized_string(70449) % "RapidVideo"
if response.code == 500:
return False, config.get_localized_string(70524) % "RapidVideo"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
video_urls = []
data = httptools.downloadpage(page_url).data
post = "confirm.x=77&confirm.y=76&block=1"
if "Please click on this button to open this video" in data:
data = httptools.downloadpage(page_url, post=post).data
patron = 'https://www.rapidvideo.com/e/[^"]+'
match = scrapertools.find_multiple_matches(data, patron)
if match:
for url1 in match:
res = scrapertools.find_single_match(url1, '=(\w+)')
data = httptools.downloadpage(url1).data
if "Please click on this button to open this video" in data:
data = httptools.downloadpage(url1, post=post).data
url = scrapertools.find_single_match(data, 'source src="([^"]+)')
ext = scrapertools.get_filename_from_url(url)[-4:]
video_urls.append(['%s %s [rapidvideo]' % (ext, res), url])
else:
patron = 'src="([^"]+)" type="video/([^"]+)" label="([^"]+)"'
match = scrapertools.find_multiple_matches(data, patron)
if match:
for url, ext, res in match:
video_urls.append(['.%s %s [Rapidvideo]' % (ext, res), url])
return video_urls
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "rcdnme",
"name": "rcdnme",
"name": "RCDN",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://i.imgur.com/NErNgTg.jpg"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "rutube",
"name": "rutube",
"name": "RUTube",
"premium": [
"alldebrid"
],
@@ -40,6 +40,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "http://www.cubancouncil.com/uploads/project_images/rutube_branding_black.png.648x0_q90_replace_alpha.jpg"
]
}
+2 -3
View File
@@ -11,7 +11,7 @@
},
"free": true,
"id": "samaup",
"name": "samaup",
"name": "Sama Up",
"settings": [
{
"default": false,
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "https://www.samaup.co/samaup_style/images/logo.png"
]
}
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": "server_speedvideo.png"
]
}
-54
View File
@@ -1,54 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "streamango.com/(?:embed|f)/([A-z0-9]+)",
"url": "http://streamango.com/embed/\\1"
},
{
"pattern": "https://fruitadblock.net/embed/([A-z0-9]+)",
"url": "http://streamango.com/embed/\\1"
},
{
"pattern": "https://streamangos.com/e/([A-z0-9]+)",
"url": "http://streamango.com/embed/\\1"
}
]
},
"free": true,
"id": "streamango",
"name": "streamango",
"premium": [
"realdebrid",
"alldebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "http://i.imgur.com/o8XR8fL.png"
}
-74
View File
@@ -1,74 +0,0 @@
# -*- coding: utf-8 -*-
from core import httptools
from core import scrapertools
from platformcode import config, logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "We are unable to find the video" in data:
return False, config.get_localized_string(70449) % "Streamango"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
video_urls = []
matches = scrapertools.find_multiple_matches(data, "type:\"video/([^\"]+)\",src:d\('([^']+)',(.*?)\).+?height:(\d+)")
for ext, encoded, code, quality in matches:
media_url = decode(encoded, int(code))
media_url = media_url.replace("@","")
if not media_url.startswith("http"):
media_url = "http:" + media_url
video_urls.append([".%s %sp [streamango]" % (ext, quality), media_url])
video_urls.reverse()
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
def decode(encoded, code):
logger.info("encoded '%s', code '%s'" % (encoded, code))
_0x59b81a = ""
k = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
k = k[::-1]
count = 0
for index in range(0, len(encoded) - 1):
while count <= len(encoded) - 1:
_0x4a2f3a = k.index(encoded[count])
count += 1
_0x29d5bf = k.index(encoded[count])
count += 1
_0x3b6833 = k.index(encoded[count])
count += 1
_0x426d70 = k.index(encoded[count])
count += 1
_0x2e4782 = ((_0x4a2f3a << 2) | (_0x29d5bf >> 4))
_0x2c0540 = (((_0x29d5bf & 15) << 4) | (_0x3b6833 >> 2))
_0x5a46ef = ((_0x3b6833 & 3) << 6) | _0x426d70
_0x2e4782 = _0x2e4782 ^ code
_0x59b81a = str(_0x59b81a) + chr(_0x2e4782)
if _0x3b6833 != 64:
_0x59b81a = str(_0x59b81a) + chr(_0x2c0540)
if _0x3b6833 != 64:
_0x59b81a = str(_0x59b81a) + chr(_0x5a46ef)
return _0x59b81a
-45
View File
@@ -1,45 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "streamcherry.com/(?:embed|f)/([A-z0-9]+)",
"url": "http://streamcherry.com/embed/\\1"
}
]
},
"free": true,
"id": "streamcherry",
"name": "streamcherry",
"premium": [
"realdebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "http://i.imgur.com/l45Tk0G.png"
}
-77
View File
@@ -1,77 +0,0 @@
# -*- coding: utf-8 -*-
# --------------------------------------------------------
# Conector para streamcherry
# --------------------------------------------------------
from core import httptools
from core import scrapertools
from platformcode import config
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
if "We are unable to find the video" in data:
return False, config.get_localized_string(70449) % "streamcherry"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url).data
video_urls = []
matches = scrapertools.find_multiple_matches(data, "type:\"video/([^\"]+)\",src:d\('([^']+)',(.*?)\).+?height:(\d+)")
for ext, encoded, code, quality in matches:
media_url = decode(encoded, int(code))
media_url = media_url.replace("@","")
if not media_url.startswith("http"):
media_url = "http:" + media_url
video_urls.append([".%s %sp [streamcherry]" % (ext, quality), media_url])
video_urls.reverse()
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
def decode(encoded, code):
logger.info("encoded '%s', code '%s'" % (encoded, code))
_0x59b81a = ""
k = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
k = k[::-1]
count = 0
for index in range(0, len(encoded) - 1):
while count <= len(encoded) - 1:
_0x4a2f3a = k.index(encoded[count])
count += 1
_0x29d5bf = k.index(encoded[count])
count += 1
_0x3b6833 = k.index(encoded[count])
count += 1
_0x426d70 = k.index(encoded[count])
count += 1
_0x2e4782 = ((_0x4a2f3a << 2) | (_0x29d5bf >> 4))
_0x2c0540 = (((_0x29d5bf & 15) << 4) | (_0x3b6833 >> 2))
_0x5a46ef = ((_0x3b6833 & 3) << 6) | _0x426d70
_0x2e4782 = _0x2e4782 ^ code
_0x59b81a = str(_0x59b81a) + chr(_0x2e4782)
if _0x3b6833 != 64:
_0x59b81a = str(_0x59b81a) + chr(_0x2c0540)
if _0x3b6833 != 64:
_0x59b81a = str(_0x59b81a) + chr(_0x5a46ef)
return _0x59b81a
-59
View File
@@ -1,59 +0,0 @@
{
"active": false,
"find_videos": {
"ignore_urls": [
"http://streamcloud.eu/stylesheets",
"http://streamcloud.eu/control",
"http://streamcloud.eu/xupload",
"http://streamcloud.eu/js",
"http://streamcloud.eu/favicon",
"http://streamcloud.eu/reward",
"http://streamcloud.eu/login",
"http://streamcloud.eu/deliver",
"http://streamcloud.eu/faq",
"http://streamcloud.eu/tos",
"http://streamcloud.eu/checkfiles",
"http://streamcloud.eu/contact",
"http://streamcloud.eu/serve"
],
"patterns": [
{
"pattern": "(streamcloud.eu/[a-z0-9]+)",
"url": "http://\\1"
}
]
},
"free": true,
"id": "streamcloud",
"name": "streamcloud",
"premium": [
"alldebrid"
],
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "server_streamcloud.png"
}
-78
View File
@@ -1,78 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
from core import httptools
from core import scrapertools
from platformcode import logger
def test_video_exists(page_url):
logger.info("page_url='%s')" % page_url)
data = httptools.downloadpage(url=page_url).data
if "<h1>404 Not Found</h1>" in data:
return False, "El archivo no existe<br/>en streamcloud o ha sido borrado."
elif "<h1>File Not Found</h1>" in data:
return False, "El archivo no existe<br/>en streamcloud o ha sido borrado."
elif "<h1>Archivo no encontrado</h1>" in data:
return False, "El archivo no existe<br/>en streamcloud o ha sido borrado."
else:
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
# Lo pide una vez
headers = [
['User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14']]
data = httptools.downloadpage(page_url, headers=headers).data
media_url = scrapertools.find_single_match(data, 'file\: "([^"]+)"')
if len(media_url) == 0:
post = ""
matches = scrapertools.find_multiple_matches(data, '<input.*?name="([^"]+)".*?value="([^"]*)">')
for inputname, inputvalue in matches:
post += inputname + "=" + inputvalue + "&"
post = post.replace("op=download1", "op=download2")
data = httptools.downloadpage(page_url, post=post).data
if 'id="justanotice"' in data:
logger.info("data=" + data)
logger.info("Ha saltado el detector de adblock")
return []
# Extrae la URL
media_url = scrapertools.find_single_match(data, 'file\: "([^"]+)"')
video_urls = []
video_urls.append([scrapertools.get_filename_from_url(media_url)[-4:] + " [streamcloud]", media_url+"|Referer="+page_url])
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
if __name__ == "__main__":
import getopt
import sys
options, arguments = getopt.getopt(sys.argv[1:], "", ["video_url=", "login=", "password="])
video_url = ""
login = ""
password = ""
logger.info("%s %s" % (str(options), str(arguments)))
for option, argument in options:
print(option, argument)
if option == "--video_url":
video_url = argument
elif option == "--login":
login = argument
elif option == "--password":
password = argument
else:
assert False, "Opcion desconocida"
if video_url == "":
print("ejemplo de invocacion")
print("streamcloud --video_url http://xxx --login usuario --password secreto")
else:
if login != "":
premium = True
else:
premium = False
print(get_video_url(video_url, premium, login, password))
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(?:streamplay|streamp1ay).(?:to|me)/(?:embed-|player-|)([a-z0-9]+)(?:.html|)",
"url": "https://steamplay.me/player-\\1.html"
}
]
},
"free": true,
"id": "streamplay",
"name": "streamplay",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "@60654",
"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
}
],
"thumbnail": "https://s1.postimg.cc/912d5vxmv3/streamplay1.png"
}
-48
View File
@@ -1,48 +0,0 @@
# -*- coding: utf-8 -*-
import sys
from platformcode import config
PY3 = False
if sys.version_info[0] >= 3: PY3 = True; unicode = str; unichr = chr; long = int
import re
from core import httptools
from core import scrapertools
from lib import jsunpack
from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
referer = re.sub(r"player-", "embed-", page_url)
global data
data = httptools.downloadpage(page_url, headers={'Referer': referer}).data
if data == "File was deleted":
return False, config.get_localized_string(70449) % "Streamplay"
elif "Video is processing now" in data:
return False, config.get_localized_string(70449) % "Streamplay"
return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info()
video_urls = []
packed = scrapertools.find_single_match(data, "<script type=[\"']text/javascript[\"']>(eval.*?)</script>")
unpacked = jsunpack.unpack(packed)
sources = eval(scrapertools.find_single_match(unpacked, "sources=(\[[^\]]+\])"))
for video_url in sources:
if not PY3: from lib import alfaresolver
else: from lib import alfaresolver_py3 as alfaresolver
video_url = alfaresolver.decode_video_url(video_url, data, 2)
filename = scrapertools.get_filename_from_url(video_url)[-4:]
if not video_url.endswith(".mpd"):
video_urls.append([filename + " [streamplay]", video_url])
video_urls.sort(key=lambda x: x[0], reverse=True)
return video_urls
+1 -2
View File
@@ -37,6 +37,5 @@
"type": "list",
"visible": false
}
],
"thumbnail": ""
]
}

Some files were not shown because too many files have changed in this diff Show More