@@ -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,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",
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
"thumbnail": "gnula.png",
|
||||
"banner": "gnula.png",
|
||||
"categories": [
|
||||
"movie"
|
||||
"movie",
|
||||
"vos"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
|
||||
@@ -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,7 +1,7 @@
|
||||
{
|
||||
"id": "peliculasrey",
|
||||
"name": "peliculasrey",
|
||||
"active": true,
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "peliculasrey.png",
|
||||
|
||||
@@ -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,7 +1,7 @@
|
||||
{
|
||||
"id": "yaske",
|
||||
"name": "Yaske",
|
||||
"active": true,
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"banner": "yaske.png",
|
||||
|
||||
@@ -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]."
|
||||
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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¶m=" + 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
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -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| |<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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user