Updated kodi settings on Lenovo
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# Copyright (C) 2024 Lunatixz
|
||||
#
|
||||
#
|
||||
# This file is part of PseudoTV Live.
|
||||
#
|
||||
# PseudoTV Live is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# PseudoTV Live is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with PseudoTV Live. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from globals import *
|
||||
from plugin import Plugin
|
||||
|
||||
def run(sysARG, fitem: dict={}, nitem: dict={}):
|
||||
"""
|
||||
Main entry point for PseudoTV Live's functionality.
|
||||
|
||||
This function handles various modes of playback and interaction based on the parameters passed.
|
||||
These modes include live TV, video-on-demand (VOD), DVR playback, guide display, and more.
|
||||
It also processes system arguments and settings to determine the appropriate behavior.
|
||||
|
||||
Args:
|
||||
sysARG (list): System arguments passed by the Kodi interface.
|
||||
fitem (dict, optional): Dictionary containing information about the current (featured) item. Defaults to an empty dictionary.
|
||||
nitem (dict, optional): Dictionary containing information about the next item. Defaults to an empty dictionary.
|
||||
|
||||
Behavior:
|
||||
- Parses system arguments and determines the mode of operation.
|
||||
- Depending on the mode, it invokes the appropriate plugin functionality (e.g., play live TV, VOD, DVR, etc.).
|
||||
- Utilizes utility functions like `threadit` for threading and `PROPERTIES` for managing app states.
|
||||
|
||||
Supported Modes:
|
||||
- 'live': Plays live TV or a playlist based on the provided parameters.
|
||||
- 'vod': Plays video-on-demand content.
|
||||
- 'dvr': Plays DVR recordings.
|
||||
- 'resume': Resumes paused playback.
|
||||
- 'broadcast': Simulates broadcast playback.
|
||||
- 'radio': Plays radio streams.
|
||||
- 'guide': Opens the TV guide using the PVR client.
|
||||
- 'settings': Opens the settings menu.
|
||||
|
||||
Notifications:
|
||||
- Displays notification dialogs for unsupported modes or errors.
|
||||
|
||||
"""
|
||||
with BUILTIN.busy_dialog(), PROPERTIES.suspendActivity():
|
||||
params = dict(urllib.parse.parse_qsl(sysARG[2][1:].replace('.pvr','')))
|
||||
mode = (params.get("mode") or 'guide')
|
||||
params['fitem'] = fitem
|
||||
params['nitem'] = nitem
|
||||
params['vid'] = decodeString(params.get("vid",''))
|
||||
params["chid"] = (params.get("chid") or fitem.get('citem',{}).get('id'))
|
||||
params['title'] = (params.get('title') or BUILTIN.getInfoLabel('label'))
|
||||
params['name'] = (unquoteString(params.get("name",'')) or BUILTIN.getInfoLabel('ChannelName'))
|
||||
params['isPlaylist'] = bool(SETTINGS.getSettingInt('Playback_Method'))
|
||||
log("Default: run, params = %s"%(params))
|
||||
|
||||
if PROPERTIES.isRunning('togglePVR'): DIALOG.notificationDialog(LANGUAGE(32166))
|
||||
elif mode == 'live':
|
||||
if params.get('start') == '{utc}':
|
||||
PROPERTIES.setPropTimer('chkPVRRefresh')
|
||||
params.update({'start':0,'stop':0,'duration':0})
|
||||
if params['isPlaylist']: threadit(Plugin(sysARG, sysInfo=params).playPlaylist)(params["name"],params["chid"])
|
||||
elif params['vid'] : threadit(Plugin(sysARG, sysInfo=params).playTV)(params["name"],params["chid"])
|
||||
elif params['isPlaylist']: threadit(Plugin(sysARG, sysInfo=params).playPlaylist)(params["name"],params["chid"])
|
||||
elif params['vid'] : threadit(Plugin(sysARG, sysInfo=params).playLive)(params["name"],params["chid"],params["vid"])
|
||||
else: threadit(Plugin(sysARG, sysInfo=params).playTV)(params["name"],params["chid"])
|
||||
elif mode == 'vod': threadit(Plugin(sysARG, sysInfo=params).playVOD)(params["title"],params["vid"])
|
||||
elif mode == 'dvr': threadit(Plugin(sysARG, sysInfo=params).playDVR)(params["title"],params["vid"])
|
||||
elif mode == 'resume': threadit(Plugin(sysARG, sysInfo=params).playPaused)(params["name"],params["chid"])
|
||||
elif mode == 'broadcast': threadit(Plugin(sysARG, sysInfo=params).playBroadcast)(params["name"],params["chid"],params["vid"])
|
||||
elif mode == 'radio': threadit(Plugin(sysARG, sysInfo=params).playRadio)(params["name"],params["chid"],params["vid"])
|
||||
elif mode == 'guide' and hasAddon(PVR_CLIENT_ID,install=True,enable=True): SETTINGS.openGuide()
|
||||
elif mode == 'settings' and hasAddon(PVR_CLIENT_ID,install=True,enable=True): SETTINGS.openSettings()
|
||||
else: DIALOG.notificationDialog(LANGUAGE(32000))
|
||||
MONITOR().waitForAbort(float(SETTINGS.getSettingInt('RPC_Delay')/1000)) #delay to avoid thread crashes when fast channel changing.
|
||||
|
||||
if __name__ == '__main__':
|
||||
"""
|
||||
Runs the script when executed as the main module.
|
||||
|
||||
It decodes information about the current and next items using the `decodePlot` function
|
||||
and then invokes the `run` function with the appropriate arguments.
|
||||
"""
|
||||
run(sys.argv, fitem=decodePlot(BUILTIN.getInfoLabel('Plot')), nitem=decodePlot(BUILTIN.getInfoLabel('NextPlot')))
|
||||
Reference in New Issue
Block a user