@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.4.16" provider-name="Alfa Addon">
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.4.17" provider-name="Alfa Addon">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
<import addon="script.module.libtorrent" optional="true"/>
|
||||
@@ -19,8 +19,7 @@
|
||||
</assets>
|
||||
<news>[B]Estos son los cambios para esta versión:[/B]
|
||||
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
||||
» userscloud » hdfull
|
||||
» peliculasgratis
|
||||
» pelisplusco
|
||||
¤ arreglos internos
|
||||
</news>
|
||||
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,14 +7,19 @@ import re
|
||||
import urllib
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import jsontools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
from core import tmdb
|
||||
|
||||
|
||||
host = 'http://pelisplus.co'
|
||||
CHANNEL_HEADERS = [
|
||||
["Host", host.replace("http://","")],
|
||||
["X-Requested-With", "XMLHttpRequest"]
|
||||
]
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
@@ -55,8 +60,53 @@ def movie_menu(item):
|
||||
seccion='anios'
|
||||
))
|
||||
|
||||
itemlist.append(item.clone(title="Buscar",
|
||||
action="search",
|
||||
url=host + "/suggest/?query=",
|
||||
type="m",
|
||||
seccion='buscar'
|
||||
))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
if not item.type:
|
||||
item.type = "m"
|
||||
item.url = host + "/suggest/?query="
|
||||
item.url = item.url + texto
|
||||
if texto != '':
|
||||
return sub_search(item)
|
||||
else:
|
||||
return []
|
||||
|
||||
|
||||
def sub_search(item):
|
||||
logger.info()
|
||||
itemlist =[]
|
||||
data = httptools.downloadpage(item.url, add_referer=True).data
|
||||
dict_data = jsontools.load(data)
|
||||
list =dict_data["data"] [item.type]
|
||||
if item.type == "m":
|
||||
action = "findvideos"
|
||||
else:
|
||||
action = "seasons"
|
||||
for dict in list:
|
||||
itemlist.append(item.clone(channel = item.channel,
|
||||
action = action,
|
||||
fulltitle = dict["title"],
|
||||
show = dict["title"],
|
||||
infoLabels={"year":dict["release_year"]},
|
||||
thumbnail = "http://static.pelisfox.tv/static/movie/" + dict["cover"],
|
||||
title = dict["title"] + " (" + dict["release_year"] + ")",
|
||||
url = host + dict["slug"]
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
def series_menu(item):
|
||||
|
||||
logger.info()
|
||||
@@ -69,6 +119,13 @@ def series_menu(item):
|
||||
type='serie'
|
||||
))
|
||||
|
||||
itemlist.append(item.clone(title="Buscar",
|
||||
action="search",
|
||||
url=host + "/suggest/?query=",
|
||||
type="s",
|
||||
seccion='buscar'
|
||||
))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -82,40 +139,34 @@ def get_source(url):
|
||||
def list_all (item):
|
||||
logger.info ()
|
||||
itemlist = []
|
||||
|
||||
if item.type not in ['normal', 'seccion', 'serie']:
|
||||
post = {'page':item.page, 'type':item.type,'id':item.id}
|
||||
post = urllib.urlencode(post)
|
||||
data =httptools.downloadpage(item.url, post=post).data
|
||||
data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
else:
|
||||
data = get_source(item.url)
|
||||
if item.type == 'serie' or item.type == 'recents':
|
||||
if item.type in ['serie','recents']:
|
||||
contentType = 'serie'
|
||||
action = 'seasons'
|
||||
else:
|
||||
contentType = 'pelicula'
|
||||
action = 'findvideos'
|
||||
|
||||
patron = 'item-%s><a href=(.*?)><figure><img.*?data-src=(.*?) alt=.*?<p>(.*?)<\/p><span>(\d{4})<\/span>'%contentType
|
||||
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
|
||||
if item.type not in ['normal', 'seccion', 'serie']:
|
||||
post = {'page':item.page, 'type':item.type,'slug':item.slug,'id':item.id}
|
||||
post = urllib.urlencode(post)
|
||||
data =httptools.downloadpage(item.url, post=post, headers=CHANNEL_HEADERS).data
|
||||
data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
patron ='<a href=(.*?)><figure><img.*?src=(.*?) alt=.*?<p>(.*?)<\/p><span>(\d{4})<\/span>'
|
||||
else:
|
||||
data = get_source(item.url)
|
||||
patron = 'item-%s><a href=(.*?)><figure><img.*?data-src=(.*?) alt=.*?<p>(.*?)<\/p><span>(\d{4})</span>'%contentType
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches:
|
||||
url = host+scrapedurl+'p001/'
|
||||
thumbnail = scrapedthumbnail
|
||||
plot= ''
|
||||
contentTitle=scrapedtitle
|
||||
title = contentTitle
|
||||
year = scrapedyear
|
||||
fanart =''
|
||||
|
||||
new_item=item.clone(action=action,
|
||||
title=title,
|
||||
url=url,
|
||||
thumbnail=thumbnail,
|
||||
plot=plot,
|
||||
fanart=fanart,
|
||||
plot="",
|
||||
fanart="",
|
||||
infoLabels ={'year':year}
|
||||
)
|
||||
if contentType =='serie':
|
||||
@@ -141,13 +192,15 @@ def list_all (item):
|
||||
else:
|
||||
id =''
|
||||
else:
|
||||
if not item.page:
|
||||
item.page = "1"
|
||||
page = str(int(item.page)+1)
|
||||
id = item.id
|
||||
|
||||
if type =='recents':
|
||||
type_pagination = '/series/pagination'
|
||||
type_pagination = '/series/pagination/'
|
||||
else:
|
||||
type_pagination = '/pagination'
|
||||
type_pagination = '/pagination/'
|
||||
|
||||
url = host+type_pagination
|
||||
|
||||
@@ -164,29 +217,35 @@ def seccion(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = get_source(item.url)
|
||||
page = "1"
|
||||
if item.seccion == 'generos':
|
||||
patron = '<li><a href=(.*?)><i class=ion-cube><\/i>(.*?)<\/span>'
|
||||
type = 'genre'
|
||||
pat = 'genero/'
|
||||
elif item.seccion == 'anios':
|
||||
patron = '<li><a href=(\/peliculas.*?)>(\d{4})<\/a>'
|
||||
type = 'year'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
pat = 'peliculas-'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
title = scrapedtitle
|
||||
if item.seccion == 'generos':
|
||||
cant = re.sub(r'.*?<span class=cant-genre>','',scrapedtitle)
|
||||
only_title = re.sub(r'<.*','',scrapedtitle).rstrip()
|
||||
title = only_title+' (%s)'%cant
|
||||
|
||||
url = host+scrapedurl
|
||||
|
||||
slug = scrapertools.find_single_match(scrapedurl, "%s(.*?)/" %pat)
|
||||
if item.seccion in ['generos', 'anios']:
|
||||
url = host + "/pagination/"
|
||||
itemlist.append(
|
||||
Item(channel=item.channel,
|
||||
action="list_all",
|
||||
title=title,
|
||||
Item(action="list_all",
|
||||
channel=item.channel,
|
||||
fulltitle=item.title,
|
||||
url=url,
|
||||
type = 'seccion'
|
||||
page = "1",
|
||||
slug = slug,
|
||||
title=title,
|
||||
type = type,
|
||||
url=url
|
||||
))
|
||||
# Paginacion
|
||||
|
||||
|
||||
@@ -4,19 +4,23 @@
|
||||
# -*- By the Alfa Develop Group -*
|
||||
|
||||
import os
|
||||
|
||||
import xbmc
|
||||
from core import httptools
|
||||
from core.item import Item
|
||||
from platformcode.platformtools import logger, config
|
||||
from core import jsontools
|
||||
from core.item import Item
|
||||
from platformcode import config
|
||||
from platformcode import logger
|
||||
from threading import Thread
|
||||
|
||||
client_id = "c40ba210716aee87f6a9ddcafafc56246909e5377b623b72c15909024448e89d"
|
||||
client_secret = "999164f25832341f0214453bb11c915adb18e9490d6b5e9a707963a5a1bee43e"
|
||||
|
||||
|
||||
def auth_trakt():
|
||||
item = Item()
|
||||
folder = (config.get_platform() == "plex")
|
||||
item.folder=folder
|
||||
item.folder = folder
|
||||
# Autentificación de cuenta Trakt
|
||||
headers = {'Content-Type': 'application/json', 'trakt-api-key': client_id, 'trakt-api-version': '2'}
|
||||
try:
|
||||
@@ -48,7 +52,6 @@ def auth_trakt():
|
||||
|
||||
|
||||
def token_trakt(item):
|
||||
|
||||
from platformcode import platformtools
|
||||
|
||||
headers = {'Content-Type': 'application/json', 'trakt-api-key': client_id, 'trakt-api-version': '2'}
|
||||
@@ -63,8 +66,6 @@ def token_trakt(item):
|
||||
data = jsontools.load(data)
|
||||
elif item.action == "token_trakt":
|
||||
url = "http://api-v2launch.trakt.tv/oauth/device/token"
|
||||
post = {'code': item.device_code, 'client_id': client_id, 'client_secret': client_secret}
|
||||
post = jsontools.dump(post)
|
||||
post = "code=%s&client_id=%s&client_secret=%s" % (item.device_code, client_id, client_secret)
|
||||
data = httptools.downloadpage(url, post, headers, replace_headers=True).data
|
||||
data = jsontools.load(data)
|
||||
@@ -72,7 +73,8 @@ def token_trakt(item):
|
||||
import time
|
||||
dialog_auth = platformtools.dialog_progress("Sincronizar con Trakt. No cierres esta ventana",
|
||||
"1. Entra en la siguiente url: %s" % item.verify_url,
|
||||
"2. Ingresa este código en la página y acepta: %s" % item.user_code,
|
||||
"2. Ingresa este código en la página y acepta: %s"
|
||||
% item.user_code,
|
||||
"3. Espera a que se cierre esta ventana")
|
||||
|
||||
# Generalmente cada 5 segundos se intenta comprobar si el usuario ha introducido el código
|
||||
@@ -80,7 +82,7 @@ def token_trakt(item):
|
||||
time.sleep(item.intervalo)
|
||||
try:
|
||||
if dialog_auth.iscanceled():
|
||||
config.set_setting("trakt_sync", 'false' )
|
||||
config.set_setting("trakt_sync", False)
|
||||
return
|
||||
|
||||
url = "http://api-v2launch.trakt.tv/oauth/device/token"
|
||||
@@ -128,7 +130,6 @@ def token_trakt(item):
|
||||
|
||||
|
||||
def get_trakt_watched(id_type, mediatype, update=False):
|
||||
|
||||
logger.info()
|
||||
|
||||
id_list = []
|
||||
@@ -151,35 +152,36 @@ def get_trakt_watched(id_type, mediatype, update=False):
|
||||
if token_auth:
|
||||
try:
|
||||
token_auth = config.get_setting("token_trakt", "trakt")
|
||||
headers = [['Content-Type', 'application/json'], ['trakt-api-key', client_id], ['trakt-api-version', '2']]
|
||||
headers = [['Content-Type', 'application/json'], ['trakt-api-key', client_id],
|
||||
['trakt-api-version', '2']]
|
||||
if token_auth:
|
||||
headers.append(['Authorization', "Bearer %s" % token_auth])
|
||||
url = "https://api.trakt.tv/sync/watched/%s" % mediatype
|
||||
data = httptools.downloadpage(url, headers=headers, replace_headers=True).data
|
||||
watched_dict = jsontools.load(data)
|
||||
data = httptools.downloadpage(url, headers=headers, replace_headers=True).data
|
||||
watched_dict = jsontools.load(data)
|
||||
|
||||
if mediatype == 'shows':
|
||||
if mediatype == 'shows':
|
||||
|
||||
dict_show = dict()
|
||||
for item in watched_dict:
|
||||
temp =[]
|
||||
id = str(item['show']['ids']['tmdb'])
|
||||
season_dict=dict()
|
||||
for season in item['seasons']:
|
||||
ep=[]
|
||||
number = str(season['number'])
|
||||
#season_dict = dict()
|
||||
for episode in season['episodes']:
|
||||
ep.append(str(episode['number']))
|
||||
season_dict[number]=ep
|
||||
temp.append(season_dict)
|
||||
dict_show[id] = season_dict
|
||||
id_dict=dict_show
|
||||
return id_dict
|
||||
dict_show = dict()
|
||||
for item in watched_dict:
|
||||
temp = []
|
||||
id_ = str(item['show']['ids']['tmdb'])
|
||||
season_dict = dict()
|
||||
for season in item['seasons']:
|
||||
ep = []
|
||||
number = str(season['number'])
|
||||
# season_dict = dict()
|
||||
for episode in season['episodes']:
|
||||
ep.append(str(episode['number']))
|
||||
season_dict[number] = ep
|
||||
temp.append(season_dict)
|
||||
dict_show[id_] = season_dict
|
||||
id_dict = dict_show
|
||||
return id_dict
|
||||
|
||||
elif mediatype == 'movies':
|
||||
for item in watched_dict:
|
||||
id_list.append(str(item['movie']['ids'][id_type]))
|
||||
elif mediatype == 'movies':
|
||||
for item in watched_dict:
|
||||
id_list.append(str(item['movie']['ids'][id_type]))
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -188,14 +190,14 @@ def get_trakt_watched(id_type, mediatype, update=False):
|
||||
|
||||
def trakt_check(itemlist):
|
||||
id_result = ''
|
||||
#check = u'\u221a'
|
||||
# check = u'\u221a'
|
||||
check = 'v'
|
||||
get_sync_from_file()
|
||||
try:
|
||||
for item in itemlist:
|
||||
info = item.infoLabels
|
||||
|
||||
if info != '' and info['mediatype'] in ['movie', 'episode'] and item.channel !='videolibrary':
|
||||
if info != '' and info['mediatype'] in ['movie', 'episode'] and item.channel != 'videolibrary':
|
||||
|
||||
mediatype = 'movies'
|
||||
id_type = 'tmdb'
|
||||
@@ -206,12 +208,12 @@ def trakt_check(itemlist):
|
||||
if id_result == '':
|
||||
id_result = get_trakt_watched(id_type, mediatype)
|
||||
if info['mediatype'] == 'movie':
|
||||
if info[id_type+'_id'] in id_result:
|
||||
item.title ='[COLOR limegreen][%s][/COLOR] %s' % (check, item.title)
|
||||
if info[id_type + '_id'] in id_result:
|
||||
item.title = '[COLOR limegreen][%s][/COLOR] %s' % (check, item.title)
|
||||
|
||||
elif info['mediatype']=='episode':
|
||||
if info[id_type+'_id'] in id_result:
|
||||
id= info[id_type+'_id']
|
||||
elif info['mediatype'] == 'episode':
|
||||
if info[id_type + '_id'] in id_result:
|
||||
id = info[id_type + '_id']
|
||||
if info['season'] != '' and info['episode'] != '':
|
||||
season = str(info['season'])
|
||||
|
||||
@@ -223,38 +225,40 @@ def trakt_check(itemlist):
|
||||
|
||||
if episode in season_watched:
|
||||
item.title = '[B][COLOR limegreen][[I]%s[/I]][/COLOR][/B] %s' % (check,
|
||||
item.title)
|
||||
item.title)
|
||||
else:
|
||||
break
|
||||
except:
|
||||
pass
|
||||
pass
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def get_sync_from_file():
|
||||
logger.info()
|
||||
sync_path = os.path.join(config.get_data_path(),'settings_channels' ,'trakt')
|
||||
sync_path = os.path.join(config.get_data_path(), 'settings_channels', 'trakt')
|
||||
trakt_node = {}
|
||||
if os.path.exists(sync_path):
|
||||
trakt_node = jsontools.get_node_from_file('trakt', "TRAKT")
|
||||
|
||||
trakt_node['movies']=get_trakt_watched('tmdb', 'movies')
|
||||
trakt_node['shows']=get_trakt_watched('tmdb', 'shows')
|
||||
trakt_node['movies'] = get_trakt_watched('tmdb', 'movies')
|
||||
trakt_node['shows'] = get_trakt_watched('tmdb', 'shows')
|
||||
jsontools.update_node(trakt_node, 'trakt', 'TRAKT')
|
||||
|
||||
|
||||
def update_trakt_data(mediatype, trakt_data):
|
||||
logger.info()
|
||||
|
||||
sync_path = os.path.join(config.get_data_path(), 'settings_channels', 'trakt')
|
||||
trakt_node = {}
|
||||
if os.path.exists(sync_path):
|
||||
trakt_node = jsontools.get_node_from_file('trakt', "TRAKT")
|
||||
trakt_node[mediatype] = trakt_data
|
||||
jsontools.update_node(trakt_node, 'trakt', 'TRAKT')
|
||||
|
||||
|
||||
def ask_install_script():
|
||||
logger.info()
|
||||
import xbmc
|
||||
|
||||
from platformcode import platformtools
|
||||
|
||||
respuesta = platformtools.dialog_yesno("Alfa", "Puedes instalar el script de Trakt a continuacíon, "
|
||||
@@ -265,5 +269,24 @@ def ask_install_script():
|
||||
xbmc.executebuiltin("InstallAddon(script.trakt)")
|
||||
return
|
||||
else:
|
||||
config.set_setting('install_trakt','false')
|
||||
config.set_setting('install_trakt', False)
|
||||
return
|
||||
|
||||
|
||||
def wait_for_update_trakt():
|
||||
logger.info()
|
||||
t = Thread(update_all)
|
||||
t.setDaemon(True)
|
||||
t.start()
|
||||
t.isAlive()
|
||||
|
||||
def update_all():
|
||||
from time import sleep
|
||||
logger.info()
|
||||
sleep(20)
|
||||
while xbmc.Player().isPlaying():
|
||||
sleep(20)
|
||||
for mediatype in ['movies', 'shows']:
|
||||
trakt_data = get_trakt_watched('tmdb', mediatype, True)
|
||||
update_trakt_data(mediatype, trakt_data)
|
||||
|
||||
|
||||
@@ -63,56 +63,10 @@ def run(item=None):
|
||||
elif item.action == "getmainlist":
|
||||
import channelselector
|
||||
|
||||
# # Check for updates only on first screen
|
||||
# if config.get_setting("check_for_plugin_updates") == True:
|
||||
# logger.info("Check for plugin updates enabled")
|
||||
# from core import updater
|
||||
#
|
||||
# try:
|
||||
# config.set_setting("plugin_updates_available", 0)
|
||||
# new_published_version_tag, number_of_updates = updater.get_available_updates()
|
||||
#
|
||||
# config.set_setting("plugin_updates_available", number_of_updates)
|
||||
# itemlist = channelselector.getmainlist()
|
||||
#
|
||||
# if new_published_version_tag != "":
|
||||
# platformtools.dialog_notification(new_published_version_tag + " disponible",
|
||||
# "Ya puedes descargar la nueva versión del plugin\n"
|
||||
# "desde el listado principal")
|
||||
#
|
||||
# itemlist = channelselector.getmainlist()
|
||||
# itemlist.insert(0, Item(title="Descargar version " + new_published_version_tag,
|
||||
# version=new_published_version_tag, channel="updater",
|
||||
# action="update",
|
||||
# thumbnail=channelselector.get_thumb("update.png")))
|
||||
# except:
|
||||
# import traceback
|
||||
# logger.error(traceback.format_exc())
|
||||
# platformtools.dialog_ok("No se puede conectar", "No ha sido posible comprobar",
|
||||
# "si hay actualizaciones")
|
||||
# logger.error("Fallo al verificar la actualización")
|
||||
# config.set_setting("plugin_updates_available", 0)
|
||||
# itemlist = channelselector.getmainlist()
|
||||
#
|
||||
# else:
|
||||
# logger.info("Check for plugin updates disabled")
|
||||
# config.set_setting("plugin_updates_available", 0)
|
||||
# itemlist = channelselector.getmainlist()
|
||||
|
||||
itemlist = channelselector.getmainlist()
|
||||
|
||||
platformtools.render_items(itemlist, item)
|
||||
|
||||
# # Action for updating plugin
|
||||
# elif item.action == "update":
|
||||
#
|
||||
# from core import updater
|
||||
# updater.update(item)
|
||||
# config.set_setting("plugin_updates_available", 0)
|
||||
#
|
||||
# import xbmc
|
||||
# xbmc.executebuiltin("Container.Refresh")
|
||||
|
||||
# Action for channel types on channelselector: movies, series, etc.
|
||||
elif item.action == "getchanneltypes":
|
||||
import channelselector
|
||||
@@ -277,11 +231,6 @@ def run(item=None):
|
||||
else:
|
||||
logger.info("Executing channel '%s' method" % item.action)
|
||||
itemlist = getattr(channel, item.action)(item)
|
||||
# if item.start:
|
||||
# menu_icon = get_thumb('menu.png')
|
||||
# menu = Item(channel="channelselector", action="getmainlist", viewmode="movie", thumbnail=menu_icon,
|
||||
# title='Menu')
|
||||
# itemlist.insert(0, menu)
|
||||
if config.get_setting('trakt_sync'):
|
||||
token_auth = config.get_setting("token_trakt", "trakt")
|
||||
if not token_auth:
|
||||
@@ -293,7 +242,7 @@ def run(item=None):
|
||||
trakt_tools.ask_install_script()
|
||||
itemlist = trakt_tools.trakt_check(itemlist)
|
||||
else:
|
||||
config.set_setting('install_trakt', 'true')
|
||||
config.set_setting('install_trakt', True)
|
||||
|
||||
platformtools.render_items(itemlist, item)
|
||||
|
||||
|
||||
@@ -16,31 +16,21 @@ import config
|
||||
import xbmc
|
||||
import xbmcgui
|
||||
import xbmcplugin
|
||||
from core.item import Item
|
||||
from core import scrapertools
|
||||
from core import httptools
|
||||
from core import jsontools
|
||||
from platformcode import logger
|
||||
from channelselector import get_thumb
|
||||
from core import trakt_tools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
|
||||
|
||||
class XBMCPlayer( xbmc.Player ):
|
||||
class XBMCPlayer(xbmc.Player):
|
||||
|
||||
def __init__( self, *args ):
|
||||
def __init__(self, *args):
|
||||
pass
|
||||
|
||||
def onPlaybackEnded(self):
|
||||
logger.info()
|
||||
from time import sleep
|
||||
sleep(20)
|
||||
for mediatype in ['movies', 'shows']:
|
||||
trakt_data = trakt_tools.get_trakt_watched('tmdb', mediatype, True)
|
||||
trakt_tools.update_trakt_data(mediatype, trakt_data)
|
||||
|
||||
|
||||
xbmc_player = XBMCPlayer()
|
||||
|
||||
|
||||
def dialog_ok(heading, line1, line2="", line3=""):
|
||||
dialog = xbmcgui.Dialog()
|
||||
return dialog.ok(heading, line1, line2, line3)
|
||||
@@ -116,7 +106,6 @@ def render_items(itemlist, parent_item):
|
||||
"""
|
||||
# Si el itemlist no es un list salimos
|
||||
if not type(itemlist) == list:
|
||||
|
||||
return
|
||||
|
||||
if parent_item.start:
|
||||
@@ -176,7 +165,6 @@ def render_items(itemlist, parent_item):
|
||||
listitem.setThumbnailImage(item.thumbnail)
|
||||
listitem.setProperty('fanart_image', fanart)
|
||||
|
||||
|
||||
# No need it, use fanart instead
|
||||
# xbmcplugin.setPluginFanart(int(sys.argv[1]), os.path.join(config.get_runtime_path(), "fanart.jpg"))
|
||||
|
||||
@@ -226,12 +214,11 @@ def render_items(itemlist, parent_item):
|
||||
if config.get_setting("forceview"):
|
||||
viewmode_id = get_viewmode_id(parent_item)
|
||||
xbmc.executebuiltin("Container.SetViewMode(%s)" % viewmode_id)
|
||||
if parent_item.mode in ['silent', 'get_cached', 'set_cache','finish']:
|
||||
if parent_item.mode in ['silent', 'get_cached', 'set_cache', 'finish']:
|
||||
xbmc.executebuiltin("Container.SetViewMode(500)")
|
||||
|
||||
|
||||
def get_viewmode_id(parent_item):
|
||||
|
||||
# viewmode_json habria q guardarlo en un archivo y crear un metodo para q el user fije sus preferencias en:
|
||||
# user_files, user_movies, user_tvshows, user_season y user_episodes.
|
||||
viewmode_json = {'skin.confluence': {'default_files': 50,
|
||||
@@ -388,7 +375,7 @@ def set_context_commands(item, parent_item):
|
||||
"XBMC.RunScript(script.extendedinfo,info=seasoninfo,%s)" % param))
|
||||
|
||||
elif item.contentType == "tvshow" and (item.infoLabels['tmdb_id'] or item.infoLabels['tvdb_id'] or
|
||||
item.infoLabels['imdb_id'] or item.contentSerieName):
|
||||
item.infoLabels['imdb_id'] or item.contentSerieName):
|
||||
param = "id =%s,tvdb_id=%s,imdb_id=%s,name=%s" \
|
||||
% (item.infoLabels['tmdb_id'], item.infoLabels['tvdb_id'], item.infoLabels['imdb_id'],
|
||||
item.contentSerieName)
|
||||
@@ -396,14 +383,14 @@ def set_context_commands(item, parent_item):
|
||||
"XBMC.RunScript(script.extendedinfo,info=extendedtvinfo,%s)" % param))
|
||||
|
||||
elif item.contentType == "movie" and (item.infoLabels['tmdb_id'] or item.infoLabels['imdb_id'] or
|
||||
item.contentTitle):
|
||||
item.contentTitle):
|
||||
param = "id =%s,imdb_id=%s,name=%s" \
|
||||
% (item.infoLabels['tmdb_id'], item.infoLabels['imdb_id'], item.contentTitle)
|
||||
context_commands.append(("ExtendedInfo",
|
||||
"XBMC.RunScript(script.extendedinfo,info=extendedinfo,%s)" % param))
|
||||
|
||||
# InfoPlus
|
||||
if config.get_setting("infoplus") == True:
|
||||
if config.get_setting("infoplus"):
|
||||
if item.infoLabels['tmdb_id'] or item.infoLabels['imdb_id'] or item.infoLabels['tvdb_id'] or \
|
||||
(item.contentTitle and item.infoLabels["year"]) or item.contentSerieName:
|
||||
context_commands.append(("InfoPlus", "XBMC.RunPlugin(%s?%s)" % (sys.argv[0], item.clone(
|
||||
@@ -423,11 +410,11 @@ def set_context_commands(item, parent_item):
|
||||
(sys.argv[0], item.clone(channel="favorites", action="addFavourite",
|
||||
from_channel=item.channel,
|
||||
from_action=item.action).tourl())))
|
||||
#Buscar en otros canales
|
||||
if item.contentType in ['movie','tvshow']and item.channel != 'search':
|
||||
# Buscar en otros canales
|
||||
if item.contentType in ['movie', 'tvshow'] and item.channel != 'search':
|
||||
# Buscar en otros canales
|
||||
if item.contentSerieName!='':
|
||||
item.wanted=item.contentSerieName
|
||||
if item.contentSerieName != '':
|
||||
item.wanted = item.contentSerieName
|
||||
else:
|
||||
item.wanted = item.contentTitle
|
||||
context_commands.append(("[COLOR yellow]Buscar en otros canales[/COLOR]",
|
||||
@@ -437,14 +424,14 @@ def set_context_commands(item, parent_item):
|
||||
from_channel=item.channel,
|
||||
|
||||
contextual=True).tourl())))
|
||||
#Definir como Pagina de inicio
|
||||
# Definir como Pagina de inicio
|
||||
if config.get_setting('start_page'):
|
||||
if item.action not in ['findvideos', 'play']:
|
||||
context_commands.insert(0, ("[COLOR 0xffccff00]Definir como pagina de inicio[/COLOR]",
|
||||
"XBMC.RunPlugin(%s?%s)" % (
|
||||
sys.argv[0], Item(channel='side_menu',
|
||||
action="set_custom_start",
|
||||
parent=item.tourl()).tourl())))
|
||||
sys.argv[0], Item(channel='side_menu',
|
||||
action="set_custom_start",
|
||||
parent=item.tourl()).tourl())))
|
||||
|
||||
if item.channel != "videolibrary":
|
||||
# Añadir Serie a la videoteca
|
||||
@@ -505,21 +492,17 @@ def set_context_commands(item, parent_item):
|
||||
context_commands.append(("Super Favourites Menu",
|
||||
"XBMC.RunScript(special://home/addons/plugin.program.super.favourites/LaunchSFMenu.py)"))
|
||||
|
||||
|
||||
|
||||
context_commands = sorted(context_commands, key=lambda comand: comand[0])
|
||||
# Menu Rapido
|
||||
context_commands.insert(0,("[COLOR 0xffccff00]<Menú Rápido>[/COLOR]",
|
||||
"XBMC.Container.Update (%s?%s)" % (sys.argv[0], Item(channel='side_menu',
|
||||
action="open_menu",
|
||||
parent=parent_item.tourl()).tourl(
|
||||
context_commands.insert(0, ("[COLOR 0xffccff00]<Menú Rápido>[/COLOR]",
|
||||
"XBMC.Container.Update (%s?%s)" % (sys.argv[0], Item(channel='side_menu',
|
||||
action="open_menu",
|
||||
parent=parent_item.tourl()).tourl(
|
||||
|
||||
))))
|
||||
))))
|
||||
return context_commands
|
||||
|
||||
|
||||
|
||||
|
||||
def is_playing():
|
||||
return xbmc_player.isPlaying()
|
||||
|
||||
@@ -600,10 +583,7 @@ def play_video(item, strm=False, force_direct=False, autoplay=False):
|
||||
set_player(item, xlistitem, mediaurl, view, strm)
|
||||
|
||||
|
||||
|
||||
|
||||
def stop_video():
|
||||
from time import sleep
|
||||
xbmc_player.stop()
|
||||
|
||||
|
||||
@@ -787,7 +767,7 @@ def set_opcion(item, seleccion, opciones, video_urls):
|
||||
listitem = xbmcgui.ListItem(item.title)
|
||||
|
||||
if config.get_platform(True)['num_version'] >= 16.0:
|
||||
listitem.setArt({'icon':"DefaultVideo.png", 'thumb': item.thumbnail})
|
||||
listitem.setArt({'icon': "DefaultVideo.png", 'thumb': item.thumbnail})
|
||||
else:
|
||||
listitem.setIconImage("DefaultVideo.png")
|
||||
listitem.setThumbnailImage(item.thumbnail)
|
||||
@@ -816,20 +796,6 @@ def set_opcion(item, seleccion, opciones, video_urls):
|
||||
favorites.addFavourite(item)
|
||||
salir = True
|
||||
|
||||
# "Añadir a videoteca":
|
||||
elif opciones[seleccion] == config.get_localized_string(30161):
|
||||
titulo = item.fulltitle
|
||||
if titulo == "":
|
||||
titulo = item.title
|
||||
|
||||
new_item = item.clone(title=titulo, action="play_from_library", category="Cine",
|
||||
fulltitle=item.fulltitle, channel=item.channel)
|
||||
|
||||
from core import videolibrarytools
|
||||
videolibrarytools.add_movie(new_item)
|
||||
|
||||
salir = True
|
||||
|
||||
# "Buscar Trailer":
|
||||
elif opciones[seleccion] == config.get_localized_string(30162):
|
||||
config.set_setting("subtitulo", False)
|
||||
@@ -911,11 +877,11 @@ def set_player(item, xlistitem, mediaurl, view, strm):
|
||||
playlist.add(mediaurl, xlistitem)
|
||||
|
||||
# Reproduce
|
||||
#xbmc_player = xbmc_player
|
||||
# xbmc_player = xbmc_player
|
||||
xbmc_player.play(playlist, xlistitem)
|
||||
while xbmc_player.isPlaying():
|
||||
xbmc.sleep(200)
|
||||
xbmc_player.onPlaybackEnded()
|
||||
if config.get_setting('trakt_sync'):
|
||||
trakt_tools.wait_for_update_trakt()
|
||||
|
||||
# elif config.get_setting("player_mode") == 1 or item.isPlayable:
|
||||
elif config.get_setting("player_mode") == 1:
|
||||
logger.info("mediaurl :" + mediaurl)
|
||||
@@ -1067,7 +1033,7 @@ def play_torrent(item, xlistitem, mediaurl):
|
||||
playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
|
||||
playlist.clear()
|
||||
playlist.add(videourl, xlistitem)
|
||||
#xbmc_player = xbmc_player
|
||||
# xbmc_player = xbmc_player
|
||||
xbmc_player.play(playlist)
|
||||
|
||||
# Marcamos como reproducido para que no se vuelva a iniciar
|
||||
|
||||
Reference in New Issue
Block a user