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 })
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)
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()
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
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 })