This commit is contained in:
alfa_addon_10
2017-08-09 01:26:26 +02:00
26 changed files with 722 additions and 957 deletions
+12 -7
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.alfa" name="Alfa" version="0.1.1" provider-name="Alfa Addon"> <addon id="plugin.video.alfa" name="Alfa" version="1.5.1" provider-name="Alfa Addon">
<requires> <requires>
<import addon="xbmc.python" version="2.1.0"/> <import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.libtorrent" optional="true"/> <import addon="script.module.libtorrent" optional="true"/>
@@ -18,12 +18,17 @@
<screenshot>resources/media/general/ss/4.jpg</screenshot> <screenshot>resources/media/general/ss/4.jpg</screenshot>
</assets> </assets>
<news>[B]Estos son los cambios para esta versión:[/B] <news>[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Canales agreados y arreglos[/B][/COLOR] [COLOR green][B]Canales arreglos[/B][/COLOR]
[I]- cinetux [I]- yaske
- bajui2 - pelifox
- seriesblanco[/I] - ver-pelis[/I]
[COLOR green][B]Servidor arreglado[/B][/COLOR]
[COLOR blue]Gracias a [COLOR yellow]devalls[/COLOR] y [COLOR yellow]j2331223[/COLOR] por su colaboración en esta versión.[/COLOR] - gvideo
[COLOR green][B]Novedades y mejoras[/B][/COLOR]
[I] - arreglos internos
- Directos - Nueva sección de canales con enlaces directos: Gvideo y vimeo
- videoteca - problemas con unicode fixed
- compatibilidad con la biblioteca de pelisalacarta[/I]
</news> </news>
<description lang="es">Descripción en Español</description> <description lang="es">Descripción en Español</description>
<summary lang="en">English summary</summary> <summary lang="en">English summary</summary>
@@ -15,6 +15,7 @@
], ],
"categories": [ "categories": [
"movie", "movie",
"direct",
"latino" "latino"
], ],
"settings": [ "settings": [
+1
View File
@@ -28,6 +28,7 @@
], ],
"categories": [ "categories": [
"latino", "latino",
"direct",
"movie" "movie"
], ],
"settings": [ "settings": [
-53
View File
@@ -1,53 +0,0 @@
{
"active": true,
"changes": [
{
"date": "18/07/2017",
"description": "Versión incial"
}
],
"find_videos": {
"ignore_urls": [],
"patterns": [
{
"pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)",
"url": "http://docs.google.com/get_video_info?docid=\\1"
},
{
"pattern": "(?s)https://drive.google.com/file/d/(.*?)/preview",
"url": "http://docs.google.com/get_video_info?docid=\\1"
}
]
},
"free": true,
"id": "gvideo",
"name": "gvideo",
"settings": [
{
"default": false,
"enabled": true,
"id": "black_list",
"label": "Incluir en lista negra",
"type": "bool",
"visible": true
},
{
"default": 0,
"enabled": true,
"id": "favorites_servers_list",
"label": "Incluir en lista de favoritos",
"lvalues": [
"No",
"1",
"2",
"3",
"4",
"5"
],
"type": "list",
"visible": false
}
],
"version": 1
}
@@ -18,6 +18,7 @@
} }
], ],
"categories": [ "categories": [
"direct",
"movie" "movie"
] ]
} }
@@ -20,6 +20,7 @@
"categories": [ "categories": [
"movie", "movie",
"latino", "latino",
"direct",
"VOS" "VOS"
] ]
} }
+1
View File
@@ -23,6 +23,7 @@
], ],
"categories": [ "categories": [
"latino", "latino",
"direct",
"movie" "movie"
], ],
"settings": [ "settings": [
+22 -17
View File
@@ -9,6 +9,8 @@ from core import logger
from core import scrapertools from core import scrapertools
from core import tmdb from core import tmdb
from core.item import Item from core.item import Item
from core import servertools
tgenero = {"Drama": "https://s16.postimg.org/94sia332d/drama.png", tgenero = {"Drama": "https://s16.postimg.org/94sia332d/drama.png",
u"Accción": "https://s3.postimg.org/y6o9puflv/accion.png", u"Accción": "https://s3.postimg.org/y6o9puflv/accion.png",
@@ -225,6 +227,7 @@ def findvideos(item):
logger.info() logger.info()
itemlist = [] itemlist = []
templist = [] templist = []
video_list = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron = '<li data-quality=(.*?) data-lang=(.*?)><a href=(.*?) title=.*?' patron = '<li data-quality=(.*?) data-lang=(.*?)><a href=(.*?) title=.*?'
@@ -236,9 +239,9 @@ def findvideos(item):
language=lang, language=lang,
url=url url=url
)) ))
logger.debug('templist: %s'%templist)
for videoitem in templist: for videoitem in templist:
logger.debug('videoitem.language: %s'%videoitem.language)
data = httptools.downloadpage(videoitem.url).data data = httptools.downloadpage(videoitem.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
id = scrapertools.find_single_match(data, 'var _SOURCE =.*?source:(.*?),') id = scrapertools.find_single_match(data, 'var _SOURCE =.*?source:(.*?),')
@@ -247,24 +250,26 @@ def findvideos(item):
sub = sub.replace('\\', '') sub = sub.replace('\\', '')
else: else:
sub = '' sub = ''
new_url = 'http://iplay.one/api/embed?id=%s&token=8908d9f846&%s' % (id, sub) new_url = 'https://onevideo.tv/api/player?key=90503e3de26d45e455b55e9dc54f015b3d1d4150&link' \
'=%s&srt=%s' % (id, sub)
data = httptools.downloadpage(new_url).data data = httptools.downloadpage(new_url).data
patron = 'file":"(.*?)","label":"(.*?)","type":".*?"}' url = scrapertools.find_single_match (data, '<iframe src="(.*?preview)"')
matches = matches = re.compile(patron, re.DOTALL).findall(data) title = videoitem.contentTitle + ' (' + audio[videoitem.language] + ')'
logger.debug('url: %s'%url)
video_list.extend(servertools.find_video_items(data=url))
for urls in video_list:
if urls.language=='':
urls.language = videoitem.language
urls.title = item.title+'(%s) (%s)'%(urls.language, urls.server)
logger.debug('video_list: %s'%video_list)
#itemlist.append(item.clone(title= title, url = url, action = 'play', subtitle = sub))
for video_url in video_list:
video_url.channel = item.channel
video_url.action ='play'
for scrapedurl, quality in matches:
title = videoitem.contentTitle + ' (' + quality + ') (' + audio[videoitem.language] + ')'
url = scrapedurl.replace('\\', '')
itemlist.append(item.clone(title=title,
action='play',
url=url,
subtitle=sub,
server='directo',
quality=quality,
language='lang'
))
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append( itemlist.append(
@@ -275,7 +280,7 @@ def findvideos(item):
extra="findvideos", extra="findvideos",
contentTitle=item.contentTitle contentTitle=item.contentTitle
)) ))
return itemlist return video_list
def newest(categoria): def newest(categoria):
@@ -17,6 +17,7 @@
"categories": [ "categories": [
"movie", "movie",
"tvshow", "tvshow",
"direct",
"vos" "vos"
], ],
"settings": [ "settings": [
+3 -2
View File
@@ -873,8 +873,9 @@ def overwrite_tools(item):
p_dialog = platformtools.dialog_progress_bg('alfa', heading) p_dialog = platformtools.dialog_progress_bg('alfa', heading)
p_dialog.update(0, '') p_dialog.update(0, '')
import glob show_list = []
show_list = glob.glob(filetools.join(videolibrarytools.TVSHOWS_PATH, u'/*/tvshow.nfo')) for path, folders, files in filetools.walk(videolibrarytools.TVSHOWS_PATH):
show_list.extend([filetools.join(path, f) for f in files if f == "tvshow.nfo"])
if show_list: if show_list:
t = float(100) / len(show_list) t = float(100) / len(show_list)
-438
View File
@@ -1,438 +0,0 @@
# -*- coding: utf-8 -*-
import re
import unicodedata
from threading import Thread
from core import config
from core import httptools
from core import logger
from core import scrapertools
from core import servertools
from core import tmdb
from core.item import Item
ACTION_SHOW_FULLSCREEN = 36
ACTION_GESTURE_SWIPE_LEFT = 511
ACTION_SELECT_ITEM = 7
ACTION_PREVIOUS_MENU = 10
ACTION_MOVE_LEFT = 1
ACTION_MOVE_RIGHT = 2
ACTION_MOVE_DOWN = 4
ACTION_MOVE_UP = 3
OPTION_PANEL = 6
OPTIONS_OK = 5
__modo_grafico__ = config.get_setting('modo_grafico', "ver-pelis")
# Para la busqueda en bing evitando baneos
def browser(url):
import mechanize
# Utilizamos Browser mechanize para saltar problemas con la busqueda en bing
br = mechanize.Browser()
# Browser options
br.set_handle_equiv(False)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(False)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
# br.set_debug_http(True)
# br.set_debug_redirects(True)
# br.set_debug_responses(True)
# User-Agent (this is cheating, ok?)
# br.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/7.1.7 Safari/537.85.16')]
# br.addheaders =[('Cookie','SRCHD=AF=QBRE; domain=.bing.com; expires=25 de febrero de 2018 13:00:28 GMT+1; MUIDB=3B942052D204686335322894D3086911; domain=www.bing.com;expires=24 de febrero de 2018 13:00:28 GMT+1')]
# Open some site, let's pick a random one, the first that pops in mind
r = br.open(url)
response = r.read()
print response
if "img,divreturn" in response:
r = br.open("http://ssl-proxy.my-addr.org/myaddrproxy.php/" + url)
print "prooooxy"
response = r.read()
return response
api_key = "2e2160006592024ba87ccdf78c28f49f"
api_fankey = "dffe90fba4d02c199ae7a9e71330c987"
def mainlist(item):
logger.info()
itemlist = []
i = 0
global i
itemlist.append(
item.clone(title="[COLOR oldlace][B]Películas[/B][/COLOR]", action="scraper", url="http://ver-pelis.me/ver/",
thumbnail="http://imgur.com/36xALWc.png", fanart="http://imgur.com/53dhEU4.jpg",
contentType="movie"))
itemlist.append(item.clone(title="[COLOR oldlace][B]Películas en Español[/B][/COLOR]", action="scraper",
url="http://ver-pelis.me/ver/espanol/", thumbnail="http://imgur.com/36xALWc.png",
fanart="http://imgur.com/53dhEU4.jpg", contentType="movie"))
itemlist.append(itemlist[-1].clone(title="[COLOR orangered][B]Buscar[/B][/COLOR]", action="search",
thumbnail="http://imgur.com/ebWyuGe.png", fanart="http://imgur.com/53dhEU4.jpg",
contentType="tvshow"))
return itemlist
def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = "http://ver-pelis.me/ver/buscar?s=" + texto
item.extra = "search"
if texto != '':
return scraper(item)
def scraper(item):
logger.info()
itemlist = []
url_next_page = ""
global i
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data)
patron = scrapertools.find_multiple_matches(data,
'<a class="thumb cluetip".*?href="([^"]+)".*?src="([^"]+)" alt="([^"]+)".*?"res">([^"]+)</span>')
if len(patron) > 20:
if item.next_page != 20:
url_next_page = item.url
patron = patron[:20]
next_page = 20
item.i = 0
else:
patron = patron[item.i:][:20]
next_page = 20
url_next_page = item.url
for url, thumb, title, cuality in patron:
title = re.sub(r"Imagen", "", title)
title = ''.join((c for c in unicodedata.normalize('NFD', unicode(title.decode('utf-8'))) if
unicodedata.category(c) != 'Mn')).encode("ascii", "ignore")
titulo = "[COLOR floralwhite]" + title + "[/COLOR]" + " " + "[COLOR crimson][B]" + cuality + "[/B][/COLOR]"
title = re.sub(r"!|\/.*", "", title).strip()
if item.extra != "search":
item.i += 1
new_item = item.clone(action="findvideos", title=titulo, url=url, thumbnail=thumb, fulltitle=title,
contentTitle=title, contentType="movie", library=True)
new_item.infoLabels['year'] = get_year(url)
itemlist.append(new_item)
## Paginación
if url_next_page:
itemlist.append(item.clone(title="[COLOR crimson]Siguiente >>[/COLOR]", url=url_next_page, next_page=next_page,
thumbnail="http://imgur.com/w3OMy2f.png", i=item.i))
try:
from core import tmdb
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
for item in itemlist:
if not "Siguiente >>" in item.title:
if "0." in str(item.infoLabels['rating']):
item.infoLabels['rating'] = "[COLOR indianred]Sin puntuacíon[/COLOR]"
else:
item.infoLabels['rating'] = "[COLOR orange]" + str(item.infoLabels['rating']) + "[/COLOR]"
item.title = item.title + " " + str(item.infoLabels['rating'])
except:
pass
for item_tmdb in itemlist:
logger.info(str(item_tmdb.infoLabels['tmdb_id']))
return itemlist
def findvideos(item):
logger.info()
itemlist = []
th = Thread(target=get_art(item))
th.setDaemon(True)
th.start()
data = httptools.downloadpage(item.url).data
data_post = scrapertools.find_single_match(data, "type: 'POST'.*?id: (.*?),slug: '(.*?)'")
if data_post:
post = 'id=' + data_post[0] + '&slug=' + data_post[1]
data_info = httptools.downloadpage('http://ver-pelis.me/ajax/cargar_video.php', post=post).data
enlaces = scrapertools.find_multiple_matches(data_info,
"</i> (\w+ \w+).*?<a onclick=\"load_player\('([^']+)','([^']+)', ([^']+),.*?REPRODUCIR\">([^']+)</a>")
for server, id_enlace, name, number, idioma_calidad in enlaces:
if "SUBTITULOS" in idioma_calidad and not "P" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("SUBTITULOS", "VO")
idioma_calidad = idioma_calidad.replace("VO", "[COLOR orangered] VO[/COLOR]")
elif "SUBTITULOS" in idioma_calidad and "P" in idioma_calidad:
idioma_calidad = "[COLOR indianred] " + idioma_calidad + "[/COLOR]"
elif "LATINO" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("LATINO", "[COLOR red]LATINO[/COLOR]")
elif "Español" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("Español", "[COLOR crimson]ESPAÑOL[/COLOR]")
if "HD" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("HD", "[COLOR crimson] HD[/COLOR]")
elif "720" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("720", "[COLOR firebrick] 720[/COLOR]")
elif "TS" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("TS", "[COLOR brown] TS[/COLOR]")
elif "CAM" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("CAM", "[COLOR darkkakhi] CAM[/COLOR]")
url = "http://ver-pelis.me/ajax/video.php?id=" + id_enlace + "&slug=" + name + "&quality=" + number
if not "Ultra" in server:
server = "[COLOR cyan][B]" + server + "[/B][/COLOR]"
extra = "yes"
else:
server = "[COLOR yellow][B]" + server + "[/B][/COLOR]"
extra = ""
title = server.strip() + " " + idioma_calidad
itemlist.append(Item(channel=item.channel, action="play", title=title, url=url, fanart=item.fanart,
thumbnail=item.thumbnail, fulltitle=item.title, extra=extra, folder=True))
if item.library and config.get_videolibrary_support() and len(itemlist) > 0:
infoLabels = {'tmdb_id': item.infoLabels['tmdb_id'],
'title': item.infoLabels['title']}
itemlist.append(Item(channel=item.channel, title="Añadir esta película a la videoteca",
action="add_pelicula_to_library", url=item.url, infoLabels=infoLabels,
text_color="0xFFf7f7f7",
thumbnail='http://imgur.com/gPyN1Tf.png'))
else:
itemlist.append(
Item(channel=item.channel, action="", title="[COLOR red][B]Upps!..Archivo no encontrado...[/B][/COLOR]",
thumbnail=item.thumbnail))
return itemlist
def play(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r'\\', '', data)
item.url = scrapertools.find_single_match(data, 'src="([^"]+)"')
data = httptools.downloadpage(item.url).data
if item.extra != "yes":
patron = '"label":(.*?),.*?"type":"(.*?)",.*?"file":"(.*?)"'
matches = re.compile(patron, re.DOTALL).findall(data)
if not matches:
patron = '"label":(.*?),.*?"file":"(.*?)"'
matches = re.compile(patron, re.DOTALL).findall(data)
for dato_a, type, dato_b in matches:
if 'http' in dato_a:
url = dato_a
calidad = dato_b
else:
url = dato_b
calidad = dato_a
url = url.replace('\\', '')
type = type.replace('\\', '')
itemlist.append(
Item(channel=item.channel, url=url, action="play", title=item.fulltitle + " (" + dato_a + ")",
folder=False))
else:
url = scrapertools.find_single_match(data, 'window.location="([^"]+)"')
videolist = servertools.find_video_items(data=url)
for video in videolist:
itemlist.append(Item(channel=item.channel, url=video.url, server=video.server,
title="[COLOR floralwhite][B]" + video.server + "[/B][/COLOR]", action="play",
folder=False))
return itemlist
def fanartv(item, id_tvdb, id, images={}):
headers = [['Content-Type', 'application/json']]
from core import jsontools
if item.contentType == "movie":
url = "http://webservice.fanart.tv/v3/movies/%s?api_key=cab16e262d72fea6a6843d679aa10300" \
% id
else:
url = "http://webservice.fanart.tv/v3/tv/%s?api_key=cab16e262d72fea6a6843d679aa10300" % id_tvdb
try:
data = jsontools.load(scrapertools.downloadpage(url, headers=headers))
if data and not "error message" in data:
for key, value in data.items():
if key not in ["name", "tmdb_id", "imdb_id", "thetvdb_id"]:
images[key] = value
else:
images = []
except:
images = []
return images
def get_art(item):
logger.info()
id = item.infoLabels['tmdb_id']
check_fanart = item.infoLabels['fanart']
if item.contentType != "movie":
tipo_ps = "tv"
else:
tipo_ps = "movie"
if not id:
year = item.extra
otmdb = tmdb.Tmdb(texto_buscado=item.fulltitle, year=year, tipo=tipo_ps)
id = otmdb.result.get("id")
if id == None:
otmdb = tmdb.Tmdb(texto_buscado=item.fulltitle, tipo=tipo_ps)
id = otmdb.result.get("id")
if id == None:
if item.contentType == "movie":
urlbing_imdb = "http://www.bing.com/search?q=%s+%s+tv+series+site:imdb.com" % (
item.fulltitle.replace(' ', '+'), year)
data = browser(urlbing_imdb)
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|http://ssl-proxy.my-addr.org/myaddrproxy.php/", "", data)
subdata_imdb = scrapertools.find_single_match(data,
'<li class="b_algo">(.*?)h="ID.*?<strong>.*?TV Series')
else:
urlbing_imdb = "http://www.bing.com/search?q=%s+%s+site:imdb.com" % (
item.fulltitle.replace(' ', '+'), year)
data = browser(urlbing_imdb)
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|http://ssl-proxy.my-addr.org/myaddrproxy.php/", "", data)
subdata_imdb = scrapertools.find_single_match(data, '<li class="b_algo">(.*?)h="ID.*?<strong>')
try:
imdb_id = scrapertools.get_match(subdata_imdb, '<a href=.*?http.*?imdb.com/title/(.*?)/.*?"')
except:
try:
imdb_id = scrapertools.get_match(subdata_imdb,
'<a href=.*?http.*?imdb.com/.*?/title/(.*?)/.*?"')
except:
imdb_id = ""
otmdb = tmdb.Tmdb(external_id=imdb_id, external_source="imdb_id", tipo=tipo_ps, idioma_busqueda="es")
id = otmdb.result.get("id")
if id == None:
if "(" in item.fulltitle:
title = scrapertools.find_single_match(item.fulltitle, '\(.*?\)')
if item.contentType != "movie":
urlbing_imdb = "http://www.bing.com/search?q=%s+%s+tv+series+site:imdb.com" % (
title.replace(' ', '+'), year)
data = browser(urlbing_imdb)
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|http://ssl-proxy.my-addr.org/myaddrproxy.php/", "",
data)
subdata_imdb = scrapertools.find_single_match(data,
'<li class="b_algo">(.*?)h="ID.*?<strong>.*?TV Series')
else:
urlbing_imdb = "http://www.bing.com/search?q=%s+%s+site:imdb.com" % (
title.replace(' ', '+'), year)
data = browser(urlbing_imdb)
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|http://ssl-proxy.my-addr.org/myaddrproxy.php/", "",
data)
subdata_imdb = scrapertools.find_single_match(data,
'<li class="b_algo">(.*?)h="ID.*?<strong>')
try:
imdb_id = scrapertools.get_match(subdata_imdb,
'<a href=.*?http.*?imdb.com/title/(.*?)/.*?"')
except:
try:
imdb_id = scrapertools.get_match(subdata_imdb,
'<a href=.*?http.*?imdb.com/.*?/title/(.*?)/.*?"')
except:
imdb_id = ""
otmdb = tmdb.Tmdb(external_id=imdb_id, external_source="imdb_id", tipo=tipo_ps,
idioma_busqueda="es")
id = otmdb.result.get("id")
if not id:
fanart = item.fanart
id_tvdb = ""
imagenes = []
itmdb = tmdb.Tmdb(id_Tmdb=id, tipo=tipo_ps)
images = itmdb.result.get("images")
if images:
for key, value in images.iteritems():
for detail in value:
imagenes.append('http://image.tmdb.org/t/p/original' + detail["file_path"])
if len(imagenes) >= 4:
if imagenes[0] != check_fanart:
item.fanart = imagenes[0]
else:
item.fanart = imagenes[1]
if imagenes[1] != check_fanart and imagenes[1] != item.fanart and imagenes[2] != check_fanart:
item.extra = imagenes[1] + "|" + imagenes[2]
else:
if imagenes[1] != check_fanart and imagenes[1] != item.fanart:
item.extra = imagenes[1] + "|" + imagenes[3]
elif imagenes[2] != check_fanart:
item.extra = imagenes[2] + "|" + imagenes[3]
else:
item.extra = imagenes[3] + "|" + imagenes[3]
elif len(imagenes) == 3:
if imagenes[0] != check_fanart:
item.fanart = imagenes[0]
else:
item.fanart = imagenes[1]
if imagenes[1] != check_fanart and imagenes[1] != item.fanart and imagenes[2] != check_fanart:
item.extra = imagenes[1] + "|" + imagenes[2]
else:
if imagenes[1] != check_fanart and imagenes[1] != item.fanart:
item.extra = imagenes[0] + "|" + imagenes[1]
elif imagenes[2] != check_fanart:
item.extra = imagenes[1] + "|" + imagenes[2]
else:
item.extra = imagenes[1] + "|" + imagenes[1]
elif len(imagenes) == 2:
if imagenes[0] != check_fanart:
item.fanart = imagenes[0]
else:
item.fanart = imagenes[1]
if imagenes[1] != check_fanart and imagenes[1] != item.fanart:
item.extra = imagenes[0] + "|" + imagenes[1]
else:
item.extra = imagenes[1] + "|" + imagenes[0]
elif len(imagenes) == 1:
item.extra = imagenes + "|" + imagenes
else:
item.extra = item.fanart + "|" + item.fanart
images_fanarttv = fanartv(item, id_tvdb, id)
if images_fanarttv:
if item.contentType == "movie":
if images_fanarttv.get("moviedisc"):
item.thumbnail = images_fanarttv.get("moviedisc")[0].get("url")
elif images_fanarttv.get("hdmovielogo"):
item.thumbnail = images_fanarttv.get("hdmovielogo")[0].get("url")
elif images_fanarttv.get("moviethumb"):
item.thumbnail = images_fanarttv.get("moviethumb")[0].get("url")
elif images_fanarttv.get("moviebanner"):
item.thumbnail_ = images_fanarttv.get("moviebanner")[0].get("url")
else:
item.thumbnail = item.thumbnail
else:
if images_fanarttv.get("hdtvlogo"):
item.thumbnail = images_fanarttv.get("hdtvlogo")[0].get("url")
elif images_fanarttv.get("clearlogo"):
item.thumbnail = images_fanarttv.get("hdmovielogo")[0].get("url")
if images_fanarttv.get("tvbanner"):
item.extra = item.extra + "|" + images_fanarttv.get("tvbanner")[0].get("url")
elif images_fanarttv.get("tvthumb"):
item.extra = item.extra + "|" + images_fanarttv.get("tvthumb")[0].get("url")
else:
item.extra = item.extra + "|" + item.thumbnail
else:
item.extra = item.extra + "|" + item.thumbnail
def get_year(url):
data = httptools.downloadpage(url).data
year = scrapertools.find_single_match(data, '<p><strong>Año:</strong>(.*?)</p>')
if year == "":
year = " "
return year
@@ -1,5 +1,5 @@
{ {
"id": "ver-pelis", "id": "verpelis",
"name": "Ver-pelis", "name": "Ver-pelis",
"active": true, "active": true,
"adult": false, "adult": false,
@@ -19,7 +19,8 @@
"categories": [ "categories": [
"torrent", "torrent",
"movie", "movie",
"tvshow" "tvshow",
"direct"
], ],
"settings": [ "settings": [
{ {
+213
View File
@@ -0,0 +1,213 @@
# -*- coding: utf-8 -*-
import re
from core import config
from core import httptools
from core import logger
from core import scrapertools
from core import servertools
from core import tmdb
from core.item import Item
__modo_grafico__ = config.get_setting('modo_grafico', "ver-pelis")
host = "http://ver-pelis.me"
def mainlist(item):
logger.info()
itemlist = []
i = 0
global i
itemlist.append(
item.clone(title = "[COLOR oldlace]Películas[/COLOR]", action = "scraper", url = host + "/ver/",
thumbnail = "http://imgur.com/36xALWc.png", fanart = "http://imgur.com/53dhEU4.jpg",
contentType = "movie"))
itemlist.append(item.clone(title = "[COLOR oldlace]Películas por año[/COLOR]", action = "categoria_anno",
url = host, thumbnail = "http://imgur.com/36xALWc.png", extra = "Por año",
fanart = "http://imgur.com/53dhEU4.jpg", contentType = "movie"))
itemlist.append(item.clone(title = "[COLOR oldlace]Películas en Latino[/COLOR]", action = "scraper",
url = host + "/ver/latino/", thumbnail = "http://imgur.com/36xALWc.png",
fanart = "http://imgur.com/53dhEU4.jpg", contentType = "movie"))
itemlist.append(item.clone(title = "[COLOR oldlace]Películas en Español[/COLOR]", action = "scraper",
url = host + "/ver/subtituladas/", thumbnail = "http://imgur.com/36xALWc.png",
fanart = "http://imgur.com/53dhEU4.jpg", contentType = "movie"))
itemlist.append(item.clone(title = "[COLOR oldlace]Películas Subtituladas[/COLOR]", action = "scraper",
url = host + "/ver/espanol/", thumbnail = "http://imgur.com/36xALWc.png",
fanart = "http://imgur.com/53dhEU4.jpg", contentType = "movie"))
itemlist.append(item.clone(title = "[COLOR oldlace]Por Género[/COLOR]", action = "categoria_anno",
url = host, thumbnail = "http://imgur.com/36xALWc.png", extra = "Categorias",
fanart = "http://imgur.com/53dhEU4.jpg", contentType = "movie"))
itemlist.append(itemlist[-1].clone(title = "[COLOR orangered]Buscar[/COLOR]", action = "search",
thumbnail = "http://imgur.com/ebWyuGe.png", fanart = "http://imgur.com/53dhEU4.jpg",
contentType = "tvshow"))
return itemlist
def categoria_anno(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
bloque = scrapertools.find_single_match(data, 'mobile_menu.*?(%s.*?)</ul>' %item.extra)
logger.info("Intel44 %s" %bloque)
patron = '(?is)<li.*?a href="([^"]+)'
patron += '.*?title="[^"]+">([^<]+)'
match = scrapertools.find_multiple_matches(bloque, patron)
for url, titulo in match:
itemlist.append(Item(
channel = item.channel,
action = "scraper",
title = titulo,
url = url
))
return itemlist
def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = host + "/ver/buscar?s=" + texto
item.extra = "search"
if texto != '':
return scraper(item)
def scraper(item):
logger.info()
itemlist = []
url_next_page = ""
global i
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data)
patron = scrapertools.find_multiple_matches(data,
'<a class="thumb cluetip".*?href="([^"]+)".*?src="([^"]+)" alt="([^"]+)".*?"res">([^"]+)</span>')
if len(patron) > 20:
if item.next_page != 20:
url_next_page = item.url
patron = patron[:20]
next_page = 20
item.i = 0
else:
patron = patron[item.i:][:20]
next_page = 20
url_next_page = item.url
for url, thumb, title, cuality in patron:
title = re.sub(r"Imagen", "", title)
titulo = "[COLOR floralwhite]" + title + "[/COLOR]" + " " + "[COLOR crimson][B]" + cuality + "[/B][/COLOR]"
title = re.sub(r"!|\/.*", "", title).strip()
if item.extra != "search":
item.i += 1
new_item = item.clone(action="findvideos", title=titulo, url=url, thumbnail=thumb, fulltitle=title,
contentTitle=title, contentType="movie", library=True)
new_item.infoLabels['year'] = get_year(url)
itemlist.append(new_item)
## Paginación
if url_next_page:
itemlist.append(item.clone(title="[COLOR crimson]Siguiente >>[/COLOR]", url=url_next_page, next_page=next_page,
thumbnail="http://imgur.com/w3OMy2f.png", i=item.i))
try:
from core import tmdb
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
for item in itemlist:
if not "Siguiente >>" in item.title:
if "0." in str(item.infoLabels['rating']):
item.infoLabels['rating'] = "[COLOR indianred]Sin puntuacíon[/COLOR]"
else:
item.infoLabels['rating'] = "[COLOR orange]" + str(item.infoLabels['rating']) + "[/COLOR]"
item.title = item.title + " " + str(item.infoLabels['rating'])
except:
pass
for item_tmdb in itemlist:
logger.info(str(item_tmdb.infoLabels['tmdb_id']))
return itemlist
def findvideos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
data_post = scrapertools.find_single_match(data, "type: 'POST'.*?id: (.*?),slug: '(.*?)'")
if data_post:
post = 'id=' + data_post[0] + '&slug=' + data_post[1]
data_info = httptools.downloadpage(host + '/ajax/cargar_video.php', post=post).data
enlaces = scrapertools.find_multiple_matches(data_info,
"</i> (\w+ \w+).*?<a onclick=\"load_player\('([^']+)','([^']+)', ([^']+),.*?REPRODUCIR\">([^']+)</a>")
for server, id_enlace, name, number, idioma_calidad in enlaces:
if "SUBTITULOS" in idioma_calidad and not "P" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("SUBTITULOS", "VO")
idioma_calidad = idioma_calidad.replace("VO", "[COLOR orangered] VO[/COLOR]")
elif "SUBTITULOS" in idioma_calidad and "P" in idioma_calidad:
idioma_calidad = "[COLOR indianred] " + idioma_calidad + "[/COLOR]"
elif "LATINO" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("LATINO", "[COLOR red]LATINO[/COLOR]")
elif "Español" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("Español", "[COLOR crimson]ESPAÑOL[/COLOR]")
if "HD" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("HD", "[COLOR crimson] HD[/COLOR]")
elif "720" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("720", "[COLOR firebrick] 720[/COLOR]")
elif "TS" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("TS", "[COLOR brown] TS[/COLOR]")
elif "CAM" in idioma_calidad:
idioma_calidad = idioma_calidad.replace("CAM", "[COLOR darkkakhi] CAM[/COLOR]")
url = host + "/ajax/video.php?id=" + id_enlace + "&slug=" + name + "&quality=" + number
if not "Ultra" in server:
server = "[COLOR cyan][B]" + server + "[/B][/COLOR]"
extra = ""
else:
server = "[COLOR yellow][B]" + server + "[/B][/COLOR]"
extra = "yes"
title = server.strip() + " " + idioma_calidad
itemlist.append(Item(channel=item.channel, action="play", title=title, url=url, fanart=item.fanart,
thumbnail=item.thumbnail, fulltitle=item.title, extra=extra, folder=True))
if item.library and config.get_videolibrary_support() and len(itemlist) > 0:
infoLabels = {'tmdb_id': item.infoLabels['tmdb_id'],
'title': item.infoLabels['title']}
itemlist.append(Item(channel=item.channel, title="Añadir esta película a la videoteca",
action="add_pelicula_to_library", url=item.url, infoLabels=infoLabels,
text_color="0xFFf7f7f7",
thumbnail='http://imgur.com/gPyN1Tf.png'))
else:
itemlist.append(
Item(channel=item.channel, action="", title="[COLOR red][B]Upps!..Archivo no encontrado...[/B][/COLOR]",
thumbnail=item.thumbnail))
return itemlist
def play(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r'\\', '', data)
item.url = scrapertools.find_single_match(data, 'src="([^"]+)"')
data = httptools.downloadpage(item.url).data
url = scrapertools.find_single_match(data, 'window.location="([^"]+)"')
if item.extra == "yes":
data = httptools.downloadpage(url).data
url = scrapertools.find_single_match(data, '(?is)iframe src="([^"]+)"')
videolist = servertools.find_video_items(data=url)
for video in videolist:
itemlist.append(Item(channel=item.channel, url=video.url, server=video.server,
title="[COLOR floralwhite][B]" + video.server + "[/B][/COLOR]", action="play",
folder=False))
return itemlist
def get_year(url):
data = httptools.downloadpage(url).data
year = scrapertools.find_single_match(data, '<p><strong>Año:</strong>(.*?)</p>')
if year == "":
year = " "
return year
+34 -25
View File
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import glob
import os import os
from core import config from core import config
@@ -36,16 +35,18 @@ def list_movies(item):
logger.info() logger.info()
itemlist = [] itemlist = []
for f in glob.glob(filetools.join(videolibrarytools.MOVIES_PATH, u'/*/*.nfo')): for raiz, subcarpetas, ficheros in filetools.walk(videolibrarytools.MOVIES_PATH):
nfo_path = f for f in ficheros:
if f.endswith(".nfo"):
nfo_path = filetools.join(raiz, f)
head_nfo, new_item = videolibrarytools.read_nfo(nfo_path) head_nfo, new_item = videolibrarytools.read_nfo(nfo_path)
new_item.nfo = nfo_path new_item.nfo = nfo_path
new_item.path = filetools.dirname(f) new_item.path = raiz
new_item.thumbnail = new_item.contentThumbnail new_item.thumbnail = new_item.contentThumbnail
new_item.text_color = "blue" new_item.text_color = "blue"
if not filetools.exists(filetools.join(videolibrarytools.MOVIES_PATH, new_item.strm_path)): if not filetools.exists(filetools.join(new_item.path, filetools.basename(new_item.strm_path))):
# Si se ha eliminado el strm desde la bilbioteca de kodi, no mostrarlo # Si se ha eliminado el strm desde la bilbioteca de kodi, no mostrarlo
continue continue
@@ -92,13 +93,15 @@ def list_tvshows(item):
itemlist = [] itemlist = []
# Obtenemos todos los tvshow.nfo de la videoteca de SERIES recursivamente # Obtenemos todos los tvshow.nfo de la videoteca de SERIES recursivamente
for f in glob.glob(filetools.join(videolibrarytools.TVSHOWS_PATH, u'/*/tvshow.nfo')): for raiz, subcarpetas, ficheros in filetools.walk(videolibrarytools.TVSHOWS_PATH):
# logger.debug("file es %s" % f) for f in ficheros:
if f == "tvshow.nfo":
head_nfo, item_tvshow = videolibrarytools.read_nfo(f) tvshow_path = filetools.join(raiz, f)
# logger.debug(tvshow_path)
head_nfo, item_tvshow = videolibrarytools.read_nfo(tvshow_path)
item_tvshow.title = item_tvshow.contentTitle item_tvshow.title = item_tvshow.contentTitle
item_tvshow.path = filetools.join(videolibrarytools.TVSHOWS_PATH, item_tvshow.path) item_tvshow.path = raiz
item_tvshow.nfo = f item_tvshow.nfo = tvshow_path
# Menu contextual: Marcar como visto/no visto # Menu contextual: Marcar como visto/no visto
visto = item_tvshow.library_playcounts.get(item_tvshow.contentTitle, 0) visto = item_tvshow.library_playcounts.get(item_tvshow.contentTitle, 0)
@@ -168,17 +171,16 @@ def get_seasons(item):
itemlist = [] itemlist = []
dict_temp = {} dict_temp = {}
raiz, carpetas_series, ficheros = filetools.walk(item.path).next()
# Menu contextual: Releer tvshow.nfo # Menu contextual: Releer tvshow.nfo
head_nfo, item_nfo = videolibrarytools.read_nfo(item.nfo) head_nfo, item_nfo = videolibrarytools.read_nfo(item.nfo)
# Miramos las temporadas que estén marcadas como vistas
if not hasattr(item_nfo, 'library_playcounts'):
item_nfo.library_playcounts = {}
if config.get_setting("no_pile_on_seasons", "videolibrary") == 2: # Siempre if config.get_setting("no_pile_on_seasons", "videolibrary") == 2: # Siempre
return get_episodes(item) return get_episodes(item)
for f in glob.glob1(item.path, u'*.json'): for f in ficheros:
if f.endswith('.json'):
season = f.split('x')[0] season = f.split('x')[0]
dict_temp[season] = "Temporada %s" % season dict_temp[season] = "Temporada %s" % season
@@ -231,12 +233,16 @@ def get_episodes(item):
# logger.debug("item:\n" + item.tostring('\n')) # logger.debug("item:\n" + item.tostring('\n'))
itemlist = [] itemlist = []
# Obtenemos los archivos de los episodios
raiz, carpetas_series, ficheros = filetools.walk(item.path).next()
# Menu contextual: Releer tvshow.nfo # Menu contextual: Releer tvshow.nfo
head_nfo, item_nfo = videolibrarytools.read_nfo(item.nfo) head_nfo, item_nfo = videolibrarytools.read_nfo(item.nfo)
# Crear un item en la lista para cada strm encontrado # Crear un item en la lista para cada strm encontrado
for f in glob.glob1(item.path, u'*.strm'): for i in ficheros:
season_episode = scrapertools.get_season_and_episode(f) if i.endswith('.strm'):
season_episode = scrapertools.get_season_and_episode(i)
if not season_episode: if not season_episode:
# El fichero no incluye el numero de temporada y episodio # El fichero no incluye el numero de temporada y episodio
continue continue
@@ -246,7 +252,7 @@ def get_episodes(item):
continue continue
# Obtener los datos del season_episode.nfo # Obtener los datos del season_episode.nfo
nfo_path = filetools.join(item.path, f).replace('.strm', '.nfo') nfo_path = filetools.join(raiz, i).replace('.strm', '.nfo')
head_nfo, epi = videolibrarytools.read_nfo(nfo_path) head_nfo, epi = videolibrarytools.read_nfo(nfo_path)
# Fijar el titulo del capitulo si es posible # Fijar el titulo del capitulo si es posible
@@ -530,16 +536,19 @@ def mark_season_as_watched(item):
# logger.debug("item:\n" + item.tostring('\n')) # logger.debug("item:\n" + item.tostring('\n'))
# Obtener el diccionario de episodios marcados # Obtener el diccionario de episodios marcados
tvshow_path = filetools.join(item.path, 'tvshow.nfo') f = filetools.join(item.path, 'tvshow.nfo')
head_nfo, it = videolibrarytools.read_nfo(tvshow_path) head_nfo, it = videolibrarytools.read_nfo(f)
if not hasattr(it, 'library_playcounts'): if not hasattr(it, 'library_playcounts'):
it.library_playcounts = {} it.library_playcounts = {}
# Obtenemos los archivos de los episodios
raiz, carpetas_series, ficheros = filetools.walk(item.path).next()
# Marcamos cada uno de los episodios encontrados de esta temporada # Marcamos cada uno de los episodios encontrados de esta temporada
episodios_marcados = 0 episodios_marcados = 0
for f in glob.glob1(item.path, u'*.strm'): for i in ficheros:
# if f.endswith(".strm"): if i.endswith(".strm"):
season_episode = scrapertools.get_season_and_episode(f) season_episode = scrapertools.get_season_and_episode(i)
if not season_episode: if not season_episode:
# El fichero no incluye el numero de temporada y episodio # El fichero no incluye el numero de temporada y episodio
continue continue
@@ -564,7 +573,7 @@ def mark_season_as_watched(item):
it = check_tvshow_playcount(it, item.contentSeason) it = check_tvshow_playcount(it, item.contentSeason)
# Guardamos los cambios en tvshow.nfo # Guardamos los cambios en tvshow.nfo
filetools.write(tvshow_path, head_nfo + it.tojson()) filetools.write(f, head_nfo + it.tojson())
item.infoLabels['playcount'] = item.playcount item.infoLabels['playcount'] = item.playcount
if config.is_xbmc(): if config.is_xbmc():
+1
View File
@@ -44,6 +44,7 @@
], ],
"categories": [ "categories": [
"latino", "latino",
"direct",
"movie" "movie"
], ],
"settings": [ "settings": [
+7
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re import re
import base64
from core import channeltools from core import channeltools
from core import config from core import config
@@ -11,6 +12,7 @@ from core import servertools
from core import tmdb from core import tmdb
from core.item import Item from core.item import Item
HOST = 'http://www.yaske.ro' HOST = 'http://www.yaske.ro'
parameters = channeltools.get_channel_parameters('yaske') parameters = channeltools.get_channel_parameters('yaske')
fanart_host = parameters['fanart'] fanart_host = parameters['fanart']
@@ -229,6 +231,11 @@ def findvideos(item):
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for url, idioma, calidad in matches: for url, idioma, calidad in matches:
if 'yaske' in url:
data = httptools.downloadpage(url).data
url_enc = scrapertoolsV2.find_single_match(data, "eval.*?'(.*?)'")
url_dec = base64.b64decode(url_enc)
url = scrapertoolsV2.find_single_match(url_dec, 'iframe src="(.*?)"')
sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(), sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(),
language=idioma.strip())) language=idioma.strip()))
+2 -2
View File
@@ -62,11 +62,11 @@ def getchanneltypes():
logger.info() logger.info()
# Lista de categorias # Lista de categorias
channel_types = ["movie", "tvshow", "anime", "documentary", "vos", "torrent", "latino"] channel_types = ["movie", "tvshow", "anime", "documentary", "vos", "direct", "torrent", "latino"]
dict_types_lang = {'movie': config.get_localized_string(30122), 'tvshow': config.get_localized_string(30123), dict_types_lang = {'movie': config.get_localized_string(30122), 'tvshow': config.get_localized_string(30123),
'anime': config.get_localized_string(30124), 'documentary': config.get_localized_string(30125), 'anime': config.get_localized_string(30124), 'documentary': config.get_localized_string(30125),
'vos': config.get_localized_string(30136), 'adult': config.get_localized_string(30126), 'vos': config.get_localized_string(30136), 'adult': config.get_localized_string(30126),
'latino': config.get_localized_string(30127)} 'latino': config.get_localized_string(30127), 'direct': config.get_localized_string(30137)}
if config.get_setting("adult_mode") != 0: if config.get_setting("adult_mode") != 0:
channel_types.append("adult") channel_types.append("adult")
+5 -7
View File
@@ -127,12 +127,11 @@ def save_movie(item):
base_name = unicode(filetools.validate_path(base_name.replace('/', '-')), "utf8").lower().encode("utf8") base_name = unicode(filetools.validate_path(base_name.replace('/', '-')), "utf8").lower().encode("utf8")
subcarpetas = os.listdir(MOVIES_PATH) for raiz, subcarpetas, ficheros in filetools.walk(MOVIES_PATH):
for c in subcarpetas: for c in subcarpetas:
code = scrapertools.find_single_match(c, '\[(.*?)\]') code = scrapertools.find_single_match(c, '\[(.*?)\]')
if code and code in item.infoLabels['code']: if code and code in item.infoLabels['code']:
path = filetools.join(MOVIES_PATH, c) path = filetools.join(raiz, c)
_id = code _id = code
break break
@@ -248,12 +247,11 @@ def save_tvshow(item, episodelist):
base_name = unicode(filetools.validate_path(base_name.replace('/', '-')), "utf8").lower().encode("utf8") base_name = unicode(filetools.validate_path(base_name.replace('/', '-')), "utf8").lower().encode("utf8")
subcarpetas = os.listdir(TVSHOWS_PATH) for raiz, subcarpetas, ficheros in filetools.walk(TVSHOWS_PATH):
for c in subcarpetas: for c in subcarpetas:
code = scrapertools.find_single_match(c, '\[(.*?)\]') code = scrapertools.find_single_match(c, '\[(.*?)\]')
if code and code in item.infoLabels['code']: if code and code in item.infoLabels['code']:
path = filetools.join(TVSHOWS_PATH, c) path = filetools.join(raiz, c)
_id = code _id = code
break break
@@ -348,7 +346,7 @@ def save_episodes(path, episodelist, serie, silent=False, overwrite=True):
news_in_playcounts = {} news_in_playcounts = {}
# Listamos todos los ficheros de la serie, asi evitamos tener que comprobar si existe uno por uno # Listamos todos los ficheros de la serie, asi evitamos tener que comprobar si existe uno por uno
ficheros = os.listdir(path) raiz, carpetas_series, ficheros = filetools.walk(path).next()
ficheros = [filetools.join(path, f) for f in ficheros] ficheros = [filetools.join(path, f) for f in ficheros]
# Silent es para no mostrar progreso (para videolibrary_service) # Silent es para no mostrar progreso (para videolibrary_service)
@@ -135,6 +135,7 @@
<string id="30124">Anime</string> <string id="30124">Anime</string>
<string id="30125">Documentals</string> <string id="30125">Documentals</string>
<string id="30126">Adults</string> <string id="30126">Adults</string>
<string id="30137">Directos</string>
<string id="30127">Llatí</string> <string id="30127">Llatí</string>
<string id="30128">Cerca de tràilers</string> <string id="30128">Cerca de tràilers</string>
<string id="30129">Adult</string> <string id="30129">Adult</string>
@@ -138,6 +138,7 @@
<string id="30125">Documentaries</string> <string id="30125">Documentaries</string>
<string id="30136">Original version</string> <string id="30136">Original version</string>
<string id="30126">Adult</string> <string id="30126">Adult</string>
<string id="30137">Direct</string>
<string id="30127">Latin</string> <string id="30127">Latin</string>
<string id="30128">Search Trailers</string> <string id="30128">Search Trailers</string>
<string id="30129">Adult</string> <string id="30129">Adult</string>
@@ -137,6 +137,7 @@
<string id="30125">Documentari</string> <string id="30125">Documentari</string>
<string id="30136">Versioni originali</string> <string id="30136">Versioni originali</string>
<string id="30126">Adulti</string> <string id="30126">Adulti</string>
<string id="30137">Direct</string>
<string id="30127">Latino</string> <string id="30127">Latino</string>
<string id="30128">Cerca trailer</string> <string id="30128">Cerca trailer</string>
<string id="30129">Adulto</string> <string id="30129">Adulto</string>
@@ -137,6 +137,7 @@
<string id="30125">Documentales</string> <string id="30125">Documentales</string>
<string id="30126">Adultos</string> <string id="30126">Adultos</string>
<string id="30136">Versión original</string> <string id="30136">Versión original</string>
<string id="30137">Directos</string>
<string id="30127">Latino</string> <string id="30127">Latino</string>
<string id="30128">Buscador de Trailers</string> <string id="30128">Buscador de Trailers</string>
<string id="30129">Adultos</string> <string id="30129">Adultos</string>
@@ -137,6 +137,7 @@
<string id="30125">Documentales</string> <string id="30125">Documentales</string>
<string id="30126">Adultos</string> <string id="30126">Adultos</string>
<string id="30136">Versión original</string> <string id="30136">Versión original</string>
<string id="30137">Directos</string>
<string id="30127">Latino</string> <string id="30127">Latino</string>
<string id="30128">Buscador de Trailers</string> <string id="30128">Buscador de Trailers</string>
<string id="30129">Adultos</string> <string id="30129">Adultos</string>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+4
View File
@@ -12,6 +12,10 @@
{ {
"pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)", "pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)",
"url": "http://docs.google.com/get_video_info?docid=\\1" "url": "http://docs.google.com/get_video_info?docid=\\1"
},
{
"pattern": "(?s)https://drive.google.com/file/d/([^/]+)/preview",
"url": "http://docs.google.com/get_video_info?docid=\\1"
} }
] ]
}, },
+3 -2
View File
@@ -85,9 +85,10 @@ def check_for_update(overwrite=True):
heading = 'Actualizando videoteca....' heading = 'Actualizando videoteca....'
p_dialog = platformtools.dialog_progress_bg('alfa', heading) p_dialog = platformtools.dialog_progress_bg('alfa', heading)
p_dialog.update(0, '') p_dialog.update(0, '')
show_list = []
import glob for path, folders, files in filetools.walk(library.TVSHOWS_PATH):
show_list = glob.glob(filetools.join(videolibrarytools.TVSHOWS_PATH, u'/*/tvshow.nfo')) show_list.extend([filetools.join(path, f) for f in files if f == "tvshow.nfo"])
if show_list: if show_list:
t = float(100) / len(show_list) t = float(100) / len(show_list)