class YoutubeCastController(CastController, MediaControllerMixin, PlaybackBaseMixin): def __init__(self, cast, app, prep=None): self._controller = YouTubeController() super(YoutubeCastController, self).__init__(cast, app, prep=prep) self.info_type = "id" self.save_capability = "partial" self.playlist_capability = "complete" def play_media_id(self, video_id): self._controller.play_video(video_id) def play_playlist(self, playlist_id, video_id): self.clear() self._controller.play_video(video_id, playlist_id) def add(self, video_id): # You can't add videos to the queue while the app is buffering. self.wait_for(["BUFFERING"], invert=True) self._controller.add_to_queue(video_id) def add_next(self, video_id): self.wait_for(["BUFFERING"], invert=True) self._controller.play_next(video_id) def remove(self, video_id): self.wait_for(["BUFFERING"], invert=True) self._controller.remove_video(video_id) def clear(self): self._controller.clear_playlist() def restore(self, data): self.play_media_id(data["content_id"]) self.wait_for(["PLAYING"]) self.seek(data["current_time"])