Files
kodimovplus/service.py
T
xockoandClaude Opus 5.5 119002fbbf 1.0.0+kodimov.2: programme guide for every channel, TeleVigo on 15
- The amazon.tv guide that upstream 1.0.0 switched to is a flat list of
  programmes; group it by channel (the guide export crashed with KeyError)
- Add TVG2/TeleVigo listings from the EPG_dobleM guide to epg.xml
- Export channels + programme guide every 6 hours, by default, without
  on-screen notifications
- TeleVigo moves to 15, near the generalist channels

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:01:37 +01:00

56 lines
2.0 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
import time
import xbmc
import xbmcgui
from resources.lib.proxy import Proxy
from resources.lib.addon import *
from resources.lib.log import LOG
def export_epg():
from datetime import datetime, timedelta
def needs_update(filename):
if os.path.exists(filename):
file_modification_time = datetime.fromtimestamp(os.path.getmtime(filename))
return datetime.now() - file_modification_time > timedelta(hours=6)
return True
channels_filename = os.path.join(profile_dir, 'channels.m3u8')
epg_filename = os.path.join(profile_dir, 'epg.xml')
LOG('channels filename: {}'.format(channels_filename))
LOG('epg filename: {}'.format(epg_filename))
channels_needs_update = needs_update(channels_filename)
epg_needs_update = needs_update(epg_filename)
LOG('channels_needs_update: {} epg_needs_update: {}'.format(channels_needs_update, epg_needs_update))
if channels_needs_update or epg_needs_update:
xbmc.executebuiltin('RunPlugin(plugin://plugin.video.kodimovplus/?action=export_epg_now)')
if __name__ == '__main__':
LOG('Service started')
proxy = Proxy()
proxy.start()
LOG('proxy_address: {}'.format(proxy.proxy_address))
# Refreshes the TV guide channel list (new channels, new numbers) and the
# programme guide a minute after Kodi starts and then every 6 hours. Opening the add-on also renews the 10-day Movistar login.
next_export = time.time() + 60
monitor = xbmc.Monitor()
while not monitor.abortRequested():
if monitor.waitForAbort(1):
break
if time.time() >= next_export:
next_export = time.time() + 6 * 3600
if addon.getSettingBool('export_epg'): # channels + programme guide
xbmc.executebuiltin('RunPlugin(plugin://plugin.video.kodimovplus/?action=export_epg_now&quiet=1)')
elif addon.getSettingBool('export_channels'):
xbmc.executebuiltin('RunPlugin(plugin://plugin.video.kodimovplus/?action=export_channels_now)')
proxy.stop()