コード例 #1
0
    def __start_radio(self, callback):
        station_tracks = self.client.rotor_station_tracks(self.station_id,
                                                          queue=None)
        self.tracks = self.client.tracks(
            [t.track.track_id for t in station_tracks.sequence])
        self.batch_id = station_tracks.batch_id

        current = self.tracks[0]
        current_url = get_track_url(current)

        next_track = self.tracks[1]
        next_track.get_download_info()
        next_track_url = get_track_url(next_track)

        self.index = 1

        callback((current, current_url), (next_track, next_track_url))

        self.play_id = self.__generate_play_id()
        self.queue.addTask("send_start_radio", self.__send_start_radio,
                           {"batch_id": self.batch_id})
        self.queue.addTask("send_play_start_track",
                           self.__send_play_start_track, {
                               "track": current,
                               "play_id": self.play_id
                           })
        self.queue.addTask("send_play_start_radio",
                           self.__send_play_start_radio, {
                               "track": current,
                               "batch_id": self.batch_id
                           })
        self.queue.addTask("send_play_end_track", self.__send_play_end_track, {
            "track": current,
            "play_id": self.play_id
        })
        self.queue.addTask("send_play_end_radio", self.__send_play_end_radio, {
            "track": current,
            "batch_id": self.batch_id
        })

        self.play_id = self.__generate_play_id()

        self.queue.addTask("send_play_start_track",
                           self.__send_play_start_track, {
                               "track": next_track,
                               "play_id": self.play_id
                           })
        self.queue.addTask("send_play_start_radio",
                           self.__send_play_start_radio, {
                               "track": next_track,
                               "batch_id": self.batch_id
                           })
コード例 #2
0
 def add_next_track(self, play_info):
     # log("Add track to playlist")
     # log("index: %s, batch_id: %s, track_ids: %s" % (index, batch_id, track_ids))
     index, play_id, batch_id, track_ids = play_info
     track = client.tracks([track_ids[index]])[0]
     url = get_track_url(track)
     li = create_track_list_item(track)
     li.setPath(url)
     playIndex = pl.size()
     pl.add(url, li, playIndex)
     self.urls.append(url)
コード例 #3
0
def play_track(client, track_id):
    track = client.tracks([track_id])[0]
    prefixPath = settings.getSetting('folder')
    downloaded, path, folder = getTrackPath(prefixPath, track, codec)
    li = xbmcgui.ListItem(path=path if downloaded else get_track_url(track, codec, high_res))
    xbmcplugin.setResolvedUrl(addon_handle, True, listitem=li)

    sendPlayTrack(client, track)

    if not downloaded and auto_download:
        t = Thread(target=download_track, args=(track,))
        t.start()
コード例 #4
0
def build_item_track(track, titleFormat="%s", force_url=False):
    prefixPath = settings.getSetting('folder')
    downloaded, path, folder = getTrackPath(prefixPath, track, codec)

    if downloaded:
        url = path
    elif force_url:
        url = get_track_url(track, codec, high_res)
    else:
        url = build_url({'mode': 'track', 'track_id': track.track_id, 'title': track.title})
    li = create_track_list_item(track, titleFormat)
    build_menu_track(li, track)

    return url, li, False
コード例 #5
0
    def __play_next(self, callback):
        old_track = self.tracks[self.index]
        old_batch_id = self.batch_id

        # get next
        self.index += 1
        if self.index >= len(self.tracks):
            self.index = 0
            station_tracks = self.client.rotor_station_tracks(
                self.station_id, queue=old_track.track_id)
            self.batch_id = station_tracks.batch_id
            self.tracks = self.client.tracks(
                [t.track.track_id for t in station_tracks.sequence])

        next_track = self.tracks[self.index]
        next_track.get_download_info()
        next_track_url = get_track_url(next_track)

        callback((next_track, next_track_url))

        self.queue.addTask("send_play_end_track", self.__send_play_end_track, {
            "track": old_track,
            "play_id": self.play_id
        })
        self.queue.addTask("send_play_end_radio", self.__send_play_end_radio, {
            "track": old_track,
            "batch_id": old_batch_id
        })

        self.play_id = self.__generate_play_id()

        if self.index == 0:
            self.queue.addTask("send_start_radio", self.__send_start_radio,
                               {"batch_id": self.batch_id})

        self.queue.addTask("send_play_start_track",
                           self.__send_play_start_track, {
                               "track": next_track,
                               "play_id": self.play_id
                           })
        self.queue.addTask("send_play_start_radio",
                           self.__send_play_start_radio, {
                               "track": next_track,
                               "batch_id": self.batch_id
                           })