diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 72a33a9..34756dd 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: 5d44282cd3351c75bd6c9a894dbe1ec9 + docChecksum: 6f287a2526fda4d3a32a92e891a0c4ce docVersion: 0.0.3 - speakeasyVersion: 1.487.1 + speakeasyVersion: 1.488.0 generationVersion: 2.506.0 - releaseVersion: 0.22.1 - configChecksum: e3d7995df0c9196051a949812c3b6d0a + releaseVersion: 0.23.0 + configChecksum: 94fc30863d44a29dcc6197b2d3893f7f repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git @@ -34,6 +34,7 @@ features: responseFormat: 1.0.1 retries: 3.0.2 sdkHooks: 1.0.0 + unions: 3.0.4 generatedFiles: - .gitattributes - .python-version @@ -85,6 +86,10 @@ generatedFiles: - docs/models/errors/getalllibrarieserrors.md - docs/models/errors/getalllibrarieslibraryerrors.md - docs/models/errors/getalllibrariesunauthorized.md + - docs/models/errors/getallmedialibrarybadrequest.md + - docs/models/errors/getallmedialibraryerrors.md + - docs/models/errors/getallmedialibrarylibraryerrors.md + - docs/models/errors/getallmedialibraryunauthorized.md - docs/models/errors/getavailableclientsbadrequest.md - docs/models/errors/getavailableclientserrors.md - docs/models/errors/getavailableclientsservererrors.md @@ -422,6 +427,39 @@ generatedFiles: - docs/models/operations/getalllibrariesmediacontainer.md - docs/models/operations/getalllibrariesresponse.md - docs/models/operations/getalllibrariesresponsebody.md + - docs/models/operations/getallmedialibraryactivedirection.md + - docs/models/operations/getallmedialibrarycollection.md + - docs/models/operations/getallmedialibrarycountry.md + - docs/models/operations/getallmedialibrarydefaultdirection.md + - docs/models/operations/getallmedialibrarydirector.md + - docs/models/operations/getallmedialibraryfield.md + - docs/models/operations/getallmedialibraryfieldtype.md + - docs/models/operations/getallmedialibraryfilter.md + - docs/models/operations/getallmedialibrarygenre.md + - docs/models/operations/getallmedialibraryhasthumbnail.md + - docs/models/operations/getallmedialibraryimage.md + - docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md + - docs/models/operations/getallmedialibrarylibraryresponsetype.md + - docs/models/operations/getallmedialibrarylibrarytype.md + - docs/models/operations/getallmedialibrarymedia.md + - docs/models/operations/getallmedialibrarymediacontainer.md + - docs/models/operations/getallmedialibrarymeta.md + - docs/models/operations/getallmedialibrarymetadata.md + - docs/models/operations/getallmedialibraryoperator.md + - docs/models/operations/getallmedialibraryoptimizedforstreaming.md + - docs/models/operations/getallmedialibraryoptimizedforstreaming1.md + - docs/models/operations/getallmedialibrarypart.md + - docs/models/operations/getallmedialibraryqueryparamincludemeta.md + - docs/models/operations/getallmedialibraryqueryparamtype.md + - docs/models/operations/getallmedialibraryrequest.md + - docs/models/operations/getallmedialibraryresponse.md + - docs/models/operations/getallmedialibraryresponsebody.md + - docs/models/operations/getallmedialibraryrole.md + - docs/models/operations/getallmedialibrarysort.md + - docs/models/operations/getallmedialibrarystream.md + - docs/models/operations/getallmedialibrarytype.md + - docs/models/operations/getallmedialibraryultrablurcolors.md + - docs/models/operations/getallmedialibrarywriter.md - docs/models/operations/getavailableclientsmediacontainer.md - docs/models/operations/getavailableclientsresponse.md - docs/models/operations/getavailableclientsresponsebody.md @@ -535,11 +573,16 @@ generatedFiles: - docs/models/operations/getmediametadatacountry.md - docs/models/operations/getmediametadatadirector.md - docs/models/operations/getmediametadatagenre.md + - docs/models/operations/getmediametadataguids.md + - docs/models/operations/getmediametadatahasthumbnail.md - docs/models/operations/getmediametadataimage.md + - docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md - docs/models/operations/getmediametadatalocation.md - docs/models/operations/getmediametadatamedia.md - docs/models/operations/getmediametadatamediacontainer.md - docs/models/operations/getmediametadatametadata.md + - docs/models/operations/getmediametadataoptimizedforstreaming.md + - docs/models/operations/getmediametadataoptimizedforstreaming1.md - docs/models/operations/getmediametadatapart.md - docs/models/operations/getmediametadatarequest.md - docs/models/operations/getmediametadataresponse.md @@ -651,6 +694,8 @@ generatedFiles: - docs/models/operations/getsearchalllibrariesmetadatarating.md - docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md - docs/models/operations/getsearchalllibrariespart.md + - docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md + - docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md - docs/models/operations/getsearchalllibrariesrequest.md - docs/models/operations/getsearchalllibrariesresponse.md - docs/models/operations/getsearchalllibrariesresponsebody.md @@ -763,6 +808,7 @@ generatedFiles: - docs/models/operations/home.md - docs/models/operations/hub.md - docs/models/operations/image.md + - docs/models/operations/includeadvanced.md - docs/models/operations/includecollections.md - docs/models/operations/includedetails.md - docs/models/operations/includeexternalmedia.md @@ -793,9 +839,11 @@ generatedFiles: - docs/models/operations/metadatarating.md - docs/models/operations/minsize.md - docs/models/operations/myplex.md + - docs/models/operations/one.md - docs/models/operations/onlytransient.md - docs/models/operations/operator.md - docs/models/operations/optimizedforstreaming.md + - docs/models/operations/optimizedforstreaming1.md - docs/models/operations/owned.md - docs/models/operations/part.md - docs/models/operations/pastsubscription.md @@ -835,11 +883,12 @@ generatedFiles: - docs/models/operations/queryparamforce.md - docs/models/operations/queryparamincludecollections.md - docs/models/operations/queryparamincludeexternalmedia.md + - docs/models/operations/queryparamincludeguids.md - docs/models/operations/queryparamincludemeta.md - 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 - docs/models/operations/restricted.md @@ -946,6 +995,7 @@ generatedFiles: - src/plex_api_client/models/errors/enablepapertrail.py - src/plex_api_client/models/errors/get_actors_library.py - src/plex_api_client/models/errors/get_all_libraries.py + - src/plex_api_client/models/errors/get_all_media_library.py - src/plex_api_client/models/errors/get_banner_image.py - src/plex_api_client/models/errors/get_countries_library.py - src/plex_api_client/models/errors/get_genres_library.py @@ -1027,6 +1077,7 @@ generatedFiles: - src/plex_api_client/models/operations/enablepapertrail.py - src/plex_api_client/models/operations/get_actors_library.py - src/plex_api_client/models/operations/get_all_libraries.py + - src/plex_api_client/models/operations/get_all_media_library.py - src/plex_api_client/models/operations/get_banner_image.py - src/plex_api_client/models/operations/get_countries_library.py - src/plex_api_client/models/operations/get_genres_library.py @@ -1495,7 +1546,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: @@ -1566,7 +1617,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}], "size": 50, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "ratingKey": 59398, "key": "/library/metadata/59398", "guid": "plex://movie/5e161a83bea6ac004126e148", "studio": "Marvel Studios", "type": "movie", "title": "Ant-Man and the Wasp: Quantumania", "contentRating": "PG-13", "summary": "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", "rating": 4.7, "audienceRating": 8.3, "year": 2023, "tagline": "Witness the beginning of a new dynasty.", "thumb": "/library/metadata/59398/thumb/1681888010", "art": "/library/metadata/59398/art/1681888010", "duration": 7474422, "originallyAvailableAt": "2023-02-15T00:00:00Z", "addedAt": 1681803215, "updatedAt": 1681888010, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/59399", "ratingImage": "rottentomatoes://image.rating.rotten", "Media": [{"id": 120345, "duration": 7474422, "bitrate": 3623, "width": 1920, "height": 804, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "ac3", "videoCodec": "h264", "videoResolution": 1080, "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "videoProfile": "high", "Part": [{"id": 120353, "key": "/library/parts/120353/1681803203/file.mp4", "duration": 7474422, "file": "/movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4", "size": 3395307162, "container": "mp4", "hasThumbnail": 1, "videoProfile": "high"}]}], "Genre": [{"tag": "Comedy"}], "Director": [{"tag": "Peyton Reed"}], "Writer": [{"tag": "Jeff Loveness"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Role": [{"tag": "Paul Rudd"}]}]}} + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}], "size": 50, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "ratingKey": 59398, "key": "/library/metadata/59398", "guid": "plex://movie/5e161a83bea6ac004126e148", "studio": "Marvel Studios", "type": "movie", "title": "Ant-Man and the Wasp: Quantumania", "contentRating": "PG-13", "summary": "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", "rating": 4.7, "audienceRating": 8.3, "year": 2023, "tagline": "Witness the beginning of a new dynasty.", "thumb": "/library/metadata/59398/thumb/1681888010", "art": "/library/metadata/59398/art/1681888010", "duration": 7474422, "originallyAvailableAt": "2023-02-15T00:00:00Z", "addedAt": 1681803215, "updatedAt": 1681888010, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/59399", "ratingImage": "rottentomatoes://image.rating.rotten", "Media": [{"id": 120345, "duration": 7474422, "bitrate": 3623, "width": 1920, "height": 804, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "ac3", "videoCodec": "h264", "videoResolution": 1080, "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "videoProfile": "high", "Part": [{"id": 120353, "key": "/library/parts/120353/1681803203/file.mp4", "duration": 7474422, "file": "/movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4", "size": 3395307162, "container": "mp4", "hasThumbnail": 1, "videoProfile": "high"}]}], "Genre": [{"tag": "Comedy"}], "Director": [{"tag": "Peyton Reed"}], "Writer": [{"tag": "Jeff Loveness"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Role": [{"tag": "Paul Rudd"}]}]}} "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}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -1618,7 +1669,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}], "size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "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": 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": 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": []}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"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"}, {"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"}], "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": "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"}, {"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": 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": 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": 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"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"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"}, {"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": [{"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"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}]}]}}} + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}], "size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "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": 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": 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": []}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"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"}, {"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"}], "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": "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"}, {"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": 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": 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": 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"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"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"}, {"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": [{"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"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "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"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}]}]}}} "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}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2121,7 +2172,7 @@ examples: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Shows (Reality)", "title2": "By Genre", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/10/all?genre=89", "key": "89", "title": "Action", "type": "genre"}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/10/all?genre=89", "key": "89", "title": "Action", "type": "genre"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2135,7 +2186,7 @@ examples: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Country", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/2/all?country=15491", "key": "15491", "title": "Japan"}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/2/all?country=15491", "key": "15491", "title": "Japan"}]}} "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": @@ -2199,10 +2250,31 @@ 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, "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": 1625505101, "updatedAt": 1736487993, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "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": 1625505101, "updatedAt": 1736487993, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "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": 1625505101, "updatedAt": 1736487993, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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", "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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", "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"}]}]}} "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": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + get-all-media-library: + speakeasy-default-get-all-media-library: + parameters: + path: + sectionKey: 9518 + query: + type: 2 + includeMeta: 1 + includeGuids: 1 + includeAdvanced: 1 + includeCollections: 1 + includeExternalMedia: 1 + X-Plex-Container-Start: 0 + 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"}]}]}} + "400": + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + "401": + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} examplesVersion: 1.0.0 generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 54638fd..aec86bf 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -13,7 +13,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false python: - version: 0.22.1 + version: 0.23.0 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 1723476..471d4a3 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.487.1 +speakeasyVersion: 1.488.0 sources: my-source: sourceNamespace: my-source @@ -8,19 +8,19 @@ sources: - latest plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 tags: - latest - - speakeasy-sdk-regen-1738972888 + - speakeasy-sdk-regen-1739232088 targets: plexpy: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 codeSamplesNamespace: code-samples-python-plexpy - codeSamplesRevisionDigest: sha256:ad966264da2ccb1f43501d2435d91d5bf795538ec83e99a3f4a2f97acee1293a + codeSamplesRevisionDigest: sha256:ea7739f0814edaf28e2308c9478c39068ee69344b69a79449ce4540562cf9f37 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index cd8eb96..7662bfe 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,7 @@ asyncio.run(main()) * [get_library_details](docs/sdks/library/README.md#get_library_details) - Get Library Details * [delete_library](docs/sdks/library/README.md#delete_library) - Delete Library Section * [get_library_items](docs/sdks/library/README.md#get_library_items) - Get Library Items +* [get_all_media_library](docs/sdks/library/README.md#get_all_media_library) - Get all media of library * [get_refresh_library_metadata](docs/sdks/library/README.md#get_refresh_library_metadata) - Refresh Metadata Of The Library * [get_search_library](docs/sdks/library/README.md#get_search_library) - Search Library * [get_genres_library](docs/sdks/library/README.md#get_genres_library) - Get Genres of library media diff --git a/RELEASES.md b/RELEASES.md index d49ec2b..01bd521 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -938,4 +938,14 @@ Based on: ### Generated - [python v0.22.1] . ### Releases -- [PyPI v0.22.1] https://pypi.org/project/plex-api-client/0.22.1 - . \ No newline at end of file +- [PyPI v0.22.1] https://pypi.org/project/plex-api-client/0.22.1 - . + +## 2025-02-11 00:01:13 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.488.0 (2.506.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.23.0] . +### Releases +- [PyPI v0.23.0] https://pypi.org/project/plex-api-client/0.23.0 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index 00bf978..b56ba36 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -779,6 +779,28 @@ actions: assert res.object is not None + # Handle response + print(res.object) + - target: $["paths"]["/library/sections/{sectionKey}/all"]["get"] + update: + x-codeSamples: + - lang: python + label: library + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import operations + + with PlexAPI( + access_token="", + ) as plex_api: + + res = plex_api.library.get_all_media_library(request={ + "section_key": 9518, + "type": operations.GetAllMediaLibraryQueryParamType.TV_SHOW, + }) + + assert res.object is not None + # Handle response print(res.object) - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"] diff --git a/docs/models/errors/getallmedialibrarybadrequest.md b/docs/models/errors/getallmedialibrarybadrequest.md new file mode 100644 index 0000000..5892881 --- /dev/null +++ b/docs/models/errors/getallmedialibrarybadrequest.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryBadRequest + +Bad Request - A parameter was not specified, or was specified incorrectly. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `errors` | List[[errors.GetAllMediaLibraryErrors](../../models/errors/getallmedialibraryerrors.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/getallmedialibraryerrors.md b/docs/models/errors/getallmedialibraryerrors.md new file mode 100644 index 0000000..7647728 --- /dev/null +++ b/docs/models/errors/getallmedialibraryerrors.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryErrors + + +## 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/getallmedialibrarylibraryerrors.md b/docs/models/errors/getallmedialibrarylibraryerrors.md new file mode 100644 index 0000000..db1722c --- /dev/null +++ b/docs/models/errors/getallmedialibrarylibraryerrors.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryLibraryErrors + + +## 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/getallmedialibraryunauthorized.md b/docs/models/errors/getallmedialibraryunauthorized.md new file mode 100644 index 0000000..de70c85 --- /dev/null +++ b/docs/models/errors/getallmedialibraryunauthorized.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryUnauthorized + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `errors` | List[[errors.GetAllMediaLibraryLibraryErrors](../../models/errors/getallmedialibrarylibraryerrors.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/getactorslibrarymediacontainer.md b/docs/models/operations/getactorslibrarymediacontainer.md index ffcc6fd..ed9acb3 100644 --- a/docs/models/operations/getactorslibrarymediacontainer.md +++ b/docs/models/operations/getactorslibrarymediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `size` | *float* | :heavy_check_mark: | N/A | 50 | +| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | | `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | | `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | diff --git a/docs/models/operations/getallmedialibraryactivedirection.md b/docs/models/operations/getallmedialibraryactivedirection.md new file mode 100644 index 0000000..e0625cb --- /dev/null +++ b/docs/models/operations/getallmedialibraryactivedirection.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarycollection.md b/docs/models/operations/getallmedialibrarycollection.md new file mode 100644 index 0000000..3079ebe --- /dev/null +++ b/docs/models/operations/getallmedialibrarycollection.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryCollection + + +## Fields + +| 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/getallmedialibrarycountry.md b/docs/models/operations/getallmedialibrarycountry.md new file mode 100644 index 0000000..fb612be --- /dev/null +++ b/docs/models/operations/getallmedialibrarycountry.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryCountry + + +## 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 diff --git a/docs/models/operations/getallmedialibrarydefaultdirection.md b/docs/models/operations/getallmedialibrarydefaultdirection.md new file mode 100644 index 0000000..66bbe84 --- /dev/null +++ b/docs/models/operations/getallmedialibrarydefaultdirection.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarydirector.md b/docs/models/operations/getallmedialibrarydirector.md new file mode 100644 index 0000000..46088f7 --- /dev/null +++ b/docs/models/operations/getallmedialibrarydirector.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryDirector + + +## Fields + +| 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/getallmedialibraryfield.md b/docs/models/operations/getallmedialibraryfield.md new file mode 100644 index 0000000..f29ec17 --- /dev/null +++ b/docs/models/operations/getallmedialibraryfield.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryField + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | show.title | +| `title` | *str* | :heavy_check_mark: | N/A | Show Title | +| `type` | *str* | :heavy_check_mark: | N/A | string | +| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryfieldtype.md b/docs/models/operations/getallmedialibraryfieldtype.md new file mode 100644 index 0000000..fd2ec13 --- /dev/null +++ b/docs/models/operations/getallmedialibraryfieldtype.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryFieldType + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `type` | *str* | :heavy_check_mark: | N/A | tag | +| `operator` | List[[operations.GetAllMediaLibraryOperator](../../models/operations/getallmedialibraryoperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryfilter.md b/docs/models/operations/getallmedialibraryfilter.md new file mode 100644 index 0000000..9e9cb13 --- /dev/null +++ b/docs/models/operations/getallmedialibraryfilter.md @@ -0,0 +1,13 @@ +# GetAllMediaLibraryFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `filter_` | *str* | :heavy_check_mark: | N/A | genre | +| `filter_type` | *str* | :heavy_check_mark: | N/A | string | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | +| `title` | *str* | :heavy_check_mark: | N/A | Genre | +| `type` | *str* | :heavy_check_mark: | N/A | filter | +| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarygenre.md b/docs/models/operations/getallmedialibrarygenre.md new file mode 100644 index 0000000..4bbe902 --- /dev/null +++ b/docs/models/operations/getallmedialibrarygenre.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryGenre + + +## 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 diff --git a/docs/models/operations/getallmedialibraryhasthumbnail.md b/docs/models/operations/getallmedialibraryhasthumbnail.md new file mode 100644 index 0000000..95b5857 --- /dev/null +++ b/docs/models/operations/getallmedialibraryhasthumbnail.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryHasThumbnail + +Indicates if the part has a thumbnail. + + +## Values + +| Name | Value | +| ------- | ------- | +| `FALSE` | 0 | +| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryimage.md b/docs/models/operations/getallmedialibraryimage.md new file mode 100644 index 0000000..1262c8b --- /dev/null +++ b/docs/models/operations/getallmedialibraryimage.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryImage + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetAllMediaLibraryLibraryResponseType](../../models/operations/getallmedialibrarylibraryresponsetype.md) | :heavy_check_mark: | N/A | background | +| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md b/docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md new file mode 100644 index 0000000..660a75c --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetAllMediaLibraryOptimizedForStreaming1` + +```python +value: operations.GetAllMediaLibraryOptimizedForStreaming1 = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/getallmedialibrarylibraryresponsetype.md b/docs/models/operations/getallmedialibrarylibraryresponsetype.md new file mode 100644 index 0000000..effaf1c --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibraryresponsetype.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryLibraryResponseType + + +## Values + +| Name | Value | +| -------------- | -------------- | +| `COVER_POSTER` | coverPoster | +| `BACKGROUND` | background | +| `SNAPSHOT` | snapshot | +| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarylibrarytype.md b/docs/models/operations/getallmedialibrarylibrarytype.md new file mode 100644 index 0000000..b572e52 --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibrarytype.md @@ -0,0 +1,16 @@ +# GetAllMediaLibraryLibraryType + +The type of media content + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | movie | +| `TV_SHOW` | show | +| `SEASON` | season | +| `EPISODE` | episode | +| `ARTIST` | artist | +| `ALBUM` | album | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymedia.md b/docs/models/operations/getallmedialibrarymedia.md new file mode 100644 index 0000000..28a7456 --- /dev/null +++ b/docs/models/operations/getallmedialibrarymedia.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryMedia + + +## Fields + +| 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 | +| `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 | +| `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 diff --git a/docs/models/operations/getallmedialibrarymediacontainer.md b/docs/models/operations/getallmedialibrarymediacontainer.md new file mode 100644 index 0000000..d0037f9 --- /dev/null +++ b/docs/models/operations/getallmedialibrarymediacontainer.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `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 | +| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `library_section_id` | *int* | :heavy_check_mark: | The unique identifier for the library section. | 2 | +| `library_section_title` | *str* | :heavy_check_mark: | The title of the library section. | TV Series | +| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | +| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | +| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | +| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | +| `meta` | [Optional[operations.GetAllMediaLibraryMeta]](../../models/operations/getallmedialibrarymeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | +| `metadata` | List[[operations.GetAllMediaLibraryMetadata](../../models/operations/getallmedialibrarymetadata.md)] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymeta.md b/docs/models/operations/getallmedialibrarymeta.md new file mode 100644 index 0000000..33f582c --- /dev/null +++ b/docs/models/operations/getallmedialibrarymeta.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryMeta + +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `type` | List[[operations.GetAllMediaLibraryType](../../models/operations/getallmedialibrarytype.md)] | :heavy_minus_sign: | N/A | +| `field_type` | List[[operations.GetAllMediaLibraryFieldType](../../models/operations/getallmedialibraryfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymetadata.md b/docs/models/operations/getallmedialibrarymetadata.md new file mode 100644 index 0000000..a87b66c --- /dev/null +++ b/docs/models/operations/getallmedialibrarymetadata.md @@ -0,0 +1,74 @@ +# GetAllMediaLibraryMetadata + +Unknown + + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `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 | +| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | +| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | +| `type` | [operations.GetAllMediaLibraryLibraryType](../../models/operations/getallmedialibrarylibrarytype.md) | :heavy_check_mark: | N/A | movie | +| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | +| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | +| `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 | +| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | +| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | +| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `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 | +| `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 | +| `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 | +| `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 | +| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | +| `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 | +| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | +| `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 | +| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `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 | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `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 | +| `image` | List[[operations.GetAllMediaLibraryImage](../../models/operations/getallmedialibraryimage.md)] | :heavy_minus_sign: | N/A | | +| `ultra_blur_colors` | [Optional[operations.GetAllMediaLibraryUltraBlurColors]](../../models/operations/getallmedialibraryultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `media` | List[[operations.GetAllMediaLibraryMedia](../../models/operations/getallmedialibrarymedia.md)] | :heavy_minus_sign: | N/A | | +| `genre` | List[[operations.GetAllMediaLibraryGenre](../../models/operations/getallmedialibrarygenre.md)] | :heavy_minus_sign: | N/A | | +| `country` | List[[operations.GetAllMediaLibraryCountry](../../models/operations/getallmedialibrarycountry.md)] | :heavy_minus_sign: | N/A | | +| `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 | | +| `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/getallmedialibraryoperator.md b/docs/models/operations/getallmedialibraryoperator.md new file mode 100644 index 0000000..dee0988 --- /dev/null +++ b/docs/models/operations/getallmedialibraryoperator.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryOperator + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | = | +| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryoptimizedforstreaming.md b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md new file mode 100644 index 0000000..8de5266 --- /dev/null +++ b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.One` + +```python +value: operations.One = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md b/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md new file mode 100644 index 0000000..1779b09 --- /dev/null +++ b/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryOptimizedForStreaming1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarypart.md b/docs/models/operations/getallmedialibrarypart.md new file mode 100644 index 0000000..b458c1c --- /dev/null +++ b/docs/models/operations/getallmedialibrarypart.md @@ -0,0 +1,23 @@ +# GetAllMediaLibraryPart + + +## Fields + +| 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.GetAllMediaLibraryLibraryOptimizedForStreaming]](../../models/operations/getallmedialibrarylibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has_thumbnail` | [Optional[operations.GetAllMediaLibraryHasThumbnail]](../../models/operations/getallmedialibraryhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | List[[operations.GetAllMediaLibraryStream](../../models/operations/getallmedialibrarystream.md)] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryqueryparamincludemeta.md b/docs/models/operations/getallmedialibraryqueryparamincludemeta.md new file mode 100644 index 0000000..196afb0 --- /dev/null +++ b/docs/models/operations/getallmedialibraryqueryparamincludemeta.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryQueryParamIncludeMeta + +Adds the Meta object to the response + + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryqueryparamtype.md b/docs/models/operations/getallmedialibraryqueryparamtype.md new file mode 100644 index 0000000..61d7923 --- /dev/null +++ b/docs/models/operations/getallmedialibraryqueryparamtype.md @@ -0,0 +1,22 @@ +# GetAllMediaLibraryQueryParamType + +The type of media to retrieve or filter by. +1 = movie +2 = show +3 = season +4 = episode +E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | 1 | +| `TV_SHOW` | 2 | +| `SEASON` | 3 | +| `EPISODE` | 4 | +| `AUDIO` | 8 | +| `ALBUM` | 9 | +| `TRACK` | 10 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryrequest.md b/docs/models/operations/getallmedialibraryrequest.md new file mode 100644 index 0000000..7aeab19 --- /dev/null +++ b/docs/models/operations/getallmedialibraryrequest.md @@ -0,0 +1,16 @@ +# GetAllMediaLibraryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | +| `type` | [operations.GetAllMediaLibraryQueryParamType](../../models/operations/getallmedialibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `include_meta` | [Optional[operations.GetAllMediaLibraryQueryParamIncludeMeta]](../../models/operations/getallmedialibraryqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `include_guids` | [Optional[operations.QueryParamIncludeGuids]](../../models/operations/queryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | +| `include_advanced` | [Optional[operations.IncludeAdvanced]](../../models/operations/includeadvanced.md) | :heavy_minus_sign: | N/A | 1 | +| `include_collections` | [Optional[operations.QueryParamIncludeCollections]](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | N/A | 1 | +| `include_external_media` | [Optional[operations.QueryParamIncludeExternalMedia]](../../models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | N/A | 1 | +| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | +| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryresponse.md b/docs/models/operations/getallmedialibraryresponse.md new file mode 100644 index 0000000..e627709 --- /dev/null +++ b/docs/models/operations/getallmedialibraryresponse.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryResponse + + +## 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.GetAllMediaLibraryResponseBody]](../../models/operations/getallmedialibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryresponsebody.md b/docs/models/operations/getallmedialibraryresponsebody.md new file mode 100644 index 0000000..4f8f37b --- /dev/null +++ b/docs/models/operations/getallmedialibraryresponsebody.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryResponseBody + +Successful response containing media container data. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetAllMediaLibraryMediaContainer]](../../models/operations/getallmedialibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryrole.md b/docs/models/operations/getallmedialibraryrole.md new file mode 100644 index 0000000..8a3d8c7 --- /dev/null +++ b/docs/models/operations/getallmedialibraryrole.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryRole + + +## 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 diff --git a/docs/models/operations/getallmedialibrarysort.md b/docs/models/operations/getallmedialibrarysort.md new file mode 100644 index 0000000..17b6130 --- /dev/null +++ b/docs/models/operations/getallmedialibrarysort.md @@ -0,0 +1,15 @@ +# GetAllMediaLibrarySort + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | titleSort | +| `title` | *str* | :heavy_check_mark: | N/A | Title | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `active_direction` | [Optional[operations.GetAllMediaLibraryActiveDirection]](../../models/operations/getallmedialibraryactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `default_direction` | [Optional[operations.GetAllMediaLibraryDefaultDirection]](../../models/operations/getallmedialibrarydefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarystream.md b/docs/models/operations/getallmedialibrarystream.md new file mode 100644 index 0000000..2a2225e --- /dev/null +++ b/docs/models/operations/getallmedialibrarystream.md @@ -0,0 +1,54 @@ +# GetAllMediaLibraryStream + + +## Fields + +| 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 | +| `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 | +| `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 | +| `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 | +| `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/getallmedialibrarytype.md b/docs/models/operations/getallmedialibrarytype.md new file mode 100644 index 0000000..aa8788c --- /dev/null +++ b/docs/models/operations/getallmedialibrarytype.md @@ -0,0 +1,15 @@ +# GetAllMediaLibraryType + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *str* | :heavy_check_mark: | N/A | filter | +| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *bool* | :heavy_check_mark: | N/A | false | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | +| `filter_` | List[[operations.GetAllMediaLibraryFilter](../../models/operations/getallmedialibraryfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[operations.GetAllMediaLibrarySort](../../models/operations/getallmedialibrarysort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.GetAllMediaLibraryField](../../models/operations/getallmedialibraryfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryultrablurcolors.md b/docs/models/operations/getallmedialibraryultrablurcolors.md new file mode 100644 index 0000000..3cbcb63 --- /dev/null +++ b/docs/models/operations/getallmedialibraryultrablurcolors.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryUltraBlurColors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | +| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | +| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | +| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarywriter.md b/docs/models/operations/getallmedialibrarywriter.md new file mode 100644 index 0000000..4c6e801 --- /dev/null +++ b/docs/models/operations/getallmedialibrarywriter.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryWriter + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *str* | :heavy_check_mark: | The role of Writer | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibrarymediacontainer.md b/docs/models/operations/getcountrieslibrarymediacontainer.md index ff9990b..300c6c5 100644 --- a/docs/models/operations/getcountrieslibrarymediacontainer.md +++ b/docs/models/operations/getcountrieslibrarymediacontainer.md @@ -5,18 +5,16 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `size` | *float* | :heavy_check_mark: | N/A | 50 | -| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `allow_sync` | *bool* | :heavy_check_mark: | N/A | false | -| `art` | *str* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg | -| `content` | *str* | :heavy_check_mark: | N/A | secondary | -| `media_tag_prefix` | *str* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | N/A | 1734362201 | -| `nocache` | *bool* | :heavy_check_mark: | N/A | true | -| `thumb` | *str* | :heavy_check_mark: | N/A | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | N/A | TV Series | -| `title2` | *str* | :heavy_check_mark: | N/A | By Country | -| `view_group` | *str* | :heavy_check_mark: | N/A | secondary | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | | -| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | +| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | +| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | | `directory` | List[[operations.GetCountriesLibraryDirectory](../../models/operations/getcountrieslibrarydirectory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibrarymediacontainer.md b/docs/models/operations/getgenreslibrarymediacontainer.md index 33c3fdf..0067f53 100644 --- a/docs/models/operations/getgenreslibrarymediacontainer.md +++ b/docs/models/operations/getgenreslibrarymediacontainer.md @@ -5,18 +5,16 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `size` | *float* | :heavy_check_mark: | N/A | 50 | -| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `allow_sync` | *bool* | :heavy_check_mark: | N/A | false | -| `art` | *str* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg | -| `content` | *str* | :heavy_check_mark: | N/A | secondary | -| `media_tag_prefix` | *str* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | N/A | 1734362201 | -| `nocache` | *bool* | :heavy_check_mark: | N/A | true | -| `thumb` | *str* | :heavy_check_mark: | N/A | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | N/A | TV Shows (Reality) | -| `title2` | *str* | :heavy_check_mark: | N/A | By Genre | -| `view_group` | *str* | :heavy_check_mark: | N/A | secondary | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | | -| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | +| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | +| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | | `directory` | List[[operations.GetGenresLibraryDirectory](../../models/operations/getgenreslibrarydirectory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsfilter.md b/docs/models/operations/getlibraryitemsfilter.md index 69a0d76..797a7c5 100644 --- a/docs/models/operations/getlibraryitemsfilter.md +++ b/docs/models/operations/getlibraryitemsfilter.md @@ -9,4 +9,5 @@ | `filter_type` | *str* | :heavy_check_mark: | N/A | string | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `type` | *str* | :heavy_check_mark: | N/A | filter | +| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarytype.md b/docs/models/operations/getlibraryitemslibrarytype.md index 5a15184..cb8e9e8 100644 --- a/docs/models/operations/getlibraryitemslibrarytype.md +++ b/docs/models/operations/getlibraryitemslibrarytype.md @@ -11,4 +11,6 @@ The type of media content | `MOVIE` | movie | | `TV_SHOW` | show | | `SEASON` | season | -| `EPISODE` | episode | \ No newline at end of file +| `EPISODE` | episode | +| `ARTIST` | artist | +| `ALBUM` | album | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemstype.md b/docs/models/operations/getlibraryitemstype.md index d308beb..5dae156 100644 --- a/docs/models/operations/getlibraryitemstype.md +++ b/docs/models/operations/getlibraryitemstype.md @@ -6,9 +6,10 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | show | +| `type` | *str* | :heavy_check_mark: | N/A | filter | | `title` | *str* | :heavy_check_mark: | N/A | TV Shows | | `active` | *bool* | :heavy_check_mark: | N/A | false | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | | `filter_` | List[[operations.GetLibraryItemsFilter](../../models/operations/getlibraryitemsfilter.md)] | :heavy_minus_sign: | N/A | | | `sort` | List[[operations.GetLibraryItemsSort](../../models/operations/getlibraryitemssort.md)] | :heavy_minus_sign: | N/A | | | `field` | List[[operations.GetLibraryItemsField](../../models/operations/getlibraryitemsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataguids.md b/docs/models/operations/getmediametadataguids.md new file mode 100644 index 0000000..48ab504 --- /dev/null +++ b/docs/models/operations/getmediametadataguids.md @@ -0,0 +1,8 @@ +# GetMediaMetaDataGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *str* | :heavy_check_mark: | The GUID value. | imdb://tt3032476 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatahasthumbnail.md b/docs/models/operations/getmediametadatahasthumbnail.md new file mode 100644 index 0000000..47ecf9a --- /dev/null +++ b/docs/models/operations/getmediametadatahasthumbnail.md @@ -0,0 +1,11 @@ +# GetMediaMetaDataHasThumbnail + +Indicates if the part has a thumbnail. + + +## Values + +| Name | Value | +| ------- | ------- | +| `FALSE` | 0 | +| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md new file mode 100644 index 0000000..a5102da --- /dev/null +++ b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetMediaMetaDataLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetMediaMetaDataOptimizedForStreaming1` + +```python +value: operations.GetMediaMetaDataOptimizedForStreaming1 = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/getmediametadatamedia.md b/docs/models/operations/getmediametadatamedia.md index 0357a6a..eddec02 100644 --- a/docs/models/operations/getmediametadatamedia.md +++ b/docs/models/operations/getmediametadatamedia.md @@ -3,20 +3,24 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *int* | :heavy_check_mark: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *int* | :heavy_check_mark: | Bitrate in bits per second. | 25512 | -| `width` | *int* | :heavy_check_mark: | Video width in pixels. | 3840 | -| `height` | *int* | :heavy_check_mark: | Video height in pixels. | 1602 | -| `aspect_ratio` | *float* | :heavy_check_mark: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *int* | :heavy_check_mark: | Number of audio channels. | 6 | -| `audio_codec` | *str* | :heavy_check_mark: | Audio codec used. | eac3 | -| `video_codec` | *str* | :heavy_check_mark: | Video codec used. | hevc | -| `video_resolution` | *str* | :heavy_check_mark: | Video resolution (e.g., 4k). | 4k | -| `container` | *str* | :heavy_check_mark: | File container type. | mkv | -| `video_frame_rate` | *str* | :heavy_check_mark: | Frame rate of the video (e.g., 24p). | 24p | -| `video_profile` | *str* | :heavy_check_mark: | Video profile (e.g., main 10). | main 10 | -| `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. | | \ No newline at end of file +| 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 | +| `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 | +| `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 diff --git a/docs/models/operations/getmediametadatamediacontainer.md b/docs/models/operations/getmediametadatamediacontainer.md index 0c03516..7e333d8 100644 --- a/docs/models/operations/getmediametadatamediacontainer.md +++ b/docs/models/operations/getmediametadatamediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *float* | :heavy_check_mark: | N/A | 50 | +| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `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 | | `library_section_id` | *int* | :heavy_check_mark: | The unique identifier for the library section. | 2 | diff --git a/docs/models/operations/getmediametadatametadata.md b/docs/models/operations/getmediametadatametadata.md index 4ed1425..a081ee3 100644 --- a/docs/models/operations/getmediametadatametadata.md +++ b/docs/models/operations/getmediametadatametadata.md @@ -13,21 +13,15 @@ | `library_section_title` | *str* | :heavy_check_mark: | The title of the library section. | TV Series | | `library_section_id` | *int* | :heavy_check_mark: | The ID of the library section. | 2 | | `library_section_key` | *str* | :heavy_check_mark: | The key of the library section. | /library/sections/2 | -| `content_rating` | *str* | :heavy_check_mark: | The content rating (e.g., TV-MA). | TV-MA | | `summary` | *str* | :heavy_check_mark: | A summary of the content. | 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. | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the content. | 8.7 | | `year` | *int* | :heavy_check_mark: | The release year. | 2015 | | `thumb` | *str* | :heavy_check_mark: | URL of the thumbnail image. | /library/metadata/44288/thumb/1736487993 | | `art` | *str* | :heavy_check_mark: | URL of the art image. | /library/metadata/44288/art/1736487993 | | `duration` | *int* | :heavy_check_mark: | Duration of the content in milliseconds. | 2700000 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_check_mark: | The original release date. | 2015-02-08 | -| `added_at` | *int* | :heavy_check_mark: | Unix timestamp when the item was added. | 1625505101 | -| `updated_at` | *int* | :heavy_check_mark: | Unix timestamp when the item was last updated. | 1736487993 | -| `audience_rating_image` | *str* | :heavy_check_mark: | The URL for the audience rating image. | themoviedb://image.rating | +| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | +| `updated_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | | `image` | List[[operations.GetMediaMetaDataImage](../../models/operations/getmediametadataimage.md)] | :heavy_check_mark: | An array of image objects. | | | `ultra_blur_colors` | [operations.GetMediaMetaDataUltraBlurColors](../../models/operations/getmediametadataultrablurcolors.md) | :heavy_check_mark: | N/A | | -| `guids` | List[[operations.Guids](../../models/operations/guids.md)] | :heavy_check_mark: | An array of GUID objects. | | -| `rating` | List[[operations.Rating](../../models/operations/rating.md)] | :heavy_check_mark: | An array of rating objects. | | | `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent of this metadata item. | 48047 | | `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent of this metadata item. | 45520 | | `parent_guid` | *Optional[str]* | :heavy_minus_sign: | A GUID identifying the parent entity (e.g., season) for the item. | plex://season/618b89208dde18df707ad15c | @@ -38,19 +32,25 @@ | `slug` | *Optional[str]* | :heavy_minus_sign: | A URL-friendly identifier for the item. | better-call-saul | | `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the content. | Sony Pictures Television | | `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the content. | Wicked: Part I | +| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating (e.g., TV-MA). | TV-MA | | `index` | *Optional[int]* | :heavy_minus_sign: | The index or order of the item. | 1 | | `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent entity (typically the show's title). | Alice in Borderland | | `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent entity (typically the season's title). | Season 2 | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | The audience rating for the content. | 8.7 | | `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times the item has been viewed. | 4 | | `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times the item has been skipped. | 1 | | `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of when the item was last viewed. | 1625764795 | +| `rating` | *Optional[float]* | :heavy_minus_sign: | The general rating | 6 | +| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). | rottentomatoes://image.rating.ripe | | `tagline` | *Optional[str]* | :heavy_minus_sign: | The tagline of the content. | Make the call | | `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | | `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/134704 | | `theme` | *Optional[str]* | :heavy_minus_sign: | URL of the theme image. | /library/metadata/44288/theme/1736487993 | +| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date. | 2015-02-08 | | `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The total number of episodes (or leaves). | 63 | | `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of episodes that have been viewed. | 4 | | `child_count` | *Optional[int]* | :heavy_minus_sign: | The number of child items. | 6 | +| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | themoviedb://image.rating | | `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index number of the parent entity, which could indicate its order or position. | 2 | | `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The URL of the parent's thumbnail image. | /library/metadata/48047/thumb/1671800243 | | `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The URL of the grandparent's thumbnail image. | /library/metadata/45520/thumb/1736488003 | @@ -58,6 +58,8 @@ | `media` | List[[operations.GetMediaMetaDataMedia](../../models/operations/getmediametadatamedia.md)] | :heavy_minus_sign: | N/A | | | `genre` | List[[operations.GetMediaMetaDataGenre](../../models/operations/getmediametadatagenre.md)] | :heavy_minus_sign: | An array of genre tags. | | | `country` | List[[operations.GetMediaMetaDataCountry](../../models/operations/getmediametadatacountry.md)] | :heavy_minus_sign: | An array of country tags. | | +| `guids` | List[[operations.GetMediaMetaDataGuids](../../models/operations/getmediametadataguids.md)] | :heavy_minus_sign: | An array of GUID objects. | | +| `ratings` | List[[operations.Ratings](../../models/operations/ratings.md)] | :heavy_minus_sign: | An array of rating objects. | | | `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. | | diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming.md b/docs/models/operations/getmediametadataoptimizedforstreaming.md new file mode 100644 index 0000000..9ca0f9a --- /dev/null +++ b/docs/models/operations/getmediametadataoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetMediaMetaDataOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.OptimizedForStreaming1` + +```python +value: operations.OptimizedForStreaming1 = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming1.md b/docs/models/operations/getmediametadataoptimizedforstreaming1.md new file mode 100644 index 0000000..67a4a97 --- /dev/null +++ b/docs/models/operations/getmediametadataoptimizedforstreaming1.md @@ -0,0 +1,9 @@ +# GetMediaMetaDataOptimizedForStreaming1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatapart.md b/docs/models/operations/getmediametadatapart.md index bad432e..9c9281e 100644 --- a/docs/models/operations/getmediametadatapart.md +++ b/docs/models/operations/getmediametadatapart.md @@ -3,16 +3,21 @@ ## Fields -| 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 | -| `duration` | *int* | :heavy_check_mark: | Duration of the part in milliseconds. | 9610350 | -| `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 | -| `container` | *str* | :heavy_check_mark: | Container format of the part. | mkv | -| `video_profile` | *str* | :heavy_check_mark: | Video profile for the part. | main 10 | -| `stream` | List[[operations.GetMediaMetaDataStream](../../models/operations/getmediametadatastream.md)] | :heavy_check_mark: | An array of streams for this part. | | -| `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 | \ 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.GetMediaMetaDataLibraryOptimizedForStreaming]](../../models/operations/getmediametadatalibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has_thumbnail` | [Optional[operations.GetMediaMetaDataHasThumbnail]](../../models/operations/getmediametadatahasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | List[[operations.GetMediaMetaDataStream](../../models/operations/getmediametadatastream.md)] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatastream.md b/docs/models/operations/getmediametadatastream.md index 8645aaf..7cf297f 100644 --- a/docs/models/operations/getmediametadatastream.md +++ b/docs/models/operations/getmediametadatastream.md @@ -9,13 +9,14 @@ | `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 | -| `bitrate` | *int* | :heavy_check_mark: | Bitrate of the stream. | 24743 | | `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 | +| `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 | diff --git a/docs/models/operations/getrecentlyaddedfilter.md b/docs/models/operations/getrecentlyaddedfilter.md index 07d7f20..6367526 100644 --- a/docs/models/operations/getrecentlyaddedfilter.md +++ b/docs/models/operations/getrecentlyaddedfilter.md @@ -9,4 +9,5 @@ | `filter_type` | *str* | :heavy_check_mark: | N/A | string | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `type` | *str* | :heavy_check_mark: | N/A | filter | +| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubstype.md b/docs/models/operations/getrecentlyaddedhubstype.md index 44e2f8e..7ef2bec 100644 --- a/docs/models/operations/getrecentlyaddedhubstype.md +++ b/docs/models/operations/getrecentlyaddedhubstype.md @@ -11,4 +11,6 @@ The type of media content | `MOVIE` | movie | | `TV_SHOW` | show | | `SEASON` | season | -| `EPISODE` | episode | \ No newline at end of file +| `EPISODE` | episode | +| `ARTIST` | artist | +| `ALBUM` | album | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryfilter.md b/docs/models/operations/getrecentlyaddedlibraryfilter.md index 00bd617..d55c6af 100644 --- a/docs/models/operations/getrecentlyaddedlibraryfilter.md +++ b/docs/models/operations/getrecentlyaddedlibraryfilter.md @@ -9,4 +9,5 @@ | `filter_type` | *str* | :heavy_check_mark: | N/A | string | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `type` | *str* | :heavy_check_mark: | N/A | filter | +| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarytype.md b/docs/models/operations/getrecentlyaddedlibrarytype.md index 6a9a08a..8f8a1f8 100644 --- a/docs/models/operations/getrecentlyaddedlibrarytype.md +++ b/docs/models/operations/getrecentlyaddedlibrarytype.md @@ -6,9 +6,10 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | show | +| `type` | *str* | :heavy_check_mark: | N/A | filter | | `title` | *str* | :heavy_check_mark: | N/A | TV Shows | | `active` | *bool* | :heavy_check_mark: | N/A | false | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | | `filter_` | List[[operations.GetRecentlyAddedLibraryFilter](../../models/operations/getrecentlyaddedlibraryfilter.md)] | :heavy_minus_sign: | N/A | | | `sort` | List[[operations.Sort](../../models/operations/sort.md)] | :heavy_minus_sign: | N/A | | | `field` | List[[operations.FieldT](../../models/operations/fieldt.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmediacontainer.md b/docs/models/operations/getrecentlyaddedmediacontainer.md index 0139433..1599def 100644 --- a/docs/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/models/operations/getrecentlyaddedmediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *float* | :heavy_check_mark: | N/A | 50 | +| `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 | diff --git a/docs/models/operations/getrecentlyaddedtype.md b/docs/models/operations/getrecentlyaddedtype.md index 5b50cfb..5d6a905 100644 --- a/docs/models/operations/getrecentlyaddedtype.md +++ b/docs/models/operations/getrecentlyaddedtype.md @@ -6,9 +6,10 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | show | +| `type` | *str* | :heavy_check_mark: | N/A | filter | | `title` | *str* | :heavy_check_mark: | N/A | TV Shows | | `active` | *bool* | :heavy_check_mark: | N/A | false | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | | `filter_` | List[[operations.GetRecentlyAddedFilter](../../models/operations/getrecentlyaddedfilter.md)] | :heavy_minus_sign: | N/A | | | `sort` | List[[operations.GetRecentlyAddedSort](../../models/operations/getrecentlyaddedsort.md)] | :heavy_minus_sign: | N/A | | | `field` | List[[operations.GetRecentlyAddedField](../../models/operations/getrecentlyaddedfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md b/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md new file mode 100644 index 0000000..4e0bd5e --- /dev/null +++ b/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md @@ -0,0 +1,11 @@ +# GetSearchAllLibrariesQueryParamIncludeCollections + +Whether to include collections in the search results. + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md b/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md new file mode 100644 index 0000000..bc82aa8 --- /dev/null +++ b/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md @@ -0,0 +1,11 @@ +# GetSearchAllLibrariesQueryParamIncludeExternalMedia + +Whether to include external media in the search results. + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesrequest.md b/docs/models/operations/getsearchalllibrariesrequest.md index 90864fa..e134276 100644 --- a/docs/models/operations/getsearchalllibrariesrequest.md +++ b/docs/models/operations/getsearchalllibrariesrequest.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The search query term. | | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `limit` | *Optional[int]* | :heavy_minus_sign: | Limit the number of results returned. | | -| `search_types` | List[[operations.SearchTypes](../../models/operations/searchtypes.md)] | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | -| `include_collections` | [Optional[operations.QueryParamIncludeCollections]](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | -| `include_external_media` | [Optional[operations.QueryParamIncludeExternalMedia]](../../models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search query term. | | +| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Limit the number of results returned. | | +| `search_types` | List[[operations.SearchTypes](../../models/operations/searchtypes.md)] | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | +| `include_collections` | [Optional[operations.GetSearchAllLibrariesQueryParamIncludeCollections]](../../models/operations/getsearchalllibrariesqueryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | +| `include_external_media` | [Optional[operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia]](../../models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariestype.md b/docs/models/operations/getsearchalllibrariestype.md index c79bb31..1d667b8 100644 --- a/docs/models/operations/getsearchalllibrariestype.md +++ b/docs/models/operations/getsearchalllibrariestype.md @@ -11,4 +11,6 @@ The type of media content | `MOVIE` | movie | | `TV_SHOW` | show | | `SEASON` | season | -| `EPISODE` | episode | \ No newline at end of file +| `EPISODE` | episode | +| `ARTIST` | artist | +| `ALBUM` | album | \ No newline at end of file diff --git a/docs/models/operations/guids.md b/docs/models/operations/guids.md index b90a6c4..d520c69 100644 --- a/docs/models/operations/guids.md +++ b/docs/models/operations/guids.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *str* | :heavy_check_mark: | The GUID value. | imdb://tt3032476 | \ No newline at end of file +| 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/includeadvanced.md b/docs/models/operations/includeadvanced.md new file mode 100644 index 0000000..6186f64 --- /dev/null +++ b/docs/models/operations/includeadvanced.md @@ -0,0 +1,9 @@ +# IncludeAdvanced + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/one.md b/docs/models/operations/one.md new file mode 100644 index 0000000..bfb3ca2 --- /dev/null +++ b/docs/models/operations/one.md @@ -0,0 +1,9 @@ +# One + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/optimizedforstreaming1.md b/docs/models/operations/optimizedforstreaming1.md new file mode 100644 index 0000000..7cb5085 --- /dev/null +++ b/docs/models/operations/optimizedforstreaming1.md @@ -0,0 +1,9 @@ +# OptimizedForStreaming1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludecollections.md b/docs/models/operations/queryparamincludecollections.md index feba036..7eccbdf 100644 --- a/docs/models/operations/queryparamincludecollections.md +++ b/docs/models/operations/queryparamincludecollections.md @@ -1,7 +1,5 @@ # QueryParamIncludeCollections -Whether to include collections in the search results. - ## Values diff --git a/docs/models/operations/queryparamincludeexternalmedia.md b/docs/models/operations/queryparamincludeexternalmedia.md index a5041fa..27aa7f1 100644 --- a/docs/models/operations/queryparamincludeexternalmedia.md +++ b/docs/models/operations/queryparamincludeexternalmedia.md @@ -1,7 +1,5 @@ # QueryParamIncludeExternalMedia -Whether to include external media in the search results. - ## Values diff --git a/docs/models/operations/queryparamincludeguids.md b/docs/models/operations/queryparamincludeguids.md new file mode 100644 index 0000000..8af8dd1 --- /dev/null +++ b/docs/models/operations/queryparamincludeguids.md @@ -0,0 +1,12 @@ +# QueryParamIncludeGuids + +Adds the Guid object to the response + + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/rating.md b/docs/models/operations/ratings.md similarity index 99% rename from docs/models/operations/rating.md rename to docs/models/operations/ratings.md index d74c893..459f2a9 100644 --- a/docs/models/operations/rating.md +++ b/docs/models/operations/ratings.md @@ -1,4 +1,4 @@ -# Rating +# Ratings ## Fields diff --git a/docs/models/operations/tag.md b/docs/models/operations/tag.md index 6693065..b736af3 100644 --- a/docs/models/operations/tag.md +++ b/docs/models/operations/tag.md @@ -7,7 +7,6 @@ A key representing a specific tag within the section. | Name | Value | | ----------------- | ----------------- | -| `ALL` | all | | `UNWATCHED` | unwatched | | `NEWEST` | newest | | `RECENTLY_ADDED` | recentlyAdded | @@ -15,12 +14,9 @@ A key representing a specific tag within the section. | `ON_DECK` | onDeck | | `COLLECTION` | collection | | `EDITION` | edition | -| `GENRE` | genre | | `YEAR` | year | | `DECADE` | decade | | `DIRECTOR` | director | -| `ACTOR` | actor | -| `COUNTRY` | country | | `CONTENT_RATING` | contentRating | | `RATING` | rating | | `RESOLUTION` | resolution | diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index d2b7042..ef7649c 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -14,6 +14,7 @@ API Calls interacting with Plex Media Server Libraries * [get_library_details](#get_library_details) - Get Library Details * [delete_library](#delete_library) - Delete Library Section * [get_library_items](#get_library_items) - Get Library Items +* [get_all_media_library](#get_all_media_library) - Get all media of library * [get_refresh_library_metadata](#get_refresh_library_metadata) - Refresh Metadata Of The Library * [get_search_library](#get_search_library) - Search Library * [get_genres_library](#get_genres_library) - Get Genres of library media @@ -363,6 +364,52 @@ with PlexAPI( | errors.GetLibraryItemsUnauthorized | 401 | application/json | | errors.SDKError | 4XX, 5XX | \*/\* | +## get_all_media_library + +Retrieves a list of all general media data for this library. + + +### Example Usage + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import operations + +with PlexAPI( + access_token="", +) as plex_api: + + res = plex_api.library.get_all_media_library(request={ + "section_key": 9518, + "type": operations.GetAllMediaLibraryQueryParamType.TV_SHOW, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.GetAllMediaLibraryRequest](../../models/operations/getallmedialibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllMediaLibraryResponse](../../models/operations/getallmedialibraryresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| errors.GetAllMediaLibraryBadRequest | 400 | application/json | +| errors.GetAllMediaLibraryUnauthorized | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | + ## get_refresh_library_metadata This endpoint Refreshes all the Metadata of the library. diff --git a/pyproject.toml b/pyproject.toml index 395deb7..82b95bd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "plex-api-client" -version = "0.22.1" +version = "0.23.0" 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 622c91b..f5a7b22 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.22.1" +__version__: str = "0.23.0" __openapi_doc_version__: str = "0.0.3" __gen_version__: str = "2.506.0" -__user_agent__: str = "speakeasy-sdk/python 0.22.1 2.506.0 0.0.3 plex-api-client" +__user_agent__: str = "speakeasy-sdk/python 0.23.0 2.506.0 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 2386b18..7763fc8 100644 --- a/src/plex_api_client/library.py +++ b/src/plex_api_client/library.py @@ -1449,6 +1449,230 @@ class Library(BaseSDK): http_res, ) + def get_all_media_library( + self, + *, + request: Union[ + operations.GetAllMediaLibraryRequest, + operations.GetAllMediaLibraryRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllMediaLibraryResponse: + r"""Get all media of library + + Retrieves a list of all general media data for this library. + + + :param request: The request object to send. + :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 + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllMediaLibraryRequest) + request = cast(operations.GetAllMediaLibraryRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionKey}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + 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( + operation_id="get-all-media-library", + oauth2_scopes=[], + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllMediaLibraryResponse( + object=utils.unmarshal_json( + http_res.text, Optional[operations.GetAllMediaLibraryResponseBody] + ), + 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.GetAllMediaLibraryBadRequestData + ) + response_data.raw_response = http_res + raise errors.GetAllMediaLibraryBadRequest(data=response_data) + if utils.match_response(http_res, "401", "application/json"): + response_data = utils.unmarshal_json( + http_res.text, errors.GetAllMediaLibraryUnauthorizedData + ) + response_data.raw_response = http_res + raise errors.GetAllMediaLibraryUnauthorized(data=response_data) + if utils.match_response(http_res, ["404", "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_all_media_library_async( + self, + *, + request: Union[ + operations.GetAllMediaLibraryRequest, + operations.GetAllMediaLibraryRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllMediaLibraryResponse: + r"""Get all media of library + + Retrieves a list of all general media data for this library. + + + :param request: The request object to send. + :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 + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllMediaLibraryRequest) + request = cast(operations.GetAllMediaLibraryRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionKey}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + 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( + operation_id="get-all-media-library", + oauth2_scopes=[], + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllMediaLibraryResponse( + object=utils.unmarshal_json( + http_res.text, Optional[operations.GetAllMediaLibraryResponseBody] + ), + 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.GetAllMediaLibraryBadRequestData + ) + response_data.raw_response = http_res + raise errors.GetAllMediaLibraryBadRequest(data=response_data) + if utils.match_response(http_res, "401", "application/json"): + response_data = utils.unmarshal_json( + http_res.text, errors.GetAllMediaLibraryUnauthorizedData + ) + response_data.raw_response = http_res + raise errors.GetAllMediaLibraryUnauthorized(data=response_data) + if utils.match_response(http_res, ["404", "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, + ) + def get_refresh_library_metadata( self, *, diff --git a/src/plex_api_client/models/errors/__init__.py b/src/plex_api_client/models/errors/__init__.py index a10e3c0..0b010d1 100644 --- a/src/plex_api_client/models/errors/__init__.py +++ b/src/plex_api_client/models/errors/__init__.py @@ -110,6 +110,16 @@ from .get_all_libraries import ( GetAllLibrariesUnauthorized, GetAllLibrariesUnauthorizedData, ) +from .get_all_media_library import ( + GetAllMediaLibraryBadRequest, + GetAllMediaLibraryBadRequestData, + GetAllMediaLibraryErrors, + GetAllMediaLibraryErrorsTypedDict, + GetAllMediaLibraryLibraryErrors, + GetAllMediaLibraryLibraryErrorsTypedDict, + GetAllMediaLibraryUnauthorized, + GetAllMediaLibraryUnauthorizedData, +) from .get_banner_image import ( GetBannerImageBadRequest, GetBannerImageBadRequestData, @@ -874,6 +884,14 @@ __all__ = [ "GetAllLibrariesLibraryErrorsTypedDict", "GetAllLibrariesUnauthorized", "GetAllLibrariesUnauthorizedData", + "GetAllMediaLibraryBadRequest", + "GetAllMediaLibraryBadRequestData", + "GetAllMediaLibraryErrors", + "GetAllMediaLibraryErrorsTypedDict", + "GetAllMediaLibraryLibraryErrors", + "GetAllMediaLibraryLibraryErrorsTypedDict", + "GetAllMediaLibraryUnauthorized", + "GetAllMediaLibraryUnauthorizedData", "GetAvailableClientsBadRequest", "GetAvailableClientsBadRequestData", "GetAvailableClientsErrors", diff --git a/src/plex_api_client/models/errors/get_all_media_library.py b/src/plex_api_client/models/errors/get_all_media_library.py new file mode 100644 index 0000000..36fa9b5 --- /dev/null +++ b/src/plex_api_client/models/errors/get_all_media_library.py @@ -0,0 +1,79 @@ +"""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 GetAllMediaLibraryLibraryErrorsTypedDict(TypedDict): + code: NotRequired[int] + message: NotRequired[str] + status: NotRequired[int] + + +class GetAllMediaLibraryLibraryErrors(BaseModel): + code: Optional[int] = None + + message: Optional[str] = None + + status: Optional[int] = None + + +class GetAllMediaLibraryUnauthorizedData(BaseModel): + errors: Optional[List[GetAllMediaLibraryLibraryErrors]] = None + + raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( + None + ) + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetAllMediaLibraryUnauthorized(Exception): + r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" + + data: GetAllMediaLibraryUnauthorizedData + + def __init__(self, data: GetAllMediaLibraryUnauthorizedData): + self.data = data + + def __str__(self) -> str: + return utils.marshal_json(self.data, GetAllMediaLibraryUnauthorizedData) + + +class GetAllMediaLibraryErrorsTypedDict(TypedDict): + code: NotRequired[int] + message: NotRequired[str] + status: NotRequired[int] + + +class GetAllMediaLibraryErrors(BaseModel): + code: Optional[int] = None + + message: Optional[str] = None + + status: Optional[int] = None + + +class GetAllMediaLibraryBadRequestData(BaseModel): + errors: Optional[List[GetAllMediaLibraryErrors]] = None + + raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( + None + ) + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetAllMediaLibraryBadRequest(Exception): + r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" + + data: GetAllMediaLibraryBadRequestData + + def __init__(self, data: GetAllMediaLibraryBadRequestData): + self.data = data + + def __str__(self) -> str: + return utils.marshal_json(self.data, GetAllMediaLibraryBadRequestData) diff --git a/src/plex_api_client/models/operations/__init__.py b/src/plex_api_client/models/operations/__init__.py index ad3f37e..bdbc877 100644 --- a/src/plex_api_client/models/operations/__init__.py +++ b/src/plex_api_client/models/operations/__init__.py @@ -94,6 +94,73 @@ from .get_all_libraries import ( GetAllLibrariesResponseBodyTypedDict, GetAllLibrariesResponseTypedDict, ) +from .get_all_media_library import ( + GetAllMediaLibraryActiveDirection, + GetAllMediaLibraryCollection, + GetAllMediaLibraryCollectionTypedDict, + GetAllMediaLibraryCountry, + GetAllMediaLibraryCountryTypedDict, + GetAllMediaLibraryDefaultDirection, + GetAllMediaLibraryDirector, + GetAllMediaLibraryDirectorTypedDict, + GetAllMediaLibraryField, + GetAllMediaLibraryFieldType, + GetAllMediaLibraryFieldTypeTypedDict, + GetAllMediaLibraryFieldTypedDict, + GetAllMediaLibraryFilter, + GetAllMediaLibraryFilterTypedDict, + GetAllMediaLibraryGenre, + GetAllMediaLibraryGenreTypedDict, + GetAllMediaLibraryHasThumbnail, + GetAllMediaLibraryImage, + GetAllMediaLibraryImageTypedDict, + GetAllMediaLibraryLibraryOptimizedForStreaming, + GetAllMediaLibraryLibraryOptimizedForStreamingTypedDict, + GetAllMediaLibraryLibraryResponseType, + GetAllMediaLibraryLibraryType, + GetAllMediaLibraryMedia, + GetAllMediaLibraryMediaContainer, + GetAllMediaLibraryMediaContainerTypedDict, + GetAllMediaLibraryMediaTypedDict, + GetAllMediaLibraryMeta, + GetAllMediaLibraryMetaTypedDict, + GetAllMediaLibraryMetadata, + GetAllMediaLibraryMetadataTypedDict, + GetAllMediaLibraryOperator, + GetAllMediaLibraryOperatorTypedDict, + GetAllMediaLibraryOptimizedForStreaming, + GetAllMediaLibraryOptimizedForStreaming1, + GetAllMediaLibraryOptimizedForStreamingTypedDict, + GetAllMediaLibraryPart, + GetAllMediaLibraryPartTypedDict, + GetAllMediaLibraryQueryParamIncludeMeta, + GetAllMediaLibraryQueryParamType, + GetAllMediaLibraryRequest, + GetAllMediaLibraryRequestTypedDict, + GetAllMediaLibraryResponse, + GetAllMediaLibraryResponseBody, + GetAllMediaLibraryResponseBodyTypedDict, + GetAllMediaLibraryResponseTypedDict, + GetAllMediaLibraryRole, + GetAllMediaLibraryRoleTypedDict, + GetAllMediaLibrarySort, + GetAllMediaLibrarySortTypedDict, + GetAllMediaLibraryStream, + GetAllMediaLibraryStreamTypedDict, + GetAllMediaLibraryType, + GetAllMediaLibraryTypeTypedDict, + GetAllMediaLibraryUltraBlurColors, + GetAllMediaLibraryUltraBlurColorsTypedDict, + GetAllMediaLibraryWriter, + GetAllMediaLibraryWriterTypedDict, + Guids, + GuidsTypedDict, + IncludeAdvanced, + One, + QueryParamIncludeCollections, + QueryParamIncludeExternalMedia, + QueryParamIncludeGuids, +) from .get_banner_image import ( GetBannerImageRequest, GetBannerImageRequestTypedDict, @@ -240,8 +307,13 @@ from .get_media_meta_data import ( GetMediaMetaDataDirectorTypedDict, GetMediaMetaDataGenre, GetMediaMetaDataGenreTypedDict, + GetMediaMetaDataGuids, + GetMediaMetaDataGuidsTypedDict, + GetMediaMetaDataHasThumbnail, GetMediaMetaDataImage, GetMediaMetaDataImageTypedDict, + GetMediaMetaDataLibraryOptimizedForStreaming, + GetMediaMetaDataLibraryOptimizedForStreamingTypedDict, GetMediaMetaDataLocation, GetMediaMetaDataLocationTypedDict, GetMediaMetaDataMedia, @@ -250,6 +322,9 @@ from .get_media_meta_data import ( GetMediaMetaDataMediaTypedDict, GetMediaMetaDataMetadata, GetMediaMetaDataMetadataTypedDict, + GetMediaMetaDataOptimizedForStreaming, + GetMediaMetaDataOptimizedForStreaming1, + GetMediaMetaDataOptimizedForStreamingTypedDict, GetMediaMetaDataPart, GetMediaMetaDataPartTypedDict, GetMediaMetaDataRequest, @@ -266,12 +341,11 @@ from .get_media_meta_data import ( GetMediaMetaDataUltraBlurColorsTypedDict, GetMediaMetaDataWriter, GetMediaMetaDataWriterTypedDict, - Guids, - GuidsTypedDict, + OptimizedForStreaming1, Producer, ProducerTypedDict, - Rating, - RatingTypedDict, + Ratings, + RatingsTypedDict, Similar, SimilarTypedDict, ) @@ -441,6 +515,8 @@ from .get_search_all_libraries import ( GetSearchAllLibrariesOptimizedForStreaming, GetSearchAllLibrariesPart, GetSearchAllLibrariesPartTypedDict, + GetSearchAllLibrariesQueryParamIncludeCollections, + GetSearchAllLibrariesQueryParamIncludeExternalMedia, GetSearchAllLibrariesRequest, GetSearchAllLibrariesRequestTypedDict, GetSearchAllLibrariesResponse, @@ -457,8 +533,6 @@ from .get_search_all_libraries import ( GetSearchAllLibrariesUltraBlurColorsTypedDict, GetSearchAllLibrariesWriter, GetSearchAllLibrariesWriterTypedDict, - QueryParamIncludeCollections, - QueryParamIncludeExternalMedia, SearchResult, SearchResultTypedDict, SearchTypes, @@ -1272,6 +1346,64 @@ __all__ = [ "GetAllLibrariesResponseBody", "GetAllLibrariesResponseBodyTypedDict", "GetAllLibrariesResponseTypedDict", + "GetAllMediaLibraryActiveDirection", + "GetAllMediaLibraryCollection", + "GetAllMediaLibraryCollectionTypedDict", + "GetAllMediaLibraryCountry", + "GetAllMediaLibraryCountryTypedDict", + "GetAllMediaLibraryDefaultDirection", + "GetAllMediaLibraryDirector", + "GetAllMediaLibraryDirectorTypedDict", + "GetAllMediaLibraryField", + "GetAllMediaLibraryFieldType", + "GetAllMediaLibraryFieldTypeTypedDict", + "GetAllMediaLibraryFieldTypedDict", + "GetAllMediaLibraryFilter", + "GetAllMediaLibraryFilterTypedDict", + "GetAllMediaLibraryGenre", + "GetAllMediaLibraryGenreTypedDict", + "GetAllMediaLibraryHasThumbnail", + "GetAllMediaLibraryImage", + "GetAllMediaLibraryImageTypedDict", + "GetAllMediaLibraryLibraryOptimizedForStreaming", + "GetAllMediaLibraryLibraryOptimizedForStreamingTypedDict", + "GetAllMediaLibraryLibraryResponseType", + "GetAllMediaLibraryLibraryType", + "GetAllMediaLibraryMedia", + "GetAllMediaLibraryMediaContainer", + "GetAllMediaLibraryMediaContainerTypedDict", + "GetAllMediaLibraryMediaTypedDict", + "GetAllMediaLibraryMeta", + "GetAllMediaLibraryMetaTypedDict", + "GetAllMediaLibraryMetadata", + "GetAllMediaLibraryMetadataTypedDict", + "GetAllMediaLibraryOperator", + "GetAllMediaLibraryOperatorTypedDict", + "GetAllMediaLibraryOptimizedForStreaming", + "GetAllMediaLibraryOptimizedForStreaming1", + "GetAllMediaLibraryOptimizedForStreamingTypedDict", + "GetAllMediaLibraryPart", + "GetAllMediaLibraryPartTypedDict", + "GetAllMediaLibraryQueryParamIncludeMeta", + "GetAllMediaLibraryQueryParamType", + "GetAllMediaLibraryRequest", + "GetAllMediaLibraryRequestTypedDict", + "GetAllMediaLibraryResponse", + "GetAllMediaLibraryResponseBody", + "GetAllMediaLibraryResponseBodyTypedDict", + "GetAllMediaLibraryResponseTypedDict", + "GetAllMediaLibraryRole", + "GetAllMediaLibraryRoleTypedDict", + "GetAllMediaLibrarySort", + "GetAllMediaLibrarySortTypedDict", + "GetAllMediaLibraryStream", + "GetAllMediaLibraryStreamTypedDict", + "GetAllMediaLibraryType", + "GetAllMediaLibraryTypeTypedDict", + "GetAllMediaLibraryUltraBlurColors", + "GetAllMediaLibraryUltraBlurColorsTypedDict", + "GetAllMediaLibraryWriter", + "GetAllMediaLibraryWriterTypedDict", "GetAvailableClientsMediaContainer", "GetAvailableClientsMediaContainerTypedDict", "GetAvailableClientsResponse", @@ -1482,8 +1614,13 @@ __all__ = [ "GetMediaMetaDataDirectorTypedDict", "GetMediaMetaDataGenre", "GetMediaMetaDataGenreTypedDict", + "GetMediaMetaDataGuids", + "GetMediaMetaDataGuidsTypedDict", + "GetMediaMetaDataHasThumbnail", "GetMediaMetaDataImage", "GetMediaMetaDataImageTypedDict", + "GetMediaMetaDataLibraryOptimizedForStreaming", + "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict", "GetMediaMetaDataLocation", "GetMediaMetaDataLocationTypedDict", "GetMediaMetaDataMedia", @@ -1492,6 +1629,9 @@ __all__ = [ "GetMediaMetaDataMediaTypedDict", "GetMediaMetaDataMetadata", "GetMediaMetaDataMetadataTypedDict", + "GetMediaMetaDataOptimizedForStreaming", + "GetMediaMetaDataOptimizedForStreaming1", + "GetMediaMetaDataOptimizedForStreamingTypedDict", "GetMediaMetaDataPart", "GetMediaMetaDataPartTypedDict", "GetMediaMetaDataRequest", @@ -1703,6 +1843,8 @@ __all__ = [ "GetSearchAllLibrariesOptimizedForStreaming", "GetSearchAllLibrariesPart", "GetSearchAllLibrariesPartTypedDict", + "GetSearchAllLibrariesQueryParamIncludeCollections", + "GetSearchAllLibrariesQueryParamIncludeExternalMedia", "GetSearchAllLibrariesRequest", "GetSearchAllLibrariesRequestTypedDict", "GetSearchAllLibrariesResponse", @@ -1917,6 +2059,7 @@ __all__ = [ "HubTypedDict", "Image", "ImageTypedDict", + "IncludeAdvanced", "IncludeCollections", "IncludeDetails", "IncludeExternalMedia", @@ -1964,10 +2107,12 @@ __all__ = [ "MinSize", "MyPlex", "MyPlexTypedDict", + "One", "OnlyTransient", "Operator", "OperatorTypedDict", "OptimizedForStreaming", + "OptimizedForStreaming1", "Owned", "POST_USERS_SIGN_IN_DATA_SERVERS", "Part", @@ -2028,12 +2173,13 @@ __all__ = [ "QueryParamForce", "QueryParamIncludeCollections", "QueryParamIncludeExternalMedia", + "QueryParamIncludeGuids", "QueryParamIncludeMeta", "QueryParamOnlyTransient", "QueryParamSmart", "QueryParamType", - "Rating", - "RatingTypedDict", + "Ratings", + "RatingsTypedDict", "Release", "ReleaseTypedDict", "ResponseBody", diff --git a/src/plex_api_client/models/operations/get_actors_library.py b/src/plex_api_client/models/operations/get_actors_library.py index ab727cc..8706a8a 100644 --- a/src/plex_api_client/models/operations/get_actors_library.py +++ b/src/plex_api_client/models/operations/get_actors_library.py @@ -97,7 +97,8 @@ class GetActorsLibraryDirectory(BaseModel): class GetActorsLibraryMediaContainerTypedDict(TypedDict): - size: float + size: int + r"""Number of media items returned in this response.""" allow_sync: bool r"""Indicates whether syncing is allowed.""" art: str @@ -125,7 +126,8 @@ class GetActorsLibraryMediaContainerTypedDict(TypedDict): class GetActorsLibraryMediaContainer(BaseModel): - size: float + size: int + r"""Number of media items returned in this response.""" allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] r"""Indicates whether syncing is allowed.""" 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 new file mode 100644 index 0000000..9f147e6 --- /dev/null +++ b/src/plex_api_client/models/operations/get_all_media_library.py @@ -0,0 +1,1500 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import date +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class GetAllMediaLibraryQueryParamType(int, Enum): + r"""The type of media to retrieve or filter by. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + MOVIE = 1 + TV_SHOW = 2 + SEASON = 3 + EPISODE = 4 + AUDIO = 8 + ALBUM = 9 + TRACK = 10 + + +class GetAllMediaLibraryQueryParamIncludeMeta(int, Enum): + r"""Adds the Meta object to the response""" + + DISABLE = 0 + ENABLE = 1 + + +class QueryParamIncludeGuids(int, Enum): + r"""Adds the Guid object to the response""" + + DISABLE = 0 + ENABLE = 1 + + +class IncludeAdvanced(int, Enum): + DISABLE = 0 + ENABLE = 1 + + +class QueryParamIncludeCollections(int, Enum): + DISABLE = 0 + ENABLE = 1 + + +class QueryParamIncludeExternalMedia(int, Enum): + DISABLE = 0 + ENABLE = 1 + + +class GetAllMediaLibraryRequestTypedDict(TypedDict): + section_key: int + r"""The unique key of the Plex library. + Note: This is unique in the context of the Plex server. + + """ + type: GetAllMediaLibraryQueryParamType + r"""The type of media to retrieve or filter by. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + include_meta: NotRequired[GetAllMediaLibraryQueryParamIncludeMeta] + r"""Adds the Meta object to the response + + """ + include_guids: NotRequired[QueryParamIncludeGuids] + r"""Adds the Guid object to the response + + """ + include_advanced: NotRequired[IncludeAdvanced] + include_collections: NotRequired[QueryParamIncludeCollections] + include_external_media: NotRequired[QueryParamIncludeExternalMedia] + x_plex_container_start: NotRequired[int] + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + x_plex_container_size: NotRequired[int] + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetAllMediaLibraryRequest(BaseModel): + section_key: Annotated[ + int, + pydantic.Field(alias="sectionKey"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The unique key of the Plex library. + Note: This is unique in the context of the Plex server. + + """ + + type: Annotated[ + GetAllMediaLibraryQueryParamType, + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The type of media to retrieve or filter by. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + include_meta: Annotated[ + Optional[GetAllMediaLibraryQueryParamIncludeMeta], + pydantic.Field(alias="includeMeta"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = GetAllMediaLibraryQueryParamIncludeMeta.DISABLE + r"""Adds the Meta object to the response + + """ + + include_guids: Annotated[ + Optional[QueryParamIncludeGuids], + pydantic.Field(alias="includeGuids"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = QueryParamIncludeGuids.DISABLE + r"""Adds the Guid object to the response + + """ + + include_advanced: Annotated[ + Optional[IncludeAdvanced], + pydantic.Field(alias="includeAdvanced"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = IncludeAdvanced.DISABLE + + include_collections: Annotated[ + Optional[QueryParamIncludeCollections], + pydantic.Field(alias="includeCollections"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = QueryParamIncludeCollections.DISABLE + + include_external_media: Annotated[ + Optional[QueryParamIncludeExternalMedia], + pydantic.Field(alias="includeExternalMedia"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = QueryParamIncludeExternalMedia.DISABLE + + x_plex_container_start: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Start"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 0 + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + + x_plex_container_size: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Size"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 50 + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetAllMediaLibraryFilterTypedDict(TypedDict): + filter_: str + filter_type: str + key: str + title: str + type: str + advanced: NotRequired[bool] + + +class GetAllMediaLibraryFilter(BaseModel): + filter_: Annotated[str, pydantic.Field(alias="filter")] + + filter_type: Annotated[str, pydantic.Field(alias="filterType")] + + key: str + + title: str + + type: str + + advanced: Optional[bool] = None + + +class GetAllMediaLibraryActiveDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetAllMediaLibraryDefaultDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetAllMediaLibrarySortTypedDict(TypedDict): + key: str + title: str + default: NotRequired[str] + active: NotRequired[bool] + active_direction: NotRequired[GetAllMediaLibraryActiveDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + default_direction: NotRequired[GetAllMediaLibraryDefaultDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + desc_key: NotRequired[str] + first_character_key: NotRequired[str] + + +class GetAllMediaLibrarySort(BaseModel): + key: str + + title: str + + default: Optional[str] = None + + active: Optional[bool] = None + + active_direction: Annotated[ + Optional[GetAllMediaLibraryActiveDirection], + pydantic.Field(alias="activeDirection"), + ] = GetAllMediaLibraryActiveDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + default_direction: Annotated[ + Optional[GetAllMediaLibraryDefaultDirection], + pydantic.Field(alias="defaultDirection"), + ] = GetAllMediaLibraryDefaultDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None + + first_character_key: Annotated[ + Optional[str], pydantic.Field(alias="firstCharacterKey") + ] = None + + +class GetAllMediaLibraryFieldTypedDict(TypedDict): + key: str + title: str + type: str + sub_type: NotRequired[str] + + +class GetAllMediaLibraryField(BaseModel): + key: str + + title: str + + type: str + + sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None + + +class GetAllMediaLibraryTypeTypedDict(TypedDict): + key: str + type: str + title: str + active: bool + subtype: NotRequired[str] + filter_: NotRequired[List[GetAllMediaLibraryFilterTypedDict]] + sort: NotRequired[List[GetAllMediaLibrarySortTypedDict]] + field: NotRequired[List[GetAllMediaLibraryFieldTypedDict]] + + +class GetAllMediaLibraryType(BaseModel): + key: str + + type: str + + title: str + + active: bool + + subtype: Optional[str] = None + + filter_: Annotated[ + Optional[List[GetAllMediaLibraryFilter]], pydantic.Field(alias="Filter") + ] = None + + sort: Annotated[ + Optional[List[GetAllMediaLibrarySort]], pydantic.Field(alias="Sort") + ] = None + + field: Annotated[ + Optional[List[GetAllMediaLibraryField]], pydantic.Field(alias="Field") + ] = None + + +class GetAllMediaLibraryOperatorTypedDict(TypedDict): + key: str + title: str + + +class GetAllMediaLibraryOperator(BaseModel): + key: str + + title: str + + +class GetAllMediaLibraryFieldTypeTypedDict(TypedDict): + type: str + operator: List[GetAllMediaLibraryOperatorTypedDict] + + +class GetAllMediaLibraryFieldType(BaseModel): + type: str + + operator: Annotated[ + List[GetAllMediaLibraryOperator], pydantic.Field(alias="Operator") + ] + + +class GetAllMediaLibraryMetaTypedDict(TypedDict): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: NotRequired[List[GetAllMediaLibraryTypeTypedDict]] + field_type: NotRequired[List[GetAllMediaLibraryFieldTypeTypedDict]] + + +class GetAllMediaLibraryMeta(BaseModel): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: Annotated[ + Optional[List[GetAllMediaLibraryType]], pydantic.Field(alias="Type") + ] = None + + field_type: Annotated[ + Optional[List[GetAllMediaLibraryFieldType]], pydantic.Field(alias="FieldType") + ] = None + + +class GetAllMediaLibraryLibraryType(str, Enum): + r"""The type of media content""" + + MOVIE = "movie" + TV_SHOW = "show" + SEASON = "season" + EPISODE = "episode" + ARTIST = "artist" + ALBUM = "album" + + +class GetAllMediaLibraryLibraryResponseType(str, Enum): + COVER_POSTER = "coverPoster" + BACKGROUND = "background" + SNAPSHOT = "snapshot" + CLEAR_LOGO = "clearLogo" + + +class GetAllMediaLibraryImageTypedDict(TypedDict): + alt: str + type: GetAllMediaLibraryLibraryResponseType + url: str + + +class GetAllMediaLibraryImage(BaseModel): + alt: str + + type: GetAllMediaLibraryLibraryResponseType + + url: str + + +class GetAllMediaLibraryUltraBlurColorsTypedDict(TypedDict): + top_left: str + top_right: str + bottom_right: str + bottom_left: str + + +class GetAllMediaLibraryUltraBlurColors(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 + + +GetAllMediaLibraryOptimizedForStreamingTypedDict = TypeAliasType( + "GetAllMediaLibraryOptimizedForStreamingTypedDict", Union[One, bool] +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +GetAllMediaLibraryOptimizedForStreaming = TypeAliasType( + "GetAllMediaLibraryOptimizedForStreaming", Union[One, bool] +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class GetAllMediaLibraryOptimizedForStreaming1(int, Enum): + ZERO = 0 + ONE = 1 + + +GetAllMediaLibraryLibraryOptimizedForStreamingTypedDict = TypeAliasType( + "GetAllMediaLibraryLibraryOptimizedForStreamingTypedDict", + Union[GetAllMediaLibraryOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +GetAllMediaLibraryLibraryOptimizedForStreaming = TypeAliasType( + "GetAllMediaLibraryLibraryOptimizedForStreaming", + Union[GetAllMediaLibraryOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class GetAllMediaLibraryHasThumbnail(str, Enum): + r"""Indicates if the part has a thumbnail.""" + + FALSE = "0" + TRUE = "1" + + +class GetAllMediaLibraryStreamTypedDict(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.""" + 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 + 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.""" + 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.""" + 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] + 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 GetAllMediaLibraryStream(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.""" + + 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.""" + + 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.""" + + 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.""" + + 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 + + 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 GetAllMediaLibraryPartTypedDict(TypedDict): + 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: NotRequired[bool] + r"""Indicates if the part is accessible.""" + exists: NotRequired[bool] + r"""Indicates if the part exists.""" + indexes: NotRequired[str] + duration: NotRequired[int] + 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[ + GetAllMediaLibraryLibraryOptimizedForStreamingTypedDict + ] + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + has_thumbnail: NotRequired[GetAllMediaLibraryHasThumbnail] + stream: NotRequired[List[GetAllMediaLibraryStreamTypedDict]] + r"""An array of streams for this part.""" + + +class GetAllMediaLibraryPart(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[GetAllMediaLibraryLibraryOptimizedForStreaming], + 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[GetAllMediaLibraryHasThumbnail], pydantic.Field(alias="hasThumbnail") + ] = GetAllMediaLibraryHasThumbnail.FALSE + + stream: Annotated[ + Optional[List[GetAllMediaLibraryStream]], pydantic.Field(alias="Stream") + ] = None + r"""An array of streams for this part.""" + + +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] + 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).""" + audio_profile: NotRequired[str] + r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" + optimized_for_streaming: NotRequired[ + GetAllMediaLibraryOptimizedForStreamingTypedDict + ] + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + has64bit_offsets: NotRequired[bool] + + +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.""" + + 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).""" + + 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[GetAllMediaLibraryOptimizedForStreaming], + 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 + + +class GetAllMediaLibraryGenreTypedDict(TypedDict): + tag: str + r"""The country of origin of this media item""" + + +class GetAllMediaLibraryGenre(BaseModel): + tag: str + r"""The country of origin of this media item""" + + +class GetAllMediaLibraryCountryTypedDict(TypedDict): + tag: str + r"""The country of origin of this media item""" + + +class GetAllMediaLibraryCountry(BaseModel): + tag: str + r"""The country of origin of this media item""" + + +class GetAllMediaLibraryDirectorTypedDict(TypedDict): + tag: str + r"""The role of Director""" + + +class GetAllMediaLibraryDirector(BaseModel): + tag: str + r"""The role of Director""" + + +class GetAllMediaLibraryWriterTypedDict(TypedDict): + tag: str + r"""The role of Writer""" + + +class GetAllMediaLibraryWriter(BaseModel): + tag: str + r"""The role of Writer""" + + +class GetAllMediaLibraryRoleTypedDict(TypedDict): + tag: str + r"""The name of the actor for this role""" + + +class GetAllMediaLibraryRole(BaseModel): + tag: str + r"""The name of the actor for this role""" + + +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 GetAllMediaLibraryCollectionTypedDict(TypedDict): + tag: str + r"""The user-made collection this media item belongs to""" + + +class GetAllMediaLibraryCollection(BaseModel): + tag: str + r"""The user-made collection this media item belongs to""" + + +class GetAllMediaLibraryMetadataTypedDict(TypedDict): + r"""Unknown""" + + 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.""" + key: str + r"""The unique key for the media item.""" + guid: str + r"""The globally unique identifier for the media item.""" + slug: str + r"""A URL‐friendly version of the media title.""" + type: GetAllMediaLibraryLibraryType + title: str + r"""The title of the media item.""" + title_sort: str + r"""The sort title used for ordering media items.""" + summary: str + r"""A synopsis of the media item.""" + rating: float + 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 + r"""The thumbnail image URL for the media item.""" + art: str + r"""The art image URL for the media item.""" + theme: str + r"""The theme URL for the media item.""" + index: int + r"""The index position of the media item.""" + child_count: int + r"""The number of child items associated with this media item.""" + season_count: int + r"""The total number of seasons (for TV shows).""" + duration: int + r"""The duration of the media item in milliseconds.""" + originally_available_at: date + r"""The original release date of the media item.""" + added_at: int + studio: NotRequired[str] + r"""The studio that produced the media item.""" + content_rating: NotRequired[str] + r"""The content rating for the media item.""" + leaf_count: NotRequired[int] + r"""The number of leaf items (end nodes) under this media item.""" + viewed_leaf_count: NotRequired[int] + r"""The number of leaf items that have been viewed.""" + updated_at: NotRequired[int] + r"""Unix epoch datetime in seconds""" + 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.""" + primary_extra_key: NotRequired[str] + r"""The primary extra key associated with this media item.""" + original_title: NotRequired[str] + r"""The original title of the media item (if different).""" + parent_rating_key: NotRequired[str] + r"""The rating key of the parent media item.""" + grandparent_rating_key: NotRequired[str] + r"""The rating key of the grandparent media item.""" + parent_guid: NotRequired[str] + r"""The GUID of the parent media item.""" + grandparent_guid: NotRequired[str] + r"""The GUID of the grandparent media item.""" + grandparent_slug: NotRequired[str] + r"""The slug for the grandparent media item.""" + grandparent_key: NotRequired[str] + r"""The key of the grandparent media item.""" + parent_key: NotRequired[str] + r"""The key of the parent media item.""" + grandparent_title: NotRequired[str] + r"""The title of the grandparent media item.""" + grandparent_thumb: NotRequired[str] + r"""The thumbnail URL for the grandparent media item.""" + grandparent_theme: NotRequired[str] + r"""The theme URL for the grandparent media item.""" + grandparent_art: NotRequired[str] + r"""The art URL for the grandparent media item.""" + parent_title: NotRequired[str] + r"""The title of the parent media item.""" + parent_index: NotRequired[int] + r"""The index position of the parent media item.""" + parent_thumb: NotRequired[str] + r"""The thumbnail URL for the parent media item.""" + rating_image: NotRequired[str] + r"""The URL for the rating image.""" + 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).""" + skip_count: NotRequired[int] + r"""The number of times this media item has been skipped.""" + 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.""" + last_rated_at: NotRequired[int] + r"""The Unix timestamp representing the last time the item was rated.""" + 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.""" + last_viewed_at: NotRequired[int] + r"""Unix timestamp for when the media item was last viewed.""" + user_rating: NotRequired[float] + r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" + image: NotRequired[List[GetAllMediaLibraryImageTypedDict]] + ultra_blur_colors: NotRequired[GetAllMediaLibraryUltraBlurColorsTypedDict] + media: NotRequired[List[GetAllMediaLibraryMediaTypedDict]] + genre: NotRequired[List[GetAllMediaLibraryGenreTypedDict]] + country: NotRequired[List[GetAllMediaLibraryCountryTypedDict]] + director: NotRequired[List[GetAllMediaLibraryDirectorTypedDict]] + writer: NotRequired[List[GetAllMediaLibraryWriterTypedDict]] + role: NotRequired[List[GetAllMediaLibraryRoleTypedDict]] + guids: NotRequired[List[GuidsTypedDict]] + collection: NotRequired[List[GetAllMediaLibraryCollectionTypedDict]] + + +class GetAllMediaLibraryMetadata(BaseModel): + r"""Unknown""" + + 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.""" + + key: str + r"""The unique key for the media item.""" + + guid: str + r"""The globally unique identifier for the media item.""" + + slug: str + r"""A URL‐friendly version of the media title.""" + + type: GetAllMediaLibraryLibraryType + + title: str + r"""The title of the media item.""" + + title_sort: Annotated[str, pydantic.Field(alias="titleSort")] + r"""The sort title used for ordering media items.""" + + summary: str + r"""A synopsis of the media item.""" + + rating: float + r"""The critic rating for the media item.""" + + 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.""" + + thumb: str + r"""The thumbnail image URL for the media item.""" + + art: str + r"""The art image URL for the media item.""" + + theme: str + r"""The theme URL for the media item.""" + + index: int + r"""The index position of the media item.""" + + child_count: Annotated[int, pydantic.Field(alias="childCount")] + r"""The number of child items associated with this media item.""" + + season_count: Annotated[int, pydantic.Field(alias="seasonCount")] + r"""The total number of seasons (for TV shows).""" + + duration: int + r"""The duration of the media item in milliseconds.""" + + originally_available_at: Annotated[ + date, pydantic.Field(alias="originallyAvailableAt") + ] + r"""The original release date of the media item.""" + + added_at: Annotated[int, pydantic.Field(alias="addedAt")] + + studio: Optional[str] = None + r"""The studio that produced the media item.""" + + content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""The content rating for 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.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""The number of leaf items that have been viewed.""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""Unix epoch datetime in seconds""" + + 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") + ] = None + r"""The primary extra key associated with this media item.""" + + original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""The original title of the media item (if different).""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The rating key of the parent media item.""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The rating key of the grandparent media item.""" + + parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None + r"""The GUID of the parent media item.""" + + grandparent_guid: Annotated[ + Optional[str], pydantic.Field(alias="grandparentGuid") + ] = None + r"""The GUID of the grandparent media item.""" + + grandparent_slug: Annotated[ + Optional[str], pydantic.Field(alias="grandparentSlug") + ] = None + r"""The slug for the grandparent media item.""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The key of the grandparent media item.""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The key of the parent media item.""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The title of the grandparent media item.""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The thumbnail URL 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_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The art URL for the grandparent media item.""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The title 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_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The thumbnail URL for the parent media item.""" + + rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None + r"""The URL for the rating image.""" + + 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).""" + + skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None + r"""The number of times this media item has been skipped.""" + + 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.""" + + last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None + r"""The Unix timestamp representing the last time the item was rated.""" + + 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).""" + + 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.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""Unix timestamp for when the media item was last viewed.""" + + 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.""" + + image: Annotated[ + Optional[List[GetAllMediaLibraryImage]], pydantic.Field(alias="Image") + ] = None + + ultra_blur_colors: Annotated[ + Optional[GetAllMediaLibraryUltraBlurColors], + pydantic.Field(alias="UltraBlurColors"), + ] = None + + media: Annotated[ + Optional[List[GetAllMediaLibraryMedia]], pydantic.Field(alias="Media") + ] = None + + genre: Annotated[ + Optional[List[GetAllMediaLibraryGenre]], pydantic.Field(alias="Genre") + ] = None + + country: Annotated[ + Optional[List[GetAllMediaLibraryCountry]], pydantic.Field(alias="Country") + ] = None + + director: Annotated[ + Optional[List[GetAllMediaLibraryDirector]], pydantic.Field(alias="Director") + ] = None + + writer: Annotated[ + Optional[List[GetAllMediaLibraryWriter]], pydantic.Field(alias="Writer") + ] = None + + role: Annotated[ + Optional[List[GetAllMediaLibraryRole]], pydantic.Field(alias="Role") + ] = None + + guids: Annotated[Optional[List[Guids]], pydantic.Field(alias="Guid")] = None + + collection: Annotated[ + Optional[List[GetAllMediaLibraryCollection]], pydantic.Field(alias="Collection") + ] = None + + +class GetAllMediaLibraryMediaContainerTypedDict(TypedDict): + size: int + 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.""" + art: str + r"""URL for the background artwork of the media container.""" + content: str + r"""The content type or mode.""" + identifier: str + r"""An plugin identifier for the media container.""" + library_section_id: int + r"""The unique identifier for the library section.""" + library_section_title: str + r"""The title of the library section.""" + media_tag_prefix: str + r"""The prefix used for media tag resource paths.""" + media_tag_version: int + r"""The version number for media tags.""" + thumb: str + r"""URL for the thumbnail image of the media container.""" + nocache: bool + r"""Specifies whether caching is disabled.""" + title1: str + r"""The primary title of the media container.""" + title2: str + r"""The secondary title of the media container.""" + view_group: str + r"""Identifier for the view group layout.""" + library_section_uuid: NotRequired[str] + r"""The universally unique identifier for the library section.""" + meta: NotRequired[GetAllMediaLibraryMetaTypedDict] + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + """ + metadata: NotRequired[List[GetAllMediaLibraryMetadataTypedDict]] + r"""An array of metadata items.""" + + +class GetAllMediaLibraryMediaContainer(BaseModel): + size: int + r"""Number of media items returned in this response.""" + + total_size: Annotated[int, pydantic.Field(alias="totalSize")] + r"""Total number of media items in the library.""" + + offset: int + r"""Offset value for pagination.""" + + allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] + r"""Indicates whether syncing is allowed.""" + + art: str + r"""URL for the background artwork of the media container.""" + + content: str + r"""The content type or mode.""" + + identifier: str + r"""An plugin identifier for the media container.""" + + library_section_id: Annotated[int, pydantic.Field(alias="librarySectionID")] + r"""The unique identifier for the library section.""" + + library_section_title: Annotated[str, pydantic.Field(alias="librarySectionTitle")] + r"""The title of the library section.""" + + media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] + r"""The prefix used for media tag resource paths.""" + + media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] + r"""The version number for media tags.""" + + thumb: str + r"""URL for the thumbnail image of the media container.""" + + nocache: bool + r"""Specifies whether caching is disabled.""" + + title1: str + r"""The primary title of the media container.""" + + title2: str + r"""The secondary title of the media container.""" + + view_group: Annotated[str, pydantic.Field(alias="viewGroup")] + r"""Identifier for the view group layout.""" + + library_section_uuid: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionUUID") + ] = None + r"""The universally unique identifier for the library section.""" + + meta: Annotated[Optional[GetAllMediaLibraryMeta], pydantic.Field(alias="Meta")] = ( + None + ) + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + """ + + metadata: Annotated[ + Optional[List[GetAllMediaLibraryMetadata]], pydantic.Field(alias="Metadata") + ] = None + r"""An array of metadata items.""" + + +class GetAllMediaLibraryResponseBodyTypedDict(TypedDict): + r"""Successful response containing media container data.""" + + media_container: NotRequired[GetAllMediaLibraryMediaContainerTypedDict] + + +class GetAllMediaLibraryResponseBody(BaseModel): + r"""Successful response containing media container data.""" + + media_container: Annotated[ + Optional[GetAllMediaLibraryMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetAllMediaLibraryResponseTypedDict(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[GetAllMediaLibraryResponseBodyTypedDict] + r"""Successful response containing media container data.""" + + +class GetAllMediaLibraryResponse(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[GetAllMediaLibraryResponseBody] = None + r"""Successful response containing media container data.""" diff --git a/src/plex_api_client/models/operations/get_countries_library.py b/src/plex_api_client/models/operations/get_countries_library.py index 8d72c44..899ac17 100644 --- a/src/plex_api_client/models/operations/get_countries_library.py +++ b/src/plex_api_client/models/operations/get_countries_library.py @@ -86,51 +86,69 @@ class GetCountriesLibraryDirectory(BaseModel): class GetCountriesLibraryMediaContainerTypedDict(TypedDict): - size: float - identifier: str + size: int + r"""Number of media items returned in this response.""" allow_sync: bool + r"""Indicates whether syncing is allowed.""" art: str + r"""URL for the background artwork of the media container.""" content: str + r"""The content type or mode.""" + identifier: str + r"""An plugin identifier for the media container.""" media_tag_prefix: str + r"""The prefix used for media tag resource paths.""" media_tag_version: int + r"""The version number for media tags.""" nocache: bool + r"""Specifies whether caching is disabled.""" thumb: str + r"""URL for the thumbnail image of the media container.""" title1: str + r"""The primary title of the media container.""" title2: str + r"""The secondary title of the media container.""" view_group: str - offset: NotRequired[int] - total_size: NotRequired[int] + r"""Identifier for the view group layout.""" directory: NotRequired[List[GetCountriesLibraryDirectoryTypedDict]] class GetCountriesLibraryMediaContainer(BaseModel): - size: float - - identifier: str + size: int + r"""Number of media items returned in this response.""" allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] + r"""Indicates whether syncing is allowed.""" art: str + r"""URL for the background artwork of the media container.""" content: str + r"""The content type or mode.""" + + identifier: str + r"""An plugin identifier for the media container.""" media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] + r"""The prefix used for media tag resource paths.""" media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] + r"""The version number for media tags.""" nocache: bool + r"""Specifies whether caching is disabled.""" thumb: str + r"""URL for the thumbnail image of the media container.""" title1: str + r"""The primary title of the media container.""" title2: str + r"""The secondary title of the media container.""" view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - - offset: Optional[int] = None - - total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""Identifier for the view group layout.""" directory: Annotated[ Optional[List[GetCountriesLibraryDirectory]], pydantic.Field(alias="Directory") diff --git a/src/plex_api_client/models/operations/get_genres_library.py b/src/plex_api_client/models/operations/get_genres_library.py index 1b60b57..3dfc8df 100644 --- a/src/plex_api_client/models/operations/get_genres_library.py +++ b/src/plex_api_client/models/operations/get_genres_library.py @@ -89,51 +89,69 @@ class GetGenresLibraryDirectory(BaseModel): class GetGenresLibraryMediaContainerTypedDict(TypedDict): - size: float - identifier: str + size: int + r"""Number of media items returned in this response.""" allow_sync: bool + r"""Indicates whether syncing is allowed.""" art: str + r"""URL for the background artwork of the media container.""" content: str + r"""The content type or mode.""" + identifier: str + r"""An plugin identifier for the media container.""" media_tag_prefix: str + r"""The prefix used for media tag resource paths.""" media_tag_version: int + r"""The version number for media tags.""" nocache: bool + r"""Specifies whether caching is disabled.""" thumb: str + r"""URL for the thumbnail image of the media container.""" title1: str + r"""The primary title of the media container.""" title2: str + r"""The secondary title of the media container.""" view_group: str - offset: NotRequired[int] - total_size: NotRequired[int] + r"""Identifier for the view group layout.""" directory: NotRequired[List[GetGenresLibraryDirectoryTypedDict]] class GetGenresLibraryMediaContainer(BaseModel): - size: float - - identifier: str + size: int + r"""Number of media items returned in this response.""" allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] + r"""Indicates whether syncing is allowed.""" art: str + r"""URL for the background artwork of the media container.""" content: str + r"""The content type or mode.""" + + identifier: str + r"""An plugin identifier for the media container.""" media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] + r"""The prefix used for media tag resource paths.""" media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] + r"""The version number for media tags.""" nocache: bool + r"""Specifies whether caching is disabled.""" thumb: str + r"""URL for the thumbnail image of the media container.""" title1: str + r"""The primary title of the media container.""" title2: str + r"""The secondary title of the media container.""" view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - - offset: Optional[int] = None - - total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""Identifier for the view group layout.""" directory: Annotated[ Optional[List[GetGenresLibraryDirectory]], pydantic.Field(alias="Directory") 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 ccd6870..e6a2d26 100644 --- a/src/plex_api_client/models/operations/get_library_items.py +++ b/src/plex_api_client/models/operations/get_library_items.py @@ -14,7 +14,6 @@ from typing_extensions import Annotated, NotRequired, TypedDict class Tag(str, Enum): r"""A key representing a specific tag within the section.""" - ALL = "all" UNWATCHED = "unwatched" NEWEST = "newest" RECENTLY_ADDED = "recentlyAdded" @@ -22,12 +21,9 @@ class Tag(str, Enum): ON_DECK = "onDeck" COLLECTION = "collection" EDITION = "edition" - GENRE = "genre" YEAR = "year" DECADE = "decade" DIRECTOR = "director" - ACTOR = "actor" - COUNTRY = "country" CONTENT_RATING = "contentRating" RATING = "rating" RESOLUTION = "resolution" @@ -184,6 +180,7 @@ class GetLibraryItemsFilterTypedDict(TypedDict): key: str title: str type: str + advanced: NotRequired[bool] class GetLibraryItemsFilter(BaseModel): @@ -197,6 +194,8 @@ class GetLibraryItemsFilter(BaseModel): type: str + advanced: Optional[bool] = None + class GetLibraryItemsActiveDirection(str, Enum): r"""The direction of the sort. Can be either `asc` or `desc`.""" @@ -283,6 +282,7 @@ class GetLibraryItemsTypeTypedDict(TypedDict): type: str title: str active: bool + subtype: NotRequired[str] filter_: NotRequired[List[GetLibraryItemsFilterTypedDict]] sort: NotRequired[List[GetLibraryItemsSortTypedDict]] field: NotRequired[List[GetLibraryItemsFieldTypedDict]] @@ -297,6 +297,8 @@ class GetLibraryItemsType(BaseModel): active: bool + subtype: Optional[str] = None + filter_: Annotated[ Optional[List[GetLibraryItemsFilter]], pydantic.Field(alias="Filter") ] = None @@ -339,6 +341,8 @@ class GetLibraryItemsLibraryType(str, Enum): TV_SHOW = "show" SEASON = "season" EPISODE = "episode" + ARTIST = "artist" + ALBUM = "album" class GetLibraryItemsFlattenSeasons(str, Enum): 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 5837b76..b5ae5ae 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 @@ -2,12 +2,13 @@ from __future__ import annotations from datetime import date +from enum import Enum import httpx from plex_api_client.types import BaseModel from plex_api_client.utils import FieldMetadata, PathParamMetadata, 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 GetMediaMetaDataRequestTypedDict(TypedDict): @@ -141,6 +142,50 @@ class GetMediaMetaDataRequest(BaseModel): r"""Trigger asynchronous refresh of the local media agent.""" +class OptimizedForStreaming1(int, Enum): + ZERO = 0 + ONE = 1 + + +GetMediaMetaDataOptimizedForStreamingTypedDict = TypeAliasType( + "GetMediaMetaDataOptimizedForStreamingTypedDict", + Union[OptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +GetMediaMetaDataOptimizedForStreaming = TypeAliasType( + "GetMediaMetaDataOptimizedForStreaming", Union[OptimizedForStreaming1, bool] +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class GetMediaMetaDataOptimizedForStreaming1(int, Enum): + ZERO = 0 + ONE = 1 + + +GetMediaMetaDataLibraryOptimizedForStreamingTypedDict = TypeAliasType( + "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict", + Union[GetMediaMetaDataOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +GetMediaMetaDataLibraryOptimizedForStreaming = TypeAliasType( + "GetMediaMetaDataLibraryOptimizedForStreaming", + Union[GetMediaMetaDataOptimizedForStreaming1, bool], +) +r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + + +class GetMediaMetaDataHasThumbnail(str, Enum): + r"""Indicates if the part has a thumbnail.""" + + FALSE = "0" + TRUE = "1" + + class GetMediaMetaDataStreamTypedDict(TypedDict): id: int r"""Unique stream identifier.""" @@ -150,8 +195,6 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): r"""Codec used by the stream.""" index: int r"""Index of the stream.""" - bitrate: int - r"""Bitrate of the stream.""" language: str r"""Language of the stream.""" language_tag: str @@ -164,6 +207,10 @@ class GetMediaMetaDataStreamTypedDict(TypedDict): 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.""" + 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] @@ -246,9 +293,6 @@ class GetMediaMetaDataStream(BaseModel): index: int r"""Index of the stream.""" - bitrate: int - r"""Bitrate of the stream.""" - language: str r"""Language of the stream.""" @@ -267,6 +311,14 @@ class GetMediaMetaDataStream(BaseModel): default: Optional[bool] = None r"""Indicates if this stream is default.""" + bitrate: Optional[int] = None + r"""Bitrate of the stream.""" + + 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 @@ -395,23 +447,32 @@ class GetMediaMetaDataPartTypedDict(TypedDict): r"""Unique part identifier.""" key: str r"""Key to access this part.""" - duration: int - r"""Duration of the part in milliseconds.""" file: str r"""File path for the part.""" size: int r"""File size in bytes.""" - container: str - r"""Container format of the part.""" - video_profile: str - r"""Video profile for the part.""" - stream: List[GetMediaMetaDataStreamTypedDict] - r"""An array of streams for this part.""" 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] + 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[ + GetMediaMetaDataLibraryOptimizedForStreamingTypedDict + ] + r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" + has_thumbnail: NotRequired[GetMediaMetaDataHasThumbnail] + stream: NotRequired[List[GetMediaMetaDataStreamTypedDict]] + r"""An array of streams for this part.""" class GetMediaMetaDataPart(BaseModel): @@ -421,24 +482,12 @@ class GetMediaMetaDataPart(BaseModel): key: str r"""Key to access this part.""" - duration: int - r"""Duration of the part in milliseconds.""" - file: str r"""File path for the part.""" size: int r"""File size in bytes.""" - container: str - r"""Container format of the part.""" - - video_profile: Annotated[str, pydantic.Field(alias="videoProfile")] - r"""Video profile for the part.""" - - stream: Annotated[List[GetMediaMetaDataStream], pydantic.Field(alias="Stream")] - r"""An array of streams for this part.""" - accessible: Optional[bool] = None r"""Indicates if the part is accessible.""" @@ -447,86 +496,152 @@ class GetMediaMetaDataPart(BaseModel): 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[GetMediaMetaDataLibraryOptimizedForStreaming], + 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[GetMediaMetaDataHasThumbnail], pydantic.Field(alias="hasThumbnail") + ] = GetMediaMetaDataHasThumbnail.FALSE + + stream: Annotated[ + Optional[List[GetMediaMetaDataStream]], pydantic.Field(alias="Stream") + ] = None + r"""An array of streams for this part.""" + class GetMediaMetaDataMediaTypedDict(TypedDict): id: int r"""Unique media identifier.""" - duration: int - r"""Duration of the media in milliseconds.""" - bitrate: int - r"""Bitrate in bits per second.""" - width: int - r"""Video width in pixels.""" - height: int - r"""Video height in pixels.""" - aspect_ratio: float - r"""Aspect ratio of the video.""" - audio_channels: int - r"""Number of audio channels.""" - audio_codec: str - r"""Audio codec used.""" - video_codec: str - r"""Video codec used.""" - video_resolution: str - r"""Video resolution (e.g., 4k).""" - container: str - r"""File container type.""" - video_frame_rate: str - r"""Frame rate of the video (e.g., 24p).""" - video_profile: str - r"""Video profile (e.g., main 10).""" 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] + 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).""" + 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] class GetMediaMetaDataMedia(BaseModel): id: int r"""Unique media identifier.""" - duration: int - r"""Duration of the media in milliseconds.""" - - bitrate: int - r"""Bitrate in bits per second.""" - - width: int - r"""Video width in pixels.""" - - height: int - r"""Video height in pixels.""" - - aspect_ratio: Annotated[float, pydantic.Field(alias="aspectRatio")] - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[int, pydantic.Field(alias="audioChannels")] - r"""Number of audio channels.""" - - audio_codec: Annotated[str, pydantic.Field(alias="audioCodec")] - r"""Audio codec used.""" - - video_codec: Annotated[str, pydantic.Field(alias="videoCodec")] - r"""Video codec used.""" - - video_resolution: Annotated[str, pydantic.Field(alias="videoResolution")] - r"""Video resolution (e.g., 4k).""" - - container: str - r"""File container type.""" - - video_frame_rate: Annotated[str, pydantic.Field(alias="videoFrameRate")] - r"""Frame rate of the video (e.g., 24p).""" - - video_profile: Annotated[str, pydantic.Field(alias="videoProfile")] - r"""Video profile (e.g., main 10).""" - 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.""" + + 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).""" + + 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[GetMediaMetaDataOptimizedForStreaming], + 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 + class GetMediaMetaDataImageTypedDict(TypedDict): alt: str @@ -613,17 +728,17 @@ class GetMediaMetaDataCountry(BaseModel): r"""The country name.""" -class GuidsTypedDict(TypedDict): +class GetMediaMetaDataGuidsTypedDict(TypedDict): id: str r"""The GUID value.""" -class Guids(BaseModel): +class GetMediaMetaDataGuids(BaseModel): id: str r"""The GUID value.""" -class RatingTypedDict(TypedDict): +class RatingsTypedDict(TypedDict): image: str r"""The image or reference for the rating.""" value: float @@ -632,7 +747,7 @@ class RatingTypedDict(TypedDict): r"""The type of rating (e.g., audience, critic).""" -class Rating(BaseModel): +class Ratings(BaseModel): image: str r"""The image or reference for the rating.""" @@ -830,12 +945,8 @@ class GetMediaMetaDataMetadataTypedDict(TypedDict): r"""The ID of the library section.""" library_section_key: str r"""The key of the library section.""" - content_rating: str - r"""The content rating (e.g., TV-MA).""" summary: str r"""A summary of the content.""" - audience_rating: float - r"""The audience rating for the content.""" year: int r"""The release year.""" thumb: str @@ -844,21 +955,11 @@ class GetMediaMetaDataMetadataTypedDict(TypedDict): r"""URL of the art image.""" duration: int r"""Duration of the content in milliseconds.""" - originally_available_at: date - r"""The original release date.""" added_at: int - r"""Unix timestamp when the item was added.""" updated_at: int - r"""Unix timestamp when the item was last updated.""" - audience_rating_image: str - r"""The URL for the audience rating image.""" image: List[GetMediaMetaDataImageTypedDict] r"""An array of image objects.""" ultra_blur_colors: GetMediaMetaDataUltraBlurColorsTypedDict - guids: List[GuidsTypedDict] - r"""An array of GUID objects.""" - rating: List[RatingTypedDict] - r"""An array of rating objects.""" parent_rating_key: NotRequired[str] r"""The rating key of the parent of this metadata item.""" grandparent_rating_key: NotRequired[str] @@ -879,30 +980,42 @@ class GetMediaMetaDataMetadataTypedDict(TypedDict): r"""The studio that produced the content.""" original_title: NotRequired[str] r"""The original title of the content.""" + content_rating: NotRequired[str] + r"""The content rating (e.g., TV-MA).""" index: NotRequired[int] r"""The index or order of the item.""" grandparent_title: NotRequired[str] r"""The title of the grandparent entity (typically the show's title).""" parent_title: NotRequired[str] r"""The title of the parent entity (typically the season's title).""" + audience_rating: NotRequired[float] + r"""The audience rating for the content.""" view_count: NotRequired[int] r"""The number of times the item has been viewed.""" skip_count: NotRequired[int] r"""The number of times the item has been skipped.""" last_viewed_at: NotRequired[int] r"""Unix timestamp of when the item was last viewed.""" + rating: NotRequired[float] + r"""The general rating""" + rating_image: NotRequired[str] + r"""The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image).""" tagline: NotRequired[str] r"""The tagline of the content.""" chapter_source: NotRequired[str] primary_extra_key: NotRequired[str] theme: NotRequired[str] r"""URL of the theme image.""" + originally_available_at: NotRequired[date] + r"""The original release date.""" leaf_count: NotRequired[int] r"""The total number of episodes (or leaves).""" viewed_leaf_count: NotRequired[int] r"""The number of episodes that have been viewed.""" child_count: NotRequired[int] r"""The number of child items.""" + audience_rating_image: NotRequired[str] + r"""The URL for the audience rating image.""" parent_index: NotRequired[int] r"""The index number of the parent entity, which could indicate its order or position.""" parent_thumb: NotRequired[str] @@ -916,6 +1029,10 @@ class GetMediaMetaDataMetadataTypedDict(TypedDict): r"""An array of genre tags.""" country: NotRequired[List[GetMediaMetaDataCountryTypedDict]] r"""An array of country tags.""" + guids: NotRequired[List[GetMediaMetaDataGuidsTypedDict]] + r"""An array of GUID objects.""" + ratings: NotRequired[List[RatingsTypedDict]] + r"""An array of rating objects.""" role: NotRequired[List[GetMediaMetaDataRoleTypedDict]] r"""An array of Actor roles.""" director: NotRequired[List[GetMediaMetaDataDirectorTypedDict]] @@ -955,15 +1072,9 @@ class GetMediaMetaDataMetadata(BaseModel): library_section_key: Annotated[str, pydantic.Field(alias="librarySectionKey")] r"""The key of the library section.""" - content_rating: Annotated[str, pydantic.Field(alias="contentRating")] - r"""The content rating (e.g., TV-MA).""" - summary: str r"""A summary of the content.""" - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the content.""" - year: int r"""The release year.""" @@ -976,19 +1087,9 @@ class GetMediaMetaDataMetadata(BaseModel): duration: int r"""Duration of the content in milliseconds.""" - originally_available_at: Annotated[ - date, pydantic.Field(alias="originallyAvailableAt") - ] - r"""The original release date.""" - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - r"""Unix timestamp when the item was added.""" updated_at: Annotated[int, pydantic.Field(alias="updatedAt")] - r"""Unix timestamp when the item was last updated.""" - - audience_rating_image: Annotated[str, pydantic.Field(alias="audienceRatingImage")] - r"""The URL for the audience rating image.""" image: Annotated[List[GetMediaMetaDataImage], pydantic.Field(alias="Image")] r"""An array of image objects.""" @@ -997,12 +1098,6 @@ class GetMediaMetaDataMetadata(BaseModel): GetMediaMetaDataUltraBlurColors, pydantic.Field(alias="UltraBlurColors") ] - guids: Annotated[List[Guids], pydantic.Field(alias="Guid")] - r"""An array of GUID objects.""" - - rating: Annotated[List[Rating], pydantic.Field(alias="Rating")] - r"""An array of rating objects.""" - parent_rating_key: Annotated[ Optional[str], pydantic.Field(alias="parentRatingKey") ] = None @@ -1045,6 +1140,11 @@ class GetMediaMetaDataMetadata(BaseModel): ) r"""The original title of the content.""" + content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""The content rating (e.g., TV-MA).""" + index: Optional[int] = None r"""The index or order of the item.""" @@ -1056,6 +1156,11 @@ class GetMediaMetaDataMetadata(BaseModel): parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None r"""The title of the parent entity (typically the season's title).""" + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""The audience rating for the content.""" + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None r"""The number of times the item has been viewed.""" @@ -1067,6 +1172,12 @@ class GetMediaMetaDataMetadata(BaseModel): ) r"""Unix timestamp of when the item was last viewed.""" + rating: Optional[float] = None + r"""The general rating""" + + rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None + r"""The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image).""" + tagline: Optional[str] = None r"""The tagline of the content.""" @@ -1081,6 +1192,11 @@ class GetMediaMetaDataMetadata(BaseModel): theme: Optional[str] = None r"""URL of the theme image.""" + originally_available_at: Annotated[ + Optional[date], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""The original release date.""" + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None r"""The total number of episodes (or leaves).""" @@ -1092,6 +1208,11 @@ class GetMediaMetaDataMetadata(BaseModel): child_count: Annotated[Optional[int], pydantic.Field(alias="childCount")] = None r"""The number of child items.""" + audience_rating_image: Annotated[ + Optional[str], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""The URL for the audience rating image.""" + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None r"""The index number of the parent entity, which could indicate its order or position.""" @@ -1122,6 +1243,14 @@ class GetMediaMetaDataMetadata(BaseModel): ] = None r"""An array of country tags.""" + guids: Annotated[ + Optional[List[GetMediaMetaDataGuids]], pydantic.Field(alias="Guid") + ] = None + r"""An array of GUID objects.""" + + ratings: Annotated[Optional[List[Ratings]], pydantic.Field(alias="Rating")] = None + r"""An array of rating objects.""" + role: Annotated[ Optional[List[GetMediaMetaDataRole]], pydantic.Field(alias="Role") ] = None @@ -1152,7 +1281,8 @@ class GetMediaMetaDataMetadata(BaseModel): class GetMediaMetaDataMediaContainerTypedDict(TypedDict): - size: float + size: int + r"""Number of media items returned in this response.""" allow_sync: bool r"""Indicates whether syncing is allowed.""" identifier: str @@ -1172,7 +1302,8 @@ class GetMediaMetaDataMediaContainerTypedDict(TypedDict): class GetMediaMetaDataMediaContainer(BaseModel): - size: float + size: int + r"""Number of media items returned in this response.""" allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] r"""Indicates whether syncing is allowed.""" 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 12c00ad..7b655de 100644 --- a/src/plex_api_client/models/operations/get_recently_added.py +++ b/src/plex_api_client/models/operations/get_recently_added.py @@ -143,6 +143,7 @@ class GetRecentlyAddedFilterTypedDict(TypedDict): key: str title: str type: str + advanced: NotRequired[bool] class GetRecentlyAddedFilter(BaseModel): @@ -156,6 +157,8 @@ class GetRecentlyAddedFilter(BaseModel): type: str + advanced: Optional[bool] = None + class GetRecentlyAddedActiveDirection(str, Enum): r"""The direction of the sort. Can be either `asc` or `desc`.""" @@ -242,6 +245,7 @@ class GetRecentlyAddedTypeTypedDict(TypedDict): type: str title: str active: bool + subtype: NotRequired[str] filter_: NotRequired[List[GetRecentlyAddedFilterTypedDict]] sort: NotRequired[List[GetRecentlyAddedSortTypedDict]] field: NotRequired[List[GetRecentlyAddedFieldTypedDict]] @@ -256,6 +260,8 @@ class GetRecentlyAddedType(BaseModel): active: bool + subtype: Optional[str] = None + filter_: Annotated[ Optional[List[GetRecentlyAddedFilter]], pydantic.Field(alias="Filter") ] = None @@ -319,6 +325,8 @@ class GetRecentlyAddedHubsType(str, Enum): TV_SHOW = "show" SEASON = "season" EPISODE = "episode" + ARTIST = "artist" + ALBUM = "album" class FlattenSeasons(str, Enum): @@ -1225,7 +1233,7 @@ class GetRecentlyAddedMetadata(BaseModel): class GetRecentlyAddedMediaContainerTypedDict(TypedDict): - size: float + size: int offset: NotRequired[int] total_size: NotRequired[int] identifier: NotRequired[str] @@ -1238,7 +1246,7 @@ class GetRecentlyAddedMediaContainerTypedDict(TypedDict): class GetRecentlyAddedMediaContainer(BaseModel): - size: float + size: int offset: Optional[int] = None diff --git a/src/plex_api_client/models/operations/get_recently_added_library.py b/src/plex_api_client/models/operations/get_recently_added_library.py index b2c443b..d91a458 100644 --- a/src/plex_api_client/models/operations/get_recently_added_library.py +++ b/src/plex_api_client/models/operations/get_recently_added_library.py @@ -140,6 +140,7 @@ class GetRecentlyAddedLibraryFilterTypedDict(TypedDict): key: str title: str type: str + advanced: NotRequired[bool] class GetRecentlyAddedLibraryFilter(BaseModel): @@ -153,6 +154,8 @@ class GetRecentlyAddedLibraryFilter(BaseModel): type: str + advanced: Optional[bool] = None + class ActiveDirection(str, Enum): r"""The direction of the sort. Can be either `asc` or `desc`.""" @@ -237,6 +240,7 @@ class GetRecentlyAddedLibraryTypeTypedDict(TypedDict): type: str title: str active: bool + subtype: NotRequired[str] filter_: NotRequired[List[GetRecentlyAddedLibraryFilterTypedDict]] sort: NotRequired[List[SortTypedDict]] field: NotRequired[List[FieldTTypedDict]] @@ -251,6 +255,8 @@ class GetRecentlyAddedLibraryType(BaseModel): active: bool + subtype: Optional[str] = None + filter_: Annotated[ Optional[List[GetRecentlyAddedLibraryFilter]], pydantic.Field(alias="Filter") ] = None diff --git a/src/plex_api_client/models/operations/get_search_all_libraries.py b/src/plex_api_client/models/operations/get_search_all_libraries.py index fe54da9..ce6a902 100644 --- a/src/plex_api_client/models/operations/get_search_all_libraries.py +++ b/src/plex_api_client/models/operations/get_search_all_libraries.py @@ -19,14 +19,14 @@ class SearchTypes(str, Enum): TV = "tv" -class QueryParamIncludeCollections(int, Enum): +class GetSearchAllLibrariesQueryParamIncludeCollections(int, Enum): r"""Whether to include collections in the search results.""" DISABLE = 0 ENABLE = 1 -class QueryParamIncludeExternalMedia(int, Enum): +class GetSearchAllLibrariesQueryParamIncludeExternalMedia(int, Enum): r"""Whether to include external media in the search results.""" DISABLE = 0 @@ -44,9 +44,11 @@ class GetSearchAllLibrariesRequestTypedDict(TypedDict): r"""A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv. """ - include_collections: NotRequired[QueryParamIncludeCollections] + include_collections: NotRequired[GetSearchAllLibrariesQueryParamIncludeCollections] r"""Whether to include collections in the search results.""" - include_external_media: NotRequired[QueryParamIncludeExternalMedia] + include_external_media: NotRequired[ + GetSearchAllLibrariesQueryParamIncludeExternalMedia + ] r"""Whether to include external media in the search results.""" @@ -79,17 +81,17 @@ class GetSearchAllLibrariesRequest(BaseModel): """ include_collections: Annotated[ - Optional[QueryParamIncludeCollections], + Optional[GetSearchAllLibrariesQueryParamIncludeCollections], pydantic.Field(alias="includeCollections"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeCollections.DISABLE + ] = GetSearchAllLibrariesQueryParamIncludeCollections.DISABLE r"""Whether to include collections in the search results.""" include_external_media: Annotated[ - Optional[QueryParamIncludeExternalMedia], + Optional[GetSearchAllLibrariesQueryParamIncludeExternalMedia], pydantic.Field(alias="includeExternalMedia"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeExternalMedia.DISABLE + ] = GetSearchAllLibrariesQueryParamIncludeExternalMedia.DISABLE r"""Whether to include external media in the search results.""" @@ -100,6 +102,8 @@ class GetSearchAllLibrariesType(str, Enum): TV_SHOW = "show" SEASON = "season" EPISODE = "episode" + ARTIST = "artist" + ALBUM = "album" class GetSearchAllLibrariesFlattenSeasons(str, Enum):