Merge pull request #388 from Intel11/master

Actualizados
This commit is contained in:
Alfa
2018-08-08 14:36:31 -05:00
committed by GitHub
23 changed files with 86 additions and 367 deletions
+8
View File
@@ -271,6 +271,14 @@ def get_localized_string(code):
return dev
def get_localized_category(categ):
categories = {'movie': get_localized_string(30122), 'tvshow': get_localized_string(30123),
'anime': get_localized_string(30124), 'documentary': get_localized_string(30125),
'vos': get_localized_string(30136), 'adult': get_localized_string(30126),
'direct': get_localized_string(30137), 'torrent': get_localized_string(70015)}
return categories[categ] if categ in categories else categ
def get_videolibrary_path():
value = get_setting("videolibrarypath")
if value == "":
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "animeflv_me",
"name": "Animeflv.ME",
"active": true,
"active": false,
"adult": false,
"language": ["cast", "lat"],
"thumbnail": "http://i.imgur.com/x9AdvBx.png",
+2 -1
View File
@@ -7,7 +7,8 @@
"thumbnail": "gnula.png",
"banner": "gnula.png",
"categories": [
"movie"
"movie",
"vos"
],
"settings": [
{
+23 -13
View File
@@ -17,13 +17,13 @@ def mainlist(item):
itemlist = []
itemlist.append(Item(channel=item.channel, title="Estrenos", action="peliculas",
url= host +"peliculas-online/lista-de-peliculas-online-parte-1/", viewmode="movie",
thumbnail=get_thumb('premieres', auto=True),))
thumbnail=get_thumb('premieres', auto=True), first=0))
itemlist.append(
Item(channel=item.channel, title="Generos", action="generos", url= host + "generos/lista-de-generos/",
thumbnail=get_thumb('genres', auto=True),))
itemlist.append(Item(channel=item.channel, title="Recomendadas", action="peliculas",
url= host + "peliculas-online/lista-de-peliculas-recomendadas/", viewmode="movie",
thumbnail=get_thumb('recomended', auto=True),))
thumbnail=get_thumb('recomended', auto=True), first=0))
itemlist.append(Item(channel = item.channel, action = ""))
itemlist.append(
Item(channel=item.channel, title="Buscar", action="search", url = host_search,
@@ -35,14 +35,9 @@ def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
data = httptools.downloadpage(host).data
url_cse = scrapertools.find_single_match(data, '<form action="([^"]+)"') + "?"
bloque = scrapertools.find_single_match(data, '<form action=.*?</form>').replace('name="q"', "")
matches = scrapertools.find_multiple_matches(bloque, 'name="([^"]+).*?value="([^"]+)')
post = "q=" + texto + "&"
for name, value in matches:
post += name + "=" + value + "&"
data = httptools.downloadpage(url_cse + post).data
cse_token = scrapertools.find_single_match(data, "var cse_token='([^']+)'")
cxv = scrapertools.find_single_match(data, 'cx" value="([^"]+)"')
data = httptools.downloadpage("https://cse.google.es/cse.js?hpg=1&cx=%s" %cxv).data
cse_token = scrapertools.find_single_match(data, 'cse_token": "([^"]+)"')
item.url = host_search %(texto, cse_token)
try:
return sub_search(item)
@@ -99,7 +94,8 @@ def generos(item):
action = 'peliculas',
title = title,
url = url,
viewmode = "movie"))
viewmode = "movie",
first=0))
itemlist = sorted(itemlist, key=lambda item: item.title)
return itemlist
@@ -107,11 +103,18 @@ def generos(item):
def peliculas(item):
logger.info()
itemlist = []
next = True
data = httptools.downloadpage(item.url).data
patron = '<a class="Ntooltip" href="([^"]+)">([^<]+)<span><br[^<]+'
patron += '<img src="([^"]+)"></span></a>(.*?)<br'
matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedtitle, scrapedthumbnail, resto in matches:
first = item.first
last = first + 19
if last > len(matches):
last = len(matches)
next = False
for scrapedurl, scrapedtitle, scrapedthumbnail, resto in matches[first:last]:
language = []
plot = scrapertools.htmlclean(resto).strip()
languages = scrapertools.find_multiple_matches(plot, r'\((V.)\)')
@@ -132,6 +135,13 @@ def peliculas(item):
language=language,
quality=quality
))
#paginacion
url_next_page = item.url
first = last
if next:
itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='peliculas', first=first))
return itemlist
@@ -149,7 +159,7 @@ def findvideos(item):
cuenta = 0
for datos in bloque:
cuenta = cuenta + 1
patron = '<em>(opción %s.*?)</em>' %cuenta
patron = '<em>((?:opción|opción) %s.*?)</em>' %cuenta
scrapedopcion = scrapertools.find_single_match(data, patron)
titulo_opcion = "(" + scrapertools.find_single_match(scrapedopcion, "op.*?, (.*)").upper() + ")"
if "TRAILER" in titulo_opcion or titulo_opcion == "()":
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "peliculasrey",
"name": "peliculasrey",
"active": true,
"active": false,
"adult": false,
"language": ["cast", "lat"],
"thumbnail": "peliculasrey.png",
+5 -25
View File
@@ -3,6 +3,7 @@
import re
import urlparse
from core import httptools
from core import scrapertools
from core.item import Item
from platformcode import logger
@@ -16,7 +17,6 @@ def mainlist(item):
viewmode="movie"))
itemlist.append(Item(channel=item.channel, action="search", title="Buscar",
url="http://www.submityourflicks.com/index.php?mode=search&q=%s&submit=Search"))
return itemlist
@@ -37,18 +37,6 @@ def search(item, texto):
def videos(item):
logger.info()
itemlist = []
'''
<div class="item-block item-normal col" >
<div class="inner-block">
<a href="http://www.submityourflicks.com/1846642-my-hot-wife-bending-over-and-getting-her-cunt-reamed.html" title="My hot wife bending over and getting her cunt reamed..">
<span class="image">
<script type='text/javascript'>stat['56982c566d05c'] = 0;
pic['56982c566d05c'] = new Array();
pics['56982c566d05c'] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);</script>
<img src="
'''
data = scrapertools.downloadpageGzip(item.url)
patron = '<div class="item-block[^<]+'
patron += '<div class="inner-block[^<]+'
@@ -56,34 +44,26 @@ def videos(item):
patron += '<span class="image".*?'
patron += '<img src="([^"]+)"'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
title = scrapedtitle
url = scrapedurl
thumbnail = scrapedthumbnail.replace(" ", "%20")
plot = ""
logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumbnail + "]")
itemlist.append(Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot=plot,
itemlist.append(Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
folder=False))
next_page_url = scrapertools.find_single_match(data, "<a href='([^']+)' class=\"next\">NEXT</a>")
if next_page_url != "":
url = urlparse.urljoin(item.url, next_page_url)
itemlist.append(Item(channel=item.channel, action="videos", title=">> Página siguiente", url=url, folder=True,
viewmode="movie"))
return itemlist
def play(item):
logger.info()
data = scrapertools.cache_page(item.url)
media_url = scrapertools.find_single_match(data, 'file\:\s*"([^"]+)"')
data = httptools.downloadpage(item.url).data
media_url = "https:" + scrapertools.find_single_match(data, 'source src="([^"]+)"')
itemlist = []
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=media_url,
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
thumbnail=item.thumbnail, show=item.title, server="directo", folder=False))
return itemlist
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "yaske",
"name": "Yaske",
"active": true,
"active": false,
"adult": false,
"language": ["cast", "lat"],
"banner": "yaske.png",
+18
View File
@@ -3,6 +3,24 @@
# httptools
# --------------------------------------------------------------------------------
# Fix para error de validación del certificado del tipo:
# [downloadpage] Response code: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)>
# [downloadpage] Response error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
# Fix desde la página: https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error
#-----------------------------------------------------------------------
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
#-----------------------------------------------------------------------
import inspect
import cookielib
import gzip
@@ -846,7 +846,7 @@ msgid "Enter URL"
msgstr ""
msgctxt "#60089"
msgid "Enter the URL [Link to server / download]"
msgid "Enter the URL [Link to server/download]"
msgstr ""
msgctxt "#60090"
@@ -834,8 +834,8 @@ msgid "Enter URL"
msgstr "Inserisci URL"
msgctxt "#60089"
msgid "Enter the URL [Link to server / download]"
msgstr "Inserire l'URL [Link a server / download]"
msgid "Enter the URL [Link to server/download]"
msgstr "Inserire l'URL [Link a server/download]"
msgctxt "#60090"
msgid "Enter the URL [Direct link to video]."
-41
View File
@@ -1,41 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "adnstream.com/video/([a-zA-Z]+)",
"url": "http://www.adnstream.com/video/\\1/"
}
]
},
"free": true,
"id": "adnstream",
"name": "adnstream",
"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
}
]
}
-30
View File
@@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
from core import scrapertools
from platformcode import logger
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
# Saca el código del vídeo
if page_url.startswith("http://"):
try:
code = scrapertools.get_match(page_url, "http\://www.adnstream.com/video/([a-zA-Z]+)/")
except:
code = scrapertools.get_match(page_url, "http\://www.adnstream.tv/video/([a-zA-Z]+)/")
else:
code = page_url
# Lee la playlist
url = "http://www.adnstream.com/get_playlist.php?lista=video&param=" + code + "&c=463"
data = scrapertools.cache_page(url)
# Extrae la URL
media_url = scrapertools.get_match(data, "<jwplayer:file>([^<]+)</jwplayer:file>")
video_urls = [[scrapertools.get_filename_from_url(media_url)[-4:] + ' [adnstream]', media_url]]
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
-45
View File
@@ -1,45 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(http://www.(?:videoweed|bitvid)\\.[a-z]+/file/[a-zA-Z0-9]+)",
"url": "\\1"
},
{
"pattern": "(http://embed.(?:videoweed|bitvid)\\.[a-z]+/embed.php?v=[a-zA-Z0-9]+)",
"url": "\\1"
}
]
},
"free": true,
"id": "bitvidsx",
"name": "bitvidsx",
"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
}
]
}
-40
View File
@@ -1,40 +0,0 @@
# -*- coding: utf-8 -*-
import re
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(page_url).data
if "This video is not yet ready" in data:
return False, "[Bitvid] El fichero está en proceso todavía o ha sido eliminado"
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 = []
videourls = scrapertools.find_multiple_matches(data, 'src\s*:\s*[\'"]([^\'"]+)[\'"]')
if not videourls:
videourls = scrapertools.find_multiple_matches(data, '<source src=[\'"]([^\'"]+)[\'"]')
for videourl in videourls:
if videourl.endswith(".mpd"):
id = scrapertools.find_single_match(videourl, '/dash/(.*?)/')
videourl = "http://www.bitvid.sx/download.php%3Ffile=mm" + "%s.mp4" % id
videourl = re.sub(r'/dl(\d)*/', '/dl/', videourl)
ext = scrapertools.get_filename_from_url(videourl)[-4:]
videourl = videourl.replace("%3F", "?") + \
"|User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"
video_urls.append([ext + " [bitvid]", videourl])
return video_urls
+4 -11
View File
@@ -10,27 +10,21 @@ 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, "[Cloud] El archivo no existe o ha sido borrado"
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)
enc_data = scrapertools.find_single_match(data, "type='text/javascript'>(.*?)</script>")
dec_data = jsunpack.unpack(enc_data)
sources = scrapertools.find_single_match(dec_data, "sources:\[(.*?)]")
patron = "{file:(.*?)}"
matches = re.compile(patron, re.DOTALL).findall(sources)
scrapertools.printMatches(matches)
sources = scrapertools.find_single_match(data, "<source(.*?)</source")
patron = 'src="([^"]+)'
matches = scrapertools.find_multiple_matches(sources, patron)
for url in matches:
quality = 'm3u8'
video_url = url
@@ -39,5 +33,4 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
video_url = url[0]
quality = url[1].replace('label:','')
video_urls.append(['cloudvideo [%s]' % quality, video_url])
return video_urls
return video_urls
-42
View File
@@ -1,42 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "cloudy.ec/(?:embed.php\\?id=|v/)([A-z0-9]+)",
"url": "https://www.cloudy.ec/embed.php?id=\\1&playerPage=1"
}
]
},
"free": true,
"id": "cloudy",
"name": "cloudy",
"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/9e6doboo2n/cloudy1.png"
}
-29
View File
@@ -1,29 +0,0 @@
# -*- coding: utf-8 -*-
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(page_url).data
if "This video is being prepared" in data:
return False, "[Cloudy] El archivo no existe o ha sido borrado"
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
media_urls = scrapertools.find_multiple_matches(data, '<source src="([^"]+)"')
for mediaurl in media_urls:
title = "%s [cloudy]" % scrapertools.get_filename_from_url(mediaurl)[-4:]
mediaurl += "|User-Agent=Mozilla/5.0"
video_urls.append([title, mediaurl])
return video_urls
-41
View File
@@ -1,41 +0,0 @@
{
"active": true,
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "cnubis.com/plugins/mediaplayer/([^/]+/[^.]+.php\\?u\\=[A-Za-z0-9]+)",
"url": "http://cnubis.com/plugins/mediaplayer/\\1"
}
]
},
"free": true,
"id": "cnubis",
"name": "cnubis",
"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
}
]
}
-21
View File
@@ -1,21 +0,0 @@
# -*- coding: utf-8 -*-
from core import scrapertools
from platformcode import logger
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("page_url=" + page_url)
video_urls = []
data = scrapertools.cache_page(page_url)
media_url = scrapertools.find_single_match(data, 'file: "([^"]+)",.*?type: "([^"]+)"')
logger.info("media_url=" + media_url[0])
# URL del vídeo
video_urls.append(["." + media_url[1] + " [cnubis]", media_url[0].replace("https", "http")])
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
return video_urls
+1 -1
View File
@@ -5,7 +5,7 @@
"patterns": [
{
"pattern": "(?:thevideo.me|tvad.me|thevid.net|thevideo.ch|thevideo.us)/(?:embed-|)([A-z0-9]+)",
"url": "http://thevideo.me/embed-\\1.html"
"url": "https://thevideo.me/embed-\\1.html"
}
]
},
+12 -13
View File
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import urllib
from core import httptools
from core import scrapertools
from platformcode import logger
@@ -7,6 +8,7 @@ from platformcode import logger
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
return True, ""
data = httptools.downloadpage(page_url).data
if "File was deleted" in data or "Page Cannot Be Found" in data:
return False, "[thevideo.me] El archivo ha sido eliminado o no existe"
@@ -15,19 +17,16 @@ def test_video_exists(page_url):
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("url=" + page_url)
if not "embed" in page_url:
page_url = page_url.replace("http://thevideo.me/", "http://thevideo.me/embed-") + ".html"
data = httptools.downloadpage(page_url).data
var = scrapertools.find_single_match(data, 'vsign.player.*?\+ (\w+)')
mpri_Key = scrapertools.find_single_match(data, "%s='([^']+)'" %var)
data_vt = httptools.downloadpage("https://thevideo.me/vsign/player/%s" % mpri_Key).data
vt = scrapertools.find_single_match(data_vt, 'function\|([^\|]+)\|')
if "fallback" in vt:
vt = scrapertools.find_single_match(data_vt, 'jwConfig\|([^\|]+)\|')
media_urls = scrapertools.find_multiple_matches(data, '\{"file"\s*\:\s*"([^"]+)"\s*,\s*"label"\s*\:\s*"([^"]+)"')
video_urls = []
for media_url, label in media_urls:
media_url += "?direct=false&ua=1&vt=%s" % vt
post= {}
post = urllib.urlencode(post)
if not "embed" in page_url:
page_url = page_url.replace("https://thevideo.me/", "https://thevideo.me/embed-") + ".html"
url = httptools.downloadpage(page_url, follow_redirects=False, only_headers=True).headers.get("location", "")
data = httptools.downloadpage("https://vev.io/api/serve/video/" + scrapertools.find_single_match(url, "embed/([A-z0-9]+)"), post=post).data
bloque = scrapertools.find_single_match(data, 'qualities":\{(.*?)\}')
matches = scrapertools.find_multiple_matches(bloque, '"([^"]+)":"([^"]+)')
for res, media_url in matches:
video_urls.append(
[scrapertools.get_filename_from_url(media_url)[-4:] + " (" + label + ") [thevideo.me]", media_url])
[scrapertools.get_filename_from_url(media_url)[-4:] + " (" + res + ") [thevideo.me]", media_url])
return video_urls
+4
View File
@@ -9,6 +9,10 @@
{
"pattern": "(vshare.eu/embed-[a-zA-Z0-9/-]+.html)",
"url": "http://\\1"
},
{
"pattern": "(vshare.eu/[a-zA-Z0-9/-]+.htm)",
"url": "http://\\1"
}
]
},
+3 -8
View File
@@ -10,22 +10,19 @@ from lib import jsunpack
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
if httptools.downloadpage(page_url).code != 200:
return False, "El archivo no existe en vShare o ha sido borrado."
response = httptools.downloadpage(page_url)
if response.code != 200 or "No longer available!" in response.data:
return False, "[vshare] El archivo no existe o ha sido borrado."
else:
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
flowplayer = re.search("url: [\"']([^\"']+)", data)
if flowplayer:
return [["FLV", flowplayer.group(1)]]
video_urls = []
try:
jsUnpack = jsunpack.unpack(data)
@@ -35,7 +32,6 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
logger.debug("Values: " + fields.group(1))
logger.debug("Substract: " + fields.group(2))
substract = int(fields.group(2))
arrayResult = [chr(int(value) - substract) for value in fields.group(1).split(",")]
strResult = "".join(arrayResult)
logger.debug(strResult)
@@ -46,5 +42,4 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
except:
url = scrapertools.find_single_match(data,'<source src="([^"]+)')
video_urls.append(["MP4", url])
return video_urls