Version 0.7.13
No files matched your search
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
@@ -29,6 +29,10 @@ msgctxt "#30003"
|
||||
msgid "Experimental"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "Subtitles"
|
||||
msgstr ""
|
||||
|
||||
# For Orange and Movistar only
|
||||
msgctxt "#30010"
|
||||
msgid "DRM type"
|
||||
@@ -95,6 +99,10 @@ msgctxt "#30025"
|
||||
msgid "Send video progress to provider's server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Update interval (in seconds)"
|
||||
msgstr ""
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30031"
|
||||
msgid "Streaming service"
|
||||
@@ -132,7 +140,7 @@ msgstr ""
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30040"
|
||||
msgid "Use only for these languages (e.g.: es en pt):"
|
||||
msgid "Use for these languages (e.g.: es en pt):"
|
||||
msgstr ""
|
||||
|
||||
# For SkyOTT only
|
||||
@@ -140,6 +148,11 @@ msgctxt "#30041"
|
||||
msgid "Subscription country (two letter code):"
|
||||
msgstr ""
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30050"
|
||||
msgid "Remember username and password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30101"
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
@@ -274,6 +287,15 @@ msgctxt "#30167"
|
||||
msgid "Edit account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30168"
|
||||
msgid "Login successful"
|
||||
msgstr ""
|
||||
|
||||
# For Orange and Movistar only
|
||||
msgctxt "#30169"
|
||||
msgid "Record season"
|
||||
msgstr ""
|
||||
|
||||
# For Orange and Movistar only
|
||||
msgctxt "#30170"
|
||||
msgid "Play from the beginning"
|
||||
@@ -315,6 +337,10 @@ msgctxt "#30178"
|
||||
msgid "Title removed from my list"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30179"
|
||||
msgid "Remove from continue watching"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30180"
|
||||
msgid "Profiles"
|
||||
msgstr ""
|
||||
@@ -347,6 +373,18 @@ msgctxt "#30187"
|
||||
msgid "Select the cookie file"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30190"
|
||||
msgid "Login to {} with a key file"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30191"
|
||||
msgid "Login to {} with username"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30192"
|
||||
msgid "Use a {} account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30200"
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
@@ -448,3 +486,19 @@ msgstr ""
|
||||
msgctxt "#30321"
|
||||
msgid "Show age rating before playback"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30400"
|
||||
msgid "{} days remaining"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30401"
|
||||
msgid "{} hours remaining"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30450"
|
||||
msgid "Buy the developer a coffee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30451"
|
||||
msgid "If you find this addon useful you can buy the developer a coffee:"
|
||||
msgstr ""
|
||||
@@ -12,7 +12,7 @@ msgstr ""
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE\n"
|
||||
"Language: en\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -29,6 +29,10 @@ msgctxt "#30003"
|
||||
msgid "Experimental"
|
||||
msgstr "Experimental"
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "Subtitles"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
msgctxt "#30010"
|
||||
msgid "DRM type"
|
||||
msgstr "Tipo de DRM"
|
||||
@@ -85,6 +89,10 @@ msgctxt "#30025"
|
||||
msgid "Send video progress to provider's server"
|
||||
msgstr "Enviar progreso al servidor de la plataforma"
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Update interval (in seconds)"
|
||||
msgstr "Tiempo entre actualizaciones (en segundos)"
|
||||
|
||||
msgctxt "#30031"
|
||||
msgid "Streaming service"
|
||||
msgstr "Plataforma"
|
||||
@@ -114,15 +122,21 @@ msgctxt "#30037"
|
||||
msgid "Enable HDCP"
|
||||
msgstr "Habilitar HDCP"
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30040"
|
||||
msgid "Use only for these languages (e.g.: es en pt):"
|
||||
msgstr "Usar solo para estos idiomas (ej: es en pt):"
|
||||
msgid "Use for these languages (e.g.: es en pt):"
|
||||
msgstr "Usar para estos idiomas (ej: es en pt):"
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30041"
|
||||
msgid "Subscription country (two letter code):"
|
||||
msgstr "País de la suscripción (código de dos letras):"
|
||||
|
||||
# For SkyOTT only
|
||||
msgctxt "#30050"
|
||||
msgid "Remember username and password"
|
||||
msgstr "Recordar usuario y clave"
|
||||
|
||||
msgctxt "#30101"
|
||||
msgid "Menu"
|
||||
msgstr "Menú"
|
||||
@@ -255,6 +269,15 @@ msgctxt "#30167"
|
||||
msgid "Edit account"
|
||||
msgstr "Editar cuenta"
|
||||
|
||||
msgctxt "#30168"
|
||||
msgid "Login successful"
|
||||
msgstr "Se ha iniciado sesión"
|
||||
|
||||
# For Orange and Movistar only
|
||||
msgctxt "#30169"
|
||||
msgid "Record season"
|
||||
msgstr "Grabar temporada"
|
||||
|
||||
msgctxt "#30170"
|
||||
msgid "Play from the beginning"
|
||||
msgstr "Ver desde el principio"
|
||||
@@ -291,6 +314,10 @@ msgctxt "#30178"
|
||||
msgid "Title removed from my list"
|
||||
msgstr "Título quitado de mi lista"
|
||||
|
||||
msgctxt "#30179"
|
||||
msgid "Remove from continue watching"
|
||||
msgstr "Quitar de seguir viendo"
|
||||
|
||||
msgctxt "#30180"
|
||||
msgid "Profiles"
|
||||
msgstr "Perfiles"
|
||||
@@ -323,6 +350,18 @@ msgctxt "#30187"
|
||||
msgid "Select the cookie file"
|
||||
msgstr "Selecciona el fichero cookie"
|
||||
|
||||
msgctxt "#30190"
|
||||
msgid "Login to {} with a key file"
|
||||
msgstr "Iniciar sesión en {} con fichero key"
|
||||
|
||||
msgctxt "#30191"
|
||||
msgid "Login to {} with username"
|
||||
msgstr "Iniciar sesión en {} con nombre y clave"
|
||||
|
||||
msgctxt "#30192"
|
||||
msgid "Use a {} account"
|
||||
msgstr "Usar una cuenta de {}"
|
||||
|
||||
msgctxt "#30200"
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
@@ -372,6 +411,11 @@ msgctxt "#30303"
|
||||
msgid "IPTV Manager settings"
|
||||
msgstr "Opciones de IPTV Manager"
|
||||
|
||||
# For Orange and Movistar only
|
||||
msgctxt "#30304"
|
||||
msgid "IPTV"
|
||||
msgstr "IPTV"
|
||||
|
||||
msgctxt "#30305"
|
||||
msgid "Export channels and EPG for IPTV automatically"
|
||||
msgstr "Exportar automáticamente canales y guía para IPTV"
|
||||
@@ -407,3 +451,23 @@ msgstr "Calificación: {}"
|
||||
msgctxt "#30321"
|
||||
msgid "Show age rating before playback"
|
||||
msgstr "Mostrar la calificación de edades al empezar la reproducción"
|
||||
|
||||
msgctxt "#30400"
|
||||
msgid "{} days remaining"
|
||||
msgstr "quedan {} días"
|
||||
|
||||
msgctxt "#30401"
|
||||
msgid "{} hours remaining"
|
||||
msgstr "quedan {} horas"
|
||||
|
||||
msgctxt "#30450"
|
||||
msgid "Buy the developer a coffee"
|
||||
msgstr "Invita al programador a un café"
|
||||
|
||||
msgctxt "#30451"
|
||||
msgid "If you find this addon useful you can buy the developer a coffee:"
|
||||
msgstr "Si este addon es útil para ti puedes invitar al programador a un café:"
|
||||
|
||||
#~ msgctxt "#30040"
|
||||
#~ msgid "Use only for these languages (e.g.: es en pt):"
|
||||
#~ msgstr "Usar solo para estos idiomas (ej: es en pt):"
|
||||
@@ -0,0 +1,44 @@
|
||||
# encoding: utf-8
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
from __future__ import unicode_literals, absolute_import, division
|
||||
|
||||
import xbmcgui
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
|
||||
class CustomDialog(xbmcgui.WindowXMLDialog):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.image = kwargs.get("image", "")
|
||||
#self.heading = kwargs.get("heading", "")
|
||||
self.text = kwargs.get("text", "")
|
||||
|
||||
def onInit(self):
|
||||
self.imagecontrol = 501
|
||||
self.textbox = 502
|
||||
self.okbutton = 503
|
||||
self.heading = 504
|
||||
self.showdialog()
|
||||
|
||||
def showdialog(self):
|
||||
self.getControl(self.imagecontrol).setImage(self.image)
|
||||
self.getControl(self.textbox).setText(self.text)
|
||||
#self.getControl(self.heading).setLabel(self.heading)
|
||||
self.setFocus(self.getControl(self.okbutton))
|
||||
|
||||
def onClick(self, controlId):
|
||||
if (controlId == self.okbutton):
|
||||
self.close()
|
||||
|
||||
def show_donation_dialog():
|
||||
addon = xbmcaddon.Addon()
|
||||
try:
|
||||
CWD = addon.getAddonInfo('path').decode('utf-8')
|
||||
except:
|
||||
CWD = addon.getAddonInfo('path')
|
||||
image = 'qr.png'
|
||||
text = addon.getLocalizedString(30451)
|
||||
text += '[CR]https://www.buymeacoffee.com/addons'
|
||||
dialog = CustomDialog("customdialog.xml", CWD, 'default', '1080i', text=text, image=image)
|
||||
dialog.doModal()
|
||||
@@ -7,7 +7,7 @@ import xbmc
|
||||
import xbmcgui
|
||||
import xbmcplugin
|
||||
from .log import LOG
|
||||
from .addon import addon
|
||||
from .addon import addon,translatePath
|
||||
|
||||
def handle():
|
||||
try:
|
||||
@@ -34,12 +34,16 @@ def open_folder(name, content_type = 'videos'):
|
||||
def close_folder(updateListing=False, cacheToDisc=True):
|
||||
xbmcplugin.endOfDirectory(handle(), updateListing=updateListing, cacheToDisc=cacheToDisc)
|
||||
|
||||
def add_menu_option(title, url, context_menu = None, info = None, art = None):
|
||||
def add_menu_option(title, url, context_menu = None, info = None, art = None, icon=None):
|
||||
list_item = xbmcgui.ListItem(label=title)
|
||||
if not info:
|
||||
info = {'title': title, 'plot': '[B][/B]'}
|
||||
if not art:
|
||||
art = {'icon': addon.getAddonInfo('icon'), 'poster': addon.getAddonInfo('icon')}
|
||||
if icon:
|
||||
path = addon.getAddonInfo('path')
|
||||
icon_path = translatePath(path + '/resources/icons/' + icon)
|
||||
art = {'icon': icon_path, 'poster': icon_path}
|
||||
list_item.setInfo('video', info)
|
||||
list_item.setArt(art)
|
||||
if context_menu:
|
||||
|
||||
@@ -1145,6 +1145,13 @@ class Movistar(object):
|
||||
return res
|
||||
|
||||
def export_epg_to_xml(self, filename):
|
||||
if sys.version_info[0] < 3:
|
||||
# Python 2
|
||||
from cgi import escape as html_escape
|
||||
else:
|
||||
# Python 3
|
||||
from html import escape as html_escape
|
||||
|
||||
channels = self.export_channels()
|
||||
res = []
|
||||
res.append('<?xml version="1.0" encoding="UTF-8"?>\n' +
|
||||
@@ -1169,12 +1176,12 @@ class Movistar(object):
|
||||
res.append('<programme start="{}" stop="{}" channel="{}"'.format(start, stop, ch['id']) +
|
||||
(' catchup-id="{}"'.format(url) if url else "") +
|
||||
'>\n' +
|
||||
' <title>{}</title>\n'.format(e['title']) +
|
||||
' <sub-title>{}</sub-title>\n'.format(e['subtitle']))
|
||||
' <title>{}</title>\n'.format(html_escape(e['title'])) +
|
||||
' <sub-title>{}</sub-title>\n'.format(html_escape(e['subtitle'])))
|
||||
if 'image' in e:
|
||||
res.append(' <icon src="{}"/>\n'.format(e['image']))
|
||||
if 'description' in e:
|
||||
res.append(' <desc>{}</desc>\n'.format(e['description']))
|
||||
res.append(' <desc>{}</desc>\n'.format(html_escape(e['description'])))
|
||||
if 'credits' in e and len(e['credits']) > 0:
|
||||
res.append(' <credits>\n');
|
||||
for c in e['credits']:
|
||||
|
||||
@@ -641,23 +641,31 @@ def router(paramstring):
|
||||
else:
|
||||
# Main
|
||||
open_folder(addon.getLocalizedString(30101)) # Menu
|
||||
xbmcplugin.setContent(_handle, 'files')
|
||||
|
||||
if m.logged:
|
||||
add_menu_option(addon.getLocalizedString(30104), get_url(action='tv')) # TV
|
||||
add_menu_option(addon.getLocalizedString(30107), get_url(action='epg')) # EGP
|
||||
add_menu_option(addon.getLocalizedString(30102), get_url(action='wishlist')) # My list
|
||||
add_menu_option(addon.getLocalizedString(30103), get_url(action='recordings')) # Recordings
|
||||
add_menu_option(addon.getLocalizedString(30111), get_url(action='vod')) # VOD
|
||||
add_menu_option(addon.getLocalizedString(30112), get_url(action='search')) # Search
|
||||
add_menu_option(addon.getLocalizedString(30180), get_url(action='profiles')) # Profiles
|
||||
add_menu_option(addon.getLocalizedString(30108), get_url(action='devices')) # Devices
|
||||
add_menu_option(addon.getLocalizedString(30104), get_url(action='tv'), icon='tv.png') # TV
|
||||
add_menu_option(addon.getLocalizedString(30107), get_url(action='epg'), icon='epg.png') # EGP
|
||||
add_menu_option(addon.getLocalizedString(30102), get_url(action='wishlist'), icon='mylist.png') # My list
|
||||
add_menu_option(addon.getLocalizedString(30103), get_url(action='recordings'), icon='recording.png') # Recordings
|
||||
add_menu_option(addon.getLocalizedString(30111), get_url(action='vod'), icon='vod.png') # VOD
|
||||
add_menu_option(addon.getLocalizedString(30112), get_url(action='search'), icon='search.png') # Search
|
||||
add_menu_option(addon.getLocalizedString(30180), get_url(action='profiles'), icon='profiles.png') # Profiles
|
||||
add_menu_option(addon.getLocalizedString(30108), get_url(action='devices'), icon='devices.png') # Devices
|
||||
|
||||
add_menu_option(addon.getLocalizedString(30160), get_url(action='user')) # Accounts
|
||||
add_menu_option(addon.getLocalizedString(30160), get_url(action='user'), icon='account.png') # Accounts
|
||||
close_folder(cacheToDisc=False)
|
||||
|
||||
|
||||
def run():
|
||||
# Call the router function and pass the plugin call parameters to it.
|
||||
# We use string slicing to trim the leading '?' from the plugin call paramstring
|
||||
params = sys.argv[2][1:]
|
||||
|
||||
if 'show_donation_dialog' in params:
|
||||
from .customdialog import show_donation_dialog
|
||||
show_donation_dialog()
|
||||
return
|
||||
|
||||
global m
|
||||
reuse_devices = addon.getSettingBool('reuse_devices')
|
||||
LOG('profile_dir: {}'.format(profile_dir))
|
||||
@@ -673,9 +681,6 @@ def run():
|
||||
# Clear cache
|
||||
LOG('Cleaning cache. {} files removed.'.format(m.cache.clear_cache()))
|
||||
|
||||
# Call the router function and pass the plugin call parameters to it.
|
||||
# We use string slicing to trim the leading '?' from the plugin call paramstring
|
||||
params = sys.argv[2][1:]
|
||||
if '/iptv/channels' in sys.argv[0]: params += '&action=iptv-channels'
|
||||
elif '/iptv/epg' in sys.argv[0]: params += '&action=iptv-epg'
|
||||
router(params)
|
||||
@@ -8,8 +8,9 @@
|
||||
<setting label="30019" type="action" id="is_settings" action="Addon.OpenSettings(inputstream.adaptive)" enable="System.HasAddon(inputstream.adaptive)" option="close"/>
|
||||
<setting id="reuse_devices" type="bool" label="30023" default="false" visible="true"/>
|
||||
<setting id="open_session" type="bool" label="30022" default="true" visible="true"/>
|
||||
<setting type="sep"/>
|
||||
<setting id="profile_id" type="labelenum" label="Profile ID" values="Auto|OTT|NODTH"/>
|
||||
<setting type="sep"/>
|
||||
<setting label="30450" type="action" id="donation" action="RunPlugin(plugin://plugin.video.movistarplus?action=show_donation_dialog)" option="close"/>
|
||||
</category>
|
||||
<category label="30002">
|
||||
<setting label="30011" type="bool" id="manifest_modification" default="true"/>
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<window>
|
||||
<coordinates>
|
||||
<left>502</left>
|
||||
<top>345</top>
|
||||
</coordinates>
|
||||
<controls>
|
||||
<animation type="WindowOpen" reversible="false">
|
||||
<effect type="zoom" start="80" end="100" center="960,540" 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="fade" start="100" end="0" time="240" />
|
||||
</animation>
|
||||
<control type="image">
|
||||
<left>-1920</left>
|
||||
<top>-1080</top>
|
||||
<width>5760</width>
|
||||
<height>3240</height>
|
||||
<animation effect="fade" start="0" end="100" time="300">WindowOpen</animation>
|
||||
<animation effect="fade" start="100" end="0" time="200">WindowClose</animation>
|
||||
<texture colordiffuse="C2FFFFFF">black.png</texture>
|
||||
</control>
|
||||
<control type="image">
|
||||
<left>0</left>
|
||||
<top>0</top>
|
||||
<width>1030</width>
|
||||
<height>380</height>
|
||||
<texture border="2">dialog-bg.png</texture>
|
||||
</control>
|
||||
<control type="image">
|
||||
<left>0</left>
|
||||
<top>0</top>
|
||||
<width>1030</width>
|
||||
<height>70</height>
|
||||
<texture colordiffuse="FF12B2E7" border="2">white.png</texture>
|
||||
</control>
|
||||
<control type="label" id="504">
|
||||
<textoffsetx>70</textoffsetx>
|
||||
<left>0</left>
|
||||
<top>0</top>
|
||||
<width>1030</width>
|
||||
<height>70</height>
|
||||
<font>font20_title</font>
|
||||
<label>[B]$INFO[System.AddonTitle(plugin.video.movistarplus)][/B]</label>
|
||||
<align>center</align>
|
||||
<aligny>center</aligny>
|
||||
<shadowcolor>FF000000</shadowcolor>
|
||||
</control>
|
||||
<control type="image" id="501">
|
||||
<left>30</left>
|
||||
<top>75</top>
|
||||
<width>300</width>
|
||||
<height>300</height>
|
||||
<aspectratio aligny="center" align="center">keep</aspectratio>
|
||||
</control>
|
||||
<control type="textbox" id="502">
|
||||
<left>360</left>
|
||||
<top>85</top>
|
||||
<width>660</width>
|
||||
<height>300</height>
|
||||
<font>font12_title</font>
|
||||
<align>left</align>
|
||||
<aligny>top</aligny>
|
||||
<shadowcolor>FF000000</shadowcolor>
|
||||
</control>
|
||||
<control type="button" id="503">
|
||||
<left>715</left>
|
||||
<top>290</top>
|
||||
<width>300</width>
|
||||
<height>90</height>
|
||||
<font>font12_title</font>
|
||||
<textcolor>FFF0F0F0</textcolor>
|
||||
<textoffsetx>20</textoffsetx>
|
||||
<label>15067</label>
|
||||
<align>center</align>
|
||||
<aligny>center</aligny>
|
||||
<texturefocus border="40" colordiffuse="FF12B2E7">dialogbutton-fo.png</texturefocus>
|
||||
<texturenofocus border="40">dialogbutton-nofo.png</texturenofocus>
|
||||
</control>
|
||||
</controls>
|
||||
</window>
|
||||
|
||||
|
After Width: | Height: | Size: 166 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 167 B |