* `plex_api.butler.start_task()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `plex_api.butler.stop_task()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `plex_api.updater.apply_updates()`: * `request` **Changed** **Breaking** ⚠️ * `error` **Changed** **Breaking** ⚠️ * `plex_api.general.get_server_info()`: **Added** * `plex_api.general.get_identity()`: **Added** * `plex_api.general.get_source_connection_information()`: **Added** * `plex_api.general.get_transient_token()`: **Added** * `plex_api.events.get_notifications()`: **Added** * `plex_api.events.connect_web_socket()`: **Added** * `plex_api.preferences.get_all_preferences()`: **Added** * `plex_api.preferences.set_preferences()`: **Added** * `plex_api.preferences.get_preference()`: **Added** * `plex_api.rate.set_rating()`: **Added** * `plex_api.timeline.mark_played()`: **Added** * `plex_api.timeline.report()`: **Added** * `plex_api.timeline.unscrobble()`: **Added** * `plex_api.activities.list_activities()`: **Added** * `plex_api.activities.cancel_activity()`: **Added** * `plex_api.butler.stop_tasks()`: **Added** * `plex_api.butler.get_tasks()`: **Added** * `plex_api.butler.start_tasks()`: **Added** * `plex_api.download_queue.create_download_queue()`: **Added** * `plex_api.download_queue.get_download_queue()`: **Added** * `plex_api.download_queue.add_download_queue_items()`: **Added** * `plex_api.download_queue.list_download_queue_items()`: **Added** * `plex_api.download_queue.get_item_decision()`: **Added** * `plex_api.download_queue.get_download_queue_media()`: **Added** * `plex_api.download_queue.remove_download_queue_items()`: **Added** * `plex_api.download_queue.get_download_queue_items()`: **Added** * `plex_api.download_queue.restart_processing_download_queue_items()`: **Added** * `plex_api.hubs.get_all_hubs()`: **Added** * `plex_api.hubs.get_continue_watching()`: **Added** * `plex_api.hubs.get_hub_items()`: **Added** * `plex_api.hubs.get_promoted_hubs()`: **Added** * `plex_api.hubs.get_metadata_hubs()`: **Added** * `plex_api.hubs.get_postplay_hubs()`: **Added** * `plex_api.hubs.get_related_hubs()`: **Added** * `plex_api.hubs.get_section_hubs()`: **Added** * `plex_api.hubs.reset_section_defaults()`: **Added** * `plex_api.hubs.list_hubs()`: **Added** * `plex_api.hubs.create_custom_hub()`: **Added** * `plex_api.hubs.move_hub()`: **Added** * `plex_api.hubs.delete_custom_hub()`: **Added** * `plex_api.hubs.update_hub_visibility()`: **Added** * `plex_api.search.search_hubs()`: **Added** * `plex_api.search.voice_search_hubs()`: **Added** * `plex_api.library.get_library_items()`: **Added** * `plex_api.library.delete_caches()`: **Added** * `plex_api.library.clean_bundles()`: **Added** * `plex_api.library.ingest_transient_item()`: **Added** * `plex_api.library.get_library_matches()`: **Added** * `plex_api.library.optimize_database()`: **Added** * `plex_api.library.get_random_artwork()`: **Added** * `plex_api.library.get_sections()`: **Added** * `plex_api.library.add_section()`: **Added** * `plex_api.library.stop_all_refreshes()`: **Added** * `plex_api.library.get_sections_prefs()`: **Added** * `plex_api.library.refresh_sections_metadata()`: **Added** * `plex_api.library.get_tags()`: **Added** * `plex_api.library.delete_metadata_item()`: **Added** * `plex_api.library.edit_metadata_item()`: **Added** * `plex_api.library.detect_ads()`: **Added** * `plex_api.library.get_all_item_leaves()`: **Added** * `plex_api.library.analyze_metadata()`: **Added** * `plex_api.library.generate_thumbs()`: **Added** * `plex_api.library.detect_credits()`: **Added** * `plex_api.library.get_extras()`: **Added** * `plex_api.library.add_extras()`: **Added** * `plex_api.library.get_file()`: **Added** * `plex_api.library.start_bif_generation()`: **Added** * `plex_api.library.detect_intros()`: **Added** * `plex_api.library.create_marker()`: **Added** * `plex_api.library.match_item()`: **Added** * `plex_api.library.list_matches()`: **Added** * `plex_api.library.merge_items()`: **Added** * `plex_api.library.list_sonically_similar()`: **Added** * `plex_api.library.set_item_preferences()`: **Added** * `plex_api.library.refresh_items_metadata()`: **Added** * `plex_api.library.get_related_items()`: **Added** * `plex_api.library.list_similar()`: **Added** * `plex_api.library.split_item()`: **Added** * `plex_api.library.add_subtitles()`: **Added** * `plex_api.library.get_item_tree()`: **Added** * `plex_api.library.unmatch()`: **Added** * `plex_api.library.list_top_users()`: **Added** * `plex_api.library.detect_voice_activity()`: **Added** * `plex_api.library.get_augmentation_status()`: **Added** * `plex_api.library.set_stream_selection()`: **Added** * `plex_api.library.get_person()`: **Added** * `plex_api.library.list_person_media()`: **Added** * `plex_api.library.delete_library_section()`: **Added** * `plex_api.library.get_library_details()`: **Added** * `plex_api.library.edit_section()`: **Added** * `plex_api.library.update_items()`: **Added** * `plex_api.library.start_analysis()`: **Added** * `plex_api.library.autocomplete()`: **Added** * `plex_api.library.get_collections()`: **Added** * `plex_api.library.get_common()`: **Added** * `plex_api.library.empty_trash()`: **Added** * `plex_api.library.get_section_filters()`: **Added** * `plex_api.library.get_first_characters()`: **Added** * `plex_api.library.delete_indexes()`: **Added** * `plex_api.library.delete_intros()`: **Added** * `plex_api.library.get_section_preferences()`: **Added** * `plex_api.library.set_section_preferences()`: **Added** * `plex_api.library.cancel_refresh()`: **Added** * `plex_api.library.refresh_section()`: **Added** * `plex_api.library.get_available_sorts()`: **Added** * `plex_api.library.get_stream_levels()`: **Added** * `plex_api.library.get_stream_loudness()`: **Added** * `plex_api.library.get_chapter_image()`: **Added** * `plex_api.library.set_item_artwork()`: **Added** * `plex_api.library.update_item_artwork()`: **Added** * `plex_api.library.delete_marker()`: **Added** * `plex_api.library.edit_marker()`: **Added** * `plex_api.library.delete_media_item()`: **Added** * `plex_api.library.get_part_index()`: **Added** * `plex_api.library.delete_collection()`: **Added** * `plex_api.library.get_section_image()`: **Added** * `plex_api.library.delete_stream()`: **Added** * `plex_api.library.get_stream()`: **Added** * `plex_api.library.set_stream_offset()`: **Added** * `plex_api.library.get_item_artwork()`: **Added** * `plex_api.library.get_media_part()`: **Added** * `plex_api.library.get_image_from_bif()`: **Added** * `plex_api.collections.create_collection()`: **Added** * `plex_api.dv_rs.list_dv_rs()`: **Added** * `plex_api.dv_rs.create_dvr()`: **Added** * `plex_api.dv_rs.delete_dvr()`: **Added** * `plex_api.dv_rs.get_dvr()`: **Added** * `plex_api.dv_rs.delete_lineup()`: **Added** * `plex_api.dv_rs.add_lineup()`: **Added** * `plex_api.dv_rs.set_dvr_preferences()`: **Added** * `plex_api.dv_rs.stop_dvr_reload()`: **Added** * `plex_api.dv_rs.reload_guide()`: **Added** * `plex_api.dv_rs.tune_channel()`: **Added** * `plex_api.dv_rs.remove_device_from_dvr()`: **Added** * `plex_api.dv_rs.add_device_to_dvr()`: **Added** * `plex_api.epg.compute_channel_map()`: **Added** * `plex_api.epg.get_channels()`: **Added** * `plex_api.epg.get_countries()`: **Added** * `plex_api.epg.get_all_languages()`: **Added** * `plex_api.epg.get_lineup()`: **Added** * `plex_api.epg.get_lineup_channels()`: **Added** * `plex_api.epg.get_countries_lineups()`: **Added** * `plex_api.epg.get_country_regions()`: **Added** * `plex_api.epg.list_lineups()`: **Added** * `plex_api.live_tv.get_sessions()`: **Added** * `plex_api.live_tv.get_live_tv_session()`: **Added** * `plex_api.live_tv.get_session_playlist_index()`: **Added** * `plex_api.live_tv.get_session_segment()`: **Added** * `plex_api.log.write_log()`: **Added** * `plex_api.log.write_message()`: **Added** * `plex_api.log.enable_papertrail()`: **Added** * `plex_api.devices.get_available_grabbers()`: **Added** * `plex_api.devices.list_devices()`: **Added** * `plex_api.devices.add_device()`: **Added** * `plex_api.devices.discover_devices()`: **Added** * `plex_api.devices.remove_device()`: **Added** * `plex_api.devices.get_device_details()`: **Added** * `plex_api.devices.modify_device()`: **Added** * `plex_api.devices.set_channelmap()`: **Added** * `plex_api.devices.get_devices_channels()`: **Added** * `plex_api.devices.set_device_preferences()`: **Added** * `plex_api.devices.stop_scan()`: **Added** * `plex_api.devices.scan()`: **Added** * `plex_api.devices.get_thumb()`: **Added** * `plex_api.provider.list_providers()`: **Added** * `plex_api.provider.add_provider()`: **Added** * `plex_api.provider.refresh_providers()`: **Added** * `plex_api.provider.delete_media_provider()`: **Added** * `plex_api.subscriptions.get_all_subscriptions()`: **Added** * `plex_api.subscriptions.create_subscription()`: **Added** * `plex_api.subscriptions.process_subscriptions()`: **Added** * `plex_api.subscriptions.get_scheduled_recordings()`: **Added** * `plex_api.subscriptions.get_template()`: **Added** * `plex_api.subscriptions.cancel_grab()`: **Added** * `plex_api.subscriptions.delete_subscription()`: **Added** * `plex_api.subscriptions.get_subscription()`: **Added** * `plex_api.subscriptions.edit_subscription_preferences()`: **Added** * `plex_api.subscriptions.reorder_subscription()`: **Added** * `plex_api.transcoder.transcode_image()`: **Added** * `plex_api.transcoder.make_decision()`: **Added** * `plex_api.transcoder.trigger_fallback()`: **Added** * `plex_api.transcoder.transcode_subtitles()`: **Added** * `plex_api.transcoder.start_transcode_session()`: **Added** * `plex_api.playlist.list_playlists()`: **Added** * `plex_api.playlist.get_playlist()`: **Added** * `plex_api.playlist.get_playlist_items()`: **Added** * `plex_api.library_playlists.create_playlist()`: **Added** * `plex_api.library_playlists.upload_playlist()`: **Added** * `plex_api.library_playlists.delete_playlist()`: **Added** * `plex_api.library_playlists.update_playlist()`: **Added** * `plex_api.library_playlists.get_playlist_generators()`: **Added** * `plex_api.library_playlists.clear_playlist_items()`: **Added** * `plex_api.library_playlists.add_playlist_items()`: **Added** * `plex_api.library_playlists.delete_playlist_item()`: **Added** * `plex_api.library_playlists.get_playlist_generator()`: **Added** * `plex_api.library_playlists.modify_playlist_generator()`: **Added** * `plex_api.library_playlists.get_playlist_generator_items()`: **Added** * `plex_api.library_playlists.move_playlist_item()`: **Added** * `plex_api.library_playlists.refresh_playlist()`: **Added** * `plex_api.play_queue.create_play_queue()`: **Added** * `plex_api.play_queue.get_play_queue()`: **Added** * `plex_api.play_queue.add_to_play_queue()`: **Added** * `plex_api.play_queue.clear_play_queue()`: **Added** * `plex_api.play_queue.reset_play_queue()`: **Added** * `plex_api.play_queue.shuffle()`: **Added** * `plex_api.play_queue.unshuffle()`: **Added** * `plex_api.play_queue.delete_play_queue_item()`: **Added** * `plex_api.play_queue.move_play_queue_item()`: **Added** * `plex_api.ultra_blur.get_colors()`: **Added** * `plex_api.ultra_blur.get_image()`: **Added** * `plex_api.status.list_sessions()`: **Added** * `plex_api.status.get_background_tasks()`: **Added** * `plex_api.status.list_playback_history()`: **Added** * `plex_api.status.terminate_session()`: **Added** * `plex_api.status.delete_history()`: **Added** * `plex_api.status.get_history_item()`: **Added** * `plex_api.updater.check_updates()`: **Added** * `plex_api.updater.get_updates_status()`: **Added** * `plex_api.content.get_collection_items()`: **Added** * `plex_api.content.get_metadata_item()`: **Added** * `plex_api.content.get_albums()`: **Added** * `plex_api.content.list_content()`: **Added** * `plex_api.content.get_all_leaves()`: **Added** * `plex_api.content.get_arts()`: **Added** * `plex_api.content.get_categories()`: **Added** * `plex_api.content.get_cluster()`: **Added** * `plex_api.content.get_sonic_path()`: **Added** * `plex_api.content.get_folders()`: **Added** * `plex_api.content.list_moments()`: **Added** * `plex_api.content.get_sonically_similar()`: **Added** * `plex_api.content.get_collection_image()`: **Added** * `plex_api.library_collections.add_collection_items()`: **Added** * `plex_api.library_collections.delete_collection_item()`: **Added** * `plex_api.library_collections.move_collection_item()`: **Added** * `plex_api.server.get_server_capabilities()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_server_preferences()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_available_clients()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_devices()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get-server-identity()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_my_plex_account()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_resized_photo()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get-media-providers()`: **Deleted** **Breaking** ⚠️ * `plex_api.server.get_server_list()`: **Deleted** **Breaking** ⚠️ * `plex_api.media.mark_played()`: **Deleted** **Breaking** ⚠️ * `plex_api.media.mark_unplayed()`: **Deleted** **Breaking** ⚠️ * `plex_api.media.update_play_progress()`: **Deleted** **Breaking** ⚠️ * `plex_api.media.get-banner-image()`: **Deleted** **Breaking** ⚠️ * `plex_api.media.get-thumb-image()`: **Deleted** **Breaking** ⚠️ * `plex_api.video.get_timeline()`: **Deleted** **Breaking** ⚠️ * `plex_api.video.start_universal_transcode()`: **Deleted** **Breaking** ⚠️ * `plex_api.activities.get_server_activities()`: **Deleted** **Breaking** ⚠️ * `plex_api.activities.cancel_server_activities()`: **Deleted** **Breaking** ⚠️ * `plex_api.butler.get_butler_tasks()`: **Deleted** **Breaking** ⚠️ * `plex_api.butler.start_all_tasks()`: **Deleted** **Breaking** ⚠️ * `plex_api.butler.stop_all_tasks()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_companions_data()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_user_friends()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_geo_data()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_home_data()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get-server-resources()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_pin()`: **Deleted** **Breaking** ⚠️ * `plex_api.plex.get_token_by_pin_id()`: **Deleted** **Breaking** ⚠️ * `plex_api.hubs.get_global_hubs()`: **Deleted** **Breaking** ⚠️ * `plex_api.hubs.get-recently-added()`: **Deleted** **Breaking** ⚠️ * `plex_api.hubs.get_library_hubs()`: **Deleted** **Breaking** ⚠️ * `plex_api.search.perform_search()`: **Deleted** **Breaking** ⚠️ * `plex_api.search.perform_voice_search()`: **Deleted** **Breaking** ⚠️ * `plex_api.search.get_search_results()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get_file_hash()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-recently-added-library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-all-libraries()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-library-details()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.delete_library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-library-items()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-library-sections-all()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-refresh-library-metadata()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-search-library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-genres-library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-countries-library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-actors-library()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-search-all-libraries()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-media-meta-data()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-media-arts()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.post-media-arts()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get-media-posters()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.post-media-poster()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get_metadata_children()`: **Deleted** **Breaking** ⚠️ * `plex_api.library.get_top_watched_content()`: **Deleted** **Breaking** ⚠️ * `plex_api.watchlist.get-watch-list()`: **Deleted** **Breaking** ⚠️ * `plex_api.log.log_line()`: **Deleted** **Breaking** ⚠️ * `plex_api.log.log_multi_line()`: **Deleted** **Breaking** ⚠️ * `plex_api.log.enable_paper_trail()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.create_playlist()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.get_playlists()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.get_playlist()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.delete_playlist()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.update_playlist()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.get_playlist_contents()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.clear_playlist_contents()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.add_playlist_contents()`: **Deleted** **Breaking** ⚠️ * `plex_api.playlists.upload_playlist()`: **Deleted** **Breaking** ⚠️ * `plex_api.authentication.get_transient_token()`: **Deleted** **Breaking** ⚠️ * `plex_api.authentication.get_source_connection_information()`: **Deleted** **Breaking** ⚠️ * `plex_api.authentication.get_token_details()`: **Deleted** **Breaking** ⚠️ * `plex_api.authentication.post-users-sign-in-data()`: **Deleted** **Breaking** ⚠️ * `plex_api.statistics.get_statistics()`: **Deleted** **Breaking** ⚠️ * `plex_api.statistics.get_resources_statistics()`: **Deleted** **Breaking** ⚠️ * `plex_api.statistics.get_bandwidth_statistics()`: **Deleted** **Breaking** ⚠️ * `plex_api.sessions.get_sessions()`: **Deleted** **Breaking** ⚠️ * `plex_api.sessions.get_session_history()`: **Deleted** **Breaking** ⚠️ * `plex_api.sessions.get_transcode_sessions()`: **Deleted** **Breaking** ⚠️ * `plex_api.sessions.stop_transcode_session()`: **Deleted** **Breaking** ⚠️ * `plex_api.updater.get_update_status()`: **Deleted** **Breaking** ⚠️ * `plex_api.updater.check_for_updates()`: **Deleted** **Breaking** ⚠️ * `plex_api.users.get-users()`: **Deleted** **Breaking** ⚠️
PlayQueue
(play_queue)
Overview
The playqueue feature within a media provider
A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by playQueueLastAddedItemID existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
All created play queues will have an empty "Up Next" area - unless the item is an album and no key is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set key. This is due to the above implicit queueing of albums when no key is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item.
Available Operations
- create_play_queue - Create a play queue
- get_play_queue - Retrieve a play queue
- add_to_play_queue - Add a generator or playlist to a play queue
- clear_play_queue - Clear a play queue
- reset_play_queue - Reset a play queue
- shuffle - Shuffle a play queue
- unshuffle - Unshuffle a play queue
- delete_play_queue_item - Delete an item from a play queue
- move_play_queue_item - Move an item in a play queue
create_play_queue
Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with playQueueItemID - a unique ID since the queue could have repeated items with the same ratingKey.
Note: Either uri or playlistID must be specified
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components, operations
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.create_play_queue(request=operations.CreatePlayQueueRequest(
type=operations.Type.AUDIO,
shuffle=components.BoolInt.ONE,
repeat=components.BoolInt.ONE,
continuous=components.BoolInt.ONE,
recursive=components.BoolInt.ONE,
on_deck=components.BoolInt.ONE,
))
assert res.object is not None
# Handle response
print(res.object)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.CreatePlayQueueRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.CreatePlayQueueResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
get_play_queue
Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components, operations
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.get_play_queue(request=operations.GetPlayQueueRequest(
play_queue_id=210646,
own=components.BoolInt.ONE,
include_before=components.BoolInt.ONE,
include_after=components.BoolInt.ONE,
))
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.GetPlayQueueRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.GetPlayQueueResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
add_to_play_queue
Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (uri and playlistID are mutually exclusive). Returns the modified play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.add_to_play_queue(request={
"play_queue_id": 919248,
"next": components.BoolInt.ONE,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.AddToPlayQueueRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.AddToPlayQueueResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
clear_play_queue
Deletes all items in the play queue, and increases the version of the play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.clear_play_queue(request={
"play_queue_id": 86357,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.ClearPlayQueueRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.ClearPlayQueueResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
reset_play_queue
Reset a play queue to the first item being the current item
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.reset_play_queue(request={
"play_queue_id": 581891,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.ResetPlayQueueRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.ResetPlayQueueResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
shuffle
Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues without an Up Next area. Returns the modified play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.shuffle(request={
"play_queue_id": 316150,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.ShuffleRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
unshuffle
Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues without an Up Next area. Returns the modified play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.unshuffle(request={
"play_queue_id": 484388,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.UnshuffleRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
delete_play_queue_item
Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.delete_play_queue_item(request={
"play_queue_id": 285738,
"play_queue_item_id": 464354,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.DeletePlayQueueItemRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.DeletePlayQueueItemResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |
move_play_queue_item
Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue.
Example Usage
from plex_api_client import PlexAPI
from plex_api_client.models import components
with PlexAPI(
accepts=components.Accepts.APPLICATION_XML,
client_identifier="abc123",
product="Plex for Roku",
version="2.4.1",
platform="Roku",
platform_version="4.3 build 1057",
device="Roku 3",
model="4200X",
device_vendor="Roku",
device_name="Living Room TV",
marketplace="googlePlay",
token="<YOUR_API_KEY_HERE>",
) as plex_api:
res = plex_api.play_queue.move_play_queue_item(request={
"play_queue_id": 31341,
"play_queue_item_id": 495865,
})
assert res.media_container_with_playlist_metadata is not None
# Handle response
print(res.media_container_with_playlist_metadata)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
request |
operations.MovePlayQueueItemRequest | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
Response
operations.MovePlayQueueItemResponse
Errors
| Error Type | Status Code | Content Type |
|---|---|---|
| errors.SDKError | 4XX, 5XX | */* |