示例#1
0
    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)
示例#2
0
    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)
示例#3
0
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()