diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 7ce321f..d8a1404 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -3,10 +3,10 @@ id: 3eeea668-4ef4-464e-a888-bdfa023bedf5 management: docChecksum: 911d74baa0d06121d2ce2c71d94e977a docVersion: 0.0.3 - speakeasyVersion: 1.299.6 - generationVersion: 2.338.12 - releaseVersion: 0.8.1 - configChecksum: e0a296d301c77a4a5799d1b93aa35cfd + speakeasyVersion: 1.308.0 + generationVersion: 2.342.2 + releaseVersion: 0.8.2 + configChecksum: f20ca4e1b38909fd8d69b6947315f838 repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git @@ -15,7 +15,7 @@ features: python: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.3 - core: 4.6.9 + core: 4.6.10 flattening: 2.81.1 globalSecurity: 2.83.5 globalSecurityCallbacks: 0.1.0 @@ -44,8 +44,10 @@ generatedFiles: - src/plex_api/sessions.py - src/plex_api/updater.py - src/plex_api/sdk.py + - Makefile - py.typed - pylintrc + - scripts/publish.sh - setup.py - src/plex_api/__init__.py - src/plex_api/utils/__init__.py diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index b0be3d6..773ffef 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -12,7 +12,7 @@ generation: auth: oAuth2ClientCredentialsEnabled: false python: - version: 0.8.1 + version: 0.8.2 additionalDependencies: dependencies: {} extraDependencies: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 736a15e..d31a9bf 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.306.0 +speakeasyVersion: 1.308.0 sources: my-source: sourceNamespace: my-source - sourceRevisionDigest: sha256:c661461e812b435c03e582528fc079a40116a7794349548e439433810462ede2 - sourceBlobDigest: sha256:01ea875ed58731c7f0da0076a2f593efd48353df386b633ed2cc79b6de77be5f + sourceRevisionDigest: sha256:0281386c0424f9309c449ac0e8b84e64d4d4b546427c13e890f4a989cb0c9e11 + sourceBlobDigest: sha256:ad868dd074aef16acba0f48666bfc67bfcaf8e9270c51b2112e82afacd223147 tags: - latest - main @@ -11,8 +11,8 @@ targets: plexpy: source: my-source sourceNamespace: my-source - sourceRevisionDigest: sha256:c661461e812b435c03e582528fc079a40116a7794349548e439433810462ede2 - sourceBlobDigest: sha256:01ea875ed58731c7f0da0076a2f593efd48353df386b633ed2cc79b6de77be5f + sourceRevisionDigest: sha256:0281386c0424f9309c449ac0e8b84e64d4d4b546427c13e890f4a989cb0c9e11 + sourceBlobDigest: sha256:ad868dd074aef16acba0f48666bfc67bfcaf8e9270c51b2112e82afacd223147 outLocation: /github/workspace/repo workflow: workflowVersion: 1.0.0 diff --git a/Makefile b/Makefile index 826b5c2..d078bac 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,6 @@ + .PHONY: * +SHELL := bash -all: speakeasy - - -speakeasy: check-speakeasy - speakeasy generate sdk --lang python -o . -s ./openapi.yaml - -speakeasy-validate: check-speakeasy - speakeasy validate openapi -s ./openapi.yaml - -openapi: - curl https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml > ./openapi.yaml - -# This will replace the generation source in your workflow file with your local schema path -generate-from-local: - @if ! which sed >/dev/null; then \ - echo "sed is not installed. Please install it using the following command:"; \ - echo "For Ubuntu/Debian: apt-get install sed"; \ - echo "For macOS: sed is pre-installed"; \ - exit 1; \ - fi - @sed -i '' '/openapi_docs: |/{n;s|-.*|- ./openapi.yaml|;}' ./.github/workflows/speakeasy_sdk_generation.yml - -check-speakeasy: - @command -v speakeasy >/dev/null 2>&1 || { echo >&2 "speakeasy CLI is not installed. Please install before continuing."; exit 1; } +publish: + ./scripts/publish.sh \ No newline at end of file diff --git a/RELEASES.md b/RELEASES.md index 2170f54..d49d009 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -598,4 +598,14 @@ Based on: ### Generated - [python v0.8.1] . ### Releases -- [PyPI v0.8.1] https://pypi.org/project/plex-api-client/0.8.1 - . \ No newline at end of file +- [PyPI v0.8.1] https://pypi.org/project/plex-api-client/0.8.1 - . + +## 2024-06-14 00:22:16 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.308.0 (2.342.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.8.2] . +### Releases +- [PyPI v0.8.2] https://pypi.org/project/plex-api-client/0.8.2 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index f75a3b1..aee44aa 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -3,300 +3,6 @@ info: title: CodeSamples overlay for python target version: 0.0.0 actions: - - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] - update: - x-codeSamples: - - lang: python - label: getMetadata - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_metadata(rating_key=8382.31) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/log/networked"]["get"] - update: - x-codeSamples: - - lang: python - label: enablePaperTrail - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.log.enable_paper_trail() - - if res is not None: - # handle response - pass - - target: $["paths"]["/pins/{pinID}"]["get"] - update: - x-codeSamples: - - lang: python - label: getToken - source: |- - import plex_api - - s = plex_api.PlexAPI( - x_plex_client_identifier='Postman', - ) - - - res = s.plex.get_token(pin_id='', x_plex_client_identifier='Postman') - - if res is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}/items"]["get"] - update: - x-codeSamples: - - lang: python - label: getPlaylistContents - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.get_playlist_contents(playlist_id=5004.46, type=9403.59) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/butler/{taskName}"]["post"] - update: - x-codeSamples: - - lang: python - label: startTask - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.start_task(task_name=operations.TaskName.CLEAN_OLD_BUNDLES) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/hashes"]["get"] - update: - x-codeSamples: - - lang: python - label: getFileHash - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_file_hash(url='file://C:\Image.png&type=13', type=4462.17) - - if res is not None: - # handle response - pass - - target: $["paths"]["/photo/:/transcode"]["get"] - update: - x-codeSamples: - - lang: python - label: getResizedPhoto - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_resized_photo(request=operations.GetResizedPhotoRequest( - width=110, - height=165, - opacity=100, - blur=20, - min_size=operations.MinSize.ONE, - upscale=operations.Upscale.ZERO, - url='/library/metadata/49564/thumb/1654258204', - )) - - if res is not None: - # handle response - pass - - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] - update: - x-codeSamples: - - lang: python - label: startUniversalTranscode - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.video.start_universal_transcode(request=operations.StartUniversalTranscodeRequest( - has_mde=1, - path='/library/metadata/23409', - media_index=0, - part_index=0, - protocol='hls', - fast_seek=0, - direct_play=0, - direct_stream=0, - subtitle_size=100, - subtites='burn', - audio_boost=100, - location='lan', - media_buffer_size=102400, - session='zvcage8b7rkioqcm8f4uns4c', - add_debug_overlay=0, - auto_adjust_quality=0, - )) - - if res is not None: - # handle response - pass - - target: $["paths"]["/search"]["get"] - update: - x-codeSamples: - - lang: python - label: getSearchResults - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.search.get_search_results(query='110') - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerCapabilities - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_server_capabilities() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/myplex/account"]["get"] - update: - x-codeSamples: - - lang: python - label: getMyPlexAccount - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_my_plex_account() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] - update: - x-codeSamples: - - lang: python - label: clearPlaylistContents - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.clear_playlist_contents(playlist_id=1893.18) - - if res is not None: - # handle response - pass - - target: $["paths"]["/status/sessions"]["get"] - update: - x-codeSamples: - - lang: python - label: getSessions - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.sessions.get_sessions() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/updater/check"]["put"] - update: - x-codeSamples: - - lang: python - label: checkForUpdates - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.updater.check_for_updates(download=operations.Download.ONE) - - if res is not None: - # handle response - pass - target: $["paths"]["/:/timeline"]["get"] update: x-codeSamples: @@ -328,11 +34,11 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/library/recentlyAdded"]["get"] + - target: $["paths"]["/butler"]["delete"] update: x-codeSamples: - lang: python - label: getRecentlyAdded + label: stopAllTasks source: |- import plex_api @@ -342,11 +48,68 @@ actions: ) - res = s.library.get_recently_added() + res = s.butler.stop_all_tasks() + + if res is not None: + # handle response + pass + - target: $["paths"]["/status/sessions"]["get"] + update: + x-codeSamples: + - lang: python + label: getSessions + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.get_sessions() if res.object is not None: # handle response pass + - target: $["paths"]["/"]["get"] + update: + x-codeSamples: + - lang: python + label: getServerCapabilities + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_server_capabilities() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/:/progress"]["post"] + update: + x-codeSamples: + - lang: python + label: updatePlayProgress + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.media.update_play_progress(key='', time=90000, state='played') + + if res is not None: + # handle response + pass - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] update: x-codeSamples: @@ -366,237 +129,6 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/log"]["post"] - update: - x-codeSamples: - - lang: python - label: logMultiLine - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.log.log_multi_line(request='level=4&message=Test%20message%201&source=postman - level=3&message=Test%20message%202&source=postman - level=1&message=Test%20message%203&source=postman') - - if res is not None: - # handle response - pass - - target: $["paths"]["/pins"]["post"] - update: - x-codeSamples: - - lang: python - label: getPin - source: |- - import plex_api - - s = plex_api.PlexAPI( - x_plex_client_identifier='Postman', - ) - - - res = s.plex.get_pin(strong=False, x_plex_client_identifier='Postman') - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["get"] - update: - x-codeSamples: - - lang: python - label: getPlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.get_playlist(playlist_id=4109.48) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/status/sessions/history/all"]["get"] - update: - x-codeSamples: - - lang: python - label: getSessionHistory - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.sessions.get_session_history() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/hubs"]["get"] - update: - x-codeSamples: - - lang: python - label: getGlobalHubs - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.hubs.get_global_hubs(count=1262.49, only_transient=operations.OnlyTransient.ONE) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/sections/{sectionId}"]["delete"] - update: - x-codeSamples: - - lang: python - label: deleteLibrary - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.delete_library(section_id=1000) - - if res is not None: - # handle response - pass - - target: $["paths"]["/security/resources"]["get"] - update: - x-codeSamples: - - lang: python - label: getSourceConnectionInformation - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.authentication.get_source_connection_information(source='server://client-identifier') - - if res is not None: - # handle response - pass - - target: $["paths"]["/butler"]["delete"] - update: - x-codeSamples: - - lang: python - label: stopAllTasks - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.stop_all_tasks() - - if res is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["delete"] - update: - x-codeSamples: - - lang: python - label: deletePlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.delete_playlist(playlist_id=216.22) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: python - label: getOnDeck - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_on_deck() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/upload"]["post"] - update: - x-codeSamples: - - lang: python - label: uploadPlaylist - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.upload_playlist(path='/home/barkley/playlist.m3u', force=operations.Force.ZERO) - - if res is not None: - # handle response - pass - - target: $["paths"]["/statistics/media"]["get"] - update: - x-codeSamples: - - lang: python - label: getStatistics - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.statistics.get_statistics(timespan=4) - - if res.object is not None: - # handle response - pass - target: $["paths"]["/identity"]["get"] update: x-codeSamples: @@ -616,87 +148,11 @@ actions: if res.object is not None: # handle response pass - - target: $["paths"]["/hubs/search/voice"]["get"] + - target: $["paths"]["/photo/:/transcode"]["get"] update: x-codeSamples: - lang: python - label: performVoiceSearch - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.search.perform_voice_search(query='dead+poop', section_id=4094.8, limit=5) - - if res is not None: - # handle response - pass - - target: $["paths"]["/updater/status"]["get"] - update: - x-codeSamples: - - lang: python - label: getUpdateStatus - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.updater.get_update_status() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/sections"]["get"] - update: - x-codeSamples: - - lang: python - label: getLibraries - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_libraries() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/sections/{sectionId}/refresh"]["get"] - update: - x-codeSamples: - - lang: python - label: refreshLibrary - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.refresh_library(section_id=934.16) - - if res is not None: - # handle response - pass - - target: $["paths"]["/updater/apply"]["put"] - update: - x-codeSamples: - - lang: python - label: applyUpdates + label: getResizedPhoto source: |- import plex_api from plex_api.models import operations @@ -707,16 +163,24 @@ actions: ) - res = s.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) + res = s.server.get_resized_photo(request=operations.GetResizedPhotoRequest( + width=110, + height=165, + opacity=100, + blur=20, + min_size=operations.MinSize.ONE, + upscale=operations.Upscale.ZERO, + url='/library/metadata/49564/thumb/1654258204', + )) if res is not None: # handle response pass - - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] + - target: $["paths"]["/playlists/{playlistID}/items"]["get"] update: x-codeSamples: - lang: python - label: getMetadataChildren + label: getPlaylistContents source: |- import plex_api @@ -726,45 +190,7 @@ actions: ) - res = s.library.get_metadata_children(rating_key=1539.14) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["put"] - update: - x-codeSamples: - - lang: python - label: updatePlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.update_playlist(playlist_id=3915, title='', summary='') - - if res is not None: - # handle response - pass - - target: $["paths"]["/butler"]["get"] - update: - x-codeSamples: - - lang: python - label: getButlerTasks - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.get_butler_tasks() + res = s.playlists.get_playlist_contents(playlist_id=5004.46, type=9403.59) if res.object is not None: # handle response @@ -785,6 +211,25 @@ actions: res = s.server.get_devices() + if res.object is not None: + # handle response + pass + - target: $["paths"]["/servers"]["get"] + update: + x-codeSamples: + - lang: python + label: getServerList + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_server_list() + if res.object is not None: # handle response pass @@ -807,11 +252,30 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/playlists"]["post"] + - target: $["paths"]["/activities"]["get"] update: x-codeSamples: - lang: python - label: createPlaylist + label: getServerActivities + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.activities.get_server_activities() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/butler/{taskName}"]["delete"] + update: + x-codeSamples: + - lang: python + label: stopTask source: |- import plex_api from plex_api.models import operations @@ -822,40 +286,16 @@ actions: ) - res = s.playlists.create_playlist(request=operations.CreatePlaylistRequest( - title='', - type=operations.QueryParamType.PHOTO, - smart=operations.Smart.ONE, - uri='https://inborn-brochure.biz', - )) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/hubs/search"]["get"] - update: - x-codeSamples: - - lang: python - label: performSearch - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.search.perform_search(query='dylan', section_id=1516.53, limit=5) + res = s.butler.stop_task(task_name=operations.PathParamTaskName.BACKUP_DATABASE) if res is not None: # handle response pass - - target: $["paths"]["/activities/{activityUUID}"]["delete"] + - target: $["paths"]["/library/sections/{sectionId}"]["delete"] update: x-codeSamples: - lang: python - label: cancelServerActivities + label: deleteLibrary source: |- import plex_api @@ -865,7 +305,66 @@ actions: ) - res = s.activities.cancel_server_activities(activity_uuid='25b71ed5-0f9d-461c-baa7-d404e9e10d3e') + res = s.library.delete_library(section_id=1000) + + if res is not None: + # handle response + pass + - target: $["paths"]["/statistics/media"]["get"] + update: + x-codeSamples: + - lang: python + label: getStatistics + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.statistics.get_statistics(timespan=4) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/log"]["get"] + update: + x-codeSamples: + - lang: python + label: logLine + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.log.log_line(level=operations.Level.THREE, message='Test log message', source='Postman') + + if res is not None: + # handle response + pass + - target: $["paths"]["/updater/check"]["put"] + update: + x-codeSamples: + - lang: python + label: checkForUpdates + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.check_for_updates(download=operations.Download.ONE) if res is not None: # handle response @@ -907,6 +406,453 @@ actions: res = s.authentication.get_transient_token(type=operations.GetTransientTokenQueryParamType.DELEGATION, scope=operations.Scope.ALL) + if res is not None: + # handle response + pass + - target: $["paths"]["/library/hashes"]["get"] + update: + x-codeSamples: + - lang: python + label: getFileHash + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_file_hash(url='file://C:\Image.png&type=13', type=4462.17) + + if res is not None: + # handle response + pass + - target: $["paths"]["/library/sections"]["get"] + update: + x-codeSamples: + - lang: python + label: getLibraries + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_libraries() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/sections/{sectionId}/refresh"]["get"] + update: + x-codeSamples: + - lang: python + label: refreshLibrary + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.refresh_library(section_id=934.16) + + if res is not None: + # handle response + pass + - target: $["paths"]["/log/networked"]["get"] + update: + x-codeSamples: + - lang: python + label: enablePaperTrail + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.log.enable_paper_trail() + + if res is not None: + # handle response + pass + - target: $["paths"]["/:/prefs"]["get"] + update: + x-codeSamples: + - lang: python + label: getServerPreferences + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_server_preferences() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] + update: + x-codeSamples: + - lang: python + label: getMetadata + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_metadata(rating_key=8382.31) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/hubs/search/voice"]["get"] + update: + x-codeSamples: + - lang: python + label: performVoiceSearch + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.search.perform_voice_search(query='dead+poop', section_id=4094.8, limit=5) + + if res is not None: + # handle response + pass + - target: $["paths"]["/search"]["get"] + update: + x-codeSamples: + - lang: python + label: getSearchResults + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.search.get_search_results(query='110') + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/onDeck"]["get"] + update: + x-codeSamples: + - lang: python + label: getOnDeck + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_on_deck() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/log"]["post"] + update: + x-codeSamples: + - lang: python + label: logMultiLine + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.log.log_multi_line(request='level=4&message=Test%20message%201&source=postman + level=3&message=Test%20message%202&source=postman + level=1&message=Test%20message%203&source=postman') + + if res is not None: + # handle response + pass + - target: $["paths"]["/pins/{pinID}"]["get"] + update: + x-codeSamples: + - lang: python + label: getToken + source: |- + import plex_api + + s = plex_api.PlexAPI( + x_plex_client_identifier='Postman', + ) + + + res = s.plex.get_token(pin_id='', x_plex_client_identifier='Postman') + + if res is not None: + # handle response + pass + - target: $["paths"]["/playlists"]["post"] + update: + x-codeSamples: + - lang: python + label: createPlaylist + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.create_playlist(request=operations.CreatePlaylistRequest( + title='', + type=operations.QueryParamType.PHOTO, + smart=operations.Smart.ONE, + uri='https://inborn-brochure.biz', + )) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + update: + x-codeSamples: + - lang: python + label: clearPlaylistContents + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.clear_playlist_contents(playlist_id=1893.18) + + if res is not None: + # handle response + pass + - target: $["paths"]["/myplex/account"]["get"] + update: + x-codeSamples: + - lang: python + label: getMyPlexAccount + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_my_plex_account() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/activities/{activityUUID}"]["delete"] + update: + x-codeSamples: + - lang: python + label: cancelServerActivities + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.activities.cancel_server_activities(activity_uuid='25b71ed5-0f9d-461c-baa7-d404e9e10d3e') + + if res is not None: + # handle response + pass + - target: $["paths"]["/pins"]["post"] + update: + x-codeSamples: + - lang: python + label: getPin + source: |- + import plex_api + + s = plex_api.PlexAPI( + x_plex_client_identifier='Postman', + ) + + + res = s.plex.get_pin(strong=False, x_plex_client_identifier='Postman') + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists"]["get"] + update: + x-codeSamples: + - lang: python + label: getPlaylists + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.get_playlists(playlist_type=operations.PlaylistType.AUDIO, smart=operations.QueryParamSmart.ZERO) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/status/sessions/history/all"]["get"] + update: + x-codeSamples: + - lang: python + label: getSessionHistory + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.get_session_history() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/butler"]["post"] + update: + x-codeSamples: + - lang: python + label: startAllTasks + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.start_all_tasks() + + if res is not None: + # handle response + pass + - target: $["paths"]["/hubs/search"]["get"] + update: + x-codeSamples: + - lang: python + label: performSearch + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.search.perform_search(query='dylan', section_id=1516.53, limit=5) + + if res is not None: + # handle response + pass + - target: $["paths"]["/library/sections/{sectionId}/search"]["get"] + update: + x-codeSamples: + - lang: python + label: searchLibrary + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.search_library(section_id=933505, type=operations.Type.FOUR) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists/upload"]["post"] + update: + x-codeSamples: + - lang: python + label: uploadPlaylist + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.upload_playlist(path='/home/barkley/playlist.m3u', force=operations.Force.ZERO) + + if res is not None: + # handle response + pass + - target: $["paths"]["/updater/apply"]["put"] + update: + x-codeSamples: + - lang: python + label: applyUpdates + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) + if res is not None: # handle response pass @@ -946,121 +892,6 @@ actions: res = s.playlists.add_playlist_contents(playlist_id=8502.01, uri='server://12345/com.plexapp.plugins.library/library/metadata/1', play_queue_id=123) - if res.object is not None: - # handle response - pass - - target: $["paths"]["/:/progress"]["post"] - update: - x-codeSamples: - - lang: python - label: updatePlayProgress - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.media.update_play_progress(key='', time=90000, state='played') - - if res is not None: - # handle response - pass - - target: $["paths"]["/activities"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerActivities - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.activities.get_server_activities() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/butler"]["post"] - update: - x-codeSamples: - - lang: python - label: startAllTasks - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.start_all_tasks() - - if res is not None: - # handle response - pass - - target: $["paths"]["/:/prefs"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerPreferences - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_server_preferences() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/clients"]["get"] - update: - x-codeSamples: - - lang: python - label: getAvailableClients - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_available_clients() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists"]["get"] - update: - x-codeSamples: - - lang: python - label: getPlaylists - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.get_playlists(playlist_type=operations.PlaylistType.AUDIO, smart=operations.QueryParamSmart.ZERO) - if res.object is not None: # handle response pass @@ -1083,11 +914,11 @@ actions: if res.object is not None: # handle response pass - - target: $["paths"]["/servers"]["get"] + - target: $["paths"]["/playlists/{playlistID}"]["put"] update: x-codeSamples: - lang: python - label: getServerList + label: updatePlaylist source: |- import plex_api @@ -1097,16 +928,16 @@ actions: ) - res = s.server.get_server_list() + res = s.playlists.update_playlist(playlist_id=3915, title='', summary='') - if res.object is not None: + if res is not None: # handle response pass - - target: $["paths"]["/log"]["get"] + - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] update: x-codeSamples: - lang: python - label: logLine + label: startUniversalTranscode source: |- import plex_api from plex_api.models import operations @@ -1117,11 +948,66 @@ actions: ) - res = s.log.log_line(level=operations.Level.THREE, message='Test log message', source='Postman') + res = s.video.start_universal_transcode(request=operations.StartUniversalTranscodeRequest( + has_mde=1, + path='/library/metadata/23409', + media_index=0, + part_index=0, + protocol='hls', + fast_seek=0, + direct_play=0, + direct_stream=0, + subtitle_size=100, + subtites='burn', + audio_boost=100, + location='lan', + media_buffer_size=102400, + session='zvcage8b7rkioqcm8f4uns4c', + add_debug_overlay=0, + auto_adjust_quality=0, + )) if res is not None: # handle response pass + - target: $["paths"]["/butler"]["get"] + update: + x-codeSamples: + - lang: python + label: getButlerTasks + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.get_butler_tasks() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/recentlyAdded"]["get"] + update: + x-codeSamples: + - lang: python + label: getRecentlyAdded + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_recently_added() + + if res.object is not None: + # handle response + pass - target: $["paths"]["/library/sections/{sectionId}"]["get"] update: x-codeSamples: @@ -1142,14 +1028,13 @@ actions: if res.object is not None: # handle response pass - - target: $["paths"]["/library/sections/{sectionId}/search"]["get"] + - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] update: x-codeSamples: - lang: python - label: searchLibrary + label: getMetadataChildren source: |- import plex_api - from plex_api.models import operations s = plex_api.PlexAPI( access_token="", @@ -1157,7 +1042,45 @@ actions: ) - res = s.library.search_library(section_id=933505, type=operations.Type.FOUR) + res = s.library.get_metadata_children(rating_key=1539.14) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}"]["delete"] + update: + x-codeSamples: + - lang: python + label: deletePlaylist + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.delete_playlist(playlist_id=216.22) + + if res is not None: + # handle response + pass + - target: $["paths"]["/clients"]["get"] + update: + x-codeSamples: + - lang: python + label: getAvailableClients + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_available_clients() if res.object is not None: # handle response @@ -1181,11 +1104,11 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/butler/{taskName}"]["delete"] + - target: $["paths"]["/butler/{taskName}"]["post"] update: x-codeSamples: - lang: python - label: stopTask + label: startTask source: |- import plex_api from plex_api.models import operations @@ -1196,8 +1119,85 @@ actions: ) - res = s.butler.stop_task(task_name=operations.PathParamTaskName.BACKUP_DATABASE) + res = s.butler.start_task(task_name=operations.TaskName.CLEAN_OLD_BUNDLES) if res is not None: # handle response pass + - target: $["paths"]["/hubs"]["get"] + update: + x-codeSamples: + - lang: python + label: getGlobalHubs + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.hubs.get_global_hubs(count=1262.49, only_transient=operations.OnlyTransient.ONE) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}"]["get"] + update: + x-codeSamples: + - lang: python + label: getPlaylist + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.get_playlist(playlist_id=4109.48) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/security/resources"]["get"] + update: + x-codeSamples: + - lang: python + label: getSourceConnectionInformation + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.authentication.get_source_connection_information(source='server://client-identifier') + + if res is not None: + # handle response + pass + - target: $["paths"]["/updater/status"]["get"] + update: + x-codeSamples: + - lang: python + label: getUpdateStatus + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.get_update_status() + + if res.object is not None: + # handle response + pass diff --git a/scripts/publish.sh b/scripts/publish.sh new file mode 100755 index 0000000..ed45d8a --- /dev/null +++ b/scripts/publish.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +export TWINE_USERNAME=__token__ +export TWINE_PASSWORD=${PYPI_TOKEN} + +python -m pip install --upgrade pip +pip install setuptools wheel twine +python setup.py sdist bdist_wheel +twine upload dist/* diff --git a/setup.py b/setup.py index 01b126d..42bb5dc 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ except FileNotFoundError: setuptools.setup( name='plex-api-client', - version='0.8.1', + version='0.8.2', author='LukeHagar', description='Python Client SDK Generated by Speakeasy', url='https://github.com/LukeHagar/plexpy.git', diff --git a/src/plex_api/sdkconfiguration.py b/src/plex_api/sdkconfiguration.py index 3a79200..345bc07 100644 --- a/src/plex_api/sdkconfiguration.py +++ b/src/plex_api/sdkconfiguration.py @@ -34,9 +34,9 @@ class SDKConfiguration: server_defaults: List[Dict[str, str]] = field(default_factory=List) language: str = 'python' openapi_doc_version: str = '0.0.3' - sdk_version: str = '0.8.1' - gen_version: str = '2.338.12' - user_agent: str = 'speakeasy-sdk/python 0.8.1 2.338.12 0.0.3 plex-api-client' + sdk_version: str = '0.8.2' + gen_version: str = '2.342.2' + user_agent: str = 'speakeasy-sdk/python 0.8.2 2.342.2 0.0.3 plex-api-client' retry_config: Optional[RetryConfig] = None def __post_init__(self):