From fefc0a929ea6d91ca81b35ac38927898e7ff38db Mon Sep 17 00:00:00 2001 From: jvandenbroek <jvandenbroek@gmail.com> Date: Thu, 4 Feb 2016 17:16:39 +0100 Subject: [PATCH] Publish details configurable, coding fixes --- .../resources/language/English/strings.po | 44 +++++++++++-------- service.mqtt/resources/settings.xml | 11 +++-- service.mqtt/service.py | 35 +++++++++------ 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/service.mqtt/resources/language/English/strings.po b/service.mqtt/resources/language/English/strings.po index 660dcdd..3515cd0 100644 --- a/service.mqtt/resources/language/English/strings.po +++ b/service.mqtt/resources/language/English/strings.po @@ -25,27 +25,11 @@ msgid "Broker IP" msgstr "" msgctxt "#30012" -msgid "Broker Port" +msgid "Broker port" msgstr "" msgctxt "#30013" -msgid "Topic Prefix" -msgstr "" - -msgctxt "#30014" -msgid "Reconnect Retries" -msgstr "" - -msgctxt "#30015" -msgid "Publish progress" -msgstr "" - -msgctxt "#30016" -msgid "Interval (in seconds)" -msgstr "" - -msgctxt "#30017" -msgid "Ignore details for these words (comma separated)" +msgid "Topic prefix" msgstr "" msgctxt "#30100" @@ -63,3 +47,27 @@ msgstr "" msgctxt "#30103" msgid "Password" msgstr "" + +msgctxt "#30200" +msgid "Advanced" +msgstr "" + +msgctxt "#30201" +msgid "Reconnect retries" +msgstr "" + +msgctxt "#30202" +msgid "Publish progress" +msgstr "" + +msgctxt "#30203" +msgid "Progress interval (in seconds)" +msgstr "" + +msgctxt "#30204" +msgid "Publish details" +msgstr "" + +msgctxt "#30205" +msgid "Ignore words (comma separated)" +msgstr "" diff --git a/service.mqtt/resources/settings.xml b/service.mqtt/resources/settings.xml index 329e4b7..e918d52 100644 --- a/service.mqtt/resources/settings.xml +++ b/service.mqtt/resources/settings.xml @@ -4,14 +4,17 @@ <setting label="30011" type="text" id="mqtthost" default="127.0.0.1"/> <setting label="30012" type="number" id="mqttport" default="1883"/> <setting label="30013" type="text" id="mqtttopic" default="kodi/"/> - <setting label="30014" type="number" id="mqttretry" default="5"/> - <setting label="30015" type="bool" id="mqttprogress" default="true"/> - <setting label="30016" type="text" id="mqttprogressinterval" default="20" visible="eq(-1,true)"/> - <setting label="30017" type="text" id="mqttignore" default=""/> </category> <category label="30100"> <setting label="30101" type="bool" id="mqttanonymousconnection" default="true" /> <setting label="30102" type="text" id="mqttusername" default="" visible="eq(-1,false)" /> <setting label="30103" type="text" id="mqttpassword" option="hidden" default="" visible="eq(-2,false)" /> </category> + <category label="30200"> + <setting label="30201" type="number" id="mqttretry" default="5"/> + <setting label="30202" type="bool" id="mqttprogress" default="true"/> + <setting label="30203" type="text" id="mqttinterval" default="20" visible="eq(-1,true)"/> + <setting label="30204" type="bool" id="mqttdetails" default="true"/> + <setting label="30205" type="text" id="mqttignore" default="" visible="eq(-1,true)"/> + </category> </settings> diff --git a/service.mqtt/service.py b/service.mqtt/service.py index 85c8854..2feedf6 100644 --- a/service.mqtt/service.py +++ b/service.mqtt/service.py @@ -11,8 +11,14 @@ from lib import client as mqtt __addon__ = xbmcaddon.Addon() __version__ = __addon__.getAddonInfo('version') -mqttignore = __addon__.getSetting('mqttignore').split(',') -mqttinterval = int(__addon__.getSetting('mqttinterval')) +def getSetting(setting): + return __addon__.getSetting(setting).replace(' ','') + +mqttretry = int(getSetting("mqttretry")) +mqttprogress = getSetting('mqttprogress').lower() == "true" +mqttinterval = int(getSetting('mqttinterval')) +mqttdetails = getSetting('mqttdetails').lower() == "true" +mqttignore = getSetting('mqttignore').split(',') activeplayerid=-1 activeplayertype="" lasttitle="" @@ -45,13 +51,16 @@ def publish(suffix,val,more): # def setplaystate(state,detail): global activeplayerid,activeplayertype - if state==1 and all(xbmc.Player().getPlayingFile().find (v) <= -1 for v in mqttignore): + if state==1: res=sendrpc("Player.GetActivePlayers",{}) activeplayerid=res["result"][0]["playerid"] activeplayertype=res["result"][0]["type"] - res=sendrpc("Player.GetProperties",{"playerid":activeplayerid,"properties":["speed","currentsubtitle","currentaudiostream","repeat","subtitleenabled"]}) - publish("playbackstate",state,{"kodi_state":detail,"kodi_playbackdetails":res["result"],"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) - publishdetails() + if mqttdetails and (all(xbmc.Player().getPlayingFile().find (v) <= -1 for v in mqttignore)): + res=sendrpc("Player.GetProperties",{"playerid":activeplayerid,"properties":["speed","currentsubtitle","currentaudiostream","repeat","subtitleenabled"]}) + publish("playbackstate",state,{"kodi_state":detail,"kodi_playbackdetails":res["result"],"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) + publishdetails() + else: + publish("playbackstate",state,{"kodi_state":detail,"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) else: publish("playbackstate",state,{"kodi_state":detail,"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) @@ -212,14 +221,14 @@ def startmqtt(): mqc.on_message=msghandler mqc.on_connect=connecthandler mqc.on_disconnect=disconnecthandler - if __addon__.getSetting("mqttanonymousconnection")=='false': - mqc.username_pw_set(__addon__.getSetting("mqttusername"), __addon__.getSetting("mqttpassword")) - topic=__addon__.getSetting("mqtttopic") + if getSetting("mqttanonymousconnection")=='false': + mqc.username_pw_set(getSetting("mqttusername"), __addon__.getSetting("mqttpassword")) + topic=getSetting("mqtttopic") if not topic.endswith("/"): topic+="/" mqc.will_set(topic+"connected",0,qos=2,retain=True) - xbmc.log("MQTT: Connecting to MQTT broker at %s:%s" % (__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport"))) - mqc.connect(__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport"),60) + xbmc.log("MQTT: Connecting to MQTT broker at %s:%s" % (getSetting("mqtthost"),getSetting("mqttport"))) + mqc.connect(getSetting("mqtthost"),getSetting("mqttport"),60) mqc.publish(topic+"connected",2,qos=1,retain=True) mqc.loop_start() @@ -231,7 +240,7 @@ if (__name__ == "__main__"): xbmc.log('MQTT: MQTT Adapter Version %s started' % __version__) monitor=MQTTMonitor() player=MQTTPlayer() - for attempt in range(int(__addon__.getSetting("mqttretry"))): + for attempt in range(mqttretry): try: startmqtt() except socket.error: @@ -243,6 +252,6 @@ if (__name__ == "__main__"): xbmc.log("MQTT: No connection possible, giving up.") mqc.loop_stop(True) while not monitor.waitForAbort(mqttinterval): - if __addon__.getSetting('mqttprogress').lower() == "true": + if mqttprogress: publishdetails() mqc.loop_stop(True) -- GitLab