Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.08 KB | None | 0 0
  1. # addon.py
  2. import xbmc
  3. import xbmcgui
  4. import xbmcaddon
  5. import sys
  6. import socket
  7. import select
  8. import time
  9. #import random
  10. import threading
  11. import Queue
  12.  
  13. xbmc.executebuiltin('Skin.SetString(seekdown,False)')
  14. xbmc.executebuiltin('Skin.SetString(seekup,False)')
  15.  
  16. host = "192.168.47.140"
  17. port = 7844
  18. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  19. s.connect((host, port))
  20. s.settimeout(300)
  21. q = Queue.Queue()
  22. monitor = xbmc.Monitor()
  23. live = True
  24.  
  25. def receiver() : # Thread T
  26.     xbmc.log("RadioHD receiver thread started %s" % time.time(), level=xbmc.LOGNOTICE)
  27.     while True :
  28.         data = s.recv(1000)
  29.         q.put(data)
  30.         if not data :
  31.             xbmc.log('[script.radioHD] Disconnected from radio server! Bailing...')
  32.             print '\n\tDisconnected from Radio Server!\n'
  33.             sys.exit()
  34.         else :
  35.             formatData(q)
  36.             time.sleep(.001)
  37.            
  38.            
  39.        
  40. def sender(command) :
  41.     command = command + '\n'
  42.     print 'Sending command: ' + command
  43.     s.send(command)
  44.  
  45. def myui() : # Thread M
  46.     rCurr = 'True'
  47.     xbmc.log("RadioHD myui thread started %s" % time.time(), level=xbmc.LOGNOTICE)
  48.    
  49.     while True :
  50.         skUP = xbmc.getInfoLabel('Skin.String(seekup)')
  51.         skDN = xbmc.getInfoLabel('Skin.String(seekdown)')
  52.         tnUP = xbmc.getInfoLabel('Skin.String(tuneup)')
  53.         tnDN = xbmc.getInfoLabel('Skin.String(tunedown)')
  54.         rACT = xbmc.getInfoLabel('Skin.String(RadioActive)')
  55.         if 'True' in skUP :
  56.             #print '\t Seek UP Requested'
  57.             xbmc.executebuiltin('Skin.SetString(seekup,False)')
  58.             sender('seekup')
  59.             time.sleep(.01)
  60.         elif 'True' in skDN :
  61.             #print '\t Seek DOWN Requested'
  62.             xbmc.executebuiltin('Skin.SetString(seekdown,False)')  
  63.             sender('seekdown')
  64.             time.sleep(.01)    
  65.         elif 'True' in tnUP :
  66.             #print '\t Seek UP Requested'
  67.             xbmc.executebuiltin('Skin.SetString(tuneup,False)')
  68.             sender('tuneup')
  69.             time.sleep(.01)
  70.         elif 'True' in tnDN :
  71.             #print '\t Seek DOWN Requested'
  72.             xbmc.executebuiltin('Skin.SetString(tunedown,False)')  
  73.             sender('tunedown')
  74.             time.sleep(.01)
  75.         if rACT == rCurr :
  76.             # Do Nothing
  77.             time.sleep(.01)
  78.             pass
  79.         elif 'True' in rACT :
  80.                 sender('muteoff')
  81.                 rCurr = 'True'
  82.                 time.sleep(.01)
  83.         elif 'False' in rACT :
  84.                 sender('muteon')
  85.                 rCurr = 'False'
  86.                 time.sleep(.01)
  87.         else :
  88.             time.sleep(.01)
  89.             pass
  90.        
  91. def formatData(q) :
  92.     while not q.empty() :
  93.         data = q.get()
  94.         if data.count('|') != 2 :
  95.             return
  96.         elif data.count('|') == 2 :
  97.             data = data.replace('|','')
  98.             cmd, val = data.split(':',1)
  99.             val = val.replace(':',' ')
  100.             val = val.replace('  ','')
  101.             val = val.replace('\n','')
  102.             if 'seek' in cmd :
  103.                 mpt = ''
  104.                 xbmcgui.Window(10000).setProperty('Tune', val)
  105.                 xbmcgui.Window(10000).setProperty('HDArtist', mpt)
  106.                 xbmcgui.Window(10000).setProperty('HDArtist2', mpt)
  107.                 xbmcgui.Window(10000).setProperty('HDTitle', mpt)
  108.                 xbmcgui.Window(10000).setProperty('HDTitle2', mpt)
  109.                 xbmcgui.Window(10000).setProperty('HDCallsign', mpt)
  110.                 xbmcgui.Window(10000).setProperty('HDStreamlock', 'False')             
  111.                 xbmcgui.Window(10000).setProperty('HDActive', 'False') 
  112.                 xbmcgui.Window(10000).setProperty('HDSubs', mpt)               
  113.             elif 'hd' in cmd :
  114.                 if 'artist' in cmd :
  115.                     if '1' in val[0]:
  116.                         val = val.replace('1 ','',1) # <~~ Does this work?
  117.                         xbmcgui.Window(10000).setProperty('HDArtist', val)
  118.                         #print 'HD Artist (1) ' + val
  119.                     if '2' in val[0]:
  120.                         val = val.replace('2 ','',1)
  121.                         xbmcgui.Window(10000).setProperty('HDArtist2', val)
  122.                         #print 'HD Artist (2) ' + val
  123.                 elif 'title' in cmd :
  124.                     if '1' in val[0]:
  125.                         val = val.replace('1 ','',1)
  126.                         xbmcgui.Window(10000).setProperty('HDTitle', val)
  127.                         #print 'HD Title  (1) ' + val
  128.                     if '2' in val[0]:
  129.                         val = val.replace('2 ','',1)
  130.                         xbmcgui.Window(10000).setProperty('HDTitle2', val)
  131.                         #print 'HD Title  (2) ' + val              
  132.                 elif 'call' in cmd :
  133.                     xbmcgui.Window(10000).setProperty('HDCallsign', val)
  134.                     #print 'HD Callsign ' + val        
  135.                 elif 'active' in cmd :
  136.                     if 'false' in val:
  137.                         xbmcgui.Window(10000).setProperty('HDActive', 'False')
  138.                         #pass
  139.                     if 'true' in val:
  140.                         xbmcgui.Window(10000).setProperty('HDActive', 'True')
  141.                         #print 'HD Active'
  142.                         #pass
  143.                 elif 'streamlock' in cmd:
  144.                     if 'false' in val :
  145.                         xbmcgui.Window(10000).setProperty('HDStreamlock', 'False')
  146.                         #print 'No stream lock'
  147.                         #pass
  148.                     if 'true' in val :
  149.                         xbmcgui.Window(10000).setProperty('HDStreamlock', 'True')
  150.                         #print 'Stream locked'
  151.                         #pass
  152.                 elif 'subchannel' in cmd :
  153.                     if val < '0':
  154.                         xbmcgui.Window(10000).setProperty('HDSubs', val)
  155.                         #print val + ' subchannels available'
  156.                         #pass
  157.                 else :
  158.                     #print 'Else! ' + val
  159.                     pass
  160.                    
  161.             elif 'rds' in cmd:
  162.                 if 'enable' in cmd :
  163.                     #print 'RDS Enabled'
  164.                     xbmcgui.Window(10000).setProperty('HDArtist2', 'RDS')  
  165.                     #pass                  
  166.                 elif 'service' in cmd :
  167.                     #print 'T.0 ' + val
  168.                     xbmcgui.Window(10000).setProperty('HDArtist', val)
  169.                     #pass
  170.                 elif 'text' in cmd :
  171.                     xbmcgui.Window(10000).setProperty('HDTitle', val)
  172.                     #print 'T.1 ' + val
  173.                     #pass
  174.                 elif 'genre' in cmd:
  175.                     xbmcgui.Window(10000).setProperty('HDTitle2', val) 
  176.                     #print 'Genre ' + val
  177.                     #pass
  178.                
  179.             elif 'tune' in cmd :
  180.                 val = val.replace('FM ','',1)
  181.                 xbmcgui.Window(10000).setProperty('Tune', val)
  182.                 #print '\tStation: ' + val
  183.         time.sleep(.001)
  184.        
  185. if __name__ == '__main__':
  186.     xbmc.log("RadioHD script starting %s" % time.time(), level=xbmc.LOGNOTICE)
  187.    
  188.     t = threading.Thread(name='receiver', target=receiver)
  189.     t.daemon = True
  190.     xbmc.log("RadioHD receiver thread starting %s" % time.time(), level=xbmc.LOGNOTICE)
  191.     t.start()
  192.     m = threading.Thread(name='myui', target=myui)
  193.     m.daemon = True
  194.     xbmc.log("RadioHD myui thread starting %s" % time.time(), level=xbmc.LOGNOTICE)
  195.     m.start()      
  196.     sender('tune 1027 fm')
  197.     sender('volume 100')
  198.     sender('bass 10')
  199.     sender('treble 10')
  200.  
  201.  
  202.  
  203.     while not monitor.abortRequested():
  204.         if monitor.waitForAbort(1) :
  205.             xbmc.log("**************RadioHD*********************", level=xbmc.LOGNOTICE)
  206.             xbmc.log("RadioHD %s" % time.time(), level=xbmc.LOGNOTICE)
  207.             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement