class CommonNetLMS(object): def __init__(self, hostname="192.168.1.1", port=9090, username="******", password="******"): self.lms_device = Server(hostname=hostname, port=port, username=username, password=password) self.lms_device.connect() def com_net_lms_version(self): return self.lms_device.get_version() def com_net_lms_logged_in(self): return self.lms_device.logged_in def com_net_lms_close(self): self.lms_device.disconnect() def com_net_lms_play_count(self): return self.lms_device.get_player_count() def com_net_lms_get_players(self, update=True): return self.lms_device.get_players(update=update) def com_net_lms_connect(self): self.lms_device.login() def com_net_lms_request(self, command_string, preserve_encoding=False): self.lms_device.request( command_string, preserve_encoding=preserve_encoding) def com_net_lms_request_results(self, command_string, preserve_encoding=False): self.lms_device.request_with_results( command_string, preserve_encoding=preserve_encoding) def com_net_lms_rescan(self, mode='fast'): # ‘fast’ for update changes on library, ‘full’ for complete library scan # and ‘playlists’ for playlists scan only self.lms_device.rescan(mode=mode) def com_net_lms_rescanprogress(self): self.lms_device.rescanprogress() def com_net_lms_search(self, search_term, mode='albums'): self.lms_device.search(search_term, mode=mode) def com_net_lms_telnet_connect(self): self.lms_device.telnet_connect()
#!/usr/bin/env python from pylms.server import Server from pylms.player import Player sc = Server(hostname="10.0.0.1", port=9090, username="******", password="******") sc.connect() print "Logged in: %s" % sc.logged_in print "Version: %s" % sc.get_version() print "Num players: %s" % sc.get_player_count() print "Players: %s" % sc.get_players() players = sc.get_players() print ("Type of player = %s" % type(players)) for p in players: print "Player number %s" % p #sq = sc.get_player("00:11:22:33:44:55") print "Name: %s | Mode: %s | Time: %s | Connected: %s | WiFi: %s" % (p.get_name(), p.get_mode(), p.get_time_elapsed(), p.is_connected, p.get_wifi_signal_strength()) print p.get_track_title() print p.get_time_remaining() p=sc.get_player('00:04:20:17:5b:41') print("Current path = %s" % p.get_track_path()) with open('z.txt','w') as f: f.write("Current path = %s" % p.get_track_path()) p.playlist_play("file:///volume1/hdtl/Music/H3MusicArchive/Amazon%20MP3/Sam%20The%20Sham%20&%20The%20Pharaohs/20th%20Century%20Masters_%20The%20Millenium%20Collection_%20Best%20Of%20Sam%20The%20Sham%20&%20The%20Pharaohs/02%20-%20Lil%27%20Red%20Riding%20Hood.mp3")
def main(argv): """LCD MANAGER APP FOR LMS""" lmsserver = "127.0.0.1" lmsplayer = "" lcd_address = "0x3f" lcd_w = 20 verbose = True clock_mode = False try: opts, args = getopt.getopt(argv,"hs:p:w:l:c",["server=","player=","lcd_width=","lcd_address=","clock"]) except getopt.GetoptError: printhelp() sys.exit(2) for opt, arg in opts: if opt == '-h': printhelp() sys.exit() elif opt in ("-s", "--server"): lmsserver = arg elif opt in ("-p", "--player"): lmsplayer = arg elif opt in("-w","--lcd_width"): lcd_w = int(arg) elif opt in("-l","--lcd_address"): lcd_address = arg elif opt in("-c","--clock"): clock_mode = True myLCD = LCD(int(lcd_address,16), lcd_w) #myLCD.lcd_string"1234567890123456",1) myLCD.lcd_string(" TVC Audio ",1) myLCD.lcd_string(" LMS LCD INFO ",2) sleep(2) myLCD.lcd_string("(C)2017 Renaud ",1) myLCD.lcd_string("Coustellier ",2) sleep(1) sc = Server(hostname=lmsserver, port=9090, username="******", password="******") # Server connection # Clock mode waiting connection connected = False while connected <> True: try: sc.connect() sleep(1) connected = True except Exception as e: LCDTime(myLCD, lcd_w) #myLCD.lcd_string(str(e),1) myLCD.lcd_string("LMS SERVER",1) myLCD.lcd_string("LMS v.: %s" % sc.get_version(),2) sleep(2) while sc.get_player_count() == 0: LCDTime(myLCD, lcd_w) sleep(2) if lmsplayer <> "": while True: LCDTime(myLCD, lcd_w) sq = playerAutodetect(sc, myLCD) ipPlayer = str(sq.get_ip_address()) ipPlayer = ipPlayer[0:ipPlayer.find(":")] if ipPlayer == lmsplayer: break sleep(3) else: myLCD.lcd_string("autodetect player",3) myLCD.lcd_string("in play mode",3) sq = playerAutodetect(sc, myLCD) playerName = sq.get_name() playerModel = sq.get_model() if lcd_w == 20: myLCD.lcd_string(playerName,3) myLCD.lcd_string(playerModel,4) sleep(2) if lcd_w == 16: # 16x2 LCD Code while True: try: modePlayer = sq.get_mode() if modePlayer == "pause": myLCD.lcd_string("mode = pause",1) myLCD.lcd_string(time.strftime('%Y-%m-%d %H:%M:%S'),2) sleep(2) elif modePlayer == "stop": LCDTime(myLCD, lcd_w) sleep(2) # when "stop", looking for a running player except if player defined by user... if lmsplayer == "": sq = playerAutodetect(sc, myLCD) elif modePlayer == "play": trackAlbum = sq.get_track_album() currentTrack = sq.get_track_current_title() trackArtist = sq.get_track_artist() currentVolume = sq.get_volume() print ("") print ("album:" + trackAlbum) print ("artist:" + trackArtist) print ("title:" + currentTrack) myLCD.lcd_string("Alb." + trackAlbum,1) myLCD.lcd_string("Art." + trackArtist,2) sleep(2) myLCD.lcd_string(trackAlbum,1) myLCD.lcd_string(trackArtist,2) td = "/" + lms_time_to_string(sq.get_track_duration()) ptc = str(sq.playlist_track_count()) linestatus = 0 charOffset = 0 while True: linestatus = linestatus + 1 volume = (" - Volume %" + str(sq.get_volume()) ) #te = "time " + lms_time_to_string(sq.get_time_elapsed()) te = lms_time_to_string(sq.get_time_elapsed()) te = te + td cti = str(sq.playlist_current_track_index()) if len(cti) > 1 and len(ptc) > 1: if linestatus % 4 == 0: te = te + " /" + ptc else: te = te + " " + cti + "/" else: te = te + " " + cti + "/" + ptc while currentVolume != sq.get_volume(): # Volume currentVolume = sq.get_volume() myLCD.lcd_string("Volume %" + str(currentVolume), 1) sleep(0.3) if linestatus < 2: myLCD.lcd_string("tle:" + currentTrack, 1) myLCD.lcd_string(te, 2) else: # Track Name if len(currentTrack) <= lcd_w: # LENGHT is < LCD LCD_WIDTH myLCD.lcd_string(currentTrack, 1) else: # LENGHT is > LCD_WIDTH charOffset = linestatus - 2 myLCD.lcd_string(currentTrack[charOffset:], 1) if linestatus + lcd_w > len(currentTrack): linestatus = 0 myLCD.lcd_string(te, 2) if sq.get_track_current_title() != currentTrack or sq.get_mode() !="play" : # change detected myLCD.lcd_string("Track/mode chang", 1) myLCD.lcd_string("pls wait... ", 2) linestatus = 0 break sleep(0.65) except: lcd(lcd_w) else: # 20x4 LCD Code while True: try: #if True == True: modePlayer = sq.get_mode() if modePlayer == "pause": myLCD.lcd_string(sq.get_name(),1) myLCD.lcd_string("Mode = Pause",2) line3 = "RJ45" ipPlayer = sq.get_ip_address() ipPlayer = ipPlayer[0:ipPlayer.find(":")] if int(sq.get_wifi_signal_strength()) > 1: line3 = "wifi" + str(sq.get_wifi_signal_strength()) line3 = line3 + " " + ipPlayer myLCD.lcd_string(line3,3) myLCD.lcd_string(time.strftime('%Y-%m-%d %H:%M:%S'),4) sleep(0.5) elif modePlayer == "stop": LCDTime(myLCD, lcd_w) sleep(2) if lmsplayer == "": # when player mode is stop, looking for another running player except if... sq = playerAutodetect(sc, myLCD) elif modePlayer == "play" and lmsplayer == "": trackAlbum = sq.get_track_album() currentTrack = sq.get_track_current_title() trackArtist = sq.get_track_artist() currentVolume = sq.get_volume() if verbose == True: print ("") print ("album:" + trackAlbum) print ("artist:" + trackArtist) print ("title:" + currentTrack) td = "/" + lms_time_to_string(sq.get_track_duration()) linestatus = 0 charOffset = 0 while True: if modePlayer <> "play": break linestatus = linestatus + 1 volume = (" - Volume %" + str(sq.get_volume()) ) te = lms_time_to_string(sq.get_time_elapsed()) te = te + td te = te + " " + str(sq.playlist_current_track_index()) + "/" + str(sq.playlist_track_count()) while currentVolume != sq.get_volume(): # Volume currentVolume = sq.get_volume() myLCD.lcd_string("Volume %" + str(currentVolume), 1) sleep(.25) if sq.get_track_current_title() != currentTrack or sq.get_mode() !="play" : # change detected myLCD.lcd_string("Track/mode chang", 1) #myLCD.lcd_string("pls wait... ", 2) break # Track Name myLCD.lcd_string(trackArtist, 1) myLCD.lcd_string(trackAlbum, 2) #---------------------------- if len(currentTrack) <= lcd_w: # LENGHT is < LCD LCD_WIDTH myLCD.lcd_string(currentTrack, 3) else: # LENGHT is > LCD_WIDTH charOffset = linestatus - 1 myLCD.lcd_string(currentTrack[charOffset:], 3) if linestatus + lcd_w > len(currentTrack): linestatus = 0 #myLCD.lcd_string(currentTrack, 3) if clock_mode != True: myLCD.lcd_string(te, 4) sleep(0.5) else: myLCD.lcd_string(time.strftime('%Y-%m-%d %H:%M:%S'),4) sleep(0.5) except: #Exception as e: #else: #myLCD.lcd_string(str(e), 3) sq = playerAutodetect(sc, myLCD) sleep(2)