Movistar's guide already carries the synopsis (Resena), genre, year, age rating and pictures; write them to epg.xml. IPTV Simple was set to reload the channel list and guide once a day at 4:00, so a new epg.xml didn't reach Kodi until then. Use its hourly reload, which also makes Kodi fetch the guide again. The service switches existing TV guide setups over once and restarts IPTV Simple when nothing is playing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
2.4 KiB
Python
66 lines
2.4 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
|
|
from resources.lib import kodimov
|
|
|
|
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
|
|
try:
|
|
pvr_dir = translatePath(xbmcaddon.Addon('pvr.iptvsimple').getAddonInfo('profile'))
|
|
restart_iptv = kodimov.use_hourly_iptv_refresh(pvr_dir, 'kodimovplus')
|
|
except RuntimeError: # IPTV Simple not installed or disabled
|
|
restart_iptv = False
|
|
player = xbmc.Player()
|
|
monitor = xbmc.Monitor()
|
|
while not monitor.abortRequested():
|
|
if monitor.waitForAbort(1):
|
|
break
|
|
if restart_iptv and not player.isPlaying(): # restarting stops live TV
|
|
restart_iptv = False
|
|
kodimov.restart_iptv_simple()
|
|
if time.time() >= next_export:
|
|
next_export = time.time() + 6 * 3600
|
|
if addon.getSettingBool('auto_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()
|