def do(self, params): speaker = SoCo(socket.gethostbyname(params['host'])) print(speaker.groups) if 'volume' in params: speaker.volume = params['volume'] if 'clear_queue' in params: speaker.clear_queue() if 'add_playlist_id_to_queue' in params: playlist = speaker.get_sonos_playlists()[ params['add_playlist_id_to_queue']] speaker.add_uri_to_queue(playlist.resources[0].uri) if 'switch_to_tv' in params: speaker.switch_to_tv() if 'next' in params: speaker.next() elif 'previous' in params: speaker.previous() if 'play' in params: speaker.play() elif 'pause' in params: speaker.pause() if 'set_sleep_timer' in params: speaker.set_sleep_timer(params['set_sleep_timer'] * 60)
def set_buttons(self, callbacker): logging.info('setting buttons') self.buttons_list = [] index_dict = 1 #whatever media, extract them to make an interable if self.menu_state == "spots": sonos = SoCo(pod_dict['Rooms']['Living']) sonos_playlists = sonos.get_sonos_playlists() page_split = list(sonos_playlists) #print(page_split) #time.sleep(10) else: page_split = list(pod_dict["Pods"].items()) #what's the size of the iterable. cards_size = len(page_split) # if (self.page_num * 6) < cards_size: # finish = self.page_num * 6 # if self.page_num > 1: # start = (finish)-6 # else: # start = 0 # else: # finish = cards_size # start = ((self.page_num * 6)) - 6 temp_page = 0 total_pages = math.ceil(cards_size / 6) button_theme = get_theme('button') if self.menu_state == "spots": for x in range(0, int(total_pages)): index_dict = 1 split_page_array = [] back_button_array = [] front_button_array = [] for key in page_split: value = {} if math.ceil(index_dict / 6) == (temp_page + 1): value["label"] = key.title value['location'] = key.to_dict( )['resources'][0]['uri'] value["index_dict"] = index_dict - (temp_page * 6) new_button_front = BoxButton(value['label'], index_dict, on_press=callbacker, show_date=False, theme=button_theme, user_data=value) front_button_array.append(new_button_front) index_dict = index_dict + 1 temp_page += 1 split_page_array.append(front_button_array) split_page_array.append(back_button_array) self.buttons_list.append(split_page_array) #print((x.to_dict())['resources'][0]['uri']) else: for x in range(0, int(total_pages)): index_dict = 1 split_page_array = [] back_button_array = [] front_button_array = [] for key, value in page_split: if math.ceil(index_dict / 6) == (temp_page + 1): value["index_dict"] = index_dict - (temp_page * 6) new_button_front = BoxButton(value['label'], index_dict, on_press=callbacker, show_date=False, theme=button_theme, user_data=value) front_button_array.append(new_button_front) new_button_back = self.make_play_func( value['pod_id'], value['index_dict']) back_button_array.append(new_button_back) index_dict = index_dict + 1 temp_page += 1 split_page_array.append(front_button_array) split_page_array.append(back_button_array) self.buttons_list.append(split_page_array)
from soco import SoCo import datetime #set player variable to a sonos speaker - speaker set with static IP player = SoCo('192.168.1.15') #set comparison variable now = datetime.datetime.now() #cron script will run this program at 10pm everynight and 830 am every morning #for night time, play the sleep music playlist if now.hour == 22 and now.minute == 0: #clear the song queue player.clear_queue() #set playlist variable to sonos playlist #night time music is the 5th one - want to update this to search for playlist by name #playlist = player.get_sonos_playlists()[2] playlist = player.get_sonos_playlists()[4] #add playlist to sonos speaker queue player.add_to_queue(playlist) #play from queue method with index as arg player.play() #if it's morning, stop the sleep music if now.hour == 8 and now.minute == 30: player.stop()