KodiMov+ 1.0.0+kodimov.1: fork of Movistar+ 1.0.0
- New id plugin.video.kodimovplus, name KodiMov+, proxy port 57031 - Takes over the login of plugin.video.movistarplus on first run - Password-less login from the Movistar home network (autologin token traded for a classic token via the new servers' initData) - Hides the channels that can't play (LALIGA, Liga de Campeones) - Adds TVG2 and TeleVigo to the TV guide list - Re-exports the TV guide channel list every 6 hours Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ccc17b4e5c
commit
066a203e9e
35 files changed
+412
-30
No files matched your search
+35
-4
@@ -662,6 +662,20 @@ def login():
|
||||
else:
|
||||
show_notification(addon.getLocalizedString(30166)) # Failed
|
||||
|
||||
def network_login():
|
||||
account_number = addon.getSetting('account_number')
|
||||
if not account_number and not m.cache.load_file('account.json') and not m.cache.load_file('tokens.json'):
|
||||
account_number = input_window(addon.getLocalizedString(30502)) # Account number
|
||||
if not account_number: return
|
||||
addon.setSetting('account_number', account_number)
|
||||
# Keeps device_id.conf: clearing the session would register a new device.
|
||||
if m.try_network_login(account_number, force=True):
|
||||
show_notification(addon.getLocalizedString(30503), xbmcgui.NOTIFICATION_INFO) # Logged in
|
||||
xbmc.executebuiltin('Container.Refresh')
|
||||
else:
|
||||
reason = (m.network_login_result or (False, ''))[1]
|
||||
show_notification(addon.getLocalizedString(30504).format(reason)) # Failed
|
||||
|
||||
def login_with_key():
|
||||
filename = xbmcgui.Dialog().browseSingle(1, addon.getLocalizedString(30182), '', '.key')
|
||||
if filename:
|
||||
@@ -686,6 +700,7 @@ def export_credentials():
|
||||
def select_account(id, name):
|
||||
m.switch_account(id)
|
||||
open_folder(name)
|
||||
add_menu_option(addon.getLocalizedString(30501), get_url(action='network_login')) # Login from home network
|
||||
add_menu_option(addon.getLocalizedString(30183), get_url(action='login')) # Login with username
|
||||
if addon.getSettingBool('enable_key_login'):
|
||||
add_menu_option(addon.getLocalizedString(30181), get_url(action='login_with_key')) # Login with key
|
||||
@@ -750,11 +765,17 @@ def create_iptv_settings():
|
||||
if os.path.exists(filename):
|
||||
res = xbmcgui.Dialog().yesno(addon.getLocalizedString(30322), addon.getLocalizedString(30323))
|
||||
if res == False: return
|
||||
save_iptv_settings(filename, 'Movistarplus', 'movistarplus', epg_url)
|
||||
save_iptv_settings(filename, 'KodiMov+', 'kodimovplus', epg_url)
|
||||
export_epg_now()
|
||||
except:
|
||||
show_notification(addon.getLocalizedString(30324))
|
||||
|
||||
def export_channels_now():
|
||||
if not m.logged: return
|
||||
channels_filename = os.path.join(profile_dir, 'channels.m3u8')
|
||||
if m.export_channels_to_m3u8(channels_filename, addon.getSettingBool('only_subscribed')):
|
||||
LOG('export_channels_now: channel list changed')
|
||||
|
||||
def export_epg_now():
|
||||
def report_progress(message):
|
||||
show_notification(addon.getLocalizedString(30314).format(message), xbmcgui.NOTIFICATION_INFO)
|
||||
@@ -816,6 +837,10 @@ def router(paramstring):
|
||||
login_with_key()
|
||||
elif params['action'] == 'login':
|
||||
login()
|
||||
elif params['action'] == 'network_login':
|
||||
network_login()
|
||||
elif params['action'] == 'export_channels_now':
|
||||
export_channels_now()
|
||||
elif params['action'] == 'export_key':
|
||||
export_key()
|
||||
elif params['action'] == 'export_credentials':
|
||||
@@ -880,8 +905,10 @@ def router(paramstring):
|
||||
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
|
||||
elif m.expired_access_token:
|
||||
show_notification(addon.getLocalizedString(30208))
|
||||
else:
|
||||
if m.expired_access_token:
|
||||
show_notification(addon.getLocalizedString(30208))
|
||||
add_menu_option(addon.getLocalizedString(30501), get_url(action='network_login'), icon='account.png') # Login from home network
|
||||
|
||||
add_menu_option(addon.getLocalizedString(30160), get_url(action='accounts'), icon='account.png') # Accounts
|
||||
add_menu_option(addon.getLocalizedString(30450), get_url(action='show_donation_dialog'), icon='qr.png') # Donation
|
||||
@@ -902,8 +929,12 @@ def run():
|
||||
reuse_devices = addon.getSettingBool('reuse_devices')
|
||||
LOG('profile_dir: {}'.format(profile_dir))
|
||||
LOG('reuse_devices: {}'.format(reuse_devices))
|
||||
m = Movistar(profile_dir, reuse_devices=reuse_devices)
|
||||
m = Movistar(profile_dir, reuse_devices=reuse_devices,
|
||||
network_login=addon.getSettingBool('network_login'),
|
||||
account_number=addon.getSetting('account_number'))
|
||||
m.add_extra_info = addon.getSettingBool('add_extra_info')
|
||||
m.hide_unplayable = addon.getSettingBool('hide_unplayable')
|
||||
m.add_extra_channels = addon.getSettingBool('extra_channels')
|
||||
if addon.getSettingBool('uhd'):
|
||||
m.quality = 'UHD'
|
||||
|
||||
|
||||
Reference in new issue
Block a user