Merge pull request #16 from kodiondemand/master

up 29 maggio
This commit is contained in:
greko
2019-05-29 14:35:24 +02:00
committed by GitHub
22 changed files with 324 additions and 192 deletions

View File

@@ -40,10 +40,18 @@ def newest(categoria):
log(categoria)
itemlist = []
item = Item()
try:
if categoria == "movie": item.url = host + '/film/'
elif categoria == "tvshow": item.url = host + '/serie/'
elif categoria == "anime": item.url = host + '/anime/'
if categoria == 'peliculas':
item.contentType = 'movie'
item.url = host + '/film/'
elif categoria == "series":
item.contentType = 'episode'
item.url = host + '/serie/'
elif categoria == "anime":
item.contentType = 'episode'
item.url = host + '/anime/'
item.action = "peliculas"
itemlist = peliculas(item)
@@ -126,10 +134,11 @@ def episodios(item):
def findvideos(item):
log()
itemlist =[]
matches, data = support.match(item, '<iframe class="metaframe rptss" src="([^"]+)"[^>]+>',headers=headers)
for url in matches:
html = httptools.downloadpage(url, headers=headers).data
data += str(scrapertoolsV2.find_multiple_matches(html, '<meta name="og:url" content="([^"]+)">'))
return support.server(item, data)
itemlist = support.server(item, data)
return itemlist

View File

@@ -92,7 +92,7 @@ def color(text, color):
def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data="", patron_block="",
patronNext="", action="findvideos", addVideolibrary = True):
patronNext="", action="findvideos", addVideolibrary = True, type_content_dict={}, type_action_dict={}):
# patron: the patron to use for scraping page, all capturing group must match with listGroups
# listGroups: a list containing the scraping info obtained by your patron, in order
# accepted values are: url, title, thumb, quality, year, plot, duration, genre, rating, episode, lang
@@ -114,6 +114,9 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
# blacklist = 'Request a TV serie!'
# return support.scrape(item, itemlist, patron, ['thumb', 'quality', 'url', 'title', 'year', 'plot', 'episode', 'lang'],
# headers=headers, blacklist=blacklist)
# 'type' is a check for typologies of content e.g. Film or TV Series
# 'episode' is a key to grab episode numbers if it is separated from the title
# IMPORTANT 'type' is a special key, to work need type_content_dict={} and type_action_dict={}
itemlist = []
@@ -194,6 +197,15 @@ def scrape(item, patron = '', listGroups = [], headers="", blacklist="", data=""
if scraped["rating"]:
infolabels['rating'] = scrapertoolsV2.decodeHtmlentities(scraped["rating"])
if type_content_dict:
for name, variants in type_content_dict.items():
if scraped['type'] in variants:
item.contentType = name
if type_action_dict:
for name, variants in type_action_dict.items():
if scraped['type'] in variants:
action = name
if scraped["title"] not in blacklist:
it = Item(
channel=item.channel,
@@ -456,7 +468,11 @@ def match(item, patron='', patron_block='', headers='', url=''):
return matches, data
def videolibrary(itemlist, item, typography=''):
def videolibrary(itemlist, item, typography='', function_level=1):
# Simply add this function to add video library support
# Function_level is useful if the function is called by another function.
# If the call is direct, leave it blank
if item.contentType != 'episode':
action = 'add_pelicula_to_library'
extra = 'findvideos'
@@ -465,9 +481,12 @@ def videolibrary(itemlist, item, typography=''):
action = 'add_serie_to_library'
extra = 'episodios'
contentType = 'tvshow'
if not typography: typography = 'color kod bold'
title = typo(config.get_localized_string(30161) + ' ' + typography)
if inspect.stack()[1][3] == 'findvideos' and contentType == 'movie' or inspect.stack()[1][3] != 'findvideos' and contentType != 'movie':
if inspect.stack()[function_level][3] == 'findvideos' and contentType == 'movie' or inspect.stack()[function_level][3] != 'findvideos' and contentType != 'movie':
if config.get_videolibrary_support() and len(itemlist) > 0:
itemlist.append(
Item(channel=item.channel,
@@ -479,6 +498,7 @@ def videolibrary(itemlist, item, typography=''):
extra=extra,
contentTitle=item.fulltitle))
return itemlist
def nextPage(itemlist, item, data, patron, function_level=1):
# Function_level is useful if the function is called by another function.
@@ -535,11 +555,13 @@ def server(item, data='', itemlist='', headers='', AutoPlay=True, CheckLinks=Tru
def controls(itemlist, item, AutoPlay=True, CheckLinks=True):
from core import jsontools
from platformcode.config import get_setting
CL = get_setting('checklinks') or get_setting('checklinks', item.channel)
autoplay_node = jsontools.get_node_from_file('autoplay', 'AUTOPLAY')
channel_node = autoplay_node.get(item.channel, {})
settings_node = channel_node.get('settings', {})
AP = get_setting('autoplay') or settings_node['active']
if CL and not AP:
if get_setting('checklinks', item.channel):
checklinks = get_setting('checklinks', item.channel)
@@ -553,7 +575,8 @@ def controls(itemlist, item, AutoPlay=True, CheckLinks=True):
if AutoPlay == True:
autoplay.start(itemlist, item)
videolibrary(itemlist, item)
videolibrary(itemlist, item, function_level=3)
return itemlist

View File

@@ -7,7 +7,7 @@ import xbmcaddon
import xbmcgui
from channelselector import get_thumb
from platformcode import config
from platformcode import config, logger
class KeyListener(xbmcgui.WindowXMLDialog):
@@ -168,6 +168,9 @@ class Main(xbmcgui.WindowXMLDialog):
def open_shortcut_menu():
main = Main('ShortCutMenu.xml', config.get_runtime_path())
XML = 'ShortCutMenu.xml'
if config.get_setting('icon_set') == 'dark':
XML = 'Dark' + XML
main = Main(XML, config.get_runtime_path())
main.doModal()
del main

View File

@@ -606,14 +606,14 @@ def set_context_commands(item, parent_item):
elif item.contentSerieName:
# Descargar serie
if item.contentType == "tvshow":
if item.contentType == "tvshow" or 'episode' and item.action in ["episodios"]:
context_commands.append((config.get_localized_string(60355), "XBMC.RunPlugin(%s?%s)" %
(sys.argv[0], item.clone(channel="downloads", action="save_download",
from_channel=item.channel,
from_action=item.action).tourl())))
# Descargar episodio
elif item.contentType == "episode":
elif item.contentType == "tvshow" or 'episode' and item.action in ["findvideos"]:
context_commands.append((config.get_localized_string(60356), "XBMC.RunPlugin(%s?%s)" %
(sys.argv[0], item.clone(channel="downloads", action="save_download",
from_channel=item.channel,

View File

@@ -354,7 +354,7 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
return ok
def add_control_label(self, c):
control = xbmcgui.ControlLabel(0, -100, self.controls_width, 30, "", alignment=4, font=self.font,
control = xbmcgui.ControlLabel(0, -100, self.controls_width, 40, "", alignment=4, font=self.font,
textColor=c["color"])
self.addControl(control)
@@ -366,20 +366,20 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
c["control"] = control
def add_control_list(self, c):
control = xbmcgui.ControlButton(0, -100, self.controls_width, self.height_control,
control = xbmcgui.ControlButton(0, -100, self.controls_width + 20, self.height_control,
c["label"], os.path.join(self.mediapath, 'Controls', 'MenuItemFO.png'),
os.path.join(self.mediapath, 'Controls', 'MenuItemNF.png'),
0, textColor=c["color"],
10, textColor=c["color"],
font=self.font)
label = xbmcgui.ControlLabel(0, -100, self.controls_width - 30, self.height_control,
"", font=self.font, textColor=c["color"], alignment=4 | 1)
label = xbmcgui.ControlLabel(0, -100, self.controls_width - 80, self.height_control,
"", font=self.font, textColor=c["color"], alignment= 1 | 4)
upBtn = xbmcgui.ControlButton(0, -100, 20, 15, "",
upBtn = xbmcgui.ControlButton(0, -100, 15, 7, "",
focusTexture=os.path.join(self.mediapath, 'Controls', 'spinUp-Focus.png'),
noFocusTexture=os.path.join(self.mediapath, 'Controls', 'spinUp-noFocus.png'))
downBtn = xbmcgui.ControlButton(0, -100 + 15, 20, 15, "",
downBtn = xbmcgui.ControlButton(0, -100 + 15, 15, 7, "",
focusTexture=os.path.join(self.mediapath, 'Controls', 'spinDown-Focus.png'),
noFocusTexture=os.path.join(self.mediapath, 'Controls', 'spinDown-noFocus.png'))
@@ -431,14 +431,14 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
def add_control_bool(self, c):
# Versiones antiguas no admite algunas texturas
if xbmcgui.__version__ in ["1.2", "2.0"]:
control = xbmcgui.ControlRadioButton(0 - 10, -100, self.controls_width + 10, self.height_control,
control = xbmcgui.ControlRadioButton(0, -100, self.controls_width + 20, self.height_control,
label=c["label"], font=self.font, textColor=c["color"],
focusTexture=os.path.join(self.mediapath, 'Controls',
'MenuItemFO.png'),
noFocusTexture=os.path.join(self.mediapath, 'Controls',
'MenuItemNF.png'))
else:
control = xbmcgui.ControlRadioButton(0 - 10, -100, self.controls_width + 10,
control = xbmcgui.ControlRadioButton(0, -100, self.controls_width + 20,
self.height_control, label=c["label"], font=self.font,
textColor=c["color"],
focusTexture=os.path.join(self.mediapath, 'Controls',
@@ -491,11 +491,11 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
self.getControl(10005).getPosition()[1])
# Obtenemos las dimensiones del area de controles
self.controls_width = self.getControl(10007).getWidth() - 20
self.controls_height = self.getControl(10007).getHeight()
self.controls_width = self.getControl(10007).getWidth() - 30
self.controls_height = self.getControl(10007).getHeight() -100
self.controls_pos_x = self.getControl(10007).getPosition()[0] + self.getControl(10001).getPosition()[0] + 10
self.controls_pos_y = self.getControl(10007).getPosition()[1] + self.getControl(10001).getPosition()[1]
self.height_control = 35
self.height_control = 40
self.font = "font12"
# En versiones antiguas: creamos 5 controles, de lo conrtario al hacer click al segundo control,
@@ -619,7 +619,7 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
if c["type"] != "list":
if c["type"] == "bool":
c["control"].setPosition(self.controls_pos_x - 10, c["y"])
c["control"].setPosition(self.controls_pos_x, c["y"])
else:
c["control"].setPosition(self.controls_pos_x, c["y"])
@@ -629,8 +629,8 @@ class SettingsWindow(xbmcgui.WindowXMLDialog):
c["label"].setPosition(self.controls_pos_x + self.controls_width - 30, c["y"])
else:
c["label"].setPosition(self.controls_pos_x, c["y"])
c["upBtn"].setPosition(self.controls_pos_x + c["control"].getWidth() - 25, c["y"] + 3)
c["downBtn"].setPosition(self.controls_pos_x + c["control"].getWidth() - 25, c["y"] + 18)
c["upBtn"].setPosition(self.controls_pos_x + c["control"].getWidth() - 40, c["y"] + 15)
c["downBtn"].setPosition(self.controls_pos_x + c["control"].getWidth() - 25, c["y"] + 15)
self.set_visible(c, True)
@@ -962,7 +962,7 @@ class ControlEdit(xbmcgui.ControlButton):
self.label = ""
self.text = ""
self.textControl = xbmcgui.ControlLabel(self.getX(), self.getY(), self.getWidth(), self.getHeight(), self.text,
font=kwargs["font"], textColor=kwargs["textColor"], alignment=4 | 1)
font=kwargs["font"], textColor=kwargs["textColor"], alignment= 4 | 1)
self.window.addControl(self.textControl)
def setLabel(self, val):

View File

@@ -565,7 +565,8 @@ def set_content(content_type, silent=False):
continuar = (install and xbmc.getCondVisibility('System.HasAddon(metadata.themoviedb.org)'))
if not continuar:
msg_text = config.get_localized_string(60047)
if continuar and not forced:
if continuar:
xbmc.executebuiltin('xbmc.addon.opensettings(metadata.themoviedb.org)', True)
# Instalar Universal Movie Scraper
@@ -589,7 +590,7 @@ def set_content(content_type, silent=False):
continuar = (install and continuar)
if not continuar:
msg_text = config.get_localized_string(70097)
if continuar and not forced:
if continuar:
xbmc.executebuiltin('xbmc.addon.opensettings(metadata.universal)', True)
else: # SERIES
@@ -619,7 +620,7 @@ def set_content(content_type, silent=False):
continuar = (install and xbmc.getCondVisibility('System.HasAddon(metadata.tvdb.com)'))
if not continuar:
msg_text = config.get_localized_string(70099)
if continuar and not forced:
if continuar:
xbmc.executebuiltin('xbmc.addon.opensettings(metadata.tvdb.com)', True)
# Instalar The Movie Database
@@ -644,7 +645,7 @@ def set_content(content_type, silent=False):
continuar = (install and continuar)
if not continuar:
msg_text = config.get_localized_string(60047)
if continuar and not forced:
if continuar:
xbmc.executebuiltin('xbmc.addon.opensettings(metadata.tvshows.themoviedb.org)', True)
idPath = 0

View File

@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<window>
<allowoverlays>false</allowoverlays>
<allowoverlays>false</allowoverlays>
<animation type="WindowOpen" reversible="false">
<effect type="zoom" start="80" end="100" center="640,225" delay="160" tween="back" time="240" />
<effect type="fade" delay="160" end="100" time="240" />
</animation>
<animation type="WindowClose" reversible="false">
<effect type="zoom" start="100" end="80" center="640,225" easing="in" tween="back" time="240" />
<effect type="fade" start="100" end="0" time="240" />
</animation>
<controls>
<control type="group" id="10001">
<posx>240</posx>
@@ -10,16 +18,11 @@
<control type="image">
<width>800</width>
<height>500</height>
<texture>Windows/DialogBack.png</texture>
</control>
<control type="image">
<height>40</height>
<width>800</width>
<texture>Windows/dialogheader.png</texture>
<texture>Shortcut/dialog-bg-solid.png</texture>
</control>
<control type="label" id="10002">
<posy>10</posy>
<posx>10</posx>
<posy>15</posy>
<posx>50</posx>
<height>34</height>
<width>725</width>
<font>font12_title</font>
@@ -29,18 +32,18 @@
<label>$ADDON[plugin.video.kod 70000]</label>
</control>
<control type="button" id="10003">
<posx>735</posx>
<posy>15</posy>
<width>50</width>
<height>30</height>
<posx>745</posx>
<posy>25</posy>
<width>20</width>
<height>20</height>
<texturefocus>Controls/DialogCloseButton-focus.png</texturefocus>
<texturenofocus>Controls/DialogCloseButton.png</texturenofocus>
</control>
<control type="button" id="10004">
<posx>155</posx>
<posy>445</posy>
<width>120</width>
<height>30</height>
<posx>40</posx>
<posy>410</posy>
<width>200</width>
<height>50</height>
<textwidth>110</textwidth>
<texturefocus>Controls/KeyboardKey.png</texturefocus>
<texturenofocus>Controls/KeyboardKeyNF.png</texturenofocus>
@@ -49,10 +52,10 @@
<label>$ADDON[plugin.video.kod 70001]</label>
</control>
<control type="button" id="10005">
<posx>325</posx>
<posy>445</posy>
<width>120</width>
<height>30</height>
<posx>300</posx>
<posy>410</posy>
<width>200</width>
<height>50</height>
<textwidth>110</textwidth>
<texturefocus>Controls/KeyboardKey.png</texturefocus>
<texturenofocus>Controls/KeyboardKeyNF.png</texturenofocus>
@@ -61,10 +64,10 @@
<label>$ADDON[plugin.video.kod 70002]</label>
</control>
<control type="button" id="10006">
<posx>495</posx>
<posy>445</posy>
<width>120</width>
<height>30</height>
<posx>560</posx>
<posy>410</posy>
<width>200</width>
<height>50</height>
<textwidth>110</textwidth>
<texturefocus>Controls/KeyboardKey.png</texturefocus>
<texturenofocus>Controls/KeyboardKeyNF.png</texturenofocus>
@@ -73,20 +76,15 @@
<label>$ADDON[plugin.video.kod 70003]</label>
</control>
<control type="group" id="10007">
<posy>45</posy>
<posy>80</posy>
<posx>20</posx>
<width>745</width>
<height>387</height>
<control type="image">
<width>745</width>
<height>387</height>
<texture>Windows/BackControls.png</texture>
</control>
<control type="label" id="100010">
<posy>0</posy>
<posy>30</posy>
<posx>0</posx>
<width>745</width>
<height>387</height>
<height>300</height>
<font>font16</font>
<textcolor>0xFFFFFFFF</textcolor>
<align>center</align>
@@ -95,17 +93,18 @@
</control>
</control>
<control type="image" id="10008">
<posy>45</posy>
<posx>770</posx>
<posy>80</posy>
<posx>780</posx>
<width>10</width>
<height>387</height>
<height>300</height>
<textcolor>0xFFFFFFFF</textcolor>
<texture>Controls/ScrollBack.png</texture>
</control>
<control type="image" id="10009">
<posy>45</posy>
<posx>770</posx>
<posy>80</posy>
<posx>780</posx>
<width>10</width>
<height>387</height>
<height>300</height>
<texture>Controls/ScrollBar.png</texture>
</control>
</control>

View File

@@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<window>
<depth>0.52</depth>
<coordinates>
<left>200</left>
<top>250</top>
</coordinates>
<defaultcontrol always="true">32500</defaultcontrol>
<animation type="WindowOpen" reversible="false">
<effect type="zoom" start="80" end="100" center="440,110" delay="160" tween="back" time="240" />
<effect type="fade" delay="160" end="100" time="240" />
</animation>
<animation type="WindowClose" reversible="false">
<effect type="zoom" start="100" end="80" center="440,110" easing="in" tween="back" time="240" />
<effect type="fade" start="100" end="0" time="240" />
</animation>
<controls>
<control type="button">
<left>-200</left>
<top>-250</top>
<width>1280</width>
<height>720</height>
<texturefocus colordiffuse="88FFFFFF">Shortcut/white.png</texturefocus>
<texturenofocus colordiffuse="88FFFFFF">Shortcut/white.png</texturenofocus>
<onclick>Action(close)</onclick>
</control>
<control type="image">
<left>0</left>
<top>0</top>
<width>880</width>
<height>220</height>
<texture border="2" colordiffuse="FFEEEEEE">Shortcut/white.png</texture>
</control>
<control type="group">
<control type="group">
<control type="image">
<left>-21</left>
<top>0</top>
<width>1011</width>
<height>220</height>
<texture>Shortcut/dialogbutton-nofo.png</texture>
</control>
<control type="list" id="32500">
<left>-130</left>
<top>0</top>
<width>880</width>
<height>220</height>
<onup>32501</onup>
<ondown>61</ondown>
<orientation>horizontal</orientation>
<scrolltime>200</scrolltime>
<pagecontrol>61</pagecontrol>
<animation effect="slide" start="0,0" end="10,0" time="0" condition="true">Conditional</animation>
<animation effect="slide" end="120,0" time="0" condition="!Control.IsVisible(5)">Conditional</animation>
<itemlayout height="220" width="220">
<!-- <top>2</top> -->
<control type="image">
<top>0</top>
<left>0</left>
<width>220</width>
<height>220</height>
<texture>Shortcut/button-nofo.png</texture>
</control>
<control type="image">
<left>30</left>
<top>149</top>
<width>306</width>
<height>75</height>
<texture colordiffuse="60FFFFFF">Shortcut/black.png</texture>
</control>
<control type="image">
<left>35</left>
<top>35</top>
<width>150</width>
<height>150</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
</control>
<control type="image">
<left>329</left>
<top>24</top>
<width>50</width>
<height>50</height>
<aspectratio>keep</aspectratio>
<texture>$INFO[ListItem.Overlay]</texture>
</control>
</itemlayout>
<focusedlayout height="220" width="220">
<control type="group">
<depth>0.10</depth>
<control type="image">
<width>220</width>
<height>220</height>
<texture>Shortcut/button-nofo.png</texture>
<animation effect="fade" start="0" end="100" time="0">Unfocus</animation>
<animation effect="fade" start="100" end="0" time="0">Focus</animation>
</control>
<control type="image">
<width>220</width>
<height>220</height>
<texture colordiffuse="FF0082C2">Shortcut/button-fo.png</texture>
<animation effect="fade" start="100" end="0" time="0">Unfocus</animation>
</control>
<control type="image">
<left>5</left>
<top>24</top>
<width>50</width>
<height>50</height>
<aspectratio>keep</aspectratio>
<texture>$INFO[ListItem.Overlay]</texture>
</control>
<control type="image">
<left>23</left>
<top>149</top>
<width>298</width>
<height>75</height>
<texture colordiffuse="60FFFFFF">Shortcut/black.png</texture>
</control>
<control type="image">
<left>35</left>
<top>35</top>
<width>150</width>
<height>150</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
</control>
<control type="textbox">
<left>0</left>
<top>146</top>
<width>220</width>
<height>74</height>
<font>font12</font>
<label>$INFO[ListItem.Label]</label>
<align>center</align>
<aligny>center</aligny>
</control>
</control>
</focusedlayout>
</control>
<control type="scrollbar" id="61">
<left>-120</left>
<top>220</top>
<width>880</width>
<height>10</height>
<texturesliderbackground colordiffuse="FFEEEEEE">Shortcut/white.png</texturesliderbackground>
<texturesliderbar colordiffuse="FFCCCCCCS">Shortcut/white.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="FF0082C2">Shortcut/white.png</texturesliderbarfocus>
<textureslidernib>-</textureslidernib>
<textureslidernibfocus>-</textureslidernibfocus>
<showonepage>false</showonepage>
<orientation>horizontal</orientation>
<onleft>32500</onleft>
<onright>32500</onright>
<ondown>32500</ondown>
<onup>32500</onup>
<animation effect="slide" end="120,0" time="0" condition="!Control.IsVisible(5)">Conditional</animation>
</control>
</control>
</control>
</controls>
</window>

View File

@@ -2,96 +2,48 @@
<window>
<depth>0.52</depth>
<coordinates>
<left>147</left>
<top>180</top>
<left>200</left>
<top>250</top>
</coordinates>
<defaultcontrol always="true">32500</defaultcontrol>
<animation type="WindowOpen" reversible="false">
<effect type="zoom" start="80" end="100" center="960,540" delay="160" tween="back" time="240" />
<effect type="zoom" start="80" end="100" center="440,110" delay="160" tween="back" time="240" />
<effect type="fade" delay="160" end="100" time="240" />
</animation>
<animation type="WindowClose" reversible="false">
<effect type="zoom" start="100" end="80" center="960,540" easing="in" tween="back" time="240" />
<effect type="zoom" start="100" end="80" center="440,110" easing="in" tween="back" time="240" />
<effect type="fade" start="100" end="0" time="240" />
</animation>
<controls>
<control type="image">
<left>0</left>
<top>0</top>
<width>969</width>
<height>283</height>
<texture border="2">Shortcut/dialog-bg-solid.png</texture>
<control type="button">
<left>-200</left>
<top>-250</top>
<width>1280</width>
<height>720</height>
<texturefocus colordiffuse="88232323">Shortcut/white.png</texturefocus>
<texturenofocus colordiffuse="88232323">Shortcut/white.png</texturenofocus>
<onclick>Action(close)</onclick>
</control>
<control type="image">
<left>0</left>
<top>0</top>
<width>969</width>
<height>70</height>
<texture colordiffuse="FF12B2E7" border="2">Shortcut/white70.png</texture>
</control>
<!-- <control type="label" id="30000">
<textoffsetx>70</textoffsetx>
<left>-30</left>
<top>0</top>
<width>969</width>
<height>70</height>
<font>font20_title</font>
<label>Kodi on Demand - $ADDON[plugin.video.kod 30998]</label>
<align>left</align>
<aligny>center</aligny>
<shadowcolor>black</shadowcolor>
</control> -->
<control type="button">
<left>-1920</left>
<top>-1080</top>
<width>5760</width>
<height>3240</height>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<onclick>Action(close)</onclick>
</control>
<control type="button">
<description>button overlay to avoid closing in dialog area</description>
<left>0</left>
<top>0</top>
<width>969</width>
<height>283</height>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<onclick>noop</onclick>
</control>
<control type="radiobutton" id="32501">
<left>969</left>
<top>11</top>
<width>48</width>
<height>48</height>
<radiowidth>48</radiowidth>
<radioheight>48</radioheight>
<texturefocus>-</texturefocus>
<texturenofocus>-</texturenofocus>
<label></label>
<animation effect="slide" end="-70,0" time="0" condition="true">Conditional</animation>
<textureradioofffocus colordiffuse="EEFFFFFF">Shortcut/close.png</textureradioofffocus>
<textureradiooffnofocus colordiffuse="EEFFFFFF">Shortcut/close.png</textureradiooffnofocus>
<textureradioonfocus colordiffuse="EEFFFFFF">Shortcut/close.png</textureradioonfocus>
<textureradioonnofocus colordiffuse="EEFFFFFF">Shortcut/logo.png</textureradioonnofocus>
<onclick>Action(close)</onclick>
<onup>32500</onup>
<ondown>32500</ondown>
<width>880</width>
<height>220</height>
<texture border="2" colordiffuse="FF232323">Shortcut/white.png</texture>
</control>
<control type="group">
<control type="group">
<control type="image">
<left>-21</left>
<top>50</top>
<top>0</top>
<width>1011</width>
<height>253</height>
<texture border="40">Shortcut/dialogbutton-nofo.png</texture>
<height>220</height>
<texture>Shortcut/dialogbutton-nofo.png</texture>
</control>
<control type="list" id="32500">
<left>-139</left>
<top>55</top>
<width>980</width>
<left>-130</left>
<top>0</top>
<width>880</width>
<height>220</height>
<onup>32501</onup>
<ondown>61</ondown>
@@ -100,14 +52,14 @@
<pagecontrol>61</pagecontrol>
<animation effect="slide" start="0,0" end="10,0" time="0" condition="true">Conditional</animation>
<animation effect="slide" end="120,0" time="0" condition="!Control.IsVisible(5)">Conditional</animation>
<itemlayout height="225" width="323">
<top>2</top>
<itemlayout height="220" width="220">
<!-- <top>2</top> -->
<control type="image">
<top>5</top>
<left>10</left>
<width>347</width>
<height>260</height>
<texture border="40">Shortcut/button-nofo.png</texture>
<top>0</top>
<left>0</left>
<width>220</width>
<height>220</height>
<texture>Shortcut/button-nofo.png</texture>
</control>
<control type="image">
<left>30</left>
@@ -117,10 +69,10 @@
<texture colordiffuse="60FFFFFF">Shortcut/black.png</texture>
</control>
<control type="image">
<left>95</left>
<top>23</top>
<width>160</width>
<height>130</height>
<left>35</left>
<top>35</top>
<width>150</width>
<height>150</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
@@ -133,39 +85,21 @@
<aspectratio>keep</aspectratio>
<texture>$INFO[ListItem.Overlay]</texture>
</control>
<control type="textbox">
<left>25</left>
<top>146</top>
<width>300</width>
<height>74</height>
<label>[COLOR grey]$INFO[ListItem.Label][/COLOR]</label>
<shadowcolor>text_shadow</shadowcolor>
<font>font12</font>
<align>center</align>
<aligny>center</aligny>
</control>
</itemlayout>
<focusedlayout height="225" width="323">
<focusedlayout height="220" width="220">
<control type="group">
<depth>0.10</depth>
<animation type="Focus" reversible="false">
<effect type="zoom" center="auto" start="100" end="108" time="250" tween="sine" />
</animation>
<animation type="UnFocus" reversible="false">
<effect type="zoom" center="auto" start="108" end="100" time="150" tween="sine" />
</animation>
<top>2</top>
<control type="image">
<width>340</width>
<height>245</height>
<texture border="40">Shortcut/button-nofo.png</texture>
<width>220</width>
<height>220</height>
<texture>Shortcut/button-nofo.png</texture>
<animation effect="fade" start="0" end="100" time="0">Unfocus</animation>
<animation effect="fade" start="100" end="0" time="0">Focus</animation>
</control>
<control type="image">
<width>340</width>
<height>237</height>
<texture border="40" colordiffuse="FF12B2E7">Shortcut/button-fo.png</texture>
<width>220</width>
<height>220</height>
<texture colordiffuse="FF0082C2">Shortcut/button-fo.png</texture>
<animation effect="fade" start="100" end="0" time="0">Unfocus</animation>
</control>
<control type="image">
@@ -184,18 +118,18 @@
<texture colordiffuse="60FFFFFF">Shortcut/black.png</texture>
</control>
<control type="image">
<left>95</left>
<top>23</top>
<width>160</width>
<height>130</height>
<left>35</left>
<top>35</top>
<width>150</width>
<height>150</height>
<texture>$INFO[ListItem.Property(thumb)]</texture>
<aspectratio>keep</aspectratio>
<align>center</align>
</control>
<control type="textbox">
<left>25</left>
<left>0</left>
<top>146</top>
<width>300</width>
<width>220</width>
<height>74</height>
<font>font12</font>
<label>$INFO[ListItem.Label]</label>
@@ -206,13 +140,13 @@
</focusedlayout>
</control>
<control type="scrollbar" id="61">
<left>-122</left>
<top>280</top>
<width>972</width>
<height>15</height>
<texturesliderbackground colordiffuse="FFE6E6E6">Shortcut/white.png</texturesliderbackground>
<texturesliderbar colordiffuse="FF12D2E7">Shortcut/white.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="FF12B2E7">Shortcut/white.png</texturesliderbarfocus>
<left>-120</left>
<top>220</top>
<width>880</width>
<height>10</height>
<texturesliderbackground colordiffuse="FF232323">Shortcut/white.png</texturesliderbackground>
<texturesliderbar colordiffuse="FF1f1f1f">Shortcut/white.png</texturesliderbar>
<texturesliderbarfocus colordiffuse="FF0082C2">Shortcut/white.png</texturesliderbarfocus>
<textureslidernib>-</textureslidernib>
<textureslidernibfocus>-</textureslidernibfocus>
<showonepage>false</showonepage>

View File

@@ -7,8 +7,8 @@
<zorder>1</zorder>
<controls>
<control type="image">
<animation type="WindowOpen" reversible="false">
<effect type="slide" start="-200" end="0" time="80"/>
<animation type="WindowOpen" reversible="true">
<effect type="slide" start="-200" end="0" time="250"/>
</animation>
<left>0</left>
<top>0</top>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 866 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB