diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index b34555c..bca4153 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 3eeea668-4ef4-464e-a888-bdfa023bedf5 management: - docChecksum: 71aea44b27d124ce7bc7da09090777b5 + docChecksum: 68de03e6e877c4fc50ebfdd47bb117ac docVersion: 0.0.3 speakeasyVersion: 1.513.4 generationVersion: 2.545.4 - releaseVersion: 0.24.0 - configChecksum: 8d49c886bc69c593bf720d0d6cf773a5 + releaseVersion: 0.24.1 + configChecksum: ab89577eb9a2f436f126493e459636bf repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git @@ -166,10 +166,6 @@ generatedFiles: - docs/models/errors/getmyplexaccounterrors.md - docs/models/errors/getmyplexaccountservererrors.md - docs/models/errors/getmyplexaccountunauthorized.md - - docs/models/errors/getondeckbadrequest.md - - docs/models/errors/getondeckerrors.md - - docs/models/errors/getondecklibraryerrors.md - - docs/models/errors/getondeckunauthorized.md - docs/models/errors/getpinbadrequest.md - docs/models/errors/getpinerrors.md - docs/models/errors/getplaylistbadrequest.md @@ -436,6 +432,7 @@ generatedFiles: - docs/models/operations/getallmedialibraryfieldtype.md - docs/models/operations/getallmedialibraryfilter.md - docs/models/operations/getallmedialibrarygenre.md + - docs/models/operations/getallmedialibraryguids.md - docs/models/operations/getallmedialibraryhasthumbnail.md - docs/models/operations/getallmedialibraryimage.md - docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md @@ -529,12 +526,9 @@ generatedFiles: - docs/models/operations/getlibraryitemscountry.md - docs/models/operations/getlibraryitemsdefaultdirection.md - docs/models/operations/getlibraryitemsdirector.md - - docs/models/operations/getlibraryitemsenablecreditsmarkergeneration.md - - docs/models/operations/getlibraryitemsepisodesort.md - docs/models/operations/getlibraryitemsfield.md - docs/models/operations/getlibraryitemsfieldtype.md - docs/models/operations/getlibraryitemsfilter.md - - docs/models/operations/getlibraryitemsflattenseasons.md - docs/models/operations/getlibraryitemsgenre.md - docs/models/operations/getlibraryitemshasthumbnail.md - docs/models/operations/getlibraryitemsimage.md @@ -551,10 +545,8 @@ generatedFiles: - docs/models/operations/getlibraryitemslocation.md - docs/models/operations/getlibraryitemsmedia.md - docs/models/operations/getlibraryitemsmediacontainer.md - - docs/models/operations/getlibraryitemsmediaguid.md - docs/models/operations/getlibraryitemsmeta.md - docs/models/operations/getlibraryitemsmetadata.md - - docs/models/operations/getlibraryitemsmetadatarating.md - docs/models/operations/getlibraryitemsoperator.md - docs/models/operations/getlibraryitemsoptimizedforstreaming.md - docs/models/operations/getlibraryitemspart.md @@ -564,7 +556,6 @@ generatedFiles: - docs/models/operations/getlibraryitemsresponse.md - docs/models/operations/getlibraryitemsresponsebody.md - docs/models/operations/getlibraryitemsrole.md - - docs/models/operations/getlibraryitemsshowordering.md - docs/models/operations/getlibraryitemssort.md - docs/models/operations/getlibraryitemsstream.md - docs/models/operations/getlibraryitemstype.md @@ -583,11 +574,14 @@ generatedFiles: - docs/models/operations/getmediametadatametadata.md - docs/models/operations/getmediametadataoptimizedforstreaming.md - docs/models/operations/getmediametadataoptimizedforstreaming1.md + - docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md - docs/models/operations/getmediametadatapart.md + - docs/models/operations/getmediametadataproducer.md - docs/models/operations/getmediametadatarequest.md - docs/models/operations/getmediametadataresponse.md - docs/models/operations/getmediametadataresponsebody.md - docs/models/operations/getmediametadatarole.md + - docs/models/operations/getmediametadatasimilar.md - docs/models/operations/getmediametadatastream.md - docs/models/operations/getmediametadataultrablurcolors.md - docs/models/operations/getmediametadatawriter.md @@ -604,14 +598,6 @@ generatedFiles: - docs/models/operations/getmetadatachildrenresponsebody.md - docs/models/operations/getmyplexaccountresponse.md - docs/models/operations/getmyplexaccountresponsebody.md - - docs/models/operations/getondeckguids.md - - docs/models/operations/getondeckmedia.md - - docs/models/operations/getondeckmediacontainer.md - - docs/models/operations/getondeckmetadata.md - - docs/models/operations/getondeckpart.md - - docs/models/operations/getondeckresponse.md - - docs/models/operations/getondeckresponsebody.md - - docs/models/operations/getondeckstream.md - docs/models/operations/getpinauthpincontainer.md - docs/models/operations/getpinrequest.md - docs/models/operations/getpinresponse.md @@ -663,6 +649,8 @@ generatedFiles: - docs/models/operations/getrecentlyaddedmediacontainer.md - docs/models/operations/getrecentlyaddedmetadata.md - docs/models/operations/getrecentlyaddedoperator.md + - docs/models/operations/getrecentlyaddedoptimizedforstreaming.md + - docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md - docs/models/operations/getrecentlyaddedrequest.md - docs/models/operations/getrecentlyaddedresponse.md - docs/models/operations/getrecentlyaddedresponsebody.md @@ -888,6 +876,7 @@ generatedFiles: - docs/models/operations/queryparamonlytransient.md - docs/models/operations/queryparamsmart.md - docs/models/operations/queryparamtype.md + - docs/models/operations/rating.md - docs/models/operations/ratings.md - docs/models/operations/release.md - docs/models/operations/responsebody.md @@ -1025,7 +1014,6 @@ generatedFiles: - src/plex_api_client/models/errors/getlibraryhubs.py - src/plex_api_client/models/errors/getmetadatachildren.py - src/plex_api_client/models/errors/getmyplexaccount.py - - src/plex_api_client/models/errors/getondeck.py - src/plex_api_client/models/errors/getpin.py - src/plex_api_client/models/errors/getplaylist.py - src/plex_api_client/models/errors/getplaylistcontents.py @@ -1108,7 +1096,6 @@ generatedFiles: - src/plex_api_client/models/operations/getlibraryhubs.py - src/plex_api_client/models/operations/getmetadatachildren.py - src/plex_api_client/models/operations/getmyplexaccount.py - - src/plex_api_client/models/operations/getondeck.py - src/plex_api_client/models/operations/getpin.py - src/plex_api_client/models/operations/getplaylist.py - src/plex_api_client/models/operations/getplaylistcontents.py @@ -1547,7 +1534,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}, {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": []}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": 1, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": true, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}, {"image": "imdb://image.rating", "value": 5.1, "type": "audience"}, {"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}]}, {"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": []}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": 0, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: @@ -2251,7 +2238,7 @@ examples: asyncRefreshLocalMediaAgent: true responses: "200": - application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": []}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}, {"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "Image": [], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}, {"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": []}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}, {"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": []}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}, {"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "Image": [], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}, {"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": []}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}, {"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2272,7 +2259,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Role": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}]}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}, {"tag": "Crime"}, {"tag": "Crime"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}, {"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}, {"tag": "Teller"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}]}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index dcd5b3c..79133d4 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -15,7 +15,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false python: - version: 0.24.0 + version: 0.24.1 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 223fabd..37b503b 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -8,19 +8,19 @@ sources: - latest plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 tags: - latest - - speakeasy-sdk-regen-1741392085 + - speakeasy-sdk-regen-1741564888 targets: plexpy: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 codeSamplesNamespace: code-samples-python-plexpy - codeSamplesRevisionDigest: sha256:409d05f3fbbabe4d7f85ab58a2f14287c524e610e99207650bdab9dc0f6ad72d + codeSamplesRevisionDigest: sha256:acbb4d2076c0f7319d1fd652e302723e8e6d7db2131bc721448e654c64f4b45c workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 255a282..ce728bd 100644 --- a/README.md +++ b/README.md @@ -227,7 +227,6 @@ asyncio.run(main()) * [get_media_meta_data](docs/sdks/library/README.md#get_media_meta_data) - Get Media Metadata * [get_metadata_children](docs/sdks/library/README.md#get_metadata_children) - Get Items Children * [get_top_watched_content](docs/sdks/library/README.md#get_top_watched_content) - Get Top Watched Content -* [get_on_deck](docs/sdks/library/README.md#get_on_deck) - Get On Deck ### [log](docs/sdks/log/README.md) diff --git a/RELEASES.md b/RELEASES.md index 2d1fc34..fcfde39 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -958,4 +958,14 @@ Based on: ### Generated - [python v0.24.0] . ### Releases -- [PyPI v0.24.0] https://pypi.org/project/plex-api-client/0.24.0 - . \ No newline at end of file +- [PyPI v0.24.0] https://pypi.org/project/plex-api-client/0.24.0 - . + +## 2025-03-10 00:01:12 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.513.4 (2.545.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.24.1] . +### Releases +- [PyPI v0.24.1] https://pypi.org/project/plex-api-client/0.24.1 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index 6528f45..8173787 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -637,25 +637,6 @@ actions: # Handle response print(res.response_stream) - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: python - label: getOnDeck - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_on_deck() - - assert res.object is not None - - # Handle response - print(res.object) - target: $["paths"]["/library/recentlyAdded"]["get"] update: x-codeSamples: diff --git a/docs/models/errors/getondeckbadrequest.md b/docs/models/errors/getondeckbadrequest.md deleted file mode 100644 index eee1541..0000000 --- a/docs/models/errors/getondeckbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `errors` | List[[errors.GetOnDeckErrors](../../models/errors/getondeckerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getondeckerrors.md b/docs/models/errors/getondeckerrors.md deleted file mode 100644 index 34b3727..0000000 --- a/docs/models/errors/getondeckerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getondecklibraryerrors.md b/docs/models/errors/getondecklibraryerrors.md deleted file mode 100644 index 8b64ad8..0000000 --- a/docs/models/errors/getondecklibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getondeckunauthorized.md b/docs/models/errors/getondeckunauthorized.md deleted file mode 100644 index edca992..0000000 --- a/docs/models/errors/getondeckunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetOnDeckLibraryErrors](../../models/errors/getondecklibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/collection.md b/docs/models/operations/collection.md index 02bb553..047c09d 100644 --- a/docs/models/operations/collection.md +++ b/docs/models/operations/collection.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Working NL Subs | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `tag` | *str* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/models/operations/country.md b/docs/models/operations/country.md index 9ebca0f..0d04752 100644 --- a/docs/models/operations/country.md +++ b/docs/models/operations/country.md @@ -1,8 +1,12 @@ # Country +The filter query string for country media items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 259 | +| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file diff --git a/docs/models/operations/director.md b/docs/models/operations/director.md index 37b85a6..5c3a1bb 100644 --- a/docs/models/operations/director.md +++ b/docs/models/operations/director.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | +| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/genre.md b/docs/models/operations/genre.md index 3c60b3f..cbc2218 100644 --- a/docs/models/operations/genre.md +++ b/docs/models/operations/genre.md @@ -1,8 +1,12 @@ # Genre +The filter query string for similar items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Adventure | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 259 | +| `filter_` | *str* | :heavy_check_mark: | N/A | genre=19 | +| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarygenre.md b/docs/models/operations/getallmedialibrarygenre.md index 4bbe902..60559d3 100644 --- a/docs/models/operations/getallmedialibrarygenre.md +++ b/docs/models/operations/getallmedialibrarygenre.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryguids.md b/docs/models/operations/getallmedialibraryguids.md new file mode 100644 index 0000000..1bec14a --- /dev/null +++ b/docs/models/operations/getallmedialibraryguids.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
| tvdb://2337 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymedia.md b/docs/models/operations/getallmedialibrarymedia.md index 28a7456..9e97834 100644 --- a/docs/models/operations/getallmedialibrarymedia.md +++ b/docs/models/operations/getallmedialibrarymedia.md @@ -6,8 +6,6 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `has_voice_activity` | *bool* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | -| `part` | List[[operations.GetAllMediaLibraryPart](../../models/operations/getallmedialibrarypart.md)] | :heavy_check_mark: | An array of parts for this media item. | | | `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | | `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | | `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | @@ -21,6 +19,8 @@ | `container` | *Optional[str]* | :heavy_minus_sign: | File container type. | mkv | | `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `optimized_for_streaming` | [Optional[operations.GetAllMediaLibraryOptimizedForStreaming]](../../models/operations/getallmedialibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `part` | List[[operations.GetAllMediaLibraryPart](../../models/operations/getallmedialibrarypart.md)] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymetadata.md b/docs/models/operations/getallmedialibrarymetadata.md index a87b66c..f0e7152 100644 --- a/docs/models/operations/getallmedialibrarymetadata.md +++ b/docs/models/operations/getallmedialibrarymetadata.md @@ -18,7 +18,6 @@ Unknown | `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| | `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | | `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `year` | *int* | :heavy_check_mark: | The release year of the media item. | 2022 | | `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | | `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | | `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | @@ -31,6 +30,7 @@ Unknown | `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | | `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | | `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | +| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | | `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | | `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | | `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | @@ -70,5 +70,5 @@ Unknown | `director` | List[[operations.GetAllMediaLibraryDirector](../../models/operations/getallmedialibrarydirector.md)] | :heavy_minus_sign: | N/A | | | `writer` | List[[operations.GetAllMediaLibraryWriter](../../models/operations/getallmedialibrarywriter.md)] | :heavy_minus_sign: | N/A | | | `role` | List[[operations.GetAllMediaLibraryRole](../../models/operations/getallmedialibraryrole.md)] | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.Guids](../../models/operations/guids.md)] | :heavy_minus_sign: | N/A | | +| `guids` | List[[operations.GetAllMediaLibraryGuids](../../models/operations/getallmedialibraryguids.md)] | :heavy_minus_sign: | N/A | | | `collection` | List[[operations.GetAllMediaLibraryCollection](../../models/operations/getallmedialibrarycollection.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryoptimizedforstreaming.md b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md index 8de5266..202b586 100644 --- a/docs/models/operations/getallmedialibraryoptimizedforstreaming.md +++ b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### `operations.One` +### `operations.OptimizedForStreaming1` ```python -value: operations.One = /* values here */ +value: operations.OptimizedForStreaming1 = /* values here */ ``` ### `bool` diff --git a/docs/models/operations/getallmedialibraryrole.md b/docs/models/operations/getallmedialibraryrole.md index 8a3d8c7..1f73ddb 100644 --- a/docs/models/operations/getallmedialibraryrole.md +++ b/docs/models/operations/getallmedialibraryrole.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The name of the actor for this role | Danny Boyle | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarystream.md b/docs/models/operations/getallmedialibrarystream.md index 2a2225e..3b52934 100644 --- a/docs/models/operations/getallmedialibrarystream.md +++ b/docs/models/operations/getallmedialibrarystream.md @@ -9,13 +9,13 @@ | `stream_type` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | | `codec` | *str* | :heavy_check_mark: | Codec used by the stream. | hevc | | `index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | -| `language` | *str* | :heavy_check_mark: | Language of the stream. | English | -| `language_tag` | *str* | :heavy_check_mark: | Language tag (e.g., en). | en | -| `language_code` | *str* | :heavy_check_mark: | ISO language code. | eng | | `display_title` | *str* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | | `extended_display_title` | *str* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | | `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | | `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | | `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -30,6 +30,7 @@ | `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | | `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | | `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -41,6 +42,7 @@ | `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | | `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | | `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | +| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | | `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | | `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | | `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | diff --git a/docs/models/operations/getallmedialibrarywriter.md b/docs/models/operations/getallmedialibrarywriter.md index 4c6e801..491bc34 100644 --- a/docs/models/operations/getallmedialibrarywriter.md +++ b/docs/models/operations/getallmedialibrarywriter.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Danny Boyle | \ No newline at end of file +| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsenablecreditsmarkergeneration.md b/docs/models/operations/getlibraryitemsenablecreditsmarkergeneration.md deleted file mode 100644 index aea9041..0000000 --- a/docs/models/operations/getlibraryitemsenablecreditsmarkergeneration.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsEnableCreditsMarkerGeneration - -Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `LIBRARY_DEFAULT` | -1 | -| `DISABLED` | 0 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsepisodesort.md b/docs/models/operations/getlibraryitemsepisodesort.md deleted file mode 100644 index a291880..0000000 --- a/docs/models/operations/getlibraryitemsepisodesort.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsEpisodeSort - -Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `LIBRARY_DEFAULT` | -1 | -| `OLDEST_FIRST` | 0 | -| `NEWEST_FIRST` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsflattenseasons.md b/docs/models/operations/getlibraryitemsflattenseasons.md deleted file mode 100644 index 8a8a1bc..0000000 --- a/docs/models/operations/getlibraryitemsflattenseasons.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsFlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `LIBRARY_DEFAULT` | -1 | -| `HIDE` | 0 | -| `SHOW` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmediaguid.md b/docs/models/operations/getlibraryitemsmediaguid.md deleted file mode 100644 index 762bb81..0000000 --- a/docs/models/operations/getlibraryitemsmediaguid.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsMediaGUID - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Can be one of the following formats:
imdb://tt13015952, tmdb://2434012, tvdb://7945991
| imdb://tt13015952 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmetadata.md b/docs/models/operations/getlibraryitemsmetadata.md index ffc1140..dfc761a 100644 --- a/docs/models/operations/getlibraryitemsmetadata.md +++ b/docs/models/operations/getlibraryitemsmetadata.md @@ -24,10 +24,10 @@ | `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | | `season_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | | `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `flatten_seasons` | [Optional[operations.GetLibraryItemsFlattenSeasons]](../../models/operations/getlibraryitemsflattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | -| `episode_sort` | [Optional[operations.GetLibraryItemsEpisodeSort]](../../models/operations/getlibraryitemsepisodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | -| `enable_credits_marker_generation` | [Optional[operations.GetLibraryItemsEnableCreditsMarkerGeneration]](../../models/operations/getlibraryitemsenablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `show_ordering` | [Optional[operations.GetLibraryItemsShowOrdering]](../../models/operations/getlibraryitemsshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | +| `flatten_seasons` | [Optional[operations.FlattenSeasons]](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | +| `episode_sort` | [Optional[operations.EpisodeSort]](../../models/operations/episodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | +| `enable_credits_marker_generation` | [Optional[operations.EnableCreditsMarkerGeneration]](../../models/operations/enablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | +| `show_ordering` | [Optional[operations.ShowOrdering]](../../models/operations/showordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | | `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | | `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | | `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | @@ -55,9 +55,9 @@ | `collection` | List[[operations.GetLibraryItemsCollection](../../models/operations/getlibraryitemscollection.md)] | :heavy_minus_sign: | N/A | | | `role` | List[[operations.GetLibraryItemsRole](../../models/operations/getlibraryitemsrole.md)] | :heavy_minus_sign: | N/A | | | `location` | List[[operations.GetLibraryItemsLocation](../../models/operations/getlibraryitemslocation.md)] | :heavy_minus_sign: | N/A | | -| `media_guid` | List[[operations.GetLibraryItemsMediaGUID](../../models/operations/getlibraryitemsmediaguid.md)] | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | +| `media_guid` | List[[operations.MediaGUID](../../models/operations/mediaguid.md)] | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | | `ultra_blur_colors` | [Optional[operations.GetLibraryItemsUltraBlurColors]](../../models/operations/getlibraryitemsultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `meta_data_rating` | List[[operations.GetLibraryItemsMetaDataRating](../../models/operations/getlibraryitemsmetadatarating.md)] | :heavy_minus_sign: | N/A | | +| `meta_data_rating` | List[[operations.MetaDataRating](../../models/operations/metadatarating.md)] | :heavy_minus_sign: | N/A | | | `image` | List[[operations.GetLibraryItemsImage](../../models/operations/getlibraryitemsimage.md)] | :heavy_minus_sign: | N/A | | | `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Whale | | `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | diff --git a/docs/models/operations/getlibraryitemsmetadatarating.md b/docs/models/operations/getlibraryitemsmetadatarating.md deleted file mode 100644 index 1f47073..0000000 --- a/docs/models/operations/getlibraryitemsmetadatarating.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsMetaDataRating - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `image` | *str* | :heavy_check_mark: | A URI or path to the rating image. | themoviedb://image.rating | -| `value` | *float* | :heavy_check_mark: | The value of the rating. | 3 | -| `type` | *str* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsshowordering.md b/docs/models/operations/getlibraryitemsshowordering.md deleted file mode 100644 index 9a34af9..0000000 --- a/docs/models/operations/getlibraryitemsshowordering.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibraryItemsShowOrdering - -Setting that indicates the episode ordering for the show. -None = Library default, -tmdbAiring = The Movie Database (Aired), -aired = TheTVDB (Aired), -dvd = TheTVDB (DVD), -absolute = TheTVDB (Absolute)). - - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `NONE` | None | -| `TMDB_AIRING` | tmdbAiring | -| `TVDB_AIRED` | aired | -| `TVDB_DVD` | dvd | -| `TVDB_ABSOLUTE` | absolute | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md index a5102da..d7ce340 100644 --- a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md +++ b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### `operations.GetMediaMetaDataOptimizedForStreaming1` +### `operations.GetMediaMetaDataOptimizedForStreamingLibrary1` ```python -value: operations.GetMediaMetaDataOptimizedForStreaming1 = /* values here */ +value: operations.GetMediaMetaDataOptimizedForStreamingLibrary1 = /* values here */ ``` ### `bool` diff --git a/docs/models/operations/getmediametadatamedia.md b/docs/models/operations/getmediametadatamedia.md index eddec02..afe9252 100644 --- a/docs/models/operations/getmediametadatamedia.md +++ b/docs/models/operations/getmediametadatamedia.md @@ -6,8 +6,6 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `has_voice_activity` | *bool* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | -| `part` | List[[operations.GetMediaMetaDataPart](../../models/operations/getmediametadatapart.md)] | :heavy_check_mark: | An array of parts for this media item. | | | `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | | `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | | `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | @@ -21,6 +19,8 @@ | `container` | *Optional[str]* | :heavy_minus_sign: | File container type. | mkv | | `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `optimized_for_streaming` | [Optional[operations.GetMediaMetaDataOptimizedForStreaming]](../../models/operations/getmediametadataoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `part` | List[[operations.GetMediaMetaDataPart](../../models/operations/getmediametadatapart.md)] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatametadata.md b/docs/models/operations/getmediametadatametadata.md index a081ee3..cdfa9f2 100644 --- a/docs/models/operations/getmediametadatametadata.md +++ b/docs/models/operations/getmediametadatametadata.md @@ -63,6 +63,6 @@ | `role` | List[[operations.GetMediaMetaDataRole](../../models/operations/getmediametadatarole.md)] | :heavy_minus_sign: | An array of Actor roles. | | | `director` | List[[operations.GetMediaMetaDataDirector](../../models/operations/getmediametadatadirector.md)] | :heavy_minus_sign: | An array of Director roles. | | | `writer` | List[[operations.GetMediaMetaDataWriter](../../models/operations/getmediametadatawriter.md)] | :heavy_minus_sign: | An array of Writer roles. | | -| `producer` | List[[operations.Producer](../../models/operations/producer.md)] | :heavy_minus_sign: | An array of Writer roles. | | -| `similar` | List[[operations.Similar](../../models/operations/similar.md)] | :heavy_minus_sign: | An array of similar content objects. | | +| `producer` | List[[operations.GetMediaMetaDataProducer](../../models/operations/getmediametadataproducer.md)] | :heavy_minus_sign: | An array of Writer roles. | | +| `similar` | List[[operations.GetMediaMetaDataSimilar](../../models/operations/getmediametadatasimilar.md)] | :heavy_minus_sign: | An array of similar content objects. | | | `location` | List[[operations.GetMediaMetaDataLocation](../../models/operations/getmediametadatalocation.md)] | :heavy_minus_sign: | An array of location objects. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming.md b/docs/models/operations/getmediametadataoptimizedforstreaming.md index 9ca0f9a..6a308f5 100644 --- a/docs/models/operations/getmediametadataoptimizedforstreaming.md +++ b/docs/models/operations/getmediametadataoptimizedforstreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### `operations.OptimizedForStreaming1` +### `operations.GetMediaMetaDataOptimizedForStreaming1` ```python -value: operations.OptimizedForStreaming1 = /* values here */ +value: operations.GetMediaMetaDataOptimizedForStreaming1 = /* values here */ ``` ### `bool` diff --git a/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md b/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md new file mode 100644 index 0000000..8287159 --- /dev/null +++ b/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md @@ -0,0 +1,9 @@ +# GetMediaMetaDataOptimizedForStreamingLibrary1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataproducer.md b/docs/models/operations/getmediametadataproducer.md new file mode 100644 index 0000000..29184e3 --- /dev/null +++ b/docs/models/operations/getmediametadataproducer.md @@ -0,0 +1,13 @@ +# GetMediaMetaDataProducer + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The unique role identifier. | 109501 | +| `filter_` | *str* | :heavy_check_mark: | The filter string for the role. | actor=109501 | +| `tag` | *str* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | +| `tag_key` | *str* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | +| `role` | *Optional[str]* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatasimilar.md b/docs/models/operations/getmediametadatasimilar.md new file mode 100644 index 0000000..5afefcf --- /dev/null +++ b/docs/models/operations/getmediametadatasimilar.md @@ -0,0 +1,10 @@ +# GetMediaMetaDataSimilar + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The unique similar item identifier. | 26 | +| `filter_` | *str* | :heavy_check_mark: | The filter string for similar items. | similar=26 | +| `tag` | *str* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatastream.md b/docs/models/operations/getmediametadatastream.md index 7cf297f..8c847d6 100644 --- a/docs/models/operations/getmediametadatastream.md +++ b/docs/models/operations/getmediametadatastream.md @@ -9,13 +9,13 @@ | `stream_type` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | | `codec` | *str* | :heavy_check_mark: | Codec used by the stream. | hevc | | `index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | -| `language` | *str* | :heavy_check_mark: | Language of the stream. | English | -| `language_tag` | *str* | :heavy_check_mark: | Language tag (e.g., en). | en | -| `language_code` | *str* | :heavy_check_mark: | ISO language code. | eng | | `display_title` | *str* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | | `extended_display_title` | *str* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | | `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | | `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | | `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -30,6 +30,7 @@ | `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | | `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | | `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -41,6 +42,7 @@ | `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | | `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | | `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | +| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | | `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | | `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | | `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | diff --git a/docs/models/operations/getondeckguids.md b/docs/models/operations/getondeckguids.md deleted file mode 100644 index 6ff69a3..0000000 --- a/docs/models/operations/getondeckguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetOnDeckGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | imdb://tt13303712 | \ No newline at end of file diff --git a/docs/models/operations/getondeckmedia.md b/docs/models/operations/getondeckmedia.md deleted file mode 100644 index 5a3eb0d..0000000 --- a/docs/models/operations/getondeckmedia.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetOnDeckMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 80994 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 420080 | -| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 1046 | -| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.78 | -| `audio_channels` | *Optional[float]* | :heavy_minus_sign: | N/A | 2 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mkv | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | PAL | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main | -| `part` | List[[operations.GetOnDeckPart](../../models/operations/getondeckpart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getondeckmediacontainer.md b/docs/models/operations/getondeckmediacontainer.md deleted file mode 100644 index 555c2bf..0000000 --- a/docs/models/operations/getondeckmediacontainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetOnDeckMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 16 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 1680021154 | -| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `metadata` | List[[operations.GetOnDeckMetadata](../../models/operations/getondeckmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getondeckmetadata.md b/docs/models/operations/getondeckmetadata.md deleted file mode 100644 index 46a115e..0000000 --- a/docs/models/operations/getondeckmetadata.md +++ /dev/null @@ -1,43 +0,0 @@ -# GetOnDeckMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | TV Shows | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 4bb2521c-8ba9-459b-aaee-8ab8bc35eabd | -| `rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 49564 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49564 | -| `parent_rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 49557 | -| `grandparent_rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 49556 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://episode/5ea7d7402e7ab10042e74d4f | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://season/602e754d67f4c8002ce54b3d | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c090e705e7a001e6e94d8 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | episode | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Circus | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49556 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49557 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Bluey (2018) | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Season 2 | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | TV-Y | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Bluey is the ringmaster in a game of circus with her friends but Hercules wants to play his motorcycle game instead. Luckily Bluey has a solution to keep everyone happy. | -| `index` | *Optional[float]* | :heavy_minus_sign: | N/A | 33 | -| `parent_index` | *Optional[float]* | :heavy_minus_sign: | N/A | 2 | -| `last_viewed_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681908352 | -| `year` | *Optional[float]* | :heavy_minus_sign: | N/A | 2018 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49564/thumb/1654258204 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49557/thumb/1654258204 | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49556/thumb/1680939546 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/49556/theme/1680939546 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 420080 | -| `originally_available_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-10-31 00:00:00 +0000 UTC | -| `added_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1654258196 | -| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1654258204 | -| `media` | List[[operations.GetOnDeckMedia](../../models/operations/getondeckmedia.md)] | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.GetOnDeckGuids](../../models/operations/getondeckguids.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getondeckpart.md b/docs/models/operations/getondeckpart.md deleted file mode 100644 index 76d7ca5..0000000 --- a/docs/models/operations/getondeckpart.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetOnDeckPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 80994 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/80994/1655007810/file.mkv | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 420080 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /tvshows/Bluey (2018)/Bluey (2018) - S02E33 - Circus.mkv | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 55148931 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main | -| `stream` | List[[operations.GetOnDeckStream](../../models/operations/getondeckstream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getondeckresponse.md b/docs/models/operations/getondeckresponse.md deleted file mode 100644 index 545f9ca..0000000 --- a/docs/models/operations/getondeckresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetOnDeckResponseBody]](../../models/operations/getondeckresponsebody.md) | :heavy_minus_sign: | The on Deck content | \ No newline at end of file diff --git a/docs/models/operations/getondeckresponsebody.md b/docs/models/operations/getondeckresponsebody.md deleted file mode 100644 index 752ae00..0000000 --- a/docs/models/operations/getondeckresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckResponseBody - -The on Deck content - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetOnDeckMediaContainer]](../../models/operations/getondeckmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getondeckstream.md b/docs/models/operations/getondeckstream.md deleted file mode 100644 index e3ef198..0000000 --- a/docs/models/operations/getondeckstream.md +++ /dev/null @@ -1,30 +0,0 @@ -# GetOnDeckStream - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 211234 | -| `stream_type` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `codec` | *Optional[str]* | :heavy_minus_sign: | N/A | hevc | -| `index` | *Optional[float]* | :heavy_minus_sign: | N/A | 0 | -| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 918 | -| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | N/A | eng | -| `bit_depth` | *Optional[float]* | :heavy_minus_sign: | N/A | 8 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | N/A | left | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | N/A | 4:2:0 | -| `coded_height` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `coded_width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | N/A | tv | -| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | N/A | 25 | -| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `level` | *Optional[float]* | :heavy_minus_sign: | N/A | 120 | -| `profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main | -| `ref_frames` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | -| `display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | -| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmediacontainer.md b/docs/models/operations/getrecentlyaddedmediacontainer.md index 1599def..d6b9423 100644 --- a/docs/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/models/operations/getrecentlyaddedmediacontainer.md @@ -5,10 +5,10 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *int* | :heavy_check_mark: | N/A | 50 | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | | -| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `total_size` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | +| `offset` | *int* | :heavy_check_mark: | Offset value for pagination. | 0 | +| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | | `meta` | [Optional[operations.Meta]](../../models/operations/meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `metadata` | List[[operations.GetRecentlyAddedMetadata](../../models/operations/getrecentlyaddedmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `metadata` | List[[operations.GetRecentlyAddedMetadata](../../models/operations/getrecentlyaddedmetadata.md)] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmetadata.md b/docs/models/operations/getrecentlyaddedmetadata.md index def4a15..a2c47bf 100644 --- a/docs/models/operations/getrecentlyaddedmetadata.md +++ b/docs/models/operations/getrecentlyaddedmetadata.md @@ -1,83 +1,85 @@ # GetRecentlyAddedMetadata +Unknown + + ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item.
Note: This is always an integer, but is represented as a string in the API.
| 58683 | -| `key` | *str* | :heavy_check_mark: | N/A | /library/metadata/58683 | -| `guid` | *str* | :heavy_check_mark: | N/A | plex://movie/5d7768ba96b655001fdc0408 | -| `type` | [operations.GetRecentlyAddedHubsType](../../models/operations/getrecentlyaddedhubstype.md) | :heavy_check_mark: | The type of media content
| movie | -| `title` | *str* | :heavy_check_mark: | N/A | Avatar: The Way of Water | -| `summary` | *str* | :heavy_check_mark: | N/A | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home. | -| `added_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | 20th Century Studios | -| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | 4-for-texas | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 7.6 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 9.2 | -| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | -| `season_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `flatten_seasons` | [Optional[operations.FlattenSeasons]](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | -| `episode_sort` | [Optional[operations.EpisodeSort]](../../models/operations/episodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | -| `enable_credits_marker_generation` | [Optional[operations.EnableCreditsMarkerGeneration]](../../models/operations/enablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `show_ordering` | [Optional[operations.ShowOrdering]](../../models/operations/showordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | -| `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 11558112 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2022-12-14 00:00:00 +0000 UTC | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58684 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 66 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Caprica | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `parent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | -| `media` | List[[operations.Media](../../models/operations/media.md)] | :heavy_minus_sign: | The Media object is only included when type query is `4` or higher.
| | -| `genre` | List[[operations.Genre](../../models/operations/genre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.Director](../../models/operations/director.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.Writer](../../models/operations/writer.md)] | :heavy_minus_sign: | N/A | | -| `collection` | List[[operations.Collection](../../models/operations/collection.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.Role](../../models/operations/role.md)] | :heavy_minus_sign: | N/A | | -| `location` | List[[operations.Location](../../models/operations/location.md)] | :heavy_minus_sign: | N/A | | -| `media_guid` | List[[operations.MediaGUID](../../models/operations/mediaguid.md)] | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | -| `ultra_blur_colors` | [Optional[operations.UltraBlurColors]](../../models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `meta_data_rating` | List[[operations.MetaDataRating](../../models/operations/metadatarating.md)] | :heavy_minus_sign: | N/A | | -| `image` | List[[operations.GetRecentlyAddedImage](../../models/operations/getrecentlyaddedimage.md)] | :heavy_minus_sign: | N/A | | -| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Whale | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1682752242 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | N/A | 映画 ブラッククローバー 魔法帝の剣 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 5222500 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 14 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | -| `child_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `has_premium_extras` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `has_premium_primary_extra` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent item.
| 66 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | UCP | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Caprica | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2010 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `parent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | +| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | +| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | +| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | +| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | +| `library_section_id` | *int* | :heavy_check_mark: | The identifier for the library section. | 1 | +| `library_section_key` | *str* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | +| `library_section_title` | *str* | :heavy_check_mark: | The title of the library section. | Movies | +| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `parent_studio` | *str* | :heavy_check_mark: | The studio of the parent media item. | UCP | +| `parent_theme` | *str* | :heavy_check_mark: | The theme URL for the parent media item. | /library/metadata/66/theme/1705716261 | +| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | +| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | +| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | +| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| +| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | +| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | +| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | +| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | +| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | +| `type` | [operations.GetRecentlyAddedHubsType](../../models/operations/getrecentlyaddedhubstype.md) | :heavy_check_mark: | N/A | movie | +| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | +| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | +| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | +| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | +| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | +| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | +| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `parent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the parent media item. | alice-in-borderland-2020 | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `parent_year` | *Optional[int]* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | +| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | +| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | +| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | +| `image` | List[[operations.GetRecentlyAddedImage](../../models/operations/getrecentlyaddedimage.md)] | :heavy_minus_sign: | N/A | | +| `ultra_blur_colors` | [Optional[operations.UltraBlurColors]](../../models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `media` | List[[operations.Media](../../models/operations/media.md)] | :heavy_minus_sign: | N/A | | +| `genre` | List[[operations.Genre](../../models/operations/genre.md)] | :heavy_minus_sign: | N/A | | +| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | | +| `director` | List[[operations.Director](../../models/operations/director.md)] | :heavy_minus_sign: | N/A | | +| `writer` | List[[operations.Writer](../../models/operations/writer.md)] | :heavy_minus_sign: | N/A | | +| `role` | List[[operations.Role](../../models/operations/role.md)] | :heavy_minus_sign: | N/A | | +| `producer` | List[[operations.Producer](../../models/operations/producer.md)] | :heavy_minus_sign: | N/A | | +| `rating1` | List[[operations.Rating](../../models/operations/rating.md)] | :heavy_minus_sign: | N/A | | +| `similar` | List[[operations.Similar](../../models/operations/similar.md)] | :heavy_minus_sign: | N/A | | +| `location` | List[[operations.Location](../../models/operations/location.md)] | :heavy_minus_sign: | N/A | | +| `guids` | List[[operations.Guids](../../models/operations/guids.md)] | :heavy_minus_sign: | N/A | | +| `collection` | List[[operations.Collection](../../models/operations/collection.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md b/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md new file mode 100644 index 0000000..a10f657 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetRecentlyAddedOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetRecentlyAddedOptimizedForStreaming1` + +```python +value: operations.GetRecentlyAddedOptimizedForStreaming1 = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md b/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md new file mode 100644 index 0000000..0f8e953 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md @@ -0,0 +1,9 @@ +# GetRecentlyAddedOptimizedForStreaming1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/hasthumbnail.md b/docs/models/operations/hasthumbnail.md index f093b19..3741df8 100644 --- a/docs/models/operations/hasthumbnail.md +++ b/docs/models/operations/hasthumbnail.md @@ -1,5 +1,7 @@ # HasThumbnail +Indicates if the part has a thumbnail. + ## Values diff --git a/docs/models/operations/location.md b/docs/models/operations/location.md index 05ed8a8..36f56d5 100644 --- a/docs/models/operations/location.md +++ b/docs/models/operations/location.md @@ -1,8 +1,10 @@ # Location +The folder path for the media item. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `path` | *Optional[str]* | :heavy_minus_sign: | N/A | /TV Shows/House | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `path` | *str* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/models/operations/media.md b/docs/models/operations/media.md index 4508e01..532d992 100644 --- a/docs/models/operations/media.md +++ b/docs/models/operations/media.md @@ -5,21 +5,22 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 119534 | -| `container` | *str* | :heavy_check_mark: | N/A | mkv | -| `part` | List[[operations.Part](../../models/operations/part.md)] | :heavy_check_mark: | N/A | | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 11558112 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 25025 | -| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 2072 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.85 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | eac3 | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | 4k | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.OptimizedForStreaming]](../../models/operations/optimizedforstreaming.md) | :heavy_minus_sign: | N/A | 1 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file +| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | +| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `container` | *Optional[str]* | :heavy_minus_sign: | File container type. | mkv | +| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `optimized_for_streaming` | [Optional[operations.OptimizedForStreaming]](../../models/operations/optimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `part` | List[[operations.Part](../../models/operations/part.md)] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/optimizedforstreaming.md b/docs/models/operations/optimizedforstreaming.md index 15b4778..47e8ce5 100644 --- a/docs/models/operations/optimizedforstreaming.md +++ b/docs/models/operations/optimizedforstreaming.md @@ -1,9 +1,19 @@ # OptimizedForStreaming +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true -## Values -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file +## Supported Types + +### `operations.One` + +```python +value: operations.One = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/part.md b/docs/models/operations/part.md index 3dcd892..ff500f6 100644 --- a/docs/models/operations/part.md +++ b/docs/models/operations/part.md @@ -3,18 +3,21 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 119542 | -| `key` | *str* | :heavy_check_mark: | N/A | /library/parts/119542/1680457526/file.mkv | -| `file` | *str* | :heavy_check_mark: | N/A | /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv | -| `size` | *int* | :heavy_check_mark: | N/A | 36158371307 | -| `container` | *str* | :heavy_check_mark: | The container format of the media file.
| mkv | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 11558112 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main 10 | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `has_thumbnail` | [Optional[operations.HasThumbnail]](../../models/operations/hasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | List[[operations.Stream](../../models/operations/stream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | +| `key` | *str* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | +| `file` | *str* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | +| `size` | *int* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | +| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | +| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | +| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | +| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | [Optional[operations.GetRecentlyAddedOptimizedForStreaming]](../../models/operations/getrecentlyaddedoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has_thumbnail` | [Optional[operations.HasThumbnail]](../../models/operations/hasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | List[[operations.Stream](../../models/operations/stream.md)] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/producer.md b/docs/models/operations/producer.md index cc86582..08299d6 100644 --- a/docs/models/operations/producer.md +++ b/docs/models/operations/producer.md @@ -3,11 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *str* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tag_key` | *str* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *Optional[str]* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | +| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | +| `tag` | *str* | :heavy_check_mark: | The name of the producer | Amelia Knapp | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | A unique key associated with the producer's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/rating.md b/docs/models/operations/rating.md new file mode 100644 index 0000000..892127d --- /dev/null +++ b/docs/models/operations/rating.md @@ -0,0 +1,12 @@ +# Rating + +The type of rating, for example 'audience' or 'critic'. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | +| `image` | *str* | :heavy_check_mark: | N/A | imdb://image.rating | +| `value` | *float* | :heavy_check_mark: | N/A | 5.1 | +| `type` | *str* | :heavy_check_mark: | N/A | audience | \ No newline at end of file diff --git a/docs/models/operations/role.md b/docs/models/operations/role.md index 6a0580c..0cdf0aa 100644 --- a/docs/models/operations/role.md +++ b/docs/models/operations/role.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | The ID of the tag or actor. | 294129 | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | The filter used to find the actor or tag. | actor=294129 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail of the actor | https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg | -| `tag` | *Optional[str]* | :heavy_minus_sign: | The name of the tag or actor. | Mike Smith | -| `tag_key` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the tag. | 668e7e7b22bcad9064350c91 | -| `role` | *Optional[str]* | :heavy_minus_sign: | The role of the actor or tag in the media. | Self | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | Unique identifier for the actor or role. | 126522 | +| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | +| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `role` | *Optional[str]* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/similar.md b/docs/models/operations/similar.md index e334bbb..55aa3bd 100644 --- a/docs/models/operations/similar.md +++ b/docs/models/operations/similar.md @@ -1,10 +1,12 @@ # Similar +The display tag for the similar item, typically the title. + ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `tag` | *str* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 259 | +| `filter_` | *str* | :heavy_check_mark: | N/A | similar=259 | +| `tag` | *str* | :heavy_check_mark: | N/A | Criss Angel Mindfreak | \ No newline at end of file diff --git a/docs/models/operations/stream.md b/docs/models/operations/stream.md index 44f404d..85ccd8f 100644 --- a/docs/models/operations/stream.md +++ b/docs/models/operations/stream.md @@ -3,43 +3,54 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 272796 | -| `stream_type` | *int* | :heavy_check_mark: | Type of stream (1 = video, 2 = audio, 3 = subtitle) | 1 | -| `codec` | *str* | :heavy_check_mark: | Codec used by the stream | h264 | -| `index` | *int* | :heavy_check_mark: | The index of the stream | 0 | -| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the default stream | true | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is selected | true | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | The bitrate of the stream in kbps | 6273 | -| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | The color primaries of the video stream | bt709 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | The color range of the video stream | tv | -| `color_space` | *Optional[str]* | :heavy_minus_sign: | The color space of the video stream | bt709 | -| `color_trc` | *Optional[str]* | :heavy_minus_sign: | The transfer characteristics (TRC) of the video stream | bt709 | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | The bit depth of the video stream | 8 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | The chroma location of the video stream | left | -| `stream_identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier of the video stream | 2 | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | The chroma subsampling format | 4:2:0 | -| `coded_height` | *Optional[int]* | :heavy_minus_sign: | The coded height of the video stream | 1088 | -| `coded_width` | *Optional[int]* | :heavy_minus_sign: | The coded width of the video stream | 1920 | -| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | The frame rate of the video stream | 29.97 | -| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream has a scaling matrix | false | -| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `height` | *Optional[int]* | :heavy_minus_sign: | The height of the video stream | 1080 | -| `level` | *Optional[int]* | :heavy_minus_sign: | The level of the video codec | 40 | -| `profile` | *Optional[str]* | :heavy_minus_sign: | The profile of the video codec | main | -| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames | 4 | -| `scan_type` | *Optional[str]* | :heavy_minus_sign: | The scan type (progressive or interlaced) | progressive | -| `width` | *Optional[int]* | :heavy_minus_sign: | The width of the video stream | 1920 | -| `display_title` | *Optional[str]* | :heavy_minus_sign: | Display title of the stream | 1080p (H.264) | -| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | Extended display title of the stream | 1080p (H.264) | -| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams) | 2 | -| `language` | *Optional[str]* | :heavy_minus_sign: | The language of the stream (for audio/subtitle streams) | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag of the stream | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | Language code of the stream | eng | -| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | The audio channel layout | stereo | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate of the audio stream in Hz | 48000 | -| `title` | *Optional[str]* | :heavy_minus_sign: | Title of the subtitle track (for subtitle streams) | English | -| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the subtitle stream can auto-sync | false | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `stream_type` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | +| `codec` | *str* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | +| `display_title` | *str* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extended_display_title` | *str* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | +| `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `doviel_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `dovi_level` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `dovi_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `dovi_profile` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpu_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `dovi_version` | *Optional[str]* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | +| `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | +| `color_trc` | *Optional[str]* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `height` | *Optional[int]* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *Optional[int]* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | +| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | +| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *Optional[str]* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/models/operations/writer.md b/docs/models/operations/writer.md index 7d84dc0..dda2a95 100644 --- a/docs/models/operations/writer.md +++ b/docs/models/operations/writer.md @@ -3,6 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | +| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | +| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | A unique key associated with the writers tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 3a56f0a..352b26e 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -24,7 +24,6 @@ API Calls interacting with Plex Media Server Libraries * [get_media_meta_data](#get_media_meta_data) - Get Media Metadata * [get_metadata_children](#get_metadata_children) - Get Items Children * [get_top_watched_content](#get_top_watched_content) - Get Top Watched Content -* [get_on_deck](#get_on_deck) - Get On Deck ## get_file_hash @@ -854,46 +853,4 @@ with PlexAPI( | --------------------------------------- | --------------------------------------- | --------------------------------------- | | errors.GetTopWatchedContentBadRequest | 400 | application/json | | errors.GetTopWatchedContentUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_on_deck - -This endpoint will return the on deck content. - - -### Example Usage - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_on_deck() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetOnDeckResponse](../../models/operations/getondeckresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.GetOnDeckBadRequest | 400 | application/json | -| errors.GetOnDeckUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 9d1a332..cf811c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "plex-api-client" -version = "0.24.0" +version = "0.24.1" description = "Python Client SDK Generated by Speakeasy" authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" diff --git a/src/plex_api_client/_version.py b/src/plex_api_client/_version.py index 6d791dc..e861688 100644 --- a/src/plex_api_client/_version.py +++ b/src/plex_api_client/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "plex-api-client" -__version__: str = "0.24.0" +__version__: str = "0.24.1" __openapi_doc_version__: str = "0.0.3" __gen_version__: str = "2.545.4" -__user_agent__: str = "speakeasy-sdk/python 0.24.0 2.545.4 0.0.3 plex-api-client" +__user_agent__: str = "speakeasy-sdk/python 0.24.1 2.545.4 0.0.3 plex-api-client" try: if __package__ is not None: diff --git a/src/plex_api_client/library.py b/src/plex_api_client/library.py index 8777d8b..9b1a3b4 100644 --- a/src/plex_api_client/library.py +++ b/src/plex_api_client/library.py @@ -3814,213 +3814,3 @@ class Library(BaseSDK): http_res_text, http_res, ) - - def get_on_deck( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetOnDeckResponse: - r"""Get On Deck - - This endpoint will return the on deck content. - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/library/onDeck", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - base_url=base_url or "", - operation_id="getOnDeck", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetOnDeckResponse( - object=utils.unmarshal_json( - http_res.text, Optional[operations.GetOnDeckResponseBody] - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = utils.unmarshal_json( - http_res.text, errors.GetOnDeckBadRequestData - ) - response_data.raw_response = http_res - raise errors.GetOnDeckBadRequest(data=response_data) - if utils.match_response(http_res, "401", "application/json"): - response_data = utils.unmarshal_json( - http_res.text, errors.GetOnDeckUnauthorizedData - ) - response_data.raw_response = http_res - raise errors.GetOnDeckUnauthorized(data=response_data) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError( - "API error occurred", http_res.status_code, http_res_text, http_res - ) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError( - "API error occurred", http_res.status_code, http_res_text, http_res - ) - - content_type = http_res.headers.get("Content-Type") - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError( - f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", - http_res.status_code, - http_res_text, - http_res, - ) - - async def get_on_deck_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetOnDeckResponse: - r"""Get On Deck - - This endpoint will return the on deck content. - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/library/onDeck", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - base_url=base_url or "", - operation_id="getOnDeck", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetOnDeckResponse( - object=utils.unmarshal_json( - http_res.text, Optional[operations.GetOnDeckResponseBody] - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = utils.unmarshal_json( - http_res.text, errors.GetOnDeckBadRequestData - ) - response_data.raw_response = http_res - raise errors.GetOnDeckBadRequest(data=response_data) - if utils.match_response(http_res, "401", "application/json"): - response_data = utils.unmarshal_json( - http_res.text, errors.GetOnDeckUnauthorizedData - ) - response_data.raw_response = http_res - raise errors.GetOnDeckUnauthorized(data=response_data) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError( - "API error occurred", http_res.status_code, http_res_text, http_res - ) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError( - "API error occurred", http_res.status_code, http_res_text, http_res - ) - - content_type = http_res.headers.get("Content-Type") - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError( - f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", - http_res.status_code, - http_res_text, - http_res, - ) diff --git a/src/plex_api_client/models/errors/__init__.py b/src/plex_api_client/models/errors/__init__.py index 0b010d1..c6d81e9 100644 --- a/src/plex_api_client/models/errors/__init__.py +++ b/src/plex_api_client/models/errors/__init__.py @@ -394,16 +394,6 @@ from .getmyplexaccount import ( GetMyPlexAccountUnauthorized, GetMyPlexAccountUnauthorizedData, ) -from .getondeck import ( - GetOnDeckBadRequest, - GetOnDeckBadRequestData, - GetOnDeckErrors, - GetOnDeckErrorsTypedDict, - GetOnDeckLibraryErrors, - GetOnDeckLibraryErrorsTypedDict, - GetOnDeckUnauthorized, - GetOnDeckUnauthorizedData, -) from .getpin import ( GetPinBadRequest, GetPinBadRequestData, @@ -1044,14 +1034,6 @@ __all__ = [ "GetMyPlexAccountServerErrorsTypedDict", "GetMyPlexAccountUnauthorized", "GetMyPlexAccountUnauthorizedData", - "GetOnDeckBadRequest", - "GetOnDeckBadRequestData", - "GetOnDeckErrors", - "GetOnDeckErrorsTypedDict", - "GetOnDeckLibraryErrors", - "GetOnDeckLibraryErrorsTypedDict", - "GetOnDeckUnauthorized", - "GetOnDeckUnauthorizedData", "GetPinBadRequest", "GetPinBadRequestData", "GetPinErrors", diff --git a/src/plex_api_client/models/errors/getondeck.py b/src/plex_api_client/models/errors/getondeck.py deleted file mode 100644 index ae8921c..0000000 --- a/src/plex_api_client/models/errors/getondeck.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetOnDeckLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetOnDeckLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetOnDeckUnauthorizedData(BaseModel): - errors: Optional[List[GetOnDeckLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetOnDeckUnauthorized(Exception): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetOnDeckUnauthorizedData - - def __init__(self, data: GetOnDeckUnauthorizedData): - self.data = data - - def __str__(self) -> str: - return utils.marshal_json(self.data, GetOnDeckUnauthorizedData) - - -class GetOnDeckErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetOnDeckErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetOnDeckBadRequestData(BaseModel): - errors: Optional[List[GetOnDeckErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetOnDeckBadRequest(Exception): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetOnDeckBadRequestData - - def __init__(self, data: GetOnDeckBadRequestData): - self.data = data - - def __str__(self) -> str: - return utils.marshal_json(self.data, GetOnDeckBadRequestData) diff --git a/src/plex_api_client/models/operations/__init__.py b/src/plex_api_client/models/operations/__init__.py index bdbc877..abca277 100644 --- a/src/plex_api_client/models/operations/__init__.py +++ b/src/plex_api_client/models/operations/__init__.py @@ -111,6 +111,8 @@ from .get_all_media_library import ( GetAllMediaLibraryFilterTypedDict, GetAllMediaLibraryGenre, GetAllMediaLibraryGenreTypedDict, + GetAllMediaLibraryGuids, + GetAllMediaLibraryGuidsTypedDict, GetAllMediaLibraryHasThumbnail, GetAllMediaLibraryImage, GetAllMediaLibraryImageTypedDict, @@ -153,10 +155,8 @@ from .get_all_media_library import ( GetAllMediaLibraryUltraBlurColorsTypedDict, GetAllMediaLibraryWriter, GetAllMediaLibraryWriterTypedDict, - Guids, - GuidsTypedDict, IncludeAdvanced, - One, + OptimizedForStreaming1, QueryParamIncludeCollections, QueryParamIncludeExternalMedia, QueryParamIncludeGuids, @@ -219,6 +219,9 @@ from .get_library_details import ( IncludeDetails, ) from .get_library_items import ( + EnableCreditsMarkerGeneration, + EpisodeSort, + FlattenSeasons, GetLibraryItemsActiveDirection, GetLibraryItemsCollection, GetLibraryItemsCollectionTypedDict, @@ -227,15 +230,12 @@ from .get_library_items import ( GetLibraryItemsDefaultDirection, GetLibraryItemsDirector, GetLibraryItemsDirectorTypedDict, - GetLibraryItemsEnableCreditsMarkerGeneration, - GetLibraryItemsEpisodeSort, GetLibraryItemsField, GetLibraryItemsFieldType, GetLibraryItemsFieldTypeTypedDict, GetLibraryItemsFieldTypedDict, GetLibraryItemsFilter, GetLibraryItemsFilterTypedDict, - GetLibraryItemsFlattenSeasons, GetLibraryItemsGenre, GetLibraryItemsGenreTypedDict, GetLibraryItemsHasThumbnail, @@ -262,12 +262,8 @@ from .get_library_items import ( GetLibraryItemsMedia, GetLibraryItemsMediaContainer, GetLibraryItemsMediaContainerTypedDict, - GetLibraryItemsMediaGUID, - GetLibraryItemsMediaGUIDTypedDict, GetLibraryItemsMediaTypedDict, GetLibraryItemsMeta, - GetLibraryItemsMetaDataRating, - GetLibraryItemsMetaDataRatingTypedDict, GetLibraryItemsMetaTypedDict, GetLibraryItemsMetadata, GetLibraryItemsMetadataTypedDict, @@ -286,7 +282,6 @@ from .get_library_items import ( GetLibraryItemsResponseTypedDict, GetLibraryItemsRole, GetLibraryItemsRoleTypedDict, - GetLibraryItemsShowOrdering, GetLibraryItemsSort, GetLibraryItemsSortTypedDict, GetLibraryItemsStream, @@ -298,6 +293,11 @@ from .get_library_items import ( GetLibraryItemsWriter, GetLibraryItemsWriterTypedDict, IncludeGuids, + MediaGUID, + MediaGUIDTypedDict, + MetaDataRating, + MetaDataRatingTypedDict, + ShowOrdering, Tag, ) from .get_media_meta_data import ( @@ -324,9 +324,12 @@ from .get_media_meta_data import ( GetMediaMetaDataMetadataTypedDict, GetMediaMetaDataOptimizedForStreaming, GetMediaMetaDataOptimizedForStreaming1, + GetMediaMetaDataOptimizedForStreamingLibrary1, GetMediaMetaDataOptimizedForStreamingTypedDict, GetMediaMetaDataPart, GetMediaMetaDataPartTypedDict, + GetMediaMetaDataProducer, + GetMediaMetaDataProducerTypedDict, GetMediaMetaDataRequest, GetMediaMetaDataRequestTypedDict, GetMediaMetaDataResponse, @@ -335,19 +338,16 @@ from .get_media_meta_data import ( GetMediaMetaDataResponseTypedDict, GetMediaMetaDataRole, GetMediaMetaDataRoleTypedDict, + GetMediaMetaDataSimilar, + GetMediaMetaDataSimilarTypedDict, GetMediaMetaDataStream, GetMediaMetaDataStreamTypedDict, GetMediaMetaDataUltraBlurColors, GetMediaMetaDataUltraBlurColorsTypedDict, GetMediaMetaDataWriter, GetMediaMetaDataWriterTypedDict, - OptimizedForStreaming1, - Producer, - ProducerTypedDict, Ratings, RatingsTypedDict, - Similar, - SimilarTypedDict, ) from .get_media_providers import ( Action, @@ -376,9 +376,6 @@ from .get_recently_added import ( CountryTypedDict, Director, DirectorTypedDict, - EnableCreditsMarkerGeneration, - EpisodeSort, - FlattenSeasons, Genre, GenreTypedDict, GetRecentlyAddedActiveDirection, @@ -399,6 +396,9 @@ from .get_recently_added import ( GetRecentlyAddedMetadataTypedDict, GetRecentlyAddedOperator, GetRecentlyAddedOperatorTypedDict, + GetRecentlyAddedOptimizedForStreaming, + GetRecentlyAddedOptimizedForStreaming1, + GetRecentlyAddedOptimizedForStreamingTypedDict, GetRecentlyAddedRequest, GetRecentlyAddedRequestTypedDict, GetRecentlyAddedResponse, @@ -409,24 +409,29 @@ from .get_recently_added import ( GetRecentlyAddedSortTypedDict, GetRecentlyAddedType, GetRecentlyAddedTypeTypedDict, + Guids, + GuidsTypedDict, HasThumbnail, IncludeMeta, Location, LocationTypedDict, Media, - MediaGUID, - MediaGUIDTypedDict, MediaTypedDict, Meta, - MetaDataRating, - MetaDataRatingTypedDict, MetaTypedDict, + One, OptimizedForStreaming, + OptimizedForStreamingTypedDict, Part, PartTypedDict, + Producer, + ProducerTypedDict, + Rating, + RatingTypedDict, Role, RoleTypedDict, - ShowOrdering, + Similar, + SimilarTypedDict, Stream, StreamTypedDict, Type, @@ -760,24 +765,6 @@ from .getmyplexaccount import ( MyPlex, MyPlexTypedDict, ) -from .getondeck import ( - GetOnDeckGuids, - GetOnDeckGuidsTypedDict, - GetOnDeckMedia, - GetOnDeckMediaContainer, - GetOnDeckMediaContainerTypedDict, - GetOnDeckMediaTypedDict, - GetOnDeckMetadata, - GetOnDeckMetadataTypedDict, - GetOnDeckPart, - GetOnDeckPartTypedDict, - GetOnDeckResponse, - GetOnDeckResponseBody, - GetOnDeckResponseBodyTypedDict, - GetOnDeckResponseTypedDict, - GetOnDeckStream, - GetOnDeckStreamTypedDict, -) from .getpin import ( GET_PIN_SERVERS, GeoData, @@ -1362,6 +1349,8 @@ __all__ = [ "GetAllMediaLibraryFilterTypedDict", "GetAllMediaLibraryGenre", "GetAllMediaLibraryGenreTypedDict", + "GetAllMediaLibraryGuids", + "GetAllMediaLibraryGuidsTypedDict", "GetAllMediaLibraryHasThumbnail", "GetAllMediaLibraryImage", "GetAllMediaLibraryImageTypedDict", @@ -1538,15 +1527,12 @@ __all__ = [ "GetLibraryItemsDefaultDirection", "GetLibraryItemsDirector", "GetLibraryItemsDirectorTypedDict", - "GetLibraryItemsEnableCreditsMarkerGeneration", - "GetLibraryItemsEpisodeSort", "GetLibraryItemsField", "GetLibraryItemsFieldType", "GetLibraryItemsFieldTypeTypedDict", "GetLibraryItemsFieldTypedDict", "GetLibraryItemsFilter", "GetLibraryItemsFilterTypedDict", - "GetLibraryItemsFlattenSeasons", "GetLibraryItemsGenre", "GetLibraryItemsGenreTypedDict", "GetLibraryItemsHasThumbnail", @@ -1573,12 +1559,8 @@ __all__ = [ "GetLibraryItemsMedia", "GetLibraryItemsMediaContainer", "GetLibraryItemsMediaContainerTypedDict", - "GetLibraryItemsMediaGUID", - "GetLibraryItemsMediaGUIDTypedDict", "GetLibraryItemsMediaTypedDict", "GetLibraryItemsMeta", - "GetLibraryItemsMetaDataRating", - "GetLibraryItemsMetaDataRatingTypedDict", "GetLibraryItemsMetaTypedDict", "GetLibraryItemsMetadata", "GetLibraryItemsMetadataTypedDict", @@ -1597,7 +1579,6 @@ __all__ = [ "GetLibraryItemsResponseTypedDict", "GetLibraryItemsRole", "GetLibraryItemsRoleTypedDict", - "GetLibraryItemsShowOrdering", "GetLibraryItemsSort", "GetLibraryItemsSortTypedDict", "GetLibraryItemsStream", @@ -1631,9 +1612,12 @@ __all__ = [ "GetMediaMetaDataMetadataTypedDict", "GetMediaMetaDataOptimizedForStreaming", "GetMediaMetaDataOptimizedForStreaming1", + "GetMediaMetaDataOptimizedForStreamingLibrary1", "GetMediaMetaDataOptimizedForStreamingTypedDict", "GetMediaMetaDataPart", "GetMediaMetaDataPartTypedDict", + "GetMediaMetaDataProducer", + "GetMediaMetaDataProducerTypedDict", "GetMediaMetaDataRequest", "GetMediaMetaDataRequestTypedDict", "GetMediaMetaDataResponse", @@ -1642,6 +1626,8 @@ __all__ = [ "GetMediaMetaDataResponseTypedDict", "GetMediaMetaDataRole", "GetMediaMetaDataRoleTypedDict", + "GetMediaMetaDataSimilar", + "GetMediaMetaDataSimilarTypedDict", "GetMediaMetaDataStream", "GetMediaMetaDataStreamTypedDict", "GetMediaMetaDataUltraBlurColors", @@ -1674,22 +1660,6 @@ __all__ = [ "GetMyPlexAccountResponseBody", "GetMyPlexAccountResponseBodyTypedDict", "GetMyPlexAccountResponseTypedDict", - "GetOnDeckGuids", - "GetOnDeckGuidsTypedDict", - "GetOnDeckMedia", - "GetOnDeckMediaContainer", - "GetOnDeckMediaContainerTypedDict", - "GetOnDeckMediaTypedDict", - "GetOnDeckMetadata", - "GetOnDeckMetadataTypedDict", - "GetOnDeckPart", - "GetOnDeckPartTypedDict", - "GetOnDeckResponse", - "GetOnDeckResponseBody", - "GetOnDeckResponseBodyTypedDict", - "GetOnDeckResponseTypedDict", - "GetOnDeckStream", - "GetOnDeckStreamTypedDict", "GetPinAuthPinContainer", "GetPinAuthPinContainerTypedDict", "GetPinRequest", @@ -1787,6 +1757,9 @@ __all__ = [ "GetRecentlyAddedMetadataTypedDict", "GetRecentlyAddedOperator", "GetRecentlyAddedOperatorTypedDict", + "GetRecentlyAddedOptimizedForStreaming", + "GetRecentlyAddedOptimizedForStreaming1", + "GetRecentlyAddedOptimizedForStreamingTypedDict", "GetRecentlyAddedRequest", "GetRecentlyAddedRequestTypedDict", "GetRecentlyAddedResponse", @@ -2113,6 +2086,7 @@ __all__ = [ "OperatorTypedDict", "OptimizedForStreaming", "OptimizedForStreaming1", + "OptimizedForStreamingTypedDict", "Owned", "POST_USERS_SIGN_IN_DATA_SERVERS", "Part", @@ -2178,6 +2152,8 @@ __all__ = [ "QueryParamOnlyTransient", "QueryParamSmart", "QueryParamType", + "Rating", + "RatingTypedDict", "Ratings", "RatingsTypedDict", "Release", diff --git a/src/plex_api_client/models/operations/get_all_media_library.py b/src/plex_api_client/models/operations/get_all_media_library.py index 9f147e6..07136a4 100644 --- a/src/plex_api_client/models/operations/get_all_media_library.py +++ b/src/plex_api_client/models/operations/get_all_media_library.py @@ -412,19 +412,20 @@ class GetAllMediaLibraryUltraBlurColors(BaseModel): bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] -class One(int, Enum): +class OptimizedForStreaming1(int, Enum): ZERO = 0 ONE = 1 GetAllMediaLibraryOptimizedForStreamingTypedDict = TypeAliasType( - "GetAllMediaLibraryOptimizedForStreamingTypedDict", Union[One, bool] + "GetAllMediaLibraryOptimizedForStreamingTypedDict", + Union[OptimizedForStreaming1, bool], ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" GetAllMediaLibraryOptimizedForStreaming = TypeAliasType( - "GetAllMediaLibraryOptimizedForStreaming", Union[One, bool] + "GetAllMediaLibraryOptimizedForStreaming", Union[OptimizedForStreaming1, bool] ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" @@ -464,12 +465,6 @@ class GetAllMediaLibraryStreamTypedDict(TypedDict): r"""Codec used by the stream.""" index: int r"""Index of the stream.""" - language: str - r"""Language of the stream.""" - language_tag: str - r"""Language tag (e.g., en).""" - language_code: str - r"""ISO language code.""" display_title: str r"""Display title for the stream.""" extended_display_title: str @@ -478,6 +473,12 @@ class GetAllMediaLibraryStreamTypedDict(TypedDict): r"""Indicates if this stream is default.""" bitrate: NotRequired[int] r"""Bitrate of the stream.""" + language: NotRequired[str] + r"""Language of the stream.""" + language_tag: NotRequired[str] + r"""Language tag (e.g., en).""" + language_code: NotRequired[str] + r"""ISO language code.""" header_compression: NotRequired[bool] r"""Indicates whether header compression is enabled.""" dovibl_compat_id: NotRequired[int] @@ -506,6 +507,7 @@ class GetAllMediaLibraryStreamTypedDict(TypedDict): r"""Coded video height.""" coded_width: NotRequired[int] r"""Coded video width.""" + closed_captions: NotRequired[bool] color_primaries: NotRequired[str] r"""Color primaries used.""" color_range: NotRequired[str] @@ -526,6 +528,7 @@ class GetAllMediaLibraryStreamTypedDict(TypedDict): profile: NotRequired[str] r"""Video profile.""" scan_type: NotRequired[str] + embedded_in_video: NotRequired[str] ref_frames: NotRequired[int] r"""Number of reference frames.""" width: NotRequired[int] @@ -562,15 +565,6 @@ class GetAllMediaLibraryStream(BaseModel): index: int r"""Index of the stream.""" - language: str - r"""Language of the stream.""" - - language_tag: Annotated[str, pydantic.Field(alias="languageTag")] - r"""Language tag (e.g., en).""" - - language_code: Annotated[str, pydantic.Field(alias="languageCode")] - r"""ISO language code.""" - display_title: Annotated[str, pydantic.Field(alias="displayTitle")] r"""Display title for the stream.""" @@ -583,6 +577,15 @@ class GetAllMediaLibraryStream(BaseModel): bitrate: Optional[int] = None r"""Bitrate of the stream.""" + language: Optional[str] = None + r"""Language of the stream.""" + + language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None + r"""Language tag (e.g., en).""" + + language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None + r"""ISO language code.""" + header_compression: Annotated[ Optional[bool], pydantic.Field(alias="headerCompression") ] = None @@ -639,6 +642,10 @@ class GetAllMediaLibraryStream(BaseModel): coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None r"""Coded video width.""" + closed_captions: Annotated[ + Optional[bool], pydantic.Field(alias="closedCaptions") + ] = None + color_primaries: Annotated[ Optional[str], pydantic.Field(alias="colorPrimaries") ] = None @@ -674,6 +681,10 @@ class GetAllMediaLibraryStream(BaseModel): scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None + embedded_in_video: Annotated[ + Optional[str], pydantic.Field(alias="embeddedInVideo") + ] = None + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None r"""Number of reference frames.""" @@ -802,10 +813,6 @@ class GetAllMediaLibraryPart(BaseModel): class GetAllMediaLibraryMediaTypedDict(TypedDict): id: int r"""Unique media identifier.""" - has_voice_activity: bool - r"""Indicates whether voice activity is detected.""" - part: List[GetAllMediaLibraryPartTypedDict] - r"""An array of parts for this media item.""" duration: NotRequired[int] r"""Duration of the media in milliseconds.""" bitrate: NotRequired[int] @@ -833,6 +840,8 @@ class GetAllMediaLibraryMediaTypedDict(TypedDict): """ video_profile: NotRequired[str] r"""Video profile (e.g., main 10).""" + has_voice_activity: NotRequired[bool] + r"""Indicates whether voice activity is detected.""" audio_profile: NotRequired[str] r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" optimized_for_streaming: NotRequired[ @@ -840,18 +849,14 @@ class GetAllMediaLibraryMediaTypedDict(TypedDict): ] r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" has64bit_offsets: NotRequired[bool] + part: NotRequired[List[GetAllMediaLibraryPartTypedDict]] + r"""An array of parts for this media item.""" class GetAllMediaLibraryMedia(BaseModel): id: int r"""Unique media identifier.""" - has_voice_activity: Annotated[bool, pydantic.Field(alias="hasVoiceActivity")] - r"""Indicates whether voice activity is detected.""" - - part: Annotated[List[GetAllMediaLibraryPart], pydantic.Field(alias="Part")] - r"""An array of parts for this media item.""" - duration: Optional[int] = None r"""Duration of the media in milliseconds.""" @@ -900,6 +905,11 @@ class GetAllMediaLibraryMedia(BaseModel): video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None r"""Video profile (e.g., main 10).""" + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + r"""Indicates whether voice activity is detected.""" + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" @@ -913,15 +923,24 @@ class GetAllMediaLibraryMedia(BaseModel): Optional[bool], pydantic.Field(alias="has64bitOffsets") ] = None + part: Annotated[ + Optional[List[GetAllMediaLibraryPart]], pydantic.Field(alias="Part") + ] = None + r"""An array of parts for this media item.""" + class GetAllMediaLibraryGenreTypedDict(TypedDict): tag: str - r"""The country of origin of this media item""" + r"""The genre name of this media-item + + """ class GetAllMediaLibraryGenre(BaseModel): tag: str - r"""The country of origin of this media item""" + r"""The genre name of this media-item + + """ class GetAllMediaLibraryCountryTypedDict(TypedDict): @@ -956,22 +975,22 @@ class GetAllMediaLibraryWriter(BaseModel): class GetAllMediaLibraryRoleTypedDict(TypedDict): tag: str - r"""The name of the actor for this role""" + r"""The display tag for the actor (typically the actor's name).""" class GetAllMediaLibraryRole(BaseModel): tag: str - r"""The name of the actor for this role""" + r"""The display tag for the actor (typically the actor's name).""" -class GuidsTypedDict(TypedDict): +class GetAllMediaLibraryGuidsTypedDict(TypedDict): id: NotRequired[str] r"""The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 """ -class Guids(BaseModel): +class GetAllMediaLibraryGuids(BaseModel): id: Optional[str] = None r"""The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 @@ -1010,8 +1029,6 @@ class GetAllMediaLibraryMetadataTypedDict(TypedDict): r"""The critic rating for the media item.""" audience_rating: float r"""The audience rating for the media item.""" - year: int - r"""The release year of the media item.""" tagline: str r"""A brief tagline for the media item.""" thumb: str @@ -1035,6 +1052,8 @@ class GetAllMediaLibraryMetadataTypedDict(TypedDict): r"""The studio that produced the media item.""" content_rating: NotRequired[str] r"""The content rating for the media item.""" + year: NotRequired[int] + r"""The release year of the media item.""" leaf_count: NotRequired[int] r"""The number of leaf items (end nodes) under this media item.""" viewed_leaf_count: NotRequired[int] @@ -1105,7 +1124,7 @@ class GetAllMediaLibraryMetadataTypedDict(TypedDict): director: NotRequired[List[GetAllMediaLibraryDirectorTypedDict]] writer: NotRequired[List[GetAllMediaLibraryWriterTypedDict]] role: NotRequired[List[GetAllMediaLibraryRoleTypedDict]] - guids: NotRequired[List[GuidsTypedDict]] + guids: NotRequired[List[GetAllMediaLibraryGuidsTypedDict]] collection: NotRequired[List[GetAllMediaLibraryCollectionTypedDict]] @@ -1141,9 +1160,6 @@ class GetAllMediaLibraryMetadata(BaseModel): audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] r"""The audience rating for the media item.""" - year: int - r"""The release year of the media item.""" - tagline: str r"""A brief tagline for the media item.""" @@ -1183,6 +1199,9 @@ class GetAllMediaLibraryMetadata(BaseModel): ) r"""The content rating for the media item.""" + year: Optional[int] = None + r"""The release year of the media item.""" + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None r"""The number of leaf items (end nodes) under this media item.""" @@ -1343,7 +1362,9 @@ class GetAllMediaLibraryMetadata(BaseModel): Optional[List[GetAllMediaLibraryRole]], pydantic.Field(alias="Role") ] = None - guids: Annotated[Optional[List[Guids]], pydantic.Field(alias="Guid")] = None + guids: Annotated[ + Optional[List[GetAllMediaLibraryGuids]], pydantic.Field(alias="Guid") + ] = None collection: Annotated[ Optional[List[GetAllMediaLibraryCollection]], pydantic.Field(alias="Collection") diff --git a/src/plex_api_client/models/operations/get_library_items.py b/src/plex_api_client/models/operations/get_library_items.py index e6a2d26..f611f49 100644 --- a/src/plex_api_client/models/operations/get_library_items.py +++ b/src/plex_api_client/models/operations/get_library_items.py @@ -345,7 +345,7 @@ class GetLibraryItemsLibraryType(str, Enum): ALBUM = "album" -class GetLibraryItemsFlattenSeasons(str, Enum): +class FlattenSeasons(str, Enum): r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" LIBRARY_DEFAULT = "-1" @@ -353,7 +353,7 @@ class GetLibraryItemsFlattenSeasons(str, Enum): SHOW = "1" -class GetLibraryItemsEpisodeSort(str, Enum): +class EpisodeSort(str, Enum): r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" LIBRARY_DEFAULT = "-1" @@ -361,14 +361,14 @@ class GetLibraryItemsEpisodeSort(str, Enum): NEWEST_FIRST = "1" -class GetLibraryItemsEnableCreditsMarkerGeneration(str, Enum): +class EnableCreditsMarkerGeneration(str, Enum): r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" LIBRARY_DEFAULT = "-1" DISABLED = "0" -class GetLibraryItemsShowOrdering(str, Enum): +class ShowOrdering(str, Enum): r"""Setting that indicates the episode ordering for the show. None = Library default, tmdbAiring = The Movie Database (Aired), @@ -815,7 +815,7 @@ class GetLibraryItemsLocation(BaseModel): path: Optional[str] = None -class GetLibraryItemsMediaGUIDTypedDict(TypedDict): +class MediaGUIDTypedDict(TypedDict): id: str r"""Can be one of the following formats: imdb://tt13015952, tmdb://2434012, tvdb://7945991 @@ -823,7 +823,7 @@ class GetLibraryItemsMediaGUIDTypedDict(TypedDict): """ -class GetLibraryItemsMediaGUID(BaseModel): +class MediaGUID(BaseModel): id: str r"""Can be one of the following formats: imdb://tt13015952, tmdb://2434012, tvdb://7945991 @@ -848,7 +848,7 @@ class GetLibraryItemsUltraBlurColors(BaseModel): bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] -class GetLibraryItemsMetaDataRatingTypedDict(TypedDict): +class MetaDataRatingTypedDict(TypedDict): image: str r"""A URI or path to the rating image.""" value: float @@ -857,7 +857,7 @@ class GetLibraryItemsMetaDataRatingTypedDict(TypedDict): r"""The type of rating (e.g., audience, critic).""" -class GetLibraryItemsMetaDataRating(BaseModel): +class MetaDataRating(BaseModel): image: str r"""A URI or path to the rating image.""" @@ -917,15 +917,13 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): year: NotRequired[int] season_count: NotRequired[int] tagline: NotRequired[str] - flatten_seasons: NotRequired[GetLibraryItemsFlattenSeasons] + flatten_seasons: NotRequired[FlattenSeasons] r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - episode_sort: NotRequired[GetLibraryItemsEpisodeSort] + episode_sort: NotRequired[EpisodeSort] r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" - enable_credits_marker_generation: NotRequired[ - GetLibraryItemsEnableCreditsMarkerGeneration - ] + enable_credits_marker_generation: NotRequired[EnableCreditsMarkerGeneration] r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" - show_ordering: NotRequired[GetLibraryItemsShowOrdering] + show_ordering: NotRequired[ShowOrdering] r"""Setting that indicates the episode ordering for the show. None = Library default, tmdbAiring = The Movie Database (Aired), @@ -965,12 +963,12 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): collection: NotRequired[List[GetLibraryItemsCollectionTypedDict]] role: NotRequired[List[GetLibraryItemsRoleTypedDict]] location: NotRequired[List[GetLibraryItemsLocationTypedDict]] - media_guid: NotRequired[List[GetLibraryItemsMediaGUIDTypedDict]] + media_guid: NotRequired[List[MediaGUIDTypedDict]] r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. """ ultra_blur_colors: NotRequired[GetLibraryItemsUltraBlurColorsTypedDict] - meta_data_rating: NotRequired[List[GetLibraryItemsMetaDataRatingTypedDict]] + meta_data_rating: NotRequired[List[MetaDataRatingTypedDict]] image: NotRequired[List[GetLibraryItemsImageTypedDict]] title_sort: NotRequired[str] view_count: NotRequired[int] @@ -1059,23 +1057,23 @@ class GetLibraryItemsMetadata(BaseModel): tagline: Optional[str] = None flatten_seasons: Annotated[ - Optional[GetLibraryItemsFlattenSeasons], pydantic.Field(alias="flattenSeasons") + Optional[FlattenSeasons], pydantic.Field(alias="flattenSeasons") ] = None r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" episode_sort: Annotated[ - Optional[GetLibraryItemsEpisodeSort], pydantic.Field(alias="episodeSort") + Optional[EpisodeSort], pydantic.Field(alias="episodeSort") ] = None r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" enable_credits_marker_generation: Annotated[ - Optional[GetLibraryItemsEnableCreditsMarkerGeneration], + Optional[EnableCreditsMarkerGeneration], pydantic.Field(alias="enableCreditsMarkerGeneration"), ] = None r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" show_ordering: Annotated[ - Optional[GetLibraryItemsShowOrdering], pydantic.Field(alias="showOrdering") + Optional[ShowOrdering], pydantic.Field(alias="showOrdering") ] = None r"""Setting that indicates the episode ordering for the show. None = Library default, @@ -1184,9 +1182,9 @@ class GetLibraryItemsMetadata(BaseModel): Optional[List[GetLibraryItemsLocation]], pydantic.Field(alias="Location") ] = None - media_guid: Annotated[ - Optional[List[GetLibraryItemsMediaGUID]], pydantic.Field(alias="Guid") - ] = None + media_guid: Annotated[Optional[List[MediaGUID]], pydantic.Field(alias="Guid")] = ( + None + ) r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. """ @@ -1197,7 +1195,7 @@ class GetLibraryItemsMetadata(BaseModel): ] = None meta_data_rating: Annotated[ - Optional[List[GetLibraryItemsMetaDataRating]], pydantic.Field(alias="Rating") + Optional[List[MetaDataRating]], pydantic.Field(alias="Rating") ] = None image: Annotated[ diff --git a/src/plex_api_client/models/operations/get_media_meta_data.py b/src/plex_api_client/models/operations/get_media_meta_data.py index b5ae5ae..a8dc6bf 100644 --- a/src/plex_api_client/models/operations/get_media_meta_data.py +++ b/src/plex_api_client/models/operations/get_media_meta_data.py @@ -142,39 +142,40 @@ class GetMediaMetaDataRequest(BaseModel): r"""Trigger asynchronous refresh of the local media agent.""" -class OptimizedForStreaming1(int, Enum): +class GetMediaMetaDataOptimizedForStreaming1(int, Enum): ZERO = 0 ONE = 1 GetMediaMetaDataOptimizedForStreamingTypedDict = TypeAliasType( "GetMediaMetaDataOptimizedForStreamingTypedDict", - Union[OptimizedForStreaming1, bool], + Union[GetMediaMetaDataOptimizedForStreaming1, bool], ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" GetMediaMetaDataOptimizedForStreaming = TypeAliasType( - "GetMediaMetaDataOptimizedForStreaming", Union[OptimizedForStreaming1, bool] + "GetMediaMetaDataOptimizedForStreaming", + Union[GetMediaMetaDataOptimizedForStreaming1, bool], ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" -class GetMediaMetaDataOptimizedForStreaming1(int, Enum): +class GetMediaMetaDataOptimizedForStreamingLibrary1(int, Enum): ZERO = 0 ONE = 1 GetMediaMetaDataLibraryOptimizedForStreamingTypedDict = TypeAliasType( "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict", - Union[GetMediaMetaDataOptimizedForStreaming1, bool], + Union[GetMediaMetaDataOptimizedForStreamingLibrary1, bool], ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" GetMediaMetaDataLibraryOptimizedForStreaming = TypeAliasType( "GetMediaMetaDataLibraryOptimizedForStreaming", - Union[GetMediaMetaDataOptimizedForStreaming1, bool], + Union[GetMediaMetaDataOptimizedForStreamingLibrary1, bool], ) r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" @@ -195,12 +196,6 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): r"""Codec used by the stream.""" index: int r"""Index of the stream.""" - language: str - r"""Language of the stream.""" - language_tag: str - r"""Language tag (e.g., en).""" - language_code: str - r"""ISO language code.""" display_title: str r"""Display title for the stream.""" extended_display_title: str @@ -209,6 +204,12 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): r"""Indicates if this stream is default.""" bitrate: NotRequired[int] r"""Bitrate of the stream.""" + language: NotRequired[str] + r"""Language of the stream.""" + language_tag: NotRequired[str] + r"""Language tag (e.g., en).""" + language_code: NotRequired[str] + r"""ISO language code.""" header_compression: NotRequired[bool] r"""Indicates whether header compression is enabled.""" dovibl_compat_id: NotRequired[int] @@ -237,6 +238,7 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): r"""Coded video height.""" coded_width: NotRequired[int] r"""Coded video width.""" + closed_captions: NotRequired[bool] color_primaries: NotRequired[str] r"""Color primaries used.""" color_range: NotRequired[str] @@ -257,6 +259,7 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): profile: NotRequired[str] r"""Video profile.""" scan_type: NotRequired[str] + embedded_in_video: NotRequired[str] ref_frames: NotRequired[int] r"""Number of reference frames.""" width: NotRequired[int] @@ -293,15 +296,6 @@ class GetMediaMetaDataStream(BaseModel): index: int r"""Index of the stream.""" - language: str - r"""Language of the stream.""" - - language_tag: Annotated[str, pydantic.Field(alias="languageTag")] - r"""Language tag (e.g., en).""" - - language_code: Annotated[str, pydantic.Field(alias="languageCode")] - r"""ISO language code.""" - display_title: Annotated[str, pydantic.Field(alias="displayTitle")] r"""Display title for the stream.""" @@ -314,6 +308,15 @@ class GetMediaMetaDataStream(BaseModel): bitrate: Optional[int] = None r"""Bitrate of the stream.""" + language: Optional[str] = None + r"""Language of the stream.""" + + language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None + r"""Language tag (e.g., en).""" + + language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None + r"""ISO language code.""" + header_compression: Annotated[ Optional[bool], pydantic.Field(alias="headerCompression") ] = None @@ -370,6 +373,10 @@ class GetMediaMetaDataStream(BaseModel): coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None r"""Coded video width.""" + closed_captions: Annotated[ + Optional[bool], pydantic.Field(alias="closedCaptions") + ] = None + color_primaries: Annotated[ Optional[str], pydantic.Field(alias="colorPrimaries") ] = None @@ -405,6 +412,10 @@ class GetMediaMetaDataStream(BaseModel): scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None + embedded_in_video: Annotated[ + Optional[str], pydantic.Field(alias="embeddedInVideo") + ] = None + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None r"""Number of reference frames.""" @@ -533,10 +544,6 @@ class GetMediaMetaDataPart(BaseModel): class GetMediaMetaDataMediaTypedDict(TypedDict): id: int r"""Unique media identifier.""" - has_voice_activity: bool - r"""Indicates whether voice activity is detected.""" - part: List[GetMediaMetaDataPartTypedDict] - r"""An array of parts for this media item.""" duration: NotRequired[int] r"""Duration of the media in milliseconds.""" bitrate: NotRequired[int] @@ -564,23 +571,21 @@ class GetMediaMetaDataMediaTypedDict(TypedDict): """ video_profile: NotRequired[str] r"""Video profile (e.g., main 10).""" + has_voice_activity: NotRequired[bool] + r"""Indicates whether voice activity is detected.""" audio_profile: NotRequired[str] r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" optimized_for_streaming: NotRequired[GetMediaMetaDataOptimizedForStreamingTypedDict] r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" has64bit_offsets: NotRequired[bool] + part: NotRequired[List[GetMediaMetaDataPartTypedDict]] + r"""An array of parts for this media item.""" class GetMediaMetaDataMedia(BaseModel): id: int r"""Unique media identifier.""" - has_voice_activity: Annotated[bool, pydantic.Field(alias="hasVoiceActivity")] - r"""Indicates whether voice activity is detected.""" - - part: Annotated[List[GetMediaMetaDataPart], pydantic.Field(alias="Part")] - r"""An array of parts for this media item.""" - duration: Optional[int] = None r"""Duration of the media in milliseconds.""" @@ -629,6 +634,11 @@ class GetMediaMetaDataMedia(BaseModel): video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None r"""Video profile (e.g., main 10).""" + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + r"""Indicates whether voice activity is detected.""" + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" @@ -642,6 +652,11 @@ class GetMediaMetaDataMedia(BaseModel): Optional[bool], pydantic.Field(alias="has64bitOffsets") ] = None + part: Annotated[ + Optional[List[GetMediaMetaDataPart]], pydantic.Field(alias="Part") + ] = None + r"""An array of parts for this media item.""" + class GetMediaMetaDataImageTypedDict(TypedDict): alt: str @@ -863,7 +878,7 @@ class GetMediaMetaDataWriter(BaseModel): r"""URL for the role thumbnail image.""" -class ProducerTypedDict(TypedDict): +class GetMediaMetaDataProducerTypedDict(TypedDict): id: int r"""The unique role identifier.""" filter_: str @@ -878,7 +893,7 @@ class ProducerTypedDict(TypedDict): r"""URL for the role thumbnail image.""" -class Producer(BaseModel): +class GetMediaMetaDataProducer(BaseModel): id: int r"""The unique role identifier.""" @@ -898,7 +913,7 @@ class Producer(BaseModel): r"""URL for the role thumbnail image.""" -class SimilarTypedDict(TypedDict): +class GetMediaMetaDataSimilarTypedDict(TypedDict): id: int r"""The unique similar item identifier.""" filter_: str @@ -907,7 +922,7 @@ class SimilarTypedDict(TypedDict): r"""The tag or title of the similar content.""" -class Similar(BaseModel): +class GetMediaMetaDataSimilar(BaseModel): id: int r"""The unique similar item identifier.""" @@ -1039,9 +1054,9 @@ class GetMediaMetaDataMetadataTypedDict(TypedDict): r"""An array of Director roles.""" writer: NotRequired[List[GetMediaMetaDataWriterTypedDict]] r"""An array of Writer roles.""" - producer: NotRequired[List[ProducerTypedDict]] + producer: NotRequired[List[GetMediaMetaDataProducerTypedDict]] r"""An array of Writer roles.""" - similar: NotRequired[List[SimilarTypedDict]] + similar: NotRequired[List[GetMediaMetaDataSimilarTypedDict]] r"""An array of similar content objects.""" location: NotRequired[List[GetMediaMetaDataLocationTypedDict]] r"""An array of location objects.""" @@ -1266,12 +1281,14 @@ class GetMediaMetaDataMetadata(BaseModel): ] = None r"""An array of Writer roles.""" - producer: Annotated[Optional[List[Producer]], pydantic.Field(alias="Producer")] = ( - None - ) + producer: Annotated[ + Optional[List[GetMediaMetaDataProducer]], pydantic.Field(alias="Producer") + ] = None r"""An array of Writer roles.""" - similar: Annotated[Optional[List[Similar]], pydantic.Field(alias="Similar")] = None + similar: Annotated[ + Optional[List[GetMediaMetaDataSimilar]], pydantic.Field(alias="Similar") + ] = None r"""An array of similar content objects.""" location: Annotated[ diff --git a/src/plex_api_client/models/operations/get_recently_added.py b/src/plex_api_client/models/operations/get_recently_added.py index 7b655de..8cf503a 100644 --- a/src/plex_api_client/models/operations/get_recently_added.py +++ b/src/plex_api_client/models/operations/get_recently_added.py @@ -7,8 +7,8 @@ import httpx from plex_api_client.types import BaseModel from plex_api_client.utils import FieldMetadata, QueryParamMetadata import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing import List, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict class Type(int, Enum): @@ -329,526 +329,6 @@ class GetRecentlyAddedHubsType(str, Enum): ALBUM = "album" -class FlattenSeasons(str, Enum): - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - - LIBRARY_DEFAULT = "-1" - HIDE = "0" - SHOW = "1" - - -class EpisodeSort(str, Enum): - r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" - - LIBRARY_DEFAULT = "-1" - OLDEST_FIRST = "0" - NEWEST_FIRST = "1" - - -class EnableCreditsMarkerGeneration(str, Enum): - r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" - - LIBRARY_DEFAULT = "-1" - DISABLED = "0" - - -class ShowOrdering(str, Enum): - r"""Setting that indicates the episode ordering for the show. - None = Library default, - tmdbAiring = The Movie Database (Aired), - aired = TheTVDB (Aired), - dvd = TheTVDB (DVD), - absolute = TheTVDB (Absolute)). - - """ - - NONE = "None" - TMDB_AIRING = "tmdbAiring" - TVDB_AIRED = "aired" - TVDB_DVD = "dvd" - TVDB_ABSOLUTE = "absolute" - - -class OptimizedForStreaming(int, Enum): - DISABLE = 0 - ENABLE = 1 - - -class HasThumbnail(str, Enum): - FALSE = "0" - TRUE = "1" - - -class StreamTypedDict(TypedDict): - id: int - stream_type: int - r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" - codec: str - r"""Codec used by the stream""" - index: int - r"""The index of the stream""" - default: NotRequired[bool] - r"""Indicates if this is the default stream""" - selected: NotRequired[bool] - r"""Indicates if the stream is selected""" - bitrate: NotRequired[int] - r"""The bitrate of the stream in kbps""" - color_primaries: NotRequired[str] - r"""The color primaries of the video stream""" - color_range: NotRequired[str] - r"""The color range of the video stream""" - color_space: NotRequired[str] - r"""The color space of the video stream""" - color_trc: NotRequired[str] - r"""The transfer characteristics (TRC) of the video stream""" - bit_depth: NotRequired[int] - r"""The bit depth of the video stream""" - chroma_location: NotRequired[str] - r"""The chroma location of the video stream""" - stream_identifier: NotRequired[str] - r"""The identifier of the video stream""" - chroma_subsampling: NotRequired[str] - r"""The chroma subsampling format""" - coded_height: NotRequired[int] - r"""The coded height of the video stream""" - coded_width: NotRequired[int] - r"""The coded width of the video stream""" - frame_rate: NotRequired[float] - r"""The frame rate of the video stream""" - has_scaling_matrix: NotRequired[bool] - r"""Indicates if the stream has a scaling matrix""" - hearing_impaired: NotRequired[bool] - closed_captions: NotRequired[bool] - embedded_in_video: NotRequired[str] - height: NotRequired[int] - r"""The height of the video stream""" - level: NotRequired[int] - r"""The level of the video codec""" - profile: NotRequired[str] - r"""The profile of the video codec""" - ref_frames: NotRequired[int] - r"""Number of reference frames""" - scan_type: NotRequired[str] - r"""The scan type (progressive or interlaced)""" - width: NotRequired[int] - r"""The width of the video stream""" - display_title: NotRequired[str] - r"""Display title of the stream""" - extended_display_title: NotRequired[str] - r"""Extended display title of the stream""" - channels: NotRequired[int] - r"""Number of audio channels (for audio streams)""" - language: NotRequired[str] - r"""The language of the stream (for audio/subtitle streams)""" - language_tag: NotRequired[str] - r"""Language tag of the stream""" - language_code: NotRequired[str] - r"""Language code of the stream""" - audio_channel_layout: NotRequired[str] - r"""The audio channel layout""" - sampling_rate: NotRequired[int] - r"""Sampling rate of the audio stream in Hz""" - title: NotRequired[str] - r"""Title of the subtitle track (for subtitle streams)""" - can_auto_sync: NotRequired[bool] - r"""Indicates if the subtitle stream can auto-sync""" - - -class Stream(BaseModel): - id: int - - stream_type: Annotated[int, pydantic.Field(alias="streamType")] - r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" - - codec: str - r"""Codec used by the stream""" - - index: int - r"""The index of the stream""" - - default: Optional[bool] = None - r"""Indicates if this is the default stream""" - - selected: Optional[bool] = None - r"""Indicates if the stream is selected""" - - bitrate: Optional[int] = None - r"""The bitrate of the stream in kbps""" - - color_primaries: Annotated[ - Optional[str], pydantic.Field(alias="colorPrimaries") - ] = None - r"""The color primaries of the video stream""" - - color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None - r"""The color range of the video stream""" - - color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None - r"""The color space of the video stream""" - - color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None - r"""The transfer characteristics (TRC) of the video stream""" - - bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None - r"""The bit depth of the video stream""" - - chroma_location: Annotated[ - Optional[str], pydantic.Field(alias="chromaLocation") - ] = None - r"""The chroma location of the video stream""" - - stream_identifier: Annotated[ - Optional[str], pydantic.Field(alias="streamIdentifier") - ] = None - r"""The identifier of the video stream""" - - chroma_subsampling: Annotated[ - Optional[str], pydantic.Field(alias="chromaSubsampling") - ] = None - r"""The chroma subsampling format""" - - coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None - r"""The coded height of the video stream""" - - coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None - r"""The coded width of the video stream""" - - frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None - r"""The frame rate of the video stream""" - - has_scaling_matrix: Annotated[ - Optional[bool], pydantic.Field(alias="hasScalingMatrix") - ] = None - r"""Indicates if the stream has a scaling matrix""" - - hearing_impaired: Annotated[ - Optional[bool], pydantic.Field(alias="hearingImpaired") - ] = None - - closed_captions: Annotated[ - Optional[bool], pydantic.Field(alias="closedCaptions") - ] = None - - embedded_in_video: Annotated[ - Optional[str], pydantic.Field(alias="embeddedInVideo") - ] = None - - height: Optional[int] = None - r"""The height of the video stream""" - - level: Optional[int] = None - r"""The level of the video codec""" - - profile: Optional[str] = None - r"""The profile of the video codec""" - - ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None - r"""Number of reference frames""" - - scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None - r"""The scan type (progressive or interlaced)""" - - width: Optional[int] = None - r"""The width of the video stream""" - - display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None - r"""Display title of the stream""" - - extended_display_title: Annotated[ - Optional[str], pydantic.Field(alias="extendedDisplayTitle") - ] = None - r"""Extended display title of the stream""" - - channels: Optional[int] = None - r"""Number of audio channels (for audio streams)""" - - language: Optional[str] = None - r"""The language of the stream (for audio/subtitle streams)""" - - language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None - r"""Language tag of the stream""" - - language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None - r"""Language code of the stream""" - - audio_channel_layout: Annotated[ - Optional[str], pydantic.Field(alias="audioChannelLayout") - ] = None - r"""The audio channel layout""" - - sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None - r"""Sampling rate of the audio stream in Hz""" - - title: Optional[str] = None - r"""Title of the subtitle track (for subtitle streams)""" - - can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None - r"""Indicates if the subtitle stream can auto-sync""" - - -class PartTypedDict(TypedDict): - id: int - key: str - file: str - size: int - container: str - r"""The container format of the media file. - - """ - duration: NotRequired[int] - audio_profile: NotRequired[str] - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[bool] - video_profile: NotRequired[str] - indexes: NotRequired[str] - has_thumbnail: NotRequired[HasThumbnail] - stream: NotRequired[List[StreamTypedDict]] - - -class Part(BaseModel): - id: int - - key: str - - file: str - - size: int - - container: str - r"""The container format of the media file. - - """ - - duration: Optional[int] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[bool], pydantic.Field(alias="optimizedForStreaming") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - indexes: Optional[str] = None - - has_thumbnail: Annotated[ - Optional[HasThumbnail], pydantic.Field(alias="hasThumbnail") - ] = HasThumbnail.FALSE - - stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None - - -class MediaTypedDict(TypedDict): - id: int - container: str - part: List[PartTypedDict] - duration: NotRequired[int] - bitrate: NotRequired[int] - width: NotRequired[int] - height: NotRequired[int] - aspect_ratio: NotRequired[float] - audio_profile: NotRequired[str] - audio_channels: NotRequired[int] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[str] - video_frame_rate: NotRequired[str] - video_profile: NotRequired[str] - has_voice_activity: NotRequired[bool] - optimized_for_streaming: NotRequired[OptimizedForStreaming] - has64bit_offsets: NotRequired[bool] - - -class Media(BaseModel): - id: int - - container: str - - part: Annotated[List[Part], pydantic.Field(alias="Part")] - - duration: Optional[int] = None - - bitrate: Optional[int] = None - - width: Optional[int] = None - - height: Optional[int] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - - optimized_for_streaming: Annotated[ - Optional[OptimizedForStreaming], pydantic.Field(alias="optimizedForStreaming") - ] = OptimizedForStreaming.DISABLE - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - -class GenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class Genre(BaseModel): - tag: Optional[str] = None - - -class CountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class Country(BaseModel): - tag: Optional[str] = None - - -class DirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class Director(BaseModel): - tag: Optional[str] = None - - -class WriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class Writer(BaseModel): - tag: Optional[str] = None - - -class CollectionTypedDict(TypedDict): - tag: NotRequired[str] - - -class Collection(BaseModel): - tag: Optional[str] = None - - -class RoleTypedDict(TypedDict): - id: NotRequired[int] - r"""The ID of the tag or actor.""" - filter_: NotRequired[str] - r"""The filter used to find the actor or tag.""" - thumb: NotRequired[str] - r"""The thumbnail of the actor""" - tag: NotRequired[str] - r"""The name of the tag or actor.""" - tag_key: NotRequired[str] - r"""Unique identifier for the tag.""" - role: NotRequired[str] - r"""The role of the actor or tag in the media.""" - - -class Role(BaseModel): - id: Optional[int] = None - r"""The ID of the tag or actor.""" - - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - r"""The filter used to find the actor or tag.""" - - thumb: Optional[str] = None - r"""The thumbnail of the actor""" - - tag: Optional[str] = None - r"""The name of the tag or actor.""" - - tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None - r"""Unique identifier for the tag.""" - - role: Optional[str] = None - r"""The role of the actor or tag in the media.""" - - -class LocationTypedDict(TypedDict): - path: NotRequired[str] - - -class Location(BaseModel): - path: Optional[str] = None - - -class MediaGUIDTypedDict(TypedDict): - id: str - r"""Can be one of the following formats: - imdb://tt13015952, tmdb://2434012, tvdb://7945991 - - """ - - -class MediaGUID(BaseModel): - id: str - r"""Can be one of the following formats: - imdb://tt13015952, tmdb://2434012, tvdb://7945991 - - """ - - -class UltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class UltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class MetaDataRatingTypedDict(TypedDict): - image: str - r"""A URI or path to the rating image.""" - value: float - r"""The value of the rating.""" - type: str - r"""The type of rating (e.g., audience, critic).""" - - -class MetaDataRating(BaseModel): - image: str - r"""A URI or path to the rating image.""" - - value: float - r"""The value of the rating.""" - - type: str - r"""The type of rating (e.g., audience, critic).""" - - class GetRecentlyAddedHubsResponseType(str, Enum): COVER_POSTER = "coverPoster" BACKGROUND = "background" @@ -870,268 +350,1114 @@ class GetRecentlyAddedImage(BaseModel): url: str -class GetRecentlyAddedMetadataTypedDict(TypedDict): - rating_key: str - r"""The rating key (Media ID) of this media item. - Note: This is always an integer, but is represented as a string in the API. +class UltraBlurColorsTypedDict(TypedDict): + top_left: str + top_right: str + bottom_right: str + bottom_left: str - """ + +class UltraBlurColors(BaseModel): + top_left: Annotated[str, pydantic.Field(alias="topLeft")] + + top_right: Annotated[str, pydantic.Field(alias="topRight")] + + bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] + + bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] + + +class One(int, Enum): + ZERO = 0 + ONE = 1 + + +OptimizedForStreamingTypedDict = TypeAliasType( + "OptimizedForStreamingTypedDict", Union[One, bool] +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +OptimizedForStreaming = TypeAliasType("OptimizedForStreaming", Union[One, bool]) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class GetRecentlyAddedOptimizedForStreaming1(int, Enum): + ZERO = 0 + ONE = 1 + + +GetRecentlyAddedOptimizedForStreamingTypedDict = TypeAliasType( + "GetRecentlyAddedOptimizedForStreamingTypedDict", + Union[GetRecentlyAddedOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +GetRecentlyAddedOptimizedForStreaming = TypeAliasType( + "GetRecentlyAddedOptimizedForStreaming", + Union[GetRecentlyAddedOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class HasThumbnail(str, Enum): + r"""Indicates if the part has a thumbnail.""" + + FALSE = "0" + TRUE = "1" + + +class StreamTypedDict(TypedDict): + id: int + r"""Unique stream identifier.""" + stream_type: int + r"""Stream type (1=video, 2=audio, 3=subtitle).""" + codec: str + r"""Codec used by the stream.""" + index: int + r"""Index of the stream.""" + display_title: str + r"""Display title for the stream.""" + extended_display_title: str + r"""Extended display title for the stream.""" + default: NotRequired[bool] + r"""Indicates if this stream is default.""" + bitrate: NotRequired[int] + r"""Bitrate of the stream.""" + language: NotRequired[str] + r"""Language of the stream.""" + language_tag: NotRequired[str] + r"""Language tag (e.g., en).""" + language_code: NotRequired[str] + r"""ISO language code.""" + header_compression: NotRequired[bool] + r"""Indicates whether header compression is enabled.""" + dovibl_compat_id: NotRequired[int] + r"""Dolby Vision BL compatibility ID.""" + dovibl_present: NotRequired[bool] + r"""Indicates if Dolby Vision BL is present.""" + doviel_present: NotRequired[bool] + r"""Indicates if Dolby Vision EL is present.""" + dovi_level: NotRequired[int] + r"""Dolby Vision level.""" + dovi_present: NotRequired[bool] + r"""Indicates if Dolby Vision is present.""" + dovi_profile: NotRequired[int] + r"""Dolby Vision profile.""" + dovirpu_present: NotRequired[bool] + r"""Indicates if Dolby Vision RPU is present.""" + dovi_version: NotRequired[str] + r"""Dolby Vision version.""" + bit_depth: NotRequired[int] + r"""Bit depth of the video stream.""" + chroma_location: NotRequired[str] + r"""Chroma sample location.""" + chroma_subsampling: NotRequired[str] + r"""Chroma subsampling format.""" + coded_height: NotRequired[int] + r"""Coded video height.""" + coded_width: NotRequired[int] + r"""Coded video width.""" + closed_captions: NotRequired[bool] + color_primaries: NotRequired[str] + r"""Color primaries used.""" + color_range: NotRequired[str] + r"""Color range (e.g., tv).""" + color_space: NotRequired[str] + r"""Color space.""" + color_trc: NotRequired[str] + r"""Color transfer characteristics.""" + frame_rate: NotRequired[float] + r"""Frame rate of the stream.""" + height: NotRequired[int] + r"""Height of the video stream.""" + level: NotRequired[int] + r"""Video level.""" + original: NotRequired[bool] + r"""Indicates if this is the original stream.""" + has_scaling_matrix: NotRequired[bool] + profile: NotRequired[str] + r"""Video profile.""" + scan_type: NotRequired[str] + embedded_in_video: NotRequired[str] + ref_frames: NotRequired[int] + r"""Number of reference frames.""" + width: NotRequired[int] + r"""Width of the video stream.""" + selected: NotRequired[bool] + r"""Indicates if this stream is selected (applicable for audio streams).""" + forced: NotRequired[bool] + channels: NotRequired[int] + r"""Number of audio channels (for audio streams).""" + audio_channel_layout: NotRequired[str] + r"""Audio channel layout.""" + sampling_rate: NotRequired[int] + r"""Sampling rate for the audio stream.""" + can_auto_sync: NotRequired[bool] + r"""Indicates if the stream can auto-sync.""" + hearing_impaired: NotRequired[bool] + r"""Indicates if the stream is for the hearing impaired.""" + dub: NotRequired[bool] + r"""Indicates if the stream is a dub.""" + title: NotRequired[str] + r"""Optional title for the stream (e.g., language variant).""" + + +class Stream(BaseModel): + id: int + r"""Unique stream identifier.""" + + stream_type: Annotated[int, pydantic.Field(alias="streamType")] + r"""Stream type (1=video, 2=audio, 3=subtitle).""" + + codec: str + r"""Codec used by the stream.""" + + index: int + r"""Index of the stream.""" + + display_title: Annotated[str, pydantic.Field(alias="displayTitle")] + r"""Display title for the stream.""" + + extended_display_title: Annotated[str, pydantic.Field(alias="extendedDisplayTitle")] + r"""Extended display title for the stream.""" + + default: Optional[bool] = None + r"""Indicates if this stream is default.""" + + bitrate: Optional[int] = None + r"""Bitrate of the stream.""" + + language: Optional[str] = None + r"""Language of the stream.""" + + language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None + r"""Language tag (e.g., en).""" + + language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None + r"""ISO language code.""" + + header_compression: Annotated[ + Optional[bool], pydantic.Field(alias="headerCompression") + ] = None + r"""Indicates whether header compression is enabled.""" + + dovibl_compat_id: Annotated[ + Optional[int], pydantic.Field(alias="DOVIBLCompatID") + ] = None + r"""Dolby Vision BL compatibility ID.""" + + dovibl_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIBLPresent")] = ( + None + ) + r"""Indicates if Dolby Vision BL is present.""" + + doviel_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIELPresent")] = ( + None + ) + r"""Indicates if Dolby Vision EL is present.""" + + dovi_level: Annotated[Optional[int], pydantic.Field(alias="DOVILevel")] = None + r"""Dolby Vision level.""" + + dovi_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIPresent")] = None + r"""Indicates if Dolby Vision is present.""" + + dovi_profile: Annotated[Optional[int], pydantic.Field(alias="DOVIProfile")] = None + r"""Dolby Vision profile.""" + + dovirpu_present: Annotated[ + Optional[bool], pydantic.Field(alias="DOVIRPUPresent") + ] = None + r"""Indicates if Dolby Vision RPU is present.""" + + dovi_version: Annotated[Optional[str], pydantic.Field(alias="DOVIVersion")] = None + r"""Dolby Vision version.""" + + bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None + r"""Bit depth of the video stream.""" + + chroma_location: Annotated[ + Optional[str], pydantic.Field(alias="chromaLocation") + ] = None + r"""Chroma sample location.""" + + chroma_subsampling: Annotated[ + Optional[str], pydantic.Field(alias="chromaSubsampling") + ] = None + r"""Chroma subsampling format.""" + + coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None + r"""Coded video height.""" + + coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None + r"""Coded video width.""" + + closed_captions: Annotated[ + Optional[bool], pydantic.Field(alias="closedCaptions") + ] = None + + color_primaries: Annotated[ + Optional[str], pydantic.Field(alias="colorPrimaries") + ] = None + r"""Color primaries used.""" + + color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None + r"""Color range (e.g., tv).""" + + color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None + r"""Color space.""" + + color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None + r"""Color transfer characteristics.""" + + frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None + r"""Frame rate of the stream.""" + + height: Optional[int] = None + r"""Height of the video stream.""" + + level: Optional[int] = None + r"""Video level.""" + + original: Optional[bool] = None + r"""Indicates if this is the original stream.""" + + has_scaling_matrix: Annotated[ + Optional[bool], pydantic.Field(alias="hasScalingMatrix") + ] = None + + profile: Optional[str] = None + r"""Video profile.""" + + scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None + + embedded_in_video: Annotated[ + Optional[str], pydantic.Field(alias="embeddedInVideo") + ] = None + + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None + r"""Number of reference frames.""" + + width: Optional[int] = None + r"""Width of the video stream.""" + + selected: Optional[bool] = None + r"""Indicates if this stream is selected (applicable for audio streams).""" + + forced: Optional[bool] = None + + channels: Optional[int] = None + r"""Number of audio channels (for audio streams).""" + + audio_channel_layout: Annotated[ + Optional[str], pydantic.Field(alias="audioChannelLayout") + ] = None + r"""Audio channel layout.""" + + sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None + r"""Sampling rate for the audio stream.""" + + can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None + r"""Indicates if the stream can auto-sync.""" + + hearing_impaired: Annotated[ + Optional[bool], pydantic.Field(alias="hearingImpaired") + ] = None + r"""Indicates if the stream is for the hearing impaired.""" + + dub: Optional[bool] = None + r"""Indicates if the stream is a dub.""" + + title: Optional[str] = None + r"""Optional title for the stream (e.g., language variant).""" + + +class PartTypedDict(TypedDict): + id: int + r"""Unique part identifier.""" key: str - guid: str - type: GetRecentlyAddedHubsType - r"""The type of media content - - """ - title: str - summary: str - added_at: int - r"""Unix epoch datetime in seconds""" - studio: NotRequired[str] - skip_children: NotRequired[bool] - library_section_id: NotRequired[int] - library_section_title: NotRequired[str] - library_section_key: NotRequired[str] - slug: NotRequired[str] - content_rating: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - year: NotRequired[int] - season_count: NotRequired[int] - tagline: NotRequired[str] - flatten_seasons: NotRequired[FlattenSeasons] - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - episode_sort: NotRequired[EpisodeSort] - r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" - enable_credits_marker_generation: NotRequired[EnableCreditsMarkerGeneration] - r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" - show_ordering: NotRequired[ShowOrdering] - r"""Setting that indicates the episode ordering for the show. - None = Library default, - tmdbAiring = The Movie Database (Aired), - aired = TheTVDB (Aired), - dvd = TheTVDB (DVD), - absolute = TheTVDB (Absolute)). - - """ - thumb: NotRequired[str] - art: NotRequired[str] - banner: NotRequired[str] + r"""Key to access this part.""" + file: str + r"""File path for the part.""" + size: int + r"""File size in bytes.""" + accessible: NotRequired[bool] + r"""Indicates if the part is accessible.""" + exists: NotRequired[bool] + r"""Indicates if the part exists.""" + indexes: NotRequired[str] duration: NotRequired[int] - originally_available_at: NotRequired[date] + r"""Duration of the part in milliseconds.""" + packet_length: NotRequired[int] + container: NotRequired[str] + r"""Container format of the part.""" + video_profile: NotRequired[str] + r"""Video profile for the part.""" + audio_profile: NotRequired[str] + r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" + has64bit_offsets: NotRequired[bool] + optimized_for_streaming: NotRequired[GetRecentlyAddedOptimizedForStreamingTypedDict] + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + has_thumbnail: NotRequired[HasThumbnail] + stream: NotRequired[List[StreamTypedDict]] + r"""An array of streams for this part.""" + + +class Part(BaseModel): + id: int + r"""Unique part identifier.""" + + key: str + r"""Key to access this part.""" + + file: str + r"""File path for the part.""" + + size: int + r"""File size in bytes.""" + + accessible: Optional[bool] = None + r"""Indicates if the part is accessible.""" + + exists: Optional[bool] = None + r"""Indicates if the part exists.""" + + indexes: Optional[str] = None + + duration: Optional[int] = None + r"""Duration of the part in milliseconds.""" + + packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None + + container: Optional[str] = None + r"""Container format of the part.""" + + video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None + r"""Video profile for the part.""" + + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None + r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + optimized_for_streaming: Annotated[ + Optional[GetRecentlyAddedOptimizedForStreaming], + pydantic.Field(alias="optimizedForStreaming"), + ] = None + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + has_thumbnail: Annotated[ + Optional[HasThumbnail], pydantic.Field(alias="hasThumbnail") + ] = HasThumbnail.FALSE + + stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None + r"""An array of streams for this part.""" + + +class MediaTypedDict(TypedDict): + id: int + r"""Unique media identifier.""" + duration: NotRequired[int] + r"""Duration of the media in milliseconds.""" + bitrate: NotRequired[int] + r"""Bitrate in bits per second.""" + width: NotRequired[int] + r"""Video width in pixels.""" + height: NotRequired[int] + r"""Video height in pixels.""" + aspect_ratio: NotRequired[float] + r"""Aspect ratio of the video.""" + audio_channels: NotRequired[int] + r"""Number of audio channels.""" + display_offset: NotRequired[int] + audio_codec: NotRequired[str] + r"""Audio codec used.""" + video_codec: NotRequired[str] + r"""Video codec used.""" + video_resolution: NotRequired[str] + r"""Video resolution (e.g., 4k).""" + container: NotRequired[str] + r"""File container type.""" + video_frame_rate: NotRequired[str] + r"""Frame rate of the video. Values found include NTSC, PAL, 24p + + """ + video_profile: NotRequired[str] + r"""Video profile (e.g., main 10).""" + has_voice_activity: NotRequired[bool] + r"""Indicates whether voice activity is detected.""" + audio_profile: NotRequired[str] + r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" + optimized_for_streaming: NotRequired[OptimizedForStreamingTypedDict] + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + has64bit_offsets: NotRequired[bool] + part: NotRequired[List[PartTypedDict]] + r"""An array of parts for this media item.""" + + +class Media(BaseModel): + id: int + r"""Unique media identifier.""" + + duration: Optional[int] = None + r"""Duration of the media in milliseconds.""" + + bitrate: Optional[int] = None + r"""Bitrate in bits per second.""" + + width: Optional[int] = None + r"""Video width in pixels.""" + + height: Optional[int] = None + r"""Video height in pixels.""" + + aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None + r"""Aspect ratio of the video.""" + + audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( + None + ) + r"""Number of audio channels.""" + + display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( + None + ) + + audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None + r"""Audio codec used.""" + + video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None + r"""Video codec used.""" + + video_resolution: Annotated[ + Optional[str], pydantic.Field(alias="videoResolution") + ] = None + r"""Video resolution (e.g., 4k).""" + + container: Optional[str] = None + r"""File container type.""" + + video_frame_rate: Annotated[ + Optional[str], pydantic.Field(alias="videoFrameRate") + ] = None + r"""Frame rate of the video. Values found include NTSC, PAL, 24p + + """ + + video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None + r"""Video profile (e.g., main 10).""" + + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + r"""Indicates whether voice activity is detected.""" + + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None + r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" + + optimized_for_streaming: Annotated[ + Optional[OptimizedForStreaming], pydantic.Field(alias="optimizedForStreaming") + ] = None + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + part: Annotated[Optional[List[Part]], pydantic.Field(alias="Part")] = None + r"""An array of parts for this media item.""" + + +class GenreTypedDict(TypedDict): + r"""The filter query string for similar items.""" + + id: int + filter_: str + tag: str + r"""The genre name of this media-item + + """ + + +class Genre(BaseModel): + r"""The filter query string for similar items.""" + + id: int + + filter_: Annotated[str, pydantic.Field(alias="filter")] + + tag: str + r"""The genre name of this media-item + + """ + + +class CountryTypedDict(TypedDict): + r"""The filter query string for country media items.""" + + id: int + tag: str + r"""The country of origin of this media item""" + filter_: NotRequired[str] + + +class Country(BaseModel): + r"""The filter query string for country media items.""" + + id: int + + tag: str + r"""The country of origin of this media item""" + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + + +class DirectorTypedDict(TypedDict): + tag: str + r"""The role of Director""" + + +class Director(BaseModel): + tag: str + r"""The role of Director""" + + +class WriterTypedDict(TypedDict): + id: int + r"""Unique identifier for the writer.""" + filter_: str + r"""The filter string used to query this writer.""" + tag: str + r"""The role of Writer""" + tag_key: NotRequired[str] + r"""A unique key associated with the writers tag, used for internal identification.""" + + +class Writer(BaseModel): + id: int + r"""Unique identifier for the writer.""" + + filter_: Annotated[str, pydantic.Field(alias="filter")] + r"""The filter string used to query this writer.""" + + tag: str + r"""The role of Writer""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""A unique key associated with the writers tag, used for internal identification.""" + + +class RoleTypedDict(TypedDict): + id: int + r"""Unique identifier for the actor or role.""" + filter_: str + r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" + tag: str + r"""The display tag for the actor (typically the actor's name).""" + tag_key: NotRequired[str] + r"""A unique key associated with the actor's tag, used for internal identification.""" + role: NotRequired[str] + r"""The role played by the actor in the media item.""" + thumb: NotRequired[str] + r"""The URL of the thumbnail image for the actor.""" + + +class Role(BaseModel): + id: int + r"""Unique identifier for the actor or role.""" + + filter_: Annotated[str, pydantic.Field(alias="filter")] + r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" + + tag: str + r"""The display tag for the actor (typically the actor's name).""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""A unique key associated with the actor's tag, used for internal identification.""" + + role: Optional[str] = None + r"""The role played by the actor in the media item.""" + + thumb: Optional[str] = None + r"""The URL of the thumbnail image for the actor.""" + + +class ProducerTypedDict(TypedDict): + id: int + r"""Unique identifier for the producer.""" + filter_: str + r"""The filter string used to query this producer.""" + tag: str + r"""The name of the producer""" + tag_key: NotRequired[str] + r"""A unique key associated with the producer's tag, used for internal identification.""" + thumb: NotRequired[str] + r"""The URL of the thumbnail image for the actor.""" + + +class Producer(BaseModel): + id: int + r"""Unique identifier for the producer.""" + + filter_: Annotated[str, pydantic.Field(alias="filter")] + r"""The filter string used to query this producer.""" + + tag: str + r"""The name of the producer""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""A unique key associated with the producer's tag, used for internal identification.""" + + thumb: Optional[str] = None + r"""The URL of the thumbnail image for the actor.""" + + +class RatingTypedDict(TypedDict): + r"""The type of rating, for example 'audience' or 'critic'.""" + + image: str + value: float + type: str + + +class Rating(BaseModel): + r"""The type of rating, for example 'audience' or 'critic'.""" + + image: str + + value: float + + type: str + + +class SimilarTypedDict(TypedDict): + r"""The display tag for the similar item, typically the title.""" + + id: int + filter_: str + tag: str + + +class Similar(BaseModel): + r"""The display tag for the similar item, typically the title.""" + + id: int + + filter_: Annotated[str, pydantic.Field(alias="filter")] + + tag: str + + +class LocationTypedDict(TypedDict): + r"""The folder path for the media item.""" + + path: str + + +class Location(BaseModel): + r"""The folder path for the media item.""" + + path: str + + +class GuidsTypedDict(TypedDict): + id: NotRequired[str] + r"""The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + + """ + + +class Guids(BaseModel): + id: Optional[str] = None + r"""The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + + """ + + +class CollectionTypedDict(TypedDict): + tag: str + r"""The user-made collection this media item belongs to""" + + +class Collection(BaseModel): + tag: str + r"""The user-made collection this media item belongs to""" + + +class GetRecentlyAddedMetadataTypedDict(TypedDict): + r"""Unknown""" + + added_at: int + art: str + r"""The art image URL for the media item.""" + audience_rating: float + r"""The audience rating for the media item.""" + child_count: int + r"""The number of child items associated with this media item.""" + duration: int + r"""The duration of the media item in milliseconds.""" + guid: str + r"""The globally unique identifier for the media item.""" + index: int + r"""The index position of the media item.""" + key: str + r"""The unique key for the media item.""" + library_section_id: int + r"""The identifier for the library section.""" + library_section_key: str + r"""The key corresponding to the library section.""" + library_section_title: str + r"""The title of the library section.""" + originally_available_at: date + r"""The original release date of the media item.""" + parent_studio: str + r"""The studio of the parent media item.""" + parent_theme: str + r"""The theme URL for the parent media item.""" + rating_key: str + r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" + rating: float + r"""The critic rating for the media item.""" + season_count: int + r"""The total number of seasons (for TV shows).""" + slug: str + r"""A URL‐friendly version of the media title.""" + summary: str + r"""A synopsis of the media item.""" + tagline: str + r"""A brief tagline for the media item.""" + theme: str + r"""The theme URL for the media item.""" + thumb: str + r"""The thumbnail image URL for the media item.""" + title_sort: str + r"""The sort title used for ordering media items.""" + title: str + r"""The title of the media item.""" + type: GetRecentlyAddedHubsType + audience_rating_image: NotRequired[str] + r"""The URL for the audience rating image.""" + chapter_source: NotRequired[str] + r"""The source from which chapter data is derived.""" + content_rating: NotRequired[str] + r"""The content rating for the media item.""" + created_at_accuracy: NotRequired[str] + r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" + created_at_tz_offset: NotRequired[str] + r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" + grandparent_art: NotRequired[str] + r"""The art URL for the grandparent media item.""" + grandparent_guid: NotRequired[str] + r"""The GUID of the grandparent media item.""" + grandparent_key: NotRequired[str] + r"""The key of the grandparent media item.""" + grandparent_rating_key: NotRequired[str] + r"""The rating key of the grandparent media item.""" + grandparent_slug: NotRequired[str] + r"""The slug for the grandparent media item.""" + grandparent_theme: NotRequired[str] + r"""The theme URL for the grandparent media item.""" + grandparent_thumb: NotRequired[str] + r"""The thumbnail URL for the grandparent media item.""" + grandparent_title: NotRequired[str] + r"""The title of the grandparent media item.""" + last_rated_at: NotRequired[int] + r"""The Unix timestamp representing the last time the item was rated.""" + last_viewed_at: NotRequired[int] + r"""Unix timestamp for when the media item was last viewed.""" + leaf_count: NotRequired[int] + r"""The number of leaf items (end nodes) under this media item.""" + original_title: NotRequired[str] + r"""The original title of the media item (if different).""" + parent_guid: NotRequired[str] + r"""The GUID of the parent media item.""" + parent_index: NotRequired[int] + r"""The index position of the parent media item.""" + parent_key: NotRequired[str] + r"""The key of the parent media item.""" + parent_rating_key: NotRequired[str] + r"""The rating key of the parent media item.""" + parent_slug: NotRequired[str] + r"""The slug for the parent media item.""" + parent_thumb: NotRequired[str] + r"""The thumbnail URL for the parent media item.""" + parent_title: NotRequired[str] + r"""The title of the parent media item.""" + parent_year: NotRequired[int] + r"""The release year of the parent media item.""" + primary_extra_key: NotRequired[str] + r"""The primary extra key associated with this media item.""" + rating_image: NotRequired[str] + r"""The URL for the rating image.""" + skip_count: NotRequired[int] + r"""The number of times this media item has been skipped.""" + studio: NotRequired[str] + r"""The studio that produced the media item.""" + subtype: NotRequired[str] + r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" updated_at: NotRequired[int] r"""Unix epoch datetime in seconds""" - audience_rating_image: NotRequired[str] - chapter_source: NotRequired[str] - primary_extra_key: NotRequired[str] - rating_image: NotRequired[str] - grandparent_rating_key: NotRequired[str] - grandparent_guid: NotRequired[str] - grandparent_key: NotRequired[str] - grandparent_title: NotRequired[str] - grandparent_thumb: NotRequired[str] - parent_slug: NotRequired[str] - grandparent_slug: NotRequired[str] - grandparent_art: NotRequired[str] - grandparent_theme: NotRequired[str] + user_rating: NotRequired[float] + r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" + view_count: NotRequired[int] + r"""The number of times this media item has been viewed.""" + view_offset: NotRequired[int] + r"""The current playback offset (in milliseconds).""" + viewed_leaf_count: NotRequired[int] + r"""The number of leaf items that have been viewed.""" + year: NotRequired[int] + r"""The release year of the media item.""" + image: NotRequired[List[GetRecentlyAddedImageTypedDict]] + ultra_blur_colors: NotRequired[UltraBlurColorsTypedDict] media: NotRequired[List[MediaTypedDict]] - r"""The Media object is only included when type query is `4` or higher. - - """ genre: NotRequired[List[GenreTypedDict]] country: NotRequired[List[CountryTypedDict]] director: NotRequired[List[DirectorTypedDict]] writer: NotRequired[List[WriterTypedDict]] - collection: NotRequired[List[CollectionTypedDict]] role: NotRequired[List[RoleTypedDict]] + producer: NotRequired[List[ProducerTypedDict]] + rating1: NotRequired[List[RatingTypedDict]] + similar: NotRequired[List[SimilarTypedDict]] location: NotRequired[List[LocationTypedDict]] - media_guid: NotRequired[List[MediaGUIDTypedDict]] - r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - - """ - ultra_blur_colors: NotRequired[UltraBlurColorsTypedDict] - meta_data_rating: NotRequired[List[MetaDataRatingTypedDict]] - image: NotRequired[List[GetRecentlyAddedImageTypedDict]] - title_sort: NotRequired[str] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - original_title: NotRequired[str] - view_offset: NotRequired[int] - skip_count: NotRequired[int] - index: NotRequired[int] - theme: NotRequired[str] - leaf_count: NotRequired[int] - viewed_leaf_count: NotRequired[int] - child_count: NotRequired[int] - has_premium_extras: NotRequired[str] - has_premium_primary_extra: NotRequired[str] - parent_rating_key: NotRequired[str] - r"""The rating key of the parent item. - - """ - parent_guid: NotRequired[str] - parent_studio: NotRequired[str] - parent_key: NotRequired[str] - parent_title: NotRequired[str] - parent_index: NotRequired[int] - parent_year: NotRequired[int] - parent_thumb: NotRequired[str] - parent_theme: NotRequired[str] + guids: NotRequired[List[GuidsTypedDict]] + collection: NotRequired[List[CollectionTypedDict]] class GetRecentlyAddedMetadata(BaseModel): - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. - Note: This is always an integer, but is represented as a string in the API. - - """ - - key: str - - guid: str - - type: GetRecentlyAddedHubsType - r"""The type of media content - - """ - - title: str - - summary: str + r"""Unknown""" added_at: Annotated[int, pydantic.Field(alias="addedAt")] - r"""Unix epoch datetime in seconds""" - studio: Optional[str] = None + art: str + r"""The art image URL for the media item.""" - skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( - None - ) + audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] + r"""The audience rating for the media item.""" - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None + child_count: Annotated[int, pydantic.Field(alias="childCount")] + r"""The number of child items associated with this media item.""" - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None + duration: int + r"""The duration of the media item in milliseconds.""" - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None + guid: str + r"""The globally unique identifier for the media item.""" - slug: Optional[str] = None + index: int + r"""The index position of the media item.""" - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) + key: str + r"""The unique key for the media item.""" - rating: Optional[float] = None + library_section_id: Annotated[int, pydantic.Field(alias="librarySectionID")] + r"""The identifier for the library section.""" - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None + library_section_key: Annotated[str, pydantic.Field(alias="librarySectionKey")] + r"""The key corresponding to the library section.""" - year: Optional[int] = None - - season_count: Annotated[Optional[int], pydantic.Field(alias="seasonCount")] = None - - tagline: Optional[str] = None - - flatten_seasons: Annotated[ - Optional[FlattenSeasons], pydantic.Field(alias="flattenSeasons") - ] = None - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - - episode_sort: Annotated[ - Optional[EpisodeSort], pydantic.Field(alias="episodeSort") - ] = None - r"""Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).""" - - enable_credits_marker_generation: Annotated[ - Optional[EnableCreditsMarkerGeneration], - pydantic.Field(alias="enableCreditsMarkerGeneration"), - ] = None - r"""Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).""" - - show_ordering: Annotated[ - Optional[ShowOrdering], pydantic.Field(alias="showOrdering") - ] = None - r"""Setting that indicates the episode ordering for the show. - None = Library default, - tmdbAiring = The Movie Database (Aired), - aired = TheTVDB (Aired), - dvd = TheTVDB (DVD), - absolute = TheTVDB (Absolute)). - - """ - - thumb: Optional[str] = None - - art: Optional[str] = None - - banner: Optional[str] = None - - duration: Optional[int] = None + library_section_title: Annotated[str, pydantic.Field(alias="librarySectionTitle")] + r"""The title of the library section.""" originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None + date, pydantic.Field(alias="originallyAvailableAt") + ] + r"""The original release date of the media item.""" - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" + parent_studio: Annotated[str, pydantic.Field(alias="parentStudio")] + r"""The studio of the parent media item.""" + + parent_theme: Annotated[str, pydantic.Field(alias="parentTheme")] + r"""The theme URL for the parent media item.""" + + rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] + r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" + + rating: float + r"""The critic rating for the media item.""" + + season_count: Annotated[int, pydantic.Field(alias="seasonCount")] + r"""The total number of seasons (for TV shows).""" + + slug: str + r"""A URL‐friendly version of the media title.""" + + summary: str + r"""A synopsis of the media item.""" + + tagline: str + r"""A brief tagline for the media item.""" + + theme: str + r"""The theme URL for the media item.""" + + thumb: str + r"""The thumbnail image URL for the media item.""" + + title_sort: Annotated[str, pydantic.Field(alias="titleSort")] + r"""The sort title used for ordering media items.""" + + title: str + r"""The title of the media item.""" + + type: GetRecentlyAddedHubsType audience_rating_image: Annotated[ Optional[str], pydantic.Field(alias="audienceRatingImage") ] = None + r"""The URL for the audience rating image.""" chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( None ) + r"""The source from which chapter data is derived.""" - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") + content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""The content rating for the media item.""" + + created_at_accuracy: Annotated[ + Optional[str], pydantic.Field(alias="createdAtAccuracy") ] = None + r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - - parent_slug: Annotated[Optional[str], pydantic.Field(alias="parentSlug")] = None - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") + created_at_tz_offset: Annotated[ + Optional[str], pydantic.Field(alias="createdAtTZOffset") ] = None + r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" grandparent_art: Annotated[ Optional[str], pydantic.Field(alias="grandparentArt") ] = None + r"""The art URL for the grandparent media item.""" + + grandparent_guid: Annotated[ + Optional[str], pydantic.Field(alias="grandparentGuid") + ] = None + r"""The GUID of the grandparent media item.""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The key of the grandparent media item.""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The rating key of the grandparent media item.""" + + grandparent_slug: Annotated[ + Optional[str], pydantic.Field(alias="grandparentSlug") + ] = None + r"""The slug for the grandparent media item.""" grandparent_theme: Annotated[ Optional[str], pydantic.Field(alias="grandparentTheme") ] = None + r"""The theme URL for the grandparent media item.""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The thumbnail URL for the grandparent media item.""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The title of the grandparent media item.""" + + last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None + r"""The Unix timestamp representing the last time the item was rated.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""Unix timestamp for when the media item was last viewed.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""The number of leaf items (end nodes) under this media item.""" + + original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""The original title of the media item (if different).""" + + parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None + r"""The GUID of the parent media item.""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The index position of the parent media item.""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The key of the parent media item.""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The rating key of the parent media item.""" + + parent_slug: Annotated[Optional[str], pydantic.Field(alias="parentSlug")] = None + r"""The slug for the parent media item.""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The thumbnail URL for the parent media item.""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The title of the parent media item.""" + + parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None + r"""The release year of the parent media item.""" + + primary_extra_key: Annotated[ + Optional[str], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""The primary extra key associated with this media item.""" + + rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None + r"""The URL for the rating image.""" + + skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None + r"""The number of times this media item has been skipped.""" + + studio: Optional[str] = None + r"""The studio that produced the media item.""" + + subtype: Optional[str] = None + r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""Unix epoch datetime in seconds""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""The number of times this media item has been viewed.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""The current playback offset (in milliseconds).""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""The number of leaf items that have been viewed.""" + + year: Optional[int] = None + r"""The release year of the media item.""" + + image: Annotated[ + Optional[List[GetRecentlyAddedImage]], pydantic.Field(alias="Image") + ] = None + + ultra_blur_colors: Annotated[ + Optional[UltraBlurColors], pydantic.Field(alias="UltraBlurColors") + ] = None media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None - r"""The Media object is only included when type query is `4` or higher. - - """ genre: Annotated[Optional[List[Genre]], pydantic.Field(alias="Genre")] = None @@ -1143,118 +1469,61 @@ class GetRecentlyAddedMetadata(BaseModel): writer: Annotated[Optional[List[Writer]], pydantic.Field(alias="Writer")] = None - collection: Annotated[ - Optional[List[Collection]], pydantic.Field(alias="Collection") - ] = None - role: Annotated[Optional[List[Role]], pydantic.Field(alias="Role")] = None + producer: Annotated[Optional[List[Producer]], pydantic.Field(alias="Producer")] = ( + None + ) + + rating1: Annotated[Optional[List[Rating]], pydantic.Field(alias="Rating")] = None + + similar: Annotated[Optional[List[Similar]], pydantic.Field(alias="Similar")] = None + location: Annotated[Optional[List[Location]], pydantic.Field(alias="Location")] = ( None ) - media_guid: Annotated[Optional[List[MediaGUID]], pydantic.Field(alias="Guid")] = ( - None - ) - r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. + guids: Annotated[Optional[List[Guids]], pydantic.Field(alias="Guid")] = None - """ - - ultra_blur_colors: Annotated[ - Optional[UltraBlurColors], pydantic.Field(alias="UltraBlurColors") + collection: Annotated[ + Optional[List[Collection]], pydantic.Field(alias="Collection") ] = None - meta_data_rating: Annotated[ - Optional[List[MetaDataRating]], pydantic.Field(alias="Rating") - ] = None - - image: Annotated[ - Optional[List[GetRecentlyAddedImage]], pydantic.Field(alias="Image") - ] = None - - title_sort: Annotated[Optional[str], pydantic.Field(alias="titleSort")] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - - index: Optional[int] = None - - theme: Optional[str] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - - child_count: Annotated[Optional[int], pydantic.Field(alias="childCount")] = None - - has_premium_extras: Annotated[ - Optional[str], pydantic.Field(alias="hasPremiumExtras") - ] = None - - has_premium_primary_extra: Annotated[ - Optional[str], pydantic.Field(alias="hasPremiumPrimaryExtra") - ] = None - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent item. - - """ - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - - parent_studio: Annotated[Optional[str], pydantic.Field(alias="parentStudio")] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - parent_theme: Annotated[Optional[str], pydantic.Field(alias="parentTheme")] = None - class GetRecentlyAddedMediaContainerTypedDict(TypedDict): size: int - offset: NotRequired[int] - total_size: NotRequired[int] - identifier: NotRequired[str] - allow_sync: NotRequired[bool] + r"""Number of media items returned in this response.""" + total_size: int + r"""Total number of media items in the library.""" + offset: int + r"""Offset value for pagination.""" + allow_sync: bool + r"""Indicates whether syncing is allowed.""" + identifier: str + r"""An plugin identifier for the media container.""" meta: NotRequired[MetaTypedDict] r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. """ metadata: NotRequired[List[GetRecentlyAddedMetadataTypedDict]] + r"""An array of metadata items.""" class GetRecentlyAddedMediaContainer(BaseModel): size: int + r"""Number of media items returned in this response.""" - offset: Optional[int] = None + total_size: Annotated[int, pydantic.Field(alias="totalSize")] + r"""Total number of media items in the library.""" - total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + offset: int + r"""Offset value for pagination.""" - identifier: Optional[str] = None + allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] + r"""Indicates whether syncing is allowed.""" - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + identifier: str + r"""An plugin identifier for the media container.""" meta: Annotated[Optional[Meta], pydantic.Field(alias="Meta")] = None r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. @@ -1264,6 +1533,7 @@ class GetRecentlyAddedMediaContainer(BaseModel): metadata: Annotated[ Optional[List[GetRecentlyAddedMetadata]], pydantic.Field(alias="Metadata") ] = None + r"""An array of metadata items.""" class GetRecentlyAddedResponseBodyTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/getondeck.py b/src/plex_api_client/models/operations/getondeck.py deleted file mode 100644 index 3cf423a..0000000 --- a/src/plex_api_client/models/operations/getondeck.py +++ /dev/null @@ -1,407 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetOnDeckStreamTypedDict(TypedDict): - id: NotRequired[float] - stream_type: NotRequired[float] - default: NotRequired[bool] - codec: NotRequired[str] - index: NotRequired[float] - bitrate: NotRequired[float] - language: NotRequired[str] - language_tag: NotRequired[str] - language_code: NotRequired[str] - bit_depth: NotRequired[float] - chroma_location: NotRequired[str] - chroma_subsampling: NotRequired[str] - coded_height: NotRequired[float] - coded_width: NotRequired[float] - color_range: NotRequired[str] - frame_rate: NotRequired[float] - height: NotRequired[float] - level: NotRequired[float] - profile: NotRequired[str] - ref_frames: NotRequired[float] - width: NotRequired[float] - display_title: NotRequired[str] - extended_display_title: NotRequired[str] - - -class GetOnDeckStream(BaseModel): - id: Optional[float] = None - - stream_type: Annotated[Optional[float], pydantic.Field(alias="streamType")] = None - - default: Optional[bool] = None - - codec: Optional[str] = None - - index: Optional[float] = None - - bitrate: Optional[float] = None - - language: Optional[str] = None - - language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None - - language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None - - bit_depth: Annotated[Optional[float], pydantic.Field(alias="bitDepth")] = None - - chroma_location: Annotated[ - Optional[str], pydantic.Field(alias="chromaLocation") - ] = None - - chroma_subsampling: Annotated[ - Optional[str], pydantic.Field(alias="chromaSubsampling") - ] = None - - coded_height: Annotated[Optional[float], pydantic.Field(alias="codedHeight")] = None - - coded_width: Annotated[Optional[float], pydantic.Field(alias="codedWidth")] = None - - color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None - - frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None - - height: Optional[float] = None - - level: Optional[float] = None - - profile: Optional[str] = None - - ref_frames: Annotated[Optional[float], pydantic.Field(alias="refFrames")] = None - - width: Optional[float] = None - - display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None - - extended_display_title: Annotated[ - Optional[str], pydantic.Field(alias="extendedDisplayTitle") - ] = None - - -class GetOnDeckPartTypedDict(TypedDict): - id: NotRequired[float] - key: NotRequired[str] - duration: NotRequired[float] - file: NotRequired[str] - size: NotRequired[float] - audio_profile: NotRequired[str] - container: NotRequired[str] - video_profile: NotRequired[str] - stream: NotRequired[List[GetOnDeckStreamTypedDict]] - - -class GetOnDeckPart(BaseModel): - id: Optional[float] = None - - key: Optional[str] = None - - duration: Optional[float] = None - - file: Optional[str] = None - - size: Optional[float] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - container: Optional[str] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - stream: Annotated[ - Optional[List[GetOnDeckStream]], pydantic.Field(alias="Stream") - ] = None - - -class GetOnDeckMediaTypedDict(TypedDict): - id: NotRequired[float] - duration: NotRequired[float] - bitrate: NotRequired[float] - width: NotRequired[float] - height: NotRequired[float] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[float] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[str] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - audio_profile: NotRequired[str] - video_profile: NotRequired[str] - part: NotRequired[List[GetOnDeckPartTypedDict]] - - -class GetOnDeckMedia(BaseModel): - id: Optional[float] = None - - duration: Optional[float] = None - - bitrate: Optional[float] = None - - width: Optional[float] = None - - height: Optional[float] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[ - Optional[float], pydantic.Field(alias="audioChannels") - ] = None - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[Optional[List[GetOnDeckPart]], pydantic.Field(alias="Part")] = None - - -class GetOnDeckGuidsTypedDict(TypedDict): - id: NotRequired[str] - - -class GetOnDeckGuids(BaseModel): - id: Optional[str] = None - - -class GetOnDeckMetadataTypedDict(TypedDict): - allow_sync: NotRequired[bool] - library_section_id: NotRequired[float] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - rating_key: NotRequired[float] - key: NotRequired[str] - parent_rating_key: NotRequired[float] - grandparent_rating_key: NotRequired[float] - guid: NotRequired[str] - parent_guid: NotRequired[str] - grandparent_guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - grandparent_key: NotRequired[str] - parent_key: NotRequired[str] - library_section_key: NotRequired[str] - grandparent_title: NotRequired[str] - parent_title: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - index: NotRequired[float] - parent_index: NotRequired[float] - last_viewed_at: NotRequired[float] - year: NotRequired[float] - thumb: NotRequired[str] - art: NotRequired[str] - parent_thumb: NotRequired[str] - grandparent_thumb: NotRequired[str] - grandparent_art: NotRequired[str] - grandparent_theme: NotRequired[str] - duration: NotRequired[float] - originally_available_at: NotRequired[datetime] - added_at: NotRequired[float] - updated_at: NotRequired[float] - media: NotRequired[List[GetOnDeckMediaTypedDict]] - guids: NotRequired[List[GetOnDeckGuidsTypedDict]] - - -class GetOnDeckMetadata(BaseModel): - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - library_section_id: Annotated[ - Optional[float], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - rating_key: Annotated[Optional[float], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - parent_rating_key: Annotated[ - Optional[float], pydantic.Field(alias="parentRatingKey") - ] = None - - grandparent_rating_key: Annotated[ - Optional[float], pydantic.Field(alias="grandparentRatingKey") - ] = None - - guid: Optional[str] = None - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - - type: Optional[str] = None - - title: Optional[str] = None - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - index: Optional[float] = None - - parent_index: Annotated[Optional[float], pydantic.Field(alias="parentIndex")] = None - - last_viewed_at: Annotated[Optional[float], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - year: Optional[float] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - - duration: Optional[float] = None - - originally_available_at: Annotated[ - Optional[datetime], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[float], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None - - media: Annotated[Optional[List[GetOnDeckMedia]], pydantic.Field(alias="Media")] = ( - None - ) - - guids: Annotated[Optional[List[GetOnDeckGuids]], pydantic.Field(alias="Guid")] = ( - None - ) - - -class GetOnDeckMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - allow_sync: NotRequired[bool] - identifier: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[float] - mixed_parents: NotRequired[bool] - metadata: NotRequired[List[GetOnDeckMetadataTypedDict]] - - -class GetOnDeckMediaContainer(BaseModel): - size: Optional[float] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - identifier: Optional[str] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[float], pydantic.Field(alias="mediaTagVersion") - ] = None - - mixed_parents: Annotated[Optional[bool], pydantic.Field(alias="mixedParents")] = ( - None - ) - - metadata: Annotated[ - Optional[List[GetOnDeckMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetOnDeckResponseBodyTypedDict(TypedDict): - r"""The on Deck content""" - - media_container: NotRequired[GetOnDeckMediaContainerTypedDict] - - -class GetOnDeckResponseBody(BaseModel): - r"""The on Deck content""" - - media_container: Annotated[ - Optional[GetOnDeckMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetOnDeckResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetOnDeckResponseBodyTypedDict] - r"""The on Deck content""" - - -class GetOnDeckResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetOnDeckResponseBody] = None - r"""The on Deck content"""