Guest User

Untitled

a guest
Jun 24th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import socket, sys
  4.  
  5. class lsConnector:
  6. def __init__(self,host,referenceStream=''):
  7. self.host = host
  8. self.sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  9. self.refStream = referenceStream
  10. self.sock.connect((self.host,1234))
  11. self.flo = self.sock.makefile('r',0)
  12.  
  13. def setReferenceStream(self,streamName):
  14. self.refStream = streamName
  15.  
  16. def _getDataBuf(self):
  17. ready = False
  18. buffer = ''
  19. while not(ready):
  20. line = self.flo.readline()
  21. ready = ('END\n' == line)
  22. if ready:
  23. break
  24. buffer += line
  25. return buffer
  26.  
  27. def getRidMetadata(self,rid):
  28. lines = self.execCmdToLines('metadata %s' % rid)
  29. return self._getMetadata(lines)
  30.  
  31. def _getMetadata(self,lines):
  32. metadata = dict()
  33. for line in lines:
  34. try:
  35. (key,value) = line.split('="')
  36. value = value[:-1]
  37. metadata[key] = value
  38. except:
  39. pass
  40. return metadata
  41.  
  42. def getLatestTracks(self):
  43. tracks = list()
  44. info = self.execCmd("%s.metadatas" %self.refStream)
  45. trackBlocks = info.split("\n-")
  46. for trackBlock in trackBlocks:
  47. num = trackBlock.split(" ")[1]
  48. metaRaw = trackBlock.split("\n")[1:]
  49. tracks.append((num,self._getMetadata(metaRaw)))
  50. return tracks
  51.  
  52. def getCurrentRid(self):
  53. output = self.execCmd('on_air')
  54. return int(output)
  55.  
  56. def getCurrentRidInfo(self):
  57. return self.getRidMetadata(self.getCurrentRid())
  58.  
  59. def execCmd(self,cmd):
  60. self.sock.send("%s\n" %cmd)
  61. return self._getDataBuf()
  62.  
  63. def execCmdToLines(self,cmd):
  64. return self.execCmd(cmd).split('\n')[:-1]
  65.  
  66. def isLive(self):
  67. try:
  68. return (self.getCurrentTrackInfo()['songtype']=='S')
  69. except:
  70. return False
  71.  
  72. def getCurrentTrackInfo(self):
  73. return self.getLatestTracks()[-1][1]
  74.  
  75. def makeRequest(self,filename):
  76. return int(self.execCmd("request.push %s" %filename))
  77.  
  78. def skipTrack(self):
  79. self.execCmd("%s.skip" %self.refStream)
  80.  
  81. def getRemainingTime(self):
  82. return self.execCmd("%s.remaining" %self.refStream)
  83.  
  84. def kickBroadcaster(self):
  85. self.execCmd("live.stop")
  86. self.execCmd("live.start")
Add Comment
Please, Sign In to add comment