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