diff --git a/service.mqtt/service.py b/service.mqtt/service.py index 068858aeaff3f67deb15052e4c0f34d6ab334dbf..c941057e209e2e0c3d344b44e9e5eef5339b4350 100644 --- a/service.mqtt/service.py +++ b/service.mqtt/service.py @@ -6,11 +6,35 @@ import json import threading import time import socket +import glob from lib import client as mqtt __addon__ = xbmcaddon.Addon() __version__ = __addon__.getAddonInfo('version') +def getmedia(dir): + + all=glob.glob(dir+'*.mp4') + all.extend(glob.glob(dir+'*.mov')) + all.extend(glob.glob(dir+'*.m4v')) + all.extend(glob.glob(dir+'*.wav')) + all.extend(glob.glob(dir+'*.mp3')) + all.extend(glob.glob(dir+'*.mpg')) + all.extend(glob.glob(dir+'*.mpeg')) + all.extend(glob.glob(dir+'*.MP4')) + all.extend(glob.glob(dir+'*.MOV')) + all.extend(glob.glob(dir+'*.M4V')) + all.extend(glob.glob(dir+'*.WAV')) + all.extend(glob.glob(dir+'*.MP3')) + all.extend(glob.glob(dir+'*.MPG')) + all.extend(glob.glob(dir+'*.MPEG')) + + all.sort() +# xbmc.log(str(all)) + return all + + + def getSetting(setting): return __addon__.getSetting(setting).strip() @@ -74,6 +98,18 @@ def publishstat(suffix,val,more): mqc.publish(fulltopic,jsonstr,qos=0,retain=True) +def publishmedialist(suffix,val,more): + global topic,mqc + robj={} + robj["val"]=val + if more is not None: + robj.update(more) + jsonstr=json.dumps(robj) + fulltopic="media/"+topic+suffix + mqttlogging("MQTT: Publishing @"+fulltopic+": "+jsonstr) + mqc.publish(fulltopic,jsonstr,qos=0,retain=True) + + # # Set and publishes the playback state. Publishes more info if # the state is "playing" @@ -249,6 +285,16 @@ def processvolume(data): def processgetstatus(): publishstatus() +def processgetmedia(): + mqttlogging("have getmedia") + result=getmedia("/home/osmc/video/") + res2="" + for entry in result: + mqttlogging(entry) + res2+=entry+"," + publishmedialist("files",res2,None) + + def processcommand(topic,data): if topic=="notify": @@ -263,6 +309,8 @@ def processcommand(topic,data): processgetstatus() elif topic=="volume": processvolume(data) + elif topic=="getmedia": + processgetmedia() else: mqttlogging("MQTT: Unknown command "+topic)