diff --git a/.gitignore b/.gitignore index 68c1a855..5710fb15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +.DS_Store +**/.speakeasy/temp/ +**/.speakeasy/logs/ +.DS_Store /mcp-server /bin /.eslintcache diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index b920e53a..a3453c3b 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 16f22cbf-f23f-4419-8924-3a4b06381947 management: - docChecksum: 3a619a1b9e1e14a2e6e8d574c2e2d637 + docChecksum: 240f8c1c261507210580a28b30721518 docVersion: 0.0.3 - speakeasyVersion: 1.535.1 - generationVersion: 2.585.2 - releaseVersion: 0.37.0 - configChecksum: 6123b3157e6662ed6918a7c050ffebc5 + speakeasyVersion: 1.541.2 + generationVersion: 2.595.4 + releaseVersion: 0.37.1 + configChecksum: 2cfb133867c26731df6045dd2da5e216 repoURL: https://github.com/LukeHagar/plexjs.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexjs @@ -15,7 +15,7 @@ features: typescript: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.11 - core: 3.21.6 + core: 3.21.7 defaultEnabledRetries: 0.1.0 deprecations: 2.81.1 downloadStreams: 0.1.1 @@ -372,12 +372,14 @@ generatedFiles: - docs/sdk/models/operations/allowtuners.md - docs/sdk/models/operations/applyupdatesrequest.md - docs/sdk/models/operations/applyupdatesresponse.md + - docs/sdk/models/operations/attributes.md - docs/sdk/models/operations/autoselectsubtitle.md - docs/sdk/models/operations/billing.md - docs/sdk/models/operations/butlertask.md - docs/sdk/models/operations/butlertasks.md - docs/sdk/models/operations/cancelserveractivitiesrequest.md - docs/sdk/models/operations/cancelserveractivitiesresponse.md + - docs/sdk/models/operations/chapter.md - docs/sdk/models/operations/checkforupdatesrequest.md - docs/sdk/models/operations/checkforupdatesresponse.md - docs/sdk/models/operations/clearplaylistcontentsrequest.md @@ -406,6 +408,7 @@ generatedFiles: - docs/sdk/models/operations/enablecreditsmarkergeneration.md - docs/sdk/models/operations/enablepapertrailresponse.md - docs/sdk/models/operations/episodesort.md + - docs/sdk/models/operations/extras.md - docs/sdk/models/operations/feature.md - docs/sdk/models/operations/field.md - docs/sdk/models/operations/fieldtype.md @@ -458,6 +461,7 @@ generatedFiles: - docs/sdk/models/operations/getallmedialibraryrole.md - docs/sdk/models/operations/getallmedialibrarysort.md - docs/sdk/models/operations/getallmedialibrarystream.md + - docs/sdk/models/operations/getallmedialibrarystreamtype.md - docs/sdk/models/operations/getallmedialibrarytype.md - docs/sdk/models/operations/getallmedialibraryultrablurcolors.md - docs/sdk/models/operations/getallmedialibrarywriter.md @@ -577,6 +581,7 @@ generatedFiles: - docs/sdk/models/operations/getmediametadatahasthumbnail.md - docs/sdk/models/operations/getmediametadataimage.md - docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md + - docs/sdk/models/operations/getmediametadatalibrarytype.md - docs/sdk/models/operations/getmediametadatalocation.md - docs/sdk/models/operations/getmediametadatamedia.md - docs/sdk/models/operations/getmediametadatamediacontainer.md @@ -592,6 +597,8 @@ generatedFiles: - docs/sdk/models/operations/getmediametadatarole.md - docs/sdk/models/operations/getmediametadatasimilar.md - docs/sdk/models/operations/getmediametadatastream.md + - docs/sdk/models/operations/getmediametadatastreamtype.md + - docs/sdk/models/operations/getmediametadatatype.md - docs/sdk/models/operations/getmediametadataultrablurcolors.md - docs/sdk/models/operations/getmediametadatawriter.md - docs/sdk/models/operations/getmediapostersmediacontainer.md @@ -828,6 +835,7 @@ generatedFiles: - docs/sdk/models/operations/loglineresponse.md - docs/sdk/models/operations/logmultilineresponse.md - docs/sdk/models/operations/mailingliststatus.md + - docs/sdk/models/operations/marker.md - docs/sdk/models/operations/markplayedrequest.md - docs/sdk/models/operations/markplayedresponse.md - docs/sdk/models/operations/markunplayedrequest.md @@ -931,6 +939,7 @@ generatedFiles: - docs/sdk/models/operations/stoptranscodesessionrequest.md - docs/sdk/models/operations/stoptranscodesessionresponse.md - docs/sdk/models/operations/stream.md + - docs/sdk/models/operations/streamtype.md - docs/sdk/models/operations/subscription.md - docs/sdk/models/operations/tag.md - docs/sdk/models/operations/taskname.md @@ -1645,7 +1654,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}, {"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "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": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}, {"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "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, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}, {"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "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": [{"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, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}, {"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: @@ -1789,7 +1798,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}, {"tag": "Crime"}, {"tag": "Crime"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}, {"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}], "Guid": [{"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"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, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}, {"tag": "Crime"}, {"tag": "Crime"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}, {"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}], "Guid": [{"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} "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": @@ -1900,7 +1909,7 @@ examples: asyncRefreshLocalMediaAgent: true responses: "200": - application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "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"}, {"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "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"}, {"id": 1057, "filter": "genre=1057", "tag": "Crime"}, {"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"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"}, {"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"}, {"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"}, {"path": "/TV Shows/Better Call Saul"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}, {"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"}], "Guid": [{"id": "imdb://tt3032476"}, {"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"}, {"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"}, {"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"}]}]}} + 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": "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"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}, {"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "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"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}, {"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"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}, {"id": 259, "tag": "Crime", "filter": "genre=19"}, {"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "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"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "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"}, {"path": "/TV Shows/Better Call Saul"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}, {"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"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "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"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "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"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 58e7e716..32996735 100755 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -11,11 +11,12 @@ generation: parameterOrderingFeb2024: true requestResponseComponentNamesFeb2024: true securityFeb2025: false + sharedErrorComponentsApr2025: false auth: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false typescript: - version: 0.37.0 + version: 0.37.1 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 9556615b..2a23993c 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.535.1 +speakeasyVersion: 1.541.2 sources: my-source: sourceNamespace: my-source @@ -9,20 +9,20 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:b2f9599237ceb13cf8f9c1693e38b290177b65fb389cebf0c3c60b8ef4778615 - sourceBlobDigest: sha256:f8df9ef88ada992cd981d601e6c0b45cc82db76aba3d915c2f9d08f90c81ced9 + sourceRevisionDigest: sha256:31ab7b2e65ccf1e0349bcd8b35791d1ce80091313481874749163fc0c80fd8ed + sourceBlobDigest: sha256:d971fff9723c626fe70403a2a83d813c396a20b06ccd6b899263762038cfdbb0 tags: - latest - - speakeasy-sdk-regen-1745021437 + - speakeasy-sdk-regen-1746058355 - 0.0.3 targets: plexjs: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:b2f9599237ceb13cf8f9c1693e38b290177b65fb389cebf0c3c60b8ef4778615 - sourceBlobDigest: sha256:f8df9ef88ada992cd981d601e6c0b45cc82db76aba3d915c2f9d08f90c81ced9 + sourceRevisionDigest: sha256:31ab7b2e65ccf1e0349bcd8b35791d1ce80091313481874749163fc0c80fd8ed + sourceBlobDigest: sha256:d971fff9723c626fe70403a2a83d813c396a20b06ccd6b899263762038cfdbb0 codeSamplesNamespace: code-samples-typescript-plexjs - codeSamplesRevisionDigest: sha256:86b4c9afc42dfef089cf6e9c6ad9f7df1060563fa04a7b1cdaa1f88b4c8cd902 + codeSamplesRevisionDigest: sha256:a91f578e701b7e8f5859b16094a73f590cbbec59c3b81c7f8baeafbef0f3a47e workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 32fef372..9f78844a 100644 --- a/README.md +++ b/README.md @@ -629,6 +629,7 @@ Certain SDK methods accept files as part of a multi-part request. It is possible ```typescript import { PlexAPI } from "@lukehagar/plexjs"; +import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", @@ -637,6 +638,7 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.postMediaArts( 2268, + await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b", ); diff --git a/RELEASES.md b/RELEASES.md index 7273b5da..6829cbb8 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1318,4 +1318,14 @@ Based on: ### Generated - [typescript v0.37.0] . ### Releases -- [NPM v0.37.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.37.0 - . \ No newline at end of file +- [NPM v0.37.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.37.0 - . + +## 2025-05-01 00:12:16 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.541.2 (2.595.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [typescript v0.37.1] . +### Releases +- [NPM v0.37.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.37.1 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index 30153d57..4485a731 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -621,13 +621,14 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; + import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaArts(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaArts(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); // Handle the result console.log(result); @@ -708,13 +709,14 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; + import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaPoster(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaPoster(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); // Handle the result console.log(result); diff --git a/docs/sdk/models/operations/attributes.md b/docs/sdk/models/operations/attributes.md new file mode 100644 index 00000000..6509f6dc --- /dev/null +++ b/docs/sdk/models/operations/attributes.md @@ -0,0 +1,21 @@ +# Attributes + +Attributes associated with the marker. + +## Example Usage + +```typescript +import { Attributes } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Attributes = { + id: 306970, + version: 4, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The identifier for the attributes. | 306970 | +| `version` | *number* | :heavy_minus_sign: | The version number of the marker attributes. | 4 | \ No newline at end of file diff --git a/docs/sdk/models/operations/chapter.md b/docs/sdk/models/operations/chapter.md new file mode 100644 index 00000000..b8a29916 --- /dev/null +++ b/docs/sdk/models/operations/chapter.md @@ -0,0 +1,29 @@ +# Chapter + +The thumbnail for the chapter + +## Example Usage + +```typescript +import { Chapter } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Chapter = { + id: 4, + filter: "thumb=4", + index: 1, + startTimeOffset: 0, + endTimeOffset: 100100, + thumb: "/library/media/46883/chapterImages/1", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `id` | *number* | :heavy_check_mark: | N/A | 4 | +| `filter` | *string* | :heavy_check_mark: | N/A | thumb=4 | +| `index` | *number* | :heavy_check_mark: | N/A | 1 | +| `startTimeOffset` | *number* | :heavy_check_mark: | N/A | 0 | +| `endTimeOffset` | *number* | :heavy_check_mark: | N/A | 100100 | +| `thumb` | *string* | :heavy_check_mark: | N/A | /library/media/46883/chapterImages/1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/extras.md b/docs/sdk/models/operations/extras.md new file mode 100644 index 00000000..e3a6cc2c --- /dev/null +++ b/docs/sdk/models/operations/extras.md @@ -0,0 +1,17 @@ +# Extras + +## Example Usage + +```typescript +import { Extras } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Extras = { + size: 1, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `size` | *number* | :heavy_minus_sign: | The size of the extras. | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymedia.md b/docs/sdk/models/operations/getallmedialibrarymedia.md index 5e712818..d7848ac7 100644 --- a/docs/sdk/models/operations/getallmedialibrarymedia.md +++ b/docs/sdk/models/operations/getallmedialibrarymedia.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetAllMediaLibraryMedia } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllMediaLibraryMedia, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllMediaLibraryMedia = { id: 387322, @@ -41,7 +41,8 @@ let value: GetAllMediaLibraryMedia = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -69,6 +70,7 @@ let value: GetAllMediaLibraryMedia = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibrarymediacontainer.md b/docs/sdk/models/operations/getallmedialibrarymediacontainer.md index ca51e7fe..36bb4f1b 100644 --- a/docs/sdk/models/operations/getallmedialibrarymediacontainer.md +++ b/docs/sdk/models/operations/getallmedialibrarymediacontainer.md @@ -7,6 +7,7 @@ import { GetAllMediaLibraryLibraryResponseType, GetAllMediaLibraryLibraryType, GetAllMediaLibraryMediaContainer, + GetAllMediaLibraryStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -188,7 +189,8 @@ let value: GetAllMediaLibraryMediaContainer = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -216,6 +218,7 @@ let value: GetAllMediaLibraryMediaContainer = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibrarymetadata.md b/docs/sdk/models/operations/getallmedialibrarymetadata.md index a0dac961..8bb33578 100644 --- a/docs/sdk/models/operations/getallmedialibrarymetadata.md +++ b/docs/sdk/models/operations/getallmedialibrarymetadata.md @@ -10,6 +10,7 @@ import { GetAllMediaLibraryLibraryResponseType, GetAllMediaLibraryLibraryType, GetAllMediaLibraryMetadata, + GetAllMediaLibraryStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -122,7 +123,8 @@ let value: GetAllMediaLibraryMetadata = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -150,6 +152,7 @@ let value: GetAllMediaLibraryMetadata = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibrarypart.md b/docs/sdk/models/operations/getallmedialibrarypart.md index 14ce64eb..7e69da55 100644 --- a/docs/sdk/models/operations/getallmedialibrarypart.md +++ b/docs/sdk/models/operations/getallmedialibrarypart.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetAllMediaLibraryPart } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllMediaLibraryPart, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllMediaLibraryPart = { accessible: true, @@ -22,7 +22,8 @@ let value: GetAllMediaLibraryPart = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -50,6 +51,7 @@ let value: GetAllMediaLibraryPart = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibraryresponse.md b/docs/sdk/models/operations/getallmedialibraryresponse.md index 8e6086df..47bae097 100644 --- a/docs/sdk/models/operations/getallmedialibraryresponse.md +++ b/docs/sdk/models/operations/getallmedialibraryresponse.md @@ -7,6 +7,7 @@ import { GetAllMediaLibraryLibraryResponseType, GetAllMediaLibraryLibraryType, GetAllMediaLibraryResponse, + GetAllMediaLibraryStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -195,7 +196,8 @@ let value: GetAllMediaLibraryResponse = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -223,6 +225,7 @@ let value: GetAllMediaLibraryResponse = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibraryresponsebody.md b/docs/sdk/models/operations/getallmedialibraryresponsebody.md index 5f660914..6eb981f4 100644 --- a/docs/sdk/models/operations/getallmedialibraryresponsebody.md +++ b/docs/sdk/models/operations/getallmedialibraryresponsebody.md @@ -9,6 +9,7 @@ import { GetAllMediaLibraryLibraryResponseType, GetAllMediaLibraryLibraryType, GetAllMediaLibraryResponseBody, + GetAllMediaLibraryStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -191,7 +192,8 @@ let value: GetAllMediaLibraryResponseBody = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -219,6 +221,7 @@ let value: GetAllMediaLibraryResponseBody = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getallmedialibrarystream.md b/docs/sdk/models/operations/getallmedialibrarystream.md index 308ce3fc..ddb9e8ab 100644 --- a/docs/sdk/models/operations/getallmedialibrarystream.md +++ b/docs/sdk/models/operations/getallmedialibrarystream.md @@ -3,11 +3,12 @@ ## Example Usage ```typescript -import { GetAllMediaLibraryStream } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllMediaLibraryStream, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllMediaLibraryStream = { id: 1002625, - streamType: 1, + streamType: GetAllMediaLibraryStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -35,6 +36,7 @@ let value: GetAllMediaLibraryStream = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -60,54 +62,56 @@ let value: GetAllMediaLibraryStream = { ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `streamType` | *number* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | -| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *number* | :heavy_check_mark: | Index of the stream. | 0 | -| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | -| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | -| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | -| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | -| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `streamType` | [operations.GetAllMediaLibraryStreamType](../../../sdk/models/operations/getallmedialibrarystreamtype.md) | :heavy_check_mark: | Stream type:
- 1 = video
- 2 = audio
- 3 = subtitle
| 1 | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarystreamtype.md b/docs/sdk/models/operations/getallmedialibrarystreamtype.md new file mode 100644 index 00000000..49db0671 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarystreamtype.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryStreamType + +Stream type: + - 1 = video + - 2 = audio + - 3 = subtitle + + +## Example Usage + +```typescript +import { GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryStreamType = GetAllMediaLibraryStreamType.Video; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Video` | 1 | +| `Audio` | 2 | +| `Subtitle` | 3 | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatacountry.md b/docs/sdk/models/operations/getmediametadatacountry.md index 7cc115d5..817f8705 100644 --- a/docs/sdk/models/operations/getmediametadatacountry.md +++ b/docs/sdk/models/operations/getmediametadatacountry.md @@ -1,21 +1,23 @@ # GetMediaMetaDataCountry +The filter query string for country media items. + ## Example Usage ```typescript import { GetMediaMetaDataCountry } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataCountry = { - id: 58591, - filter: "country=58591", + id: 259, tag: "United States of America", + filter: "country=19", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `id` | *number* | :heavy_check_mark: | The unique country identifier. | 58591 | -| `filter` | *string* | :heavy_check_mark: | The filter string for the country. | country=58591 | -| `tag` | *string* | :heavy_check_mark: | The country name. | United States of America | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `id` | *number* | :heavy_check_mark: | N/A | 259 | +| `tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | +| `filter` | *string* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatadirector.md b/docs/sdk/models/operations/getmediametadatadirector.md index aa29f173..5dfa03f5 100644 --- a/docs/sdk/models/operations/getmediametadatadirector.md +++ b/docs/sdk/models/operations/getmediametadatadirector.md @@ -6,23 +6,21 @@ import { GetMediaMetaDataDirector } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataDirector = { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", + id: 126522, + tag: "Danny Boyle", + filter: "director=235876", + tagKey: "5d776831151a60001f24d031", thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the director. | 126522 | +| `tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | +| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | +| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatagenre.md b/docs/sdk/models/operations/getmediametadatagenre.md index 03494ae1..b922c314 100644 --- a/docs/sdk/models/operations/getmediametadatagenre.md +++ b/docs/sdk/models/operations/getmediametadatagenre.md @@ -1,21 +1,23 @@ # GetMediaMetaDataGenre +The filter query string for similar items. + ## Example Usage ```typescript import { GetMediaMetaDataGenre } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataGenre = { - id: 1057, - filter: "genre=1057", + id: 259, tag: "Crime", + filter: "genre=19", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `id` | *number* | :heavy_check_mark: | The unique genre identifier. | 1057 | -| `filter` | *string* | :heavy_check_mark: | The filter string for the genre. | genre=1057 | -| `tag` | *string* | :heavy_check_mark: | The genre name. | Crime | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `id` | *number* | :heavy_check_mark: | N/A | 259 | +| `tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | +| `filter` | *string* | :heavy_check_mark: | N/A | genre=19 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadataimage.md b/docs/sdk/models/operations/getmediametadataimage.md index e3499469..65887a71 100644 --- a/docs/sdk/models/operations/getmediametadataimage.md +++ b/docs/sdk/models/operations/getmediametadataimage.md @@ -3,19 +3,19 @@ ## Example Usage ```typescript -import { GetMediaMetaDataImage } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataImage, GetMediaMetaDataLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataImage = { - alt: "Better Call Saul", - type: "coverPoster", - url: "/library/metadata/44288/thumb/1736487993", + alt: "Episode 1", + type: GetMediaMetaDataLibraryType.Background, + url: "/library/metadata/45521/thumb/1644710589", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `alt` | *string* | :heavy_check_mark: | Alternate text for the image. | Better Call Saul | -| `type` | *string* | :heavy_check_mark: | The type of image (e.g., coverPoster, background, clearLogo). | coverPoster | -| `url` | *string* | :heavy_check_mark: | The URL of the image. | /library/metadata/44288/thumb/1736487993 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetMediaMetaDataLibraryType](../../../sdk/models/operations/getmediametadatalibrarytype.md) | :heavy_check_mark: | N/A | background | +| `url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatalibrarytype.md b/docs/sdk/models/operations/getmediametadatalibrarytype.md new file mode 100644 index 00000000..c6cadbe1 --- /dev/null +++ b/docs/sdk/models/operations/getmediametadatalibrarytype.md @@ -0,0 +1,21 @@ +# GetMediaMetaDataLibraryType + +## Example Usage + +```typescript +import { GetMediaMetaDataLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataLibraryType = GetMediaMetaDataLibraryType.Background; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `CoverPoster` | coverPoster | +| `Background` | background | +| `Snapshot` | snapshot | +| `ClearLogo` | clearLogo | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatamedia.md b/docs/sdk/models/operations/getmediametadatamedia.md index 15b0d8ad..0b7fe3fc 100644 --- a/docs/sdk/models/operations/getmediametadatamedia.md +++ b/docs/sdk/models/operations/getmediametadatamedia.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetMediaMetaDataMedia } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataMedia, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataMedia = { id: 387322, @@ -41,7 +41,8 @@ let value: GetMediaMetaDataMedia = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -69,6 +70,7 @@ let value: GetMediaMetaDataMedia = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getmediametadatamediacontainer.md b/docs/sdk/models/operations/getmediametadatamediacontainer.md index e789fc7e..0e633baf 100644 --- a/docs/sdk/models/operations/getmediametadatamediacontainer.md +++ b/docs/sdk/models/operations/getmediametadatamediacontainer.md @@ -3,7 +3,12 @@ ## Example Usage ```typescript -import { GetMediaMetaDataMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetMediaMetaDataLibraryType, + GetMediaMetaDataMediaContainer, + GetMediaMetaDataStreamType, + GetMediaMetaDataType, +} from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetMediaMetaDataMediaContainer = { @@ -17,55 +22,80 @@ let value: GetMediaMetaDataMediaContainer = { 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", + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetMediaMetaDataType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", 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.", + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work 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, - grandparentTitle: "Alice in Borderland", - parentTitle: "Season 2", - audienceRating: 8.7, - viewCount: 4, - skipCount: 1, - lastViewedAt: 1625764795, - year: 2015, - rating: 6, - ratingImage: "rottentomatoes://image.rating.ripe", - tagline: "Make the call", - chapterSource: "media", - primaryExtraKey: "/library/metadata/134704", - thumb: "/library/metadata/44288/thumb/1736487993", - art: "/library/metadata/44288/art/1736487993", - theme: "/library/metadata/44288/theme/1736487993", - duration: 2700000, - originallyAvailableAt: new RFCDate("2015-02-08"), - leafCount: 63, - viewedLeafCount: 4, - childCount: 6, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), 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", + 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: GetMediaMetaDataLibraryType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + librarySectionID: 1, + librarySectionTitle: "Movies", + librarySectionKey: "/library/sections/1", media: [ { id: 387322, @@ -103,7 +133,8 @@ let value: GetMediaMetaDataMediaContainer = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -131,6 +162,7 @@ let value: GetMediaMetaDataMediaContainer = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -157,31 +189,60 @@ let value: GetMediaMetaDataMediaContainer = { ], }, ], - 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", + id: 259, tag: "Crime", + filter: "genre=19", }, ], country: [ { - id: 58591, - filter: "country=58591", + id: 259, tag: "United States of America", + filter: "country=19", + }, + ], + director: [ + { + id: 126522, + tag: "Danny Boyle", + filter: "director=235876", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + }, + ], + writer: [ + { + id: 126522, + tag: "Jamie P. Hanson", + filter: "writer=126522", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + tagKey: "5d77683d85719b001f3a535e", + }, + ], + producer: [ + { + id: 109501, + filter: "actor=109501", + tag: "Bob Odenkirk", + tagKey: "5d77683254f42c001f8c3f69", + role: "Jimmy McGill", + thumb: + "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + }, + ], + role: [ + { + id: 126522, + tag: "Teller", + role: "Self - Judge", + filter: "actor=126522", + tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }, ], guids: [ @@ -196,50 +257,6 @@ let value: GetMediaMetaDataMediaContainer = { 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", - }, - ], - 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", - }, - ], - 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, @@ -252,6 +269,32 @@ let value: GetMediaMetaDataMediaContainer = { path: "/TV Shows/Better Call Saul", }, ], + chapter: [ + { + id: 4, + filter: "thumb=4", + index: 1, + startTimeOffset: 0, + endTimeOffset: 100100, + thumb: "/library/media/46883/chapterImages/1", + }, + ], + marker: [ + { + id: 306970, + type: "credits", + startTimeOffset: 4176050, + endTimeOffset: 4393389, + final: true, + attributes: { + id: 306970, + version: 4, + }, + }, + ], + extras: { + size: 1, + }, }, ], }; diff --git a/docs/sdk/models/operations/getmediametadatametadata.md b/docs/sdk/models/operations/getmediametadatametadata.md index 38d9f419..9eb2e14f 100644 --- a/docs/sdk/models/operations/getmediametadatametadata.md +++ b/docs/sdk/models/operations/getmediametadatametadata.md @@ -1,61 +1,94 @@ # GetMediaMetaDataMetadata +Unknown + + ## Example Usage ```typescript -import { GetMediaMetaDataMetadata } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetMediaMetaDataLibraryType, + GetMediaMetaDataMetadata, + GetMediaMetaDataStreamType, + GetMediaMetaDataType, +} from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetMediaMetaDataMetadata = { - 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", + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetMediaMetaDataType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", 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.", + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work 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, - grandparentTitle: "Alice in Borderland", - parentTitle: "Season 2", - audienceRating: 8.7, - viewCount: 4, - skipCount: 1, - lastViewedAt: 1625764795, - year: 2015, - rating: 6, - ratingImage: "rottentomatoes://image.rating.ripe", - tagline: "Make the call", - chapterSource: "media", - primaryExtraKey: "/library/metadata/134704", - thumb: "/library/metadata/44288/thumb/1736487993", - art: "/library/metadata/44288/art/1736487993", - theme: "/library/metadata/44288/theme/1736487993", - duration: 2700000, - originallyAvailableAt: new RFCDate("2015-02-08"), - leafCount: 63, - viewedLeafCount: 4, - childCount: 6, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), 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", + 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: GetMediaMetaDataLibraryType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + librarySectionID: 1, + librarySectionTitle: "Movies", + librarySectionKey: "/library/sections/1", media: [ { id: 387322, @@ -93,7 +126,8 @@ let value: GetMediaMetaDataMetadata = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -121,6 +155,7 @@ let value: GetMediaMetaDataMetadata = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -147,31 +182,60 @@ let value: GetMediaMetaDataMetadata = { ], }, ], - 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", + id: 259, tag: "Crime", + filter: "genre=19", }, ], country: [ { - id: 58591, - filter: "country=58591", + id: 259, tag: "United States of America", + filter: "country=19", + }, + ], + director: [ + { + id: 126522, + tag: "Danny Boyle", + filter: "director=235876", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + }, + ], + writer: [ + { + id: 126522, + tag: "Jamie P. Hanson", + filter: "writer=126522", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + tagKey: "5d77683d85719b001f3a535e", + }, + ], + producer: [ + { + id: 109501, + filter: "actor=109501", + tag: "Bob Odenkirk", + tagKey: "5d77683254f42c001f8c3f69", + role: "Jimmy McGill", + thumb: + "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + }, + ], + role: [ + { + id: 126522, + tag: "Teller", + role: "Self - Judge", + filter: "actor=126522", + tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }, ], guids: [ @@ -186,50 +250,6 @@ let value: GetMediaMetaDataMetadata = { 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", - }, - ], - 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", - }, - ], - 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, @@ -242,71 +262,109 @@ let value: GetMediaMetaDataMetadata = { path: "/TV Shows/Better Call Saul", }, ], + chapter: [ + { + id: 4, + filter: "thumb=4", + index: 1, + startTimeOffset: 0, + endTimeOffset: 100100, + thumb: "/library/media/46883/chapterImages/1", + }, + ], + marker: [ + { + id: 306970, + type: "credits", + startTimeOffset: 4176050, + endTimeOffset: 4393389, + final: true, + attributes: { + id: 306970, + version: 4, + }, + }, + ], + extras: { + size: 1, + }, }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ratingKey` | *string* | :heavy_check_mark: | The rating key of the metadata item. | 44288 | -| `parentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent of this metadata item. | 48047 | -| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent of this metadata item. | 45520 | -| `parentGuid` | *string* | :heavy_minus_sign: | A GUID identifying the parent entity (e.g., season) for the item. | plex://season/618b89208dde18df707ad15c | -| `grandparentGuid` | *string* | :heavy_minus_sign: | A GUID identifying the grandparent entity (e.g., show). | plex://show/5e16253691c20300412003a8 | -| `grandparentSlug` | *string* | :heavy_minus_sign: | A URL-friendly identifier (slug) for the grandparent entity. | alice-in-borderland-2020 | -| `grandparentKey` | *string* | :heavy_minus_sign: | A key identifying the grandparent metadata in the library. | /library/metadata/45520 | -| `parentKey` | *string* | :heavy_minus_sign: | A key identifying the parent metadata in the library. | /library/metadata/48047 | -| `key` | *string* | :heavy_check_mark: | The API key to access metadata details. | /library/metadata/44288/children | -| `guid` | *string* | :heavy_check_mark: | The globally unique identifier for the item. | plex://show/5d9c08254eefaa001f5d6dcb | -| `slug` | *string* | :heavy_minus_sign: | A URL-friendly identifier for the item. | better-call-saul | -| `studio` | *string* | :heavy_minus_sign: | The studio that produced the content. | Sony Pictures Television | -| `type` | *string* | :heavy_check_mark: | The type of content (e.g., show, movie). | show | -| `title` | *string* | :heavy_check_mark: | The title of the content. | Better Call Saul | -| `originalTitle` | *string* | :heavy_minus_sign: | The original title of the content. | Wicked: Part I | -| `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | -| `librarySectionID` | *number* | :heavy_check_mark: | The ID of the library section. | 2 | -| `librarySectionKey` | *string* | :heavy_check_mark: | The key of the library section. | /library/sections/2 | -| `contentRating` | *string* | :heavy_minus_sign: | The content rating (e.g., TV-MA). | TV-MA | -| `summary` | *string* | :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. | -| `index` | *number* | :heavy_minus_sign: | The index or order of the item. | 1 | -| `grandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent entity (typically the show's title). | Alice in Borderland | -| `parentTitle` | *string* | :heavy_minus_sign: | The title of the parent entity (typically the season's title). | Season 2 | -| `audienceRating` | *number* | :heavy_minus_sign: | The audience rating for the content. | 8.7 | -| `viewCount` | *number* | :heavy_minus_sign: | The number of times the item has been viewed. | 4 | -| `skipCount` | *number* | :heavy_minus_sign: | The number of times the item has been skipped. | 1 | -| `lastViewedAt` | *number* | :heavy_minus_sign: | Unix timestamp of when the item was last viewed. | 1625764795 | -| `year` | *number* | :heavy_check_mark: | The release year. | 2015 | -| `rating` | *number* | :heavy_minus_sign: | The general rating | 6 | -| `ratingImage` | *string* | :heavy_minus_sign: | The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). | rottentomatoes://image.rating.ripe | -| `tagline` | *string* | :heavy_minus_sign: | The tagline of the content. | Make the call | -| `chapterSource` | *string* | :heavy_minus_sign: | N/A | media | -| `primaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/134704 | -| `thumb` | *string* | :heavy_check_mark: | URL of the thumbnail image. | /library/metadata/44288/thumb/1736487993 | -| `art` | *string* | :heavy_check_mark: | URL of the art image. | /library/metadata/44288/art/1736487993 | -| `theme` | *string* | :heavy_minus_sign: | URL of the theme image. | /library/metadata/44288/theme/1736487993 | -| `duration` | *number* | :heavy_check_mark: | Duration of the content in milliseconds. | 2700000 | -| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | The original release date. | 2015-02-08 | -| `leafCount` | *number* | :heavy_minus_sign: | The total number of episodes (or leaves). | 63 | -| `viewedLeafCount` | *number* | :heavy_minus_sign: | The number of episodes that have been viewed. | 4 | -| `childCount` | *number* | :heavy_minus_sign: | The number of child items. | 6 | -| `addedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | -| `updatedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | -| `audienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | themoviedb://image.rating | -| `parentIndex` | *number* | :heavy_minus_sign: | The index number of the parent entity, which could indicate its order or position. | 2 | -| `parentThumb` | *string* | :heavy_minus_sign: | The URL of the parent's thumbnail image. | /library/metadata/48047/thumb/1671800243 | -| `grandparentThumb` | *string* | :heavy_minus_sign: | The URL of the grandparent's thumbnail image. | /library/metadata/45520/thumb/1736488003 | -| `grandparentArt` | *string* | :heavy_minus_sign: | The URL of the grandparent's art image. | /library/metadata/45520/art/1736488003 | -| `media` | [operations.GetMediaMetaDataMedia](../../../sdk/models/operations/getmediametadatamedia.md)[] | :heavy_minus_sign: | N/A | | -| `image` | [operations.GetMediaMetaDataImage](../../../sdk/models/operations/getmediametadataimage.md)[] | :heavy_check_mark: | An array of image objects. | | -| `ultraBlurColors` | [operations.GetMediaMetaDataUltraBlurColors](../../../sdk/models/operations/getmediametadataultrablurcolors.md) | :heavy_check_mark: | N/A | | -| `genre` | [operations.GetMediaMetaDataGenre](../../../sdk/models/operations/getmediametadatagenre.md)[] | :heavy_minus_sign: | An array of genre tags. | | -| `country` | [operations.GetMediaMetaDataCountry](../../../sdk/models/operations/getmediametadatacountry.md)[] | :heavy_minus_sign: | An array of country tags. | | -| `guids` | [operations.GetMediaMetaDataGuids](../../../sdk/models/operations/getmediametadataguids.md)[] | :heavy_minus_sign: | An array of GUID objects. | | -| `ratings` | [operations.Ratings](../../../sdk/models/operations/ratings.md)[] | :heavy_minus_sign: | An array of rating objects. | | -| `role` | [operations.GetMediaMetaDataRole](../../../sdk/models/operations/getmediametadatarole.md)[] | :heavy_minus_sign: | An array of Actor roles. | | -| `director` | [operations.GetMediaMetaDataDirector](../../../sdk/models/operations/getmediametadatadirector.md)[] | :heavy_minus_sign: | An array of Director roles. | | -| `writer` | [operations.GetMediaMetaDataWriter](../../../sdk/models/operations/getmediametadatawriter.md)[] | :heavy_minus_sign: | An array of Writer roles. | | -| `producer` | [operations.GetMediaMetaDataProducer](../../../sdk/models/operations/getmediametadataproducer.md)[] | :heavy_minus_sign: | An array of Writer roles. | | -| `similar` | [operations.GetMediaMetaDataSimilar](../../../sdk/models/operations/getmediametadatasimilar.md)[] | :heavy_minus_sign: | An array of similar content objects. | | -| `location` | [operations.GetMediaMetaDataLocation](../../../sdk/models/operations/getmediametadatalocation.md)[] | :heavy_minus_sign: | An array of location objects. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ratingKey` | *string* | :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` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | +| `guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | +| `studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | +| `type` | [operations.GetMediaMetaDataType](../../../sdk/models/operations/getmediametadatatype.md) | :heavy_check_mark: | N/A | movie | +| `title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | +| `titleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | +| `contentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | +| `summary` | *string* | :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` | *number* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | +| `audienceRating` | *number* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | +| `year` | *number* | :heavy_minus_sign: | The release year of the media item. | 2022 | +| `tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | +| `thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | +| `art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | +| `theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | +| `index` | *number* | :heavy_check_mark: | The index position of the media item. | 1 | +| `leafCount` | *number* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `childCount` | *number* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `seasonCount` | *number* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `duration` | *number* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `addedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `updatedAt` | *number* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | +| `chapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | +| `primaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `originalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `parentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `grandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `parentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `grandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `parentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `grandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | +| `grandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `grandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `grandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `parentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `parentIndex` | *number* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `parentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `ratingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | +| `viewCount` | *number* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `viewOffset` | *number* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `skipCount` | *number* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | +| `subtype` | *string* | :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 | +| `lastRatedAt` | *number* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `createdAtAccuracy` | *string* | :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 | +| `createdAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | +| `lastViewedAt` | *number* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `userRating` | *number* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `image` | [operations.GetMediaMetaDataImage](../../../sdk/models/operations/getmediametadataimage.md)[] | :heavy_minus_sign: | N/A | | +| `ultraBlurColors` | [operations.GetMediaMetaDataUltraBlurColors](../../../sdk/models/operations/getmediametadataultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `librarySectionID` | *number* | :heavy_check_mark: | The identifier for the library section. | 1 | +| `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | Movies | +| `librarySectionKey` | *string* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | +| `media` | [operations.GetMediaMetaDataMedia](../../../sdk/models/operations/getmediametadatamedia.md)[] | :heavy_minus_sign: | N/A | | +| `genre` | [operations.GetMediaMetaDataGenre](../../../sdk/models/operations/getmediametadatagenre.md)[] | :heavy_minus_sign: | N/A | | +| `country` | [operations.GetMediaMetaDataCountry](../../../sdk/models/operations/getmediametadatacountry.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [operations.GetMediaMetaDataDirector](../../../sdk/models/operations/getmediametadatadirector.md)[] | :heavy_minus_sign: | N/A | | +| `writer` | [operations.GetMediaMetaDataWriter](../../../sdk/models/operations/getmediametadatawriter.md)[] | :heavy_minus_sign: | N/A | | +| `producer` | [operations.GetMediaMetaDataProducer](../../../sdk/models/operations/getmediametadataproducer.md)[] | :heavy_minus_sign: | N/A | | +| `role` | [operations.GetMediaMetaDataRole](../../../sdk/models/operations/getmediametadatarole.md)[] | :heavy_minus_sign: | N/A | | +| `guids` | [operations.GetMediaMetaDataGuids](../../../sdk/models/operations/getmediametadataguids.md)[] | :heavy_minus_sign: | N/A | | +| `ratings` | [operations.Ratings](../../../sdk/models/operations/ratings.md)[] | :heavy_minus_sign: | N/A | | +| `similar` | [operations.GetMediaMetaDataSimilar](../../../sdk/models/operations/getmediametadatasimilar.md)[] | :heavy_minus_sign: | N/A | | +| `location` | [operations.GetMediaMetaDataLocation](../../../sdk/models/operations/getmediametadatalocation.md)[] | :heavy_minus_sign: | N/A | | +| `chapter` | [operations.Chapter](../../../sdk/models/operations/chapter.md)[] | :heavy_minus_sign: | N/A | | +| `marker` | [operations.Marker](../../../sdk/models/operations/marker.md)[] | :heavy_minus_sign: | N/A | | +| `extras` | [operations.Extras](../../../sdk/models/operations/extras.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatapart.md b/docs/sdk/models/operations/getmediametadatapart.md index 6961f9e3..45d5d953 100644 --- a/docs/sdk/models/operations/getmediametadatapart.md +++ b/docs/sdk/models/operations/getmediametadatapart.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetMediaMetaDataPart } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataPart, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataPart = { accessible: true, @@ -22,7 +22,8 @@ let value: GetMediaMetaDataPart = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -50,6 +51,7 @@ let value: GetMediaMetaDataPart = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getmediametadataresponse.md b/docs/sdk/models/operations/getmediametadataresponse.md index bde5066d..99696cdc 100644 --- a/docs/sdk/models/operations/getmediametadataresponse.md +++ b/docs/sdk/models/operations/getmediametadataresponse.md @@ -3,7 +3,12 @@ ## Example Usage ```typescript -import { GetMediaMetaDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetMediaMetaDataLibraryType, + GetMediaMetaDataResponse, + GetMediaMetaDataStreamType, + GetMediaMetaDataType, +} from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetMediaMetaDataResponse = { @@ -24,55 +29,80 @@ let value: GetMediaMetaDataResponse = { 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", + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetMediaMetaDataType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", 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.", + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work 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, - grandparentTitle: "Alice in Borderland", - parentTitle: "Season 2", - audienceRating: 8.7, - viewCount: 4, - skipCount: 1, - lastViewedAt: 1625764795, - year: 2015, - rating: 6, - ratingImage: "rottentomatoes://image.rating.ripe", - tagline: "Make the call", - chapterSource: "media", - primaryExtraKey: "/library/metadata/134704", - thumb: "/library/metadata/44288/thumb/1736487993", - art: "/library/metadata/44288/art/1736487993", - theme: "/library/metadata/44288/theme/1736487993", - duration: 2700000, - originallyAvailableAt: new RFCDate("2015-02-08"), - leafCount: 63, - viewedLeafCount: 4, - childCount: 6, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), 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", + 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: GetMediaMetaDataLibraryType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + librarySectionID: 1, + librarySectionTitle: "Movies", + librarySectionKey: "/library/sections/1", media: [ { id: 387322, @@ -110,7 +140,8 @@ let value: GetMediaMetaDataResponse = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -138,6 +169,7 @@ let value: GetMediaMetaDataResponse = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -164,31 +196,60 @@ let value: GetMediaMetaDataResponse = { ], }, ], - 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", + id: 259, tag: "Crime", + filter: "genre=19", }, ], country: [ { - id: 58591, - filter: "country=58591", + id: 259, tag: "United States of America", + filter: "country=19", + }, + ], + director: [ + { + id: 126522, + tag: "Danny Boyle", + filter: "director=235876", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + }, + ], + writer: [ + { + id: 126522, + tag: "Jamie P. Hanson", + filter: "writer=126522", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + tagKey: "5d77683d85719b001f3a535e", + }, + ], + producer: [ + { + id: 109501, + filter: "actor=109501", + tag: "Bob Odenkirk", + tagKey: "5d77683254f42c001f8c3f69", + role: "Jimmy McGill", + thumb: + "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + }, + ], + role: [ + { + id: 126522, + tag: "Teller", + role: "Self - Judge", + filter: "actor=126522", + tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }, ], guids: [ @@ -203,50 +264,6 @@ let value: GetMediaMetaDataResponse = { 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", - }, - ], - 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", - }, - ], - 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, @@ -259,6 +276,32 @@ let value: GetMediaMetaDataResponse = { path: "/TV Shows/Better Call Saul", }, ], + chapter: [ + { + id: 4, + filter: "thumb=4", + index: 1, + startTimeOffset: 0, + endTimeOffset: 100100, + thumb: "/library/media/46883/chapterImages/1", + }, + ], + marker: [ + { + id: 306970, + type: "credits", + startTimeOffset: 4176050, + endTimeOffset: 4393389, + final: true, + attributes: { + id: 306970, + version: 4, + }, + }, + ], + extras: { + size: 1, + }, }, ], }, diff --git a/docs/sdk/models/operations/getmediametadataresponsebody.md b/docs/sdk/models/operations/getmediametadataresponsebody.md index 5903f753..5592b728 100644 --- a/docs/sdk/models/operations/getmediametadataresponsebody.md +++ b/docs/sdk/models/operations/getmediametadataresponsebody.md @@ -5,7 +5,12 @@ The metadata of the library item. ## Example Usage ```typescript -import { GetMediaMetaDataResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetMediaMetaDataLibraryType, + GetMediaMetaDataResponseBody, + GetMediaMetaDataStreamType, + GetMediaMetaDataType, +} from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetMediaMetaDataResponseBody = { @@ -20,55 +25,80 @@ let value: GetMediaMetaDataResponseBody = { 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", + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetMediaMetaDataType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", 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.", + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work 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, - grandparentTitle: "Alice in Borderland", - parentTitle: "Season 2", - audienceRating: 8.7, - viewCount: 4, - skipCount: 1, - lastViewedAt: 1625764795, - year: 2015, - rating: 6, - ratingImage: "rottentomatoes://image.rating.ripe", - tagline: "Make the call", - chapterSource: "media", - primaryExtraKey: "/library/metadata/134704", - thumb: "/library/metadata/44288/thumb/1736487993", - art: "/library/metadata/44288/art/1736487993", - theme: "/library/metadata/44288/theme/1736487993", - duration: 2700000, - originallyAvailableAt: new RFCDate("2015-02-08"), - leafCount: 63, - viewedLeafCount: 4, - childCount: 6, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), 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", + 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: GetMediaMetaDataLibraryType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + librarySectionID: 1, + librarySectionTitle: "Movies", + librarySectionKey: "/library/sections/1", media: [ { id: 387322, @@ -106,7 +136,8 @@ let value: GetMediaMetaDataResponseBody = { stream: [ { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -134,6 +165,7 @@ let value: GetMediaMetaDataResponseBody = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -160,31 +192,60 @@ let value: GetMediaMetaDataResponseBody = { ], }, ], - 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", + id: 259, tag: "Crime", + filter: "genre=19", }, ], country: [ { - id: 58591, - filter: "country=58591", + id: 259, tag: "United States of America", + filter: "country=19", + }, + ], + director: [ + { + id: 126522, + tag: "Danny Boyle", + filter: "director=235876", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + }, + ], + writer: [ + { + id: 126522, + tag: "Jamie P. Hanson", + filter: "writer=126522", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + tagKey: "5d77683d85719b001f3a535e", + }, + ], + producer: [ + { + id: 109501, + filter: "actor=109501", + tag: "Bob Odenkirk", + tagKey: "5d77683254f42c001f8c3f69", + role: "Jimmy McGill", + thumb: + "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + }, + ], + role: [ + { + id: 126522, + tag: "Teller", + role: "Self - Judge", + filter: "actor=126522", + tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }, ], guids: [ @@ -199,50 +260,6 @@ let value: GetMediaMetaDataResponseBody = { 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", - }, - ], - 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", - }, - ], - 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, @@ -255,6 +272,32 @@ let value: GetMediaMetaDataResponseBody = { path: "/TV Shows/Better Call Saul", }, ], + chapter: [ + { + id: 4, + filter: "thumb=4", + index: 1, + startTimeOffset: 0, + endTimeOffset: 100100, + thumb: "/library/media/46883/chapterImages/1", + }, + ], + marker: [ + { + id: 306970, + type: "credits", + startTimeOffset: 4176050, + endTimeOffset: 4393389, + final: true, + attributes: { + id: 306970, + version: 4, + }, + }, + ], + extras: { + size: 1, + }, }, ], }, diff --git a/docs/sdk/models/operations/getmediametadatarole.md b/docs/sdk/models/operations/getmediametadatarole.md index 84a0ed25..f3159199 100644 --- a/docs/sdk/models/operations/getmediametadatarole.md +++ b/docs/sdk/models/operations/getmediametadatarole.md @@ -6,23 +6,23 @@ import { GetMediaMetaDataRole } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataRole = { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", + id: 126522, + tag: "Teller", + role: "Self - Judge", + filter: "actor=126522", + tagKey: "5d77683d85719b001f3a535e", thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the actor or role. | 126522 | +| `tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | +| `role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | +| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatastream.md b/docs/sdk/models/operations/getmediametadatastream.md index da50c6e8..968e1008 100644 --- a/docs/sdk/models/operations/getmediametadatastream.md +++ b/docs/sdk/models/operations/getmediametadatastream.md @@ -3,11 +3,12 @@ ## Example Usage ```typescript -import { GetMediaMetaDataStream } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataStream, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataStream = { id: 1002625, - streamType: 1, + streamType: GetMediaMetaDataStreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -35,6 +36,7 @@ let value: GetMediaMetaDataStream = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -60,54 +62,56 @@ let value: GetMediaMetaDataStream = { ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `streamType` | *number* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | -| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *number* | :heavy_check_mark: | Index of the stream. | 0 | -| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | -| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | -| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | -| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | -| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `streamType` | [operations.GetMediaMetaDataStreamType](../../../sdk/models/operations/getmediametadatastreamtype.md) | :heavy_check_mark: | Stream type:
- 1 = video
- 2 = audio
- 3 = subtitle
| 1 | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatastreamtype.md b/docs/sdk/models/operations/getmediametadatastreamtype.md new file mode 100644 index 00000000..842b625b --- /dev/null +++ b/docs/sdk/models/operations/getmediametadatastreamtype.md @@ -0,0 +1,26 @@ +# GetMediaMetaDataStreamType + +Stream type: + - 1 = video + - 2 = audio + - 3 = subtitle + + +## Example Usage + +```typescript +import { GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataStreamType = GetMediaMetaDataStreamType.Video; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Video` | 1 | +| `Audio` | 2 | +| `Subtitle` | 3 | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatatype.md b/docs/sdk/models/operations/getmediametadatatype.md new file mode 100644 index 00000000..dea8e4ef --- /dev/null +++ b/docs/sdk/models/operations/getmediametadatatype.md @@ -0,0 +1,26 @@ +# GetMediaMetaDataType + +The type of media content + + +## Example Usage + +```typescript +import { GetMediaMetaDataType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataType = GetMediaMetaDataType.Movie; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Movie` | movie | +| `TvShow` | show | +| `Season` | season | +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadataultrablurcolors.md b/docs/sdk/models/operations/getmediametadataultrablurcolors.md index 6d50d96d..6babe76b 100644 --- a/docs/sdk/models/operations/getmediametadataultrablurcolors.md +++ b/docs/sdk/models/operations/getmediametadataultrablurcolors.md @@ -6,18 +6,18 @@ import { GetMediaMetaDataUltraBlurColors } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataUltraBlurColors = { - topLeft: "11333a", - topRight: "1d2721", - bottomRight: "5c451d", - bottomLeft: "372c10", + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -| `topLeft` | *string* | :heavy_check_mark: | The top-left color value. | 11333a | -| `topRight` | *string* | :heavy_check_mark: | The top-right color value. | 1d2721 | -| `bottomRight` | *string* | :heavy_check_mark: | The bottom-right color value. | 5c451d | -| `bottomLeft` | *string* | :heavy_check_mark: | The bottom-left color value. | 372c10 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `topLeft` | *string* | :heavy_check_mark: | N/A | 11333b | +| `topRight` | *string* | :heavy_check_mark: | N/A | 0a232d | +| `bottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | +| `bottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatawriter.md b/docs/sdk/models/operations/getmediametadatawriter.md index e4f92849..7b4f6329 100644 --- a/docs/sdk/models/operations/getmediametadatawriter.md +++ b/docs/sdk/models/operations/getmediametadatawriter.md @@ -6,23 +6,21 @@ import { GetMediaMetaDataWriter } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataWriter = { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", + id: 126522, + tag: "Jamie P. Hanson", + filter: "writer=126522", thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", + tagKey: "5d77683d85719b001f3a535e", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | +| `tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | +| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | +| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the writers tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md index 9d1b45e5..38f94e75 100644 --- a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md @@ -7,6 +7,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedMediaContainer, + StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -183,7 +184,8 @@ let value: GetRecentlyAddedMediaContainer = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -211,6 +213,7 @@ let value: GetRecentlyAddedMediaContainer = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getrecentlyaddedmetadata.md b/docs/sdk/models/operations/getrecentlyaddedmetadata.md index b536ebed..2fc69a7a 100644 --- a/docs/sdk/models/operations/getrecentlyaddedmetadata.md +++ b/docs/sdk/models/operations/getrecentlyaddedmetadata.md @@ -10,6 +10,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedMetadata, + StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -129,7 +130,8 @@ let value: GetRecentlyAddedMetadata = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -157,6 +159,7 @@ let value: GetRecentlyAddedMetadata = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getrecentlyaddedresponse.md b/docs/sdk/models/operations/getrecentlyaddedresponse.md index a906a40a..295c2168 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponse.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponse.md @@ -7,6 +7,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedResponse, + StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -190,7 +191,8 @@ let value: GetRecentlyAddedResponse = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -218,6 +220,7 @@ let value: GetRecentlyAddedResponse = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md index c1bbbdde..350ded64 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md @@ -9,6 +9,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedResponseBody, + StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -186,7 +187,8 @@ let value: GetRecentlyAddedResponseBody = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -214,6 +216,7 @@ let value: GetRecentlyAddedResponseBody = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/marker.md b/docs/sdk/models/operations/marker.md new file mode 100644 index 00000000..7fe50049 --- /dev/null +++ b/docs/sdk/models/operations/marker.md @@ -0,0 +1,32 @@ +# Marker + +The final status of the marker + +## Example Usage + +```typescript +import { Marker } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: Marker = { + id: 306970, + type: "credits", + startTimeOffset: 4176050, + endTimeOffset: 4393389, + final: true, + attributes: { + id: 306970, + version: 4, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | N/A | 306970 | +| `type` | *string* | :heavy_check_mark: | N/A | credits | +| `startTimeOffset` | *number* | :heavy_check_mark: | N/A | 4176050 | +| `endTimeOffset` | *number* | :heavy_check_mark: | N/A | 4393389 | +| `final` | *boolean* | :heavy_minus_sign: | N/A | true | +| `attributes` | [operations.Attributes](../../../sdk/models/operations/attributes.md) | :heavy_minus_sign: | Attributes associated with the marker. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/media.md b/docs/sdk/models/operations/media.md index aec12ee4..552b628a 100644 --- a/docs/sdk/models/operations/media.md +++ b/docs/sdk/models/operations/media.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { Media } from "@lukehagar/plexjs/sdk/models/operations"; +import { Media, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: Media = { id: 387322, @@ -41,7 +41,8 @@ let value: Media = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -69,6 +70,7 @@ let value: Media = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/part.md b/docs/sdk/models/operations/part.md index f55ea4e0..40013344 100644 --- a/docs/sdk/models/operations/part.md +++ b/docs/sdk/models/operations/part.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { Part } from "@lukehagar/plexjs/sdk/models/operations"; +import { Part, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: Part = { accessible: true, @@ -22,7 +22,8 @@ let value: Part = { stream: [ { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -50,6 +51,7 @@ let value: Part = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, diff --git a/docs/sdk/models/operations/stream.md b/docs/sdk/models/operations/stream.md index b541a74b..585bc832 100644 --- a/docs/sdk/models/operations/stream.md +++ b/docs/sdk/models/operations/stream.md @@ -3,11 +3,12 @@ ## Example Usage ```typescript -import { Stream } from "@lukehagar/plexjs/sdk/models/operations"; +import { Stream, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: Stream = { id: 1002625, - streamType: 1, + streamType: StreamType.Video, + format: "srt", default: true, codec: "hevc", index: 0, @@ -35,6 +36,7 @@ let value: Stream = { colorSpace: "bt2020nc", colorTrc: "smpte2084", frameRate: 23.976, + key: "/library/streams/216389", height: 1602, level: 150, original: true, @@ -60,54 +62,56 @@ let value: Stream = { ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `streamType` | *number* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | -| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *number* | :heavy_check_mark: | Index of the stream. | 0 | -| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | -| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | -| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | -| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | -| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `streamType` | [operations.StreamType](../../../sdk/models/operations/streamtype.md) | :heavy_check_mark: | Stream type:
- 1 = video
- 2 = audio
- 3 = subtitle
| 1 | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/streamtype.md b/docs/sdk/models/operations/streamtype.md new file mode 100644 index 00000000..8f00be58 --- /dev/null +++ b/docs/sdk/models/operations/streamtype.md @@ -0,0 +1,26 @@ +# StreamType + +Stream type: + - 1 = video + - 2 = audio + - 3 = subtitle + + +## Example Usage + +```typescript +import { StreamType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: StreamType = StreamType.Video; +``` + +## Values + +This is an open enum. Unrecognized values will be captured as the `Unrecognized` branded type. + +| Name | Value | +| ---------------------- | ---------------------- | +| `Video` | 1 | +| `Audio` | 2 | +| `Subtitle` | 3 | +| - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 060b93e8..d73bf328 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -1353,13 +1353,14 @@ Uploads an image to use as the background artwork for a library item, either fro ```typescript import { PlexAPI } from "@lukehagar/plexjs"; +import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaArts(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaArts(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); // Handle the result console.log(result); @@ -1375,6 +1376,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryPostMediaArts } from "@lukehagar/plexjs/funcs/libraryPostMediaArts.js"; +import { openAsBlob } from "node:fs"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1383,7 +1385,7 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryPostMediaArts(plexAPI, 2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const res = await libraryPostMediaArts(plexAPI, 2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); if (!res.ok) { throw res.error; @@ -1499,13 +1501,14 @@ Uploads a poster to a library item, either from a local file or a remote URL ```typescript import { PlexAPI } from "@lukehagar/plexjs"; +import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaPoster(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaPoster(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); // Handle the result console.log(result); @@ -1521,6 +1524,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryPostMediaPoster } from "@lukehagar/plexjs/funcs/libraryPostMediaPoster.js"; +import { openAsBlob } from "node:fs"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1529,7 +1533,7 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryPostMediaPoster(plexAPI, 2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const res = await libraryPostMediaPoster(plexAPI, 2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); if (!res.ok) { throw res.error; diff --git a/eslint.config.mjs b/eslint.config.mjs index 3483f71b..67bccfec 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,6 +11,7 @@ export default [ { rules: { "no-constant-condition": "off", + "no-useless-escape": "off", // Handled by typescript compiler "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "off", diff --git a/jsr.json b/jsr.json index a900567a..80e93d22 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.0", + "version": "0.37.1", "exports": { ".": "./src/index.ts", "./sdk/models/errors": "./src/sdk/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index 07686f17..dd2bb393 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.0", + "version": "0.37.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@lukehagar/plexjs", - "version": "0.37.0", + "version": "0.37.1", "devDependencies": { "@eslint/js": "^9.19.0", "eslint": "^9.19.0", diff --git a/package.json b/package.json index 6830b5ed..841c0d27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.0", + "version": "0.37.1", "author": "LukeHagar", "main": "./index.js", "sideEffects": false, diff --git a/src/lib/config.ts b/src/lib/config.ts index 7a05aa77..9939d597 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -15,7 +15,7 @@ export const ServerList = [ /** * The full address of your Plex Server */ - "https://10.10.10.47:32400", + "{protocol}://{ip}:{port}", ] as const; /** @@ -90,7 +90,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "0.0.3", - sdkVersion: "0.37.0", - genVersion: "2.585.2", - userAgent: "speakeasy-sdk/typescript 0.37.0 2.585.2 0.0.3 @lukehagar/plexjs", + sdkVersion: "0.37.1", + genVersion: "2.595.4", + userAgent: "speakeasy-sdk/typescript 0.37.1 2.595.4 0.0.3 @lukehagar/plexjs", } as const; diff --git a/src/lib/sdks.ts b/src/lib/sdks.ts index 6c32127e..7864f67c 100644 --- a/src/lib/sdks.ts +++ b/src/lib/sdks.ts @@ -46,12 +46,14 @@ export type RequestOptions = { */ serverURL?: string | URL; /** + * @deprecated `fetchOptions` has been flattened into `RequestOptions`. + * * Sets various request options on the `fetch` call made by an SDK method. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options|Request} */ fetchOptions?: Omit; -}; +} & Omit; type RequestConfig = { method: string; @@ -168,7 +170,9 @@ export class ClientSDK { cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie; headers.set("cookie", cookie); - const userHeaders = new Headers(options?.fetchOptions?.headers); + const userHeaders = new Headers( + options?.headers ?? options?.fetchOptions?.headers, + ); for (const [k, v] of userHeaders) { headers.set(k, v); } @@ -179,20 +183,16 @@ export class ClientSDK { headers.set(conf.uaHeader ?? "user-agent", SDK_METADATA.userAgent); } - let fetchOptions = options?.fetchOptions; + const fetchOptions: Omit = { + ...options?.fetchOptions, + ...options, + }; if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) { const timeoutSignal = AbortSignal.timeout(conf.timeoutMs); - if (!fetchOptions) { - fetchOptions = { signal: timeoutSignal }; - } else { - fetchOptions.signal = timeoutSignal; - } + fetchOptions.signal = timeoutSignal; } if (conf.body instanceof ReadableStream) { - if (!fetchOptions) { - fetchOptions = {}; - } Object.assign(fetchOptions, { duplex: "half" }); } diff --git a/src/sdk/models/operations/getallmedialibrary.ts b/src/sdk/models/operations/getallmedialibrary.ts index 324de207..1c9ad1c9 100644 --- a/src/sdk/models/operations/getallmedialibrary.ts +++ b/src/sdk/models/operations/getallmedialibrary.ts @@ -299,15 +299,49 @@ export enum GetAllMediaLibraryHasThumbnail { True = "1", } +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export enum GetAllMediaLibraryStreamType { + Video = 1, + Audio = 2, + Subtitle = 3, +} +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export type GetAllMediaLibraryStreamTypeOpen = OpenEnum< + typeof GetAllMediaLibraryStreamType +>; + export type GetAllMediaLibraryStream = { /** * Unique stream identifier. */ id: number; /** - * Stream type (1=video, 2=audio, 3=subtitle). + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle */ - streamType: number; + streamType: GetAllMediaLibraryStreamTypeOpen; + /** + * Format of the stream (e.g., srt). + */ + format?: string | undefined; /** * Indicates if this stream is default. */ @@ -319,7 +353,7 @@ export type GetAllMediaLibraryStream = { /** * Index of the stream. */ - index: number; + index?: number | undefined; /** * Bitrate of the stream. */ @@ -413,6 +447,10 @@ export type GetAllMediaLibraryStream = { * Frame rate of the stream. */ frameRate?: number | undefined; + /** + * Key to access this stream part. + */ + key?: string | undefined; /** * Height of the video stream. */ @@ -2170,6 +2208,38 @@ export namespace GetAllMediaLibraryHasThumbnail$ { export const outboundSchema = GetAllMediaLibraryHasThumbnail$outboundSchema; } +/** @internal */ +export const GetAllMediaLibraryStreamType$inboundSchema: z.ZodType< + GetAllMediaLibraryStreamTypeOpen, + z.ZodTypeDef, + unknown +> = z + .union([ + z.nativeEnum(GetAllMediaLibraryStreamType), + z.number().transform(catchUnrecognizedEnum), + ]); + +/** @internal */ +export const GetAllMediaLibraryStreamType$outboundSchema: z.ZodType< + GetAllMediaLibraryStreamTypeOpen, + z.ZodTypeDef, + GetAllMediaLibraryStreamTypeOpen +> = z.union([ + z.nativeEnum(GetAllMediaLibraryStreamType), + z.number().and(z.custom>()), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryStreamType$ { + /** @deprecated use `GetAllMediaLibraryStreamType$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryStreamType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryStreamType$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryStreamType$outboundSchema; +} + /** @internal */ export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< GetAllMediaLibraryStream, @@ -2177,10 +2247,11 @@ export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< unknown > = z.object({ id: z.number().int(), - streamType: z.number().int(), + streamType: GetAllMediaLibraryStreamType$inboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -2205,6 +2276,7 @@ export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(), @@ -2242,9 +2314,10 @@ export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< export type GetAllMediaLibraryStream$Outbound = { id: number; streamType: number; + format?: string | undefined; default?: boolean | undefined; codec: string; - index: number; + index?: number | undefined; bitrate?: number | undefined; language?: string | undefined; languageTag?: string | undefined; @@ -2269,6 +2342,7 @@ export type GetAllMediaLibraryStream$Outbound = { colorSpace?: string | undefined; colorTrc?: string | undefined; frameRate?: number | undefined; + key?: string | undefined; height?: number | undefined; level?: number | undefined; original?: boolean | undefined; @@ -2298,10 +2372,11 @@ export const GetAllMediaLibraryStream$outboundSchema: z.ZodType< GetAllMediaLibraryStream > = z.object({ id: z.number().int(), - streamType: z.number().int(), + streamType: GetAllMediaLibraryStreamType$outboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -2326,6 +2401,7 @@ export const GetAllMediaLibraryStream$outboundSchema: z.ZodType< colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(), diff --git a/src/sdk/models/operations/getmediametadata.ts b/src/sdk/models/operations/getmediametadata.ts index 6e746880..e71dcbe3 100644 --- a/src/sdk/models/operations/getmediametadata.ts +++ b/src/sdk/models/operations/getmediametadata.ts @@ -5,6 +5,11 @@ import * as z from "zod"; import { remap as remap$ } from "../../../lib/primitives.js"; import { safeParse } from "../../../lib/schemas.js"; +import { + catchUnrecognizedEnum, + OpenEnum, + Unrecognized, +} from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { RFCDate } from "../../types/rfcdate.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; @@ -68,6 +73,49 @@ export type GetMediaMetaDataRequest = { asyncRefreshLocalMediaAgent?: boolean | undefined; }; +/** + * The type of media content + * + * @remarks + */ +export enum GetMediaMetaDataType { + Movie = "movie", + TvShow = "show", + Season = "season", + Episode = "episode", + Artist = "artist", + Album = "album", +} +/** + * The type of media content + * + * @remarks + */ +export type GetMediaMetaDataTypeOpen = OpenEnum; + +export enum GetMediaMetaDataLibraryType { + CoverPoster = "coverPoster", + Background = "background", + Snapshot = "snapshot", + ClearLogo = "clearLogo", +} +export type GetMediaMetaDataLibraryTypeOpen = OpenEnum< + typeof GetMediaMetaDataLibraryType +>; + +export type GetMediaMetaDataImage = { + alt: string; + type: GetMediaMetaDataLibraryTypeOpen; + url: string; +}; + +export type GetMediaMetaDataUltraBlurColors = { + topLeft: string; + topRight: string; + bottomRight: string; + bottomLeft: string; +}; + export enum GetMediaMetaDataOptimizedForStreaming1 { Zero = 0, One = 1, @@ -100,15 +148,49 @@ export enum GetMediaMetaDataHasThumbnail { True = "1", } +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export enum GetMediaMetaDataStreamType { + Video = 1, + Audio = 2, + Subtitle = 3, +} +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export type GetMediaMetaDataStreamTypeOpen = OpenEnum< + typeof GetMediaMetaDataStreamType +>; + export type GetMediaMetaDataStream = { /** * Unique stream identifier. */ id: number; /** - * Stream type (1=video, 2=audio, 3=subtitle). + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle */ - streamType: number; + streamType: GetMediaMetaDataStreamTypeOpen; + /** + * Format of the stream (e.g., srt). + */ + format?: string | undefined; /** * Indicates if this stream is default. */ @@ -120,7 +202,7 @@ export type GetMediaMetaDataStream = { /** * Index of the stream. */ - index: number; + index?: number | undefined; /** * Bitrate of the stream. */ @@ -214,6 +296,10 @@ export type GetMediaMetaDataStream = { * Frame rate of the stream. */ frameRate?: number | undefined; + /** + * Key to access this stream part. + */ + key?: string | undefined; /** * Height of the video stream. */ @@ -420,171 +506,76 @@ export type GetMediaMetaDataMedia = { part?: Array | undefined; }; -export type GetMediaMetaDataImage = { - /** - * Alternate text for the image. - */ - alt: string; - /** - * The type of image (e.g., coverPoster, background, clearLogo). - */ - type: string; - /** - * The URL of the image. - */ - url: string; -}; - -export type GetMediaMetaDataUltraBlurColors = { - /** - * The top-left color value. - */ - topLeft: string; - /** - * The top-right color value. - */ - topRight: string; - /** - * The bottom-right color value. - */ - bottomRight: string; - /** - * The bottom-left color value. - */ - bottomLeft: string; -}; - +/** + * The filter query string for similar items. + */ export type GetMediaMetaDataGenre = { - /** - * The unique genre identifier. - */ id: number; /** - * The filter string for the genre. - */ - filter: string; - /** - * The genre name. + * The genre name of this media-item + * + * @remarks */ tag: string; + filter: string; }; +/** + * The filter query string for country media items. + */ export type GetMediaMetaDataCountry = { - /** - * The unique country identifier. - */ id: number; /** - * The filter string for the country. - */ - filter: string; - /** - * The country name. + * The country of origin of this media item */ tag: string; -}; - -export type GetMediaMetaDataGuids = { - /** - * The GUID value. - */ - id: string; -}; - -export type Ratings = { - /** - * The image or reference for the rating. - */ - image: string; - /** - * The rating value. - */ - value: number; - /** - * The type of rating (e.g., audience, critic). - */ - type: string; -}; - -export type GetMediaMetaDataRole = { - /** - * The unique role identifier. - */ - id: number; - /** - * The filter string for the role. - */ - filter: string; - /** - * The actor's name. - */ - tag: string; - /** - * A key associated with the actor tag. - */ - tagKey: string; - /** - * The character name or role. - */ - role?: string | undefined; - /** - * URL for the role thumbnail image. - */ - thumb?: string | undefined; + filter?: string | undefined; }; export type GetMediaMetaDataDirector = { /** - * The unique role identifier. + * Unique identifier for the director. */ id: number; /** - * The filter string for the role. - */ - filter: string; - /** - * The actor's name. + * The role of Director */ tag: string; /** - * A key associated with the actor tag. + * The filter string used to query this director. */ - tagKey: string; + filter: string; /** - * The character name or role. + * A unique key associated with the director's tag, used for internal identification. */ - role?: string | undefined; + tagKey?: string | undefined; /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the director. */ thumb?: string | undefined; }; export type GetMediaMetaDataWriter = { /** - * The unique role identifier. + * Unique identifier for the writer. */ id: number; /** - * The filter string for the role. - */ - filter: string; - /** - * The actor's name. + * The role of Writer */ tag: string; /** - * A key associated with the actor tag. + * The filter string used to query this writer. */ - tagKey: string; + filter: string; /** - * The character name or role. - */ - role?: string | undefined; - /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the writer. */ thumb?: string | undefined; + /** + * A unique key associated with the writers tag, used for internal identification. + */ + tagKey?: string | undefined; }; export type GetMediaMetaDataProducer = { @@ -614,6 +605,55 @@ export type GetMediaMetaDataProducer = { thumb?: string | undefined; }; +export type GetMediaMetaDataRole = { + /** + * Unique identifier for the actor or role. + */ + id: number; + /** + * The display tag for the actor (typically the actor's name). + */ + tag: string; + /** + * The role played by the actor in the media item. + */ + role?: string | undefined; + /** + * The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. + */ + filter: string; + /** + * A unique key associated with the actor's tag, used for internal identification. + */ + tagKey?: string | undefined; + /** + * The URL of the thumbnail image for the actor. + */ + thumb?: string | undefined; +}; + +export type GetMediaMetaDataGuids = { + /** + * The GUID value. + */ + id: string; +}; + +export type Ratings = { + /** + * The image or reference for the rating. + */ + image: string; + /** + * The rating value. + */ + value: number; + /** + * The type of rating (e.g., audience, critic). + */ + type: string; +}; + export type GetMediaMetaDataSimilar = { /** * The unique similar item identifier. @@ -636,233 +676,298 @@ export type GetMediaMetaDataLocation = { path: string; }; +/** + * The thumbnail for the chapter + */ +export type Chapter = { + id: number; + filter: string; + index: number; + startTimeOffset: number; + endTimeOffset: number; + thumb: string; +}; + +/** + * Attributes associated with the marker. + */ +export type Attributes = { + /** + * The identifier for the attributes. + */ + id: number; + /** + * The version number of the marker attributes. + */ + version?: number | undefined; +}; + +/** + * The final status of the marker + */ +export type Marker = { + id: number; + type: string; + startTimeOffset: number; + endTimeOffset: number; + final?: boolean | undefined; + /** + * Attributes associated with the marker. + */ + attributes?: Attributes | undefined; +}; + +export type Extras = { + /** + * The size of the extras. + */ + size?: number | undefined; +}; + +/** + * Unknown + * + * @remarks + */ export type GetMediaMetaDataMetadata = { /** - * The rating key of the metadata item. + * 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. */ ratingKey: string; /** - * The rating key of the parent of this metadata item. - */ - parentRatingKey?: string | undefined; - /** - * The rating key of the grandparent of this metadata item. - */ - grandparentRatingKey?: string | undefined; - /** - * A GUID identifying the parent entity (e.g., season) for the item. - */ - parentGuid?: string | undefined; - /** - * A GUID identifying the grandparent entity (e.g., show). - */ - grandparentGuid?: string | undefined; - /** - * A URL-friendly identifier (slug) for the grandparent entity. - */ - grandparentSlug?: string | undefined; - /** - * A key identifying the grandparent metadata in the library. - */ - grandparentKey?: string | undefined; - /** - * A key identifying the parent metadata in the library. - */ - parentKey?: string | undefined; - /** - * The API key to access metadata details. + * The unique key for the media item. */ key: string; /** - * The globally unique identifier for the item. + * The globally unique identifier for the media item. */ guid: string; /** - * A URL-friendly identifier for the item. + * A URL‐friendly version of the media title. */ - slug?: string | undefined; + slug: string; /** - * The studio that produced the content. + * The studio that produced the media item. */ studio?: string | undefined; + type: GetMediaMetaDataTypeOpen; /** - * The type of content (e.g., show, movie). - */ - type: string; - /** - * The title of the content. + * The title of the media item. */ title: string; /** - * The original title of the content. + * The sort title used for ordering media items. */ - originalTitle?: string | undefined; + titleSort: string; /** - * The title of the library section. - */ - librarySectionTitle: string; - /** - * The ID of the library section. - */ - librarySectionID: number; - /** - * The key of the library section. - */ - librarySectionKey: string; - /** - * The content rating (e.g., TV-MA). + * The content rating for the media item. */ contentRating?: string | undefined; /** - * A summary of the content. + * A synopsis of the media item. */ summary: string; /** - * The index or order of the item. + * The critic rating for the media item. */ - index?: number | undefined; + rating: number; /** - * The title of the grandparent entity (typically the show's title). + * The audience rating for the media item. */ - grandparentTitle?: string | undefined; + audienceRating: number; /** - * The title of the parent entity (typically the season's title). + * The release year of the media item. */ - parentTitle?: string | undefined; + year?: number | undefined; /** - * The audience rating for the content. + * A brief tagline for the media item. */ - audienceRating?: number | undefined; + tagline: string; /** - * The number of times the item has been viewed. - */ - viewCount?: number | undefined; - /** - * The number of times the item has been skipped. - */ - skipCount?: number | undefined; - /** - * Unix timestamp of when the item was last viewed. - */ - lastViewedAt?: number | undefined; - /** - * The release year. - */ - year: number; - /** - * The general rating - */ - rating?: number | undefined; - /** - * The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). - */ - ratingImage?: string | undefined; - /** - * The tagline of the content. - */ - tagline?: string | undefined; - chapterSource?: string | undefined; - primaryExtraKey?: string | undefined; - /** - * URL of the thumbnail image. + * The thumbnail image URL for the media item. */ thumb: string; /** - * URL of the art image. + * The art image URL for the media item. */ art: string; /** - * URL of the theme image. + * The theme URL for the media item. */ - theme?: string | undefined; + theme: string; /** - * Duration of the content in milliseconds. + * The index position of the media item. */ - duration: number; + index: number; /** - * The original release date. - */ - originallyAvailableAt?: RFCDate | undefined; - /** - * The total number of episodes (or leaves). + * The number of leaf items (end nodes) under this media item. */ leafCount?: number | undefined; /** - * The number of episodes that have been viewed. + * The number of leaf items that have been viewed. */ viewedLeafCount?: number | undefined; /** - * The number of child items. + * The number of child items associated with this media item. */ - childCount?: number | undefined; + childCount: number; + /** + * The total number of seasons (for TV shows). + */ + seasonCount: number; + /** + * The duration of the media item in milliseconds. + */ + duration: number; + /** + * The original release date of the media item. + */ + originallyAvailableAt: RFCDate; addedAt: number; - updatedAt: number; + /** + * Unix epoch datetime in seconds + */ + updatedAt?: number | undefined; /** * The URL for the audience rating image. */ audienceRatingImage?: string | undefined; /** - * The index number of the parent entity, which could indicate its order or position. + * The source from which chapter data is derived. */ - parentIndex?: number | undefined; + chapterSource?: string | undefined; /** - * The URL of the parent's thumbnail image. + * The primary extra key associated with this media item. */ - parentThumb?: string | undefined; + primaryExtraKey?: string | undefined; /** - * The URL of the grandparent's thumbnail image. + * The original title of the media item (if different). + */ + originalTitle?: string | undefined; + /** + * The rating key of the parent media item. + */ + parentRatingKey?: string | undefined; + /** + * The rating key of the grandparent media item. + */ + grandparentRatingKey?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; + /** + * The slug for the grandparent media item. + */ + grandparentSlug?: string | undefined; + /** + * The key of the grandparent media item. + */ + grandparentKey?: string | undefined; + /** + * The key of the parent media item. + */ + parentKey?: string | undefined; + /** + * The title of the grandparent media item. + */ + grandparentTitle?: string | undefined; + /** + * The thumbnail URL for the grandparent media item. */ grandparentThumb?: string | undefined; /** - * The URL of the grandparent's art image. + * The theme URL for the grandparent media item. + */ + grandparentTheme?: string | undefined; + /** + * The art URL for the grandparent media item. */ grandparentArt?: string | undefined; + /** + * The title of the parent media item. + */ + parentTitle?: string | undefined; + /** + * The index position of the parent media item. + */ + parentIndex?: number | undefined; + /** + * The thumbnail URL for the parent media item. + */ + parentThumb?: string | undefined; + /** + * The URL for the rating image. + */ + ratingImage?: string | undefined; + /** + * The number of times this media item has been viewed. + */ + viewCount?: number | undefined; + /** + * The current playback offset (in milliseconds). + */ + viewOffset?: number | undefined; + /** + * The number of times this media item has been skipped. + */ + skipCount?: number | undefined; + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ + subtype?: string | undefined; + /** + * The Unix timestamp representing the last time the item was rated. + */ + lastRatedAt?: number | undefined; + /** + * 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). + */ + createdAtAccuracy?: string | undefined; + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + createdAtTZOffset?: string | undefined; + /** + * Unix timestamp for when the media item was last viewed. + */ + lastViewedAt?: number | undefined; + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ + userRating?: number | undefined; + image?: Array | undefined; + ultraBlurColors?: GetMediaMetaDataUltraBlurColors | undefined; + /** + * The identifier for the library section. + */ + librarySectionID: number; + /** + * The title of the library section. + */ + librarySectionTitle: string; + /** + * The key corresponding to the library section. + */ + librarySectionKey: string; media?: Array | undefined; - /** - * An array of image objects. - */ - image: Array; - ultraBlurColors: GetMediaMetaDataUltraBlurColors; - /** - * An array of genre tags. - */ genre?: Array | undefined; - /** - * An array of country tags. - */ country?: Array | undefined; - /** - * An array of GUID objects. - */ - guids?: Array | undefined; - /** - * An array of rating objects. - */ - ratings?: Array | undefined; - /** - * An array of Actor roles. - */ - role?: Array | undefined; - /** - * An array of Director roles. - */ director?: Array | undefined; - /** - * An array of Writer roles. - */ writer?: Array | undefined; - /** - * An array of Writer roles. - */ producer?: Array | undefined; - /** - * An array of similar content objects. - */ + role?: Array | undefined; + guids?: Array | undefined; + ratings?: Array | undefined; similar?: Array | undefined; - /** - * An array of location objects. - */ location?: Array | undefined; + chapter?: Array | undefined; + marker?: Array | undefined; + extras?: Extras | undefined; }; export type GetMediaMetaDataMediaContainer = { @@ -1023,6 +1128,195 @@ export function getMediaMetaDataRequestFromJSON( ); } +/** @internal */ +export const GetMediaMetaDataType$inboundSchema: z.ZodType< + GetMediaMetaDataTypeOpen, + z.ZodTypeDef, + unknown +> = z + .union([ + z.nativeEnum(GetMediaMetaDataType), + z.string().transform(catchUnrecognizedEnum), + ]); + +/** @internal */ +export const GetMediaMetaDataType$outboundSchema: z.ZodType< + GetMediaMetaDataTypeOpen, + z.ZodTypeDef, + GetMediaMetaDataTypeOpen +> = z.union([ + z.nativeEnum(GetMediaMetaDataType), + z.string().and(z.custom>()), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataType$ { + /** @deprecated use `GetMediaMetaDataType$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataType$inboundSchema; + /** @deprecated use `GetMediaMetaDataType$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataType$outboundSchema; +} + +/** @internal */ +export const GetMediaMetaDataLibraryType$inboundSchema: z.ZodType< + GetMediaMetaDataLibraryTypeOpen, + z.ZodTypeDef, + unknown +> = z + .union([ + z.nativeEnum(GetMediaMetaDataLibraryType), + z.string().transform(catchUnrecognizedEnum), + ]); + +/** @internal */ +export const GetMediaMetaDataLibraryType$outboundSchema: z.ZodType< + GetMediaMetaDataLibraryTypeOpen, + z.ZodTypeDef, + GetMediaMetaDataLibraryTypeOpen +> = z.union([ + z.nativeEnum(GetMediaMetaDataLibraryType), + z.string().and(z.custom>()), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataLibraryType$ { + /** @deprecated use `GetMediaMetaDataLibraryType$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataLibraryType$inboundSchema; + /** @deprecated use `GetMediaMetaDataLibraryType$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataLibraryType$outboundSchema; +} + +/** @internal */ +export const GetMediaMetaDataImage$inboundSchema: z.ZodType< + GetMediaMetaDataImage, + z.ZodTypeDef, + unknown +> = z.object({ + alt: z.string(), + type: GetMediaMetaDataLibraryType$inboundSchema, + url: z.string(), +}); + +/** @internal */ +export type GetMediaMetaDataImage$Outbound = { + alt: string; + type: string; + url: string; +}; + +/** @internal */ +export const GetMediaMetaDataImage$outboundSchema: z.ZodType< + GetMediaMetaDataImage$Outbound, + z.ZodTypeDef, + GetMediaMetaDataImage +> = z.object({ + alt: z.string(), + type: GetMediaMetaDataLibraryType$outboundSchema, + url: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataImage$ { + /** @deprecated use `GetMediaMetaDataImage$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataImage$inboundSchema; + /** @deprecated use `GetMediaMetaDataImage$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataImage$outboundSchema; + /** @deprecated use `GetMediaMetaDataImage$Outbound` instead. */ + export type Outbound = GetMediaMetaDataImage$Outbound; +} + +export function getMediaMetaDataImageToJSON( + getMediaMetaDataImage: GetMediaMetaDataImage, +): string { + return JSON.stringify( + GetMediaMetaDataImage$outboundSchema.parse(getMediaMetaDataImage), + ); +} + +export function getMediaMetaDataImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataImage' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataUltraBlurColors$inboundSchema: z.ZodType< + GetMediaMetaDataUltraBlurColors, + z.ZodTypeDef, + unknown +> = z.object({ + topLeft: z.string(), + topRight: z.string(), + bottomRight: z.string(), + bottomLeft: z.string(), +}); + +/** @internal */ +export type GetMediaMetaDataUltraBlurColors$Outbound = { + topLeft: string; + topRight: string; + bottomRight: string; + bottomLeft: string; +}; + +/** @internal */ +export const GetMediaMetaDataUltraBlurColors$outboundSchema: z.ZodType< + GetMediaMetaDataUltraBlurColors$Outbound, + z.ZodTypeDef, + GetMediaMetaDataUltraBlurColors +> = z.object({ + topLeft: z.string(), + topRight: z.string(), + bottomRight: z.string(), + bottomLeft: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataUltraBlurColors$ { + /** @deprecated use `GetMediaMetaDataUltraBlurColors$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataUltraBlurColors$inboundSchema; + /** @deprecated use `GetMediaMetaDataUltraBlurColors$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataUltraBlurColors$outboundSchema; + /** @deprecated use `GetMediaMetaDataUltraBlurColors$Outbound` instead. */ + export type Outbound = GetMediaMetaDataUltraBlurColors$Outbound; +} + +export function getMediaMetaDataUltraBlurColorsToJSON( + getMediaMetaDataUltraBlurColors: GetMediaMetaDataUltraBlurColors, +): string { + return JSON.stringify( + GetMediaMetaDataUltraBlurColors$outboundSchema.parse( + getMediaMetaDataUltraBlurColors, + ), + ); +} + +export function getMediaMetaDataUltraBlurColorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataUltraBlurColors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataUltraBlurColors' from JSON`, + ); +} + /** @internal */ export const GetMediaMetaDataOptimizedForStreaming1$inboundSchema: z.ZodNativeEnum = z.nativeEnum( @@ -1219,6 +1513,38 @@ export namespace GetMediaMetaDataHasThumbnail$ { export const outboundSchema = GetMediaMetaDataHasThumbnail$outboundSchema; } +/** @internal */ +export const GetMediaMetaDataStreamType$inboundSchema: z.ZodType< + GetMediaMetaDataStreamTypeOpen, + z.ZodTypeDef, + unknown +> = z + .union([ + z.nativeEnum(GetMediaMetaDataStreamType), + z.number().transform(catchUnrecognizedEnum), + ]); + +/** @internal */ +export const GetMediaMetaDataStreamType$outboundSchema: z.ZodType< + GetMediaMetaDataStreamTypeOpen, + z.ZodTypeDef, + GetMediaMetaDataStreamTypeOpen +> = z.union([ + z.nativeEnum(GetMediaMetaDataStreamType), + z.number().and(z.custom>()), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataStreamType$ { + /** @deprecated use `GetMediaMetaDataStreamType$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataStreamType$inboundSchema; + /** @deprecated use `GetMediaMetaDataStreamType$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataStreamType$outboundSchema; +} + /** @internal */ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< GetMediaMetaDataStream, @@ -1226,10 +1552,11 @@ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< unknown > = z.object({ id: z.number().int(), - streamType: z.number().int(), + streamType: GetMediaMetaDataStreamType$inboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -1254,6 +1581,7 @@ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(), @@ -1291,9 +1619,10 @@ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< export type GetMediaMetaDataStream$Outbound = { id: number; streamType: number; + format?: string | undefined; default?: boolean | undefined; codec: string; - index: number; + index?: number | undefined; bitrate?: number | undefined; language?: string | undefined; languageTag?: string | undefined; @@ -1318,6 +1647,7 @@ export type GetMediaMetaDataStream$Outbound = { colorSpace?: string | undefined; colorTrc?: string | undefined; frameRate?: number | undefined; + key?: string | undefined; height?: number | undefined; level?: number | undefined; original?: boolean | undefined; @@ -1347,10 +1677,11 @@ export const GetMediaMetaDataStream$outboundSchema: z.ZodType< GetMediaMetaDataStream > = z.object({ id: z.number().int(), - streamType: z.number().int(), + streamType: GetMediaMetaDataStreamType$outboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -1375,6 +1706,7 @@ export const GetMediaMetaDataStream$outboundSchema: z.ZodType< colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(), @@ -1680,131 +2012,6 @@ export function getMediaMetaDataMediaFromJSON( ); } -/** @internal */ -export const GetMediaMetaDataImage$inboundSchema: z.ZodType< - GetMediaMetaDataImage, - z.ZodTypeDef, - unknown -> = z.object({ - alt: z.string(), - type: z.string(), - url: z.string(), -}); - -/** @internal */ -export type GetMediaMetaDataImage$Outbound = { - alt: string; - type: string; - url: string; -}; - -/** @internal */ -export const GetMediaMetaDataImage$outboundSchema: z.ZodType< - GetMediaMetaDataImage$Outbound, - z.ZodTypeDef, - GetMediaMetaDataImage -> = z.object({ - alt: z.string(), - type: z.string(), - url: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataImage$ { - /** @deprecated use `GetMediaMetaDataImage$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataImage$inboundSchema; - /** @deprecated use `GetMediaMetaDataImage$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataImage$outboundSchema; - /** @deprecated use `GetMediaMetaDataImage$Outbound` instead. */ - export type Outbound = GetMediaMetaDataImage$Outbound; -} - -export function getMediaMetaDataImageToJSON( - getMediaMetaDataImage: GetMediaMetaDataImage, -): string { - return JSON.stringify( - GetMediaMetaDataImage$outboundSchema.parse(getMediaMetaDataImage), - ); -} - -export function getMediaMetaDataImageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataImage' from JSON`, - ); -} - -/** @internal */ -export const GetMediaMetaDataUltraBlurColors$inboundSchema: z.ZodType< - GetMediaMetaDataUltraBlurColors, - z.ZodTypeDef, - unknown -> = z.object({ - topLeft: z.string(), - topRight: z.string(), - bottomRight: z.string(), - bottomLeft: z.string(), -}); - -/** @internal */ -export type GetMediaMetaDataUltraBlurColors$Outbound = { - topLeft: string; - topRight: string; - bottomRight: string; - bottomLeft: string; -}; - -/** @internal */ -export const GetMediaMetaDataUltraBlurColors$outboundSchema: z.ZodType< - GetMediaMetaDataUltraBlurColors$Outbound, - z.ZodTypeDef, - GetMediaMetaDataUltraBlurColors -> = z.object({ - topLeft: z.string(), - topRight: z.string(), - bottomRight: z.string(), - bottomLeft: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataUltraBlurColors$ { - /** @deprecated use `GetMediaMetaDataUltraBlurColors$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataUltraBlurColors$inboundSchema; - /** @deprecated use `GetMediaMetaDataUltraBlurColors$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataUltraBlurColors$outboundSchema; - /** @deprecated use `GetMediaMetaDataUltraBlurColors$Outbound` instead. */ - export type Outbound = GetMediaMetaDataUltraBlurColors$Outbound; -} - -export function getMediaMetaDataUltraBlurColorsToJSON( - getMediaMetaDataUltraBlurColors: GetMediaMetaDataUltraBlurColors, -): string { - return JSON.stringify( - GetMediaMetaDataUltraBlurColors$outboundSchema.parse( - getMediaMetaDataUltraBlurColors, - ), - ); -} - -export function getMediaMetaDataUltraBlurColorsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataUltraBlurColors$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataUltraBlurColors' from JSON`, - ); -} - /** @internal */ export const GetMediaMetaDataGenre$inboundSchema: z.ZodType< GetMediaMetaDataGenre, @@ -1812,15 +2019,15 @@ export const GetMediaMetaDataGenre$inboundSchema: z.ZodType< unknown > = z.object({ id: z.number().int(), - filter: z.string(), tag: z.string(), + filter: z.string(), }); /** @internal */ export type GetMediaMetaDataGenre$Outbound = { id: number; - filter: string; tag: string; + filter: string; }; /** @internal */ @@ -1830,8 +2037,8 @@ export const GetMediaMetaDataGenre$outboundSchema: z.ZodType< GetMediaMetaDataGenre > = z.object({ id: z.number().int(), - filter: z.string(), tag: z.string(), + filter: z.string(), }); /** @@ -1872,15 +2079,15 @@ export const GetMediaMetaDataCountry$inboundSchema: z.ZodType< unknown > = z.object({ id: z.number().int(), - filter: z.string(), tag: z.string(), + filter: z.string().optional(), }); /** @internal */ export type GetMediaMetaDataCountry$Outbound = { id: number; - filter: string; tag: string; + filter?: string | undefined; }; /** @internal */ @@ -1890,8 +2097,8 @@ export const GetMediaMetaDataCountry$outboundSchema: z.ZodType< GetMediaMetaDataCountry > = z.object({ id: z.number().int(), - filter: z.string(), tag: z.string(), + filter: z.string().optional(), }); /** @@ -1925,6 +2132,276 @@ export function getMediaMetaDataCountryFromJSON( ); } +/** @internal */ +export const GetMediaMetaDataDirector$inboundSchema: z.ZodType< + GetMediaMetaDataDirector, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + tag: z.string(), + filter: z.string(), + tagKey: z.string().optional(), + thumb: z.string().optional(), +}); + +/** @internal */ +export type GetMediaMetaDataDirector$Outbound = { + id: number; + tag: string; + filter: string; + tagKey?: string | undefined; + thumb?: string | undefined; +}; + +/** @internal */ +export const GetMediaMetaDataDirector$outboundSchema: z.ZodType< + GetMediaMetaDataDirector$Outbound, + z.ZodTypeDef, + GetMediaMetaDataDirector +> = z.object({ + id: z.number().int(), + tag: z.string(), + filter: z.string(), + tagKey: z.string().optional(), + thumb: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataDirector$ { + /** @deprecated use `GetMediaMetaDataDirector$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataDirector$inboundSchema; + /** @deprecated use `GetMediaMetaDataDirector$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataDirector$outboundSchema; + /** @deprecated use `GetMediaMetaDataDirector$Outbound` instead. */ + export type Outbound = GetMediaMetaDataDirector$Outbound; +} + +export function getMediaMetaDataDirectorToJSON( + getMediaMetaDataDirector: GetMediaMetaDataDirector, +): string { + return JSON.stringify( + GetMediaMetaDataDirector$outboundSchema.parse(getMediaMetaDataDirector), + ); +} + +export function getMediaMetaDataDirectorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataDirector$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataDirector' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataWriter$inboundSchema: z.ZodType< + GetMediaMetaDataWriter, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + tag: z.string(), + filter: z.string(), + thumb: z.string().optional(), + tagKey: z.string().optional(), +}); + +/** @internal */ +export type GetMediaMetaDataWriter$Outbound = { + id: number; + tag: string; + filter: string; + thumb?: string | undefined; + tagKey?: string | undefined; +}; + +/** @internal */ +export const GetMediaMetaDataWriter$outboundSchema: z.ZodType< + GetMediaMetaDataWriter$Outbound, + z.ZodTypeDef, + GetMediaMetaDataWriter +> = z.object({ + id: z.number().int(), + tag: z.string(), + filter: z.string(), + thumb: z.string().optional(), + tagKey: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataWriter$ { + /** @deprecated use `GetMediaMetaDataWriter$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataWriter$inboundSchema; + /** @deprecated use `GetMediaMetaDataWriter$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataWriter$outboundSchema; + /** @deprecated use `GetMediaMetaDataWriter$Outbound` instead. */ + export type Outbound = GetMediaMetaDataWriter$Outbound; +} + +export function getMediaMetaDataWriterToJSON( + getMediaMetaDataWriter: GetMediaMetaDataWriter, +): string { + return JSON.stringify( + GetMediaMetaDataWriter$outboundSchema.parse(getMediaMetaDataWriter), + ); +} + +export function getMediaMetaDataWriterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataWriter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataWriter' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataProducer$inboundSchema: z.ZodType< + GetMediaMetaDataProducer, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + filter: z.string(), + tag: z.string(), + tagKey: z.string(), + role: z.string().optional(), + thumb: z.string().optional(), +}); + +/** @internal */ +export type GetMediaMetaDataProducer$Outbound = { + id: number; + filter: string; + tag: string; + tagKey: string; + role?: string | undefined; + thumb?: string | undefined; +}; + +/** @internal */ +export const GetMediaMetaDataProducer$outboundSchema: z.ZodType< + GetMediaMetaDataProducer$Outbound, + z.ZodTypeDef, + GetMediaMetaDataProducer +> = z.object({ + id: z.number().int(), + filter: z.string(), + tag: z.string(), + tagKey: z.string(), + role: z.string().optional(), + thumb: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataProducer$ { + /** @deprecated use `GetMediaMetaDataProducer$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataProducer$inboundSchema; + /** @deprecated use `GetMediaMetaDataProducer$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataProducer$outboundSchema; + /** @deprecated use `GetMediaMetaDataProducer$Outbound` instead. */ + export type Outbound = GetMediaMetaDataProducer$Outbound; +} + +export function getMediaMetaDataProducerToJSON( + getMediaMetaDataProducer: GetMediaMetaDataProducer, +): string { + return JSON.stringify( + GetMediaMetaDataProducer$outboundSchema.parse(getMediaMetaDataProducer), + ); +} + +export function getMediaMetaDataProducerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataProducer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataProducer' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataRole$inboundSchema: z.ZodType< + GetMediaMetaDataRole, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + tag: z.string(), + role: z.string().optional(), + filter: z.string(), + tagKey: z.string().optional(), + thumb: z.string().optional(), +}); + +/** @internal */ +export type GetMediaMetaDataRole$Outbound = { + id: number; + tag: string; + role?: string | undefined; + filter: string; + tagKey?: string | undefined; + thumb?: string | undefined; +}; + +/** @internal */ +export const GetMediaMetaDataRole$outboundSchema: z.ZodType< + GetMediaMetaDataRole$Outbound, + z.ZodTypeDef, + GetMediaMetaDataRole +> = z.object({ + id: z.number().int(), + tag: z.string(), + role: z.string().optional(), + filter: z.string(), + tagKey: z.string().optional(), + thumb: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataRole$ { + /** @deprecated use `GetMediaMetaDataRole$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataRole$inboundSchema; + /** @deprecated use `GetMediaMetaDataRole$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataRole$outboundSchema; + /** @deprecated use `GetMediaMetaDataRole$Outbound` instead. */ + export type Outbound = GetMediaMetaDataRole$Outbound; +} + +export function getMediaMetaDataRoleToJSON( + getMediaMetaDataRole: GetMediaMetaDataRole, +): string { + return JSON.stringify( + GetMediaMetaDataRole$outboundSchema.parse(getMediaMetaDataRole), + ); +} + +export function getMediaMetaDataRoleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataRole$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataRole' from JSON`, + ); +} + /** @internal */ export const GetMediaMetaDataGuids$inboundSchema: z.ZodType< GetMediaMetaDataGuids, @@ -2032,282 +2509,6 @@ export function ratingsFromJSON( ); } -/** @internal */ -export const GetMediaMetaDataRole$inboundSchema: z.ZodType< - GetMediaMetaDataRole, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** @internal */ -export type GetMediaMetaDataRole$Outbound = { - id: number; - filter: string; - tag: string; - tagKey: string; - role?: string | undefined; - thumb?: string | undefined; -}; - -/** @internal */ -export const GetMediaMetaDataRole$outboundSchema: z.ZodType< - GetMediaMetaDataRole$Outbound, - z.ZodTypeDef, - GetMediaMetaDataRole -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataRole$ { - /** @deprecated use `GetMediaMetaDataRole$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataRole$inboundSchema; - /** @deprecated use `GetMediaMetaDataRole$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataRole$outboundSchema; - /** @deprecated use `GetMediaMetaDataRole$Outbound` instead. */ - export type Outbound = GetMediaMetaDataRole$Outbound; -} - -export function getMediaMetaDataRoleToJSON( - getMediaMetaDataRole: GetMediaMetaDataRole, -): string { - return JSON.stringify( - GetMediaMetaDataRole$outboundSchema.parse(getMediaMetaDataRole), - ); -} - -export function getMediaMetaDataRoleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataRole$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataRole' from JSON`, - ); -} - -/** @internal */ -export const GetMediaMetaDataDirector$inboundSchema: z.ZodType< - GetMediaMetaDataDirector, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** @internal */ -export type GetMediaMetaDataDirector$Outbound = { - id: number; - filter: string; - tag: string; - tagKey: string; - role?: string | undefined; - thumb?: string | undefined; -}; - -/** @internal */ -export const GetMediaMetaDataDirector$outboundSchema: z.ZodType< - GetMediaMetaDataDirector$Outbound, - z.ZodTypeDef, - GetMediaMetaDataDirector -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataDirector$ { - /** @deprecated use `GetMediaMetaDataDirector$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataDirector$inboundSchema; - /** @deprecated use `GetMediaMetaDataDirector$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataDirector$outboundSchema; - /** @deprecated use `GetMediaMetaDataDirector$Outbound` instead. */ - export type Outbound = GetMediaMetaDataDirector$Outbound; -} - -export function getMediaMetaDataDirectorToJSON( - getMediaMetaDataDirector: GetMediaMetaDataDirector, -): string { - return JSON.stringify( - GetMediaMetaDataDirector$outboundSchema.parse(getMediaMetaDataDirector), - ); -} - -export function getMediaMetaDataDirectorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataDirector$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataDirector' from JSON`, - ); -} - -/** @internal */ -export const GetMediaMetaDataWriter$inboundSchema: z.ZodType< - GetMediaMetaDataWriter, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** @internal */ -export type GetMediaMetaDataWriter$Outbound = { - id: number; - filter: string; - tag: string; - tagKey: string; - role?: string | undefined; - thumb?: string | undefined; -}; - -/** @internal */ -export const GetMediaMetaDataWriter$outboundSchema: z.ZodType< - GetMediaMetaDataWriter$Outbound, - z.ZodTypeDef, - GetMediaMetaDataWriter -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataWriter$ { - /** @deprecated use `GetMediaMetaDataWriter$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataWriter$inboundSchema; - /** @deprecated use `GetMediaMetaDataWriter$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataWriter$outboundSchema; - /** @deprecated use `GetMediaMetaDataWriter$Outbound` instead. */ - export type Outbound = GetMediaMetaDataWriter$Outbound; -} - -export function getMediaMetaDataWriterToJSON( - getMediaMetaDataWriter: GetMediaMetaDataWriter, -): string { - return JSON.stringify( - GetMediaMetaDataWriter$outboundSchema.parse(getMediaMetaDataWriter), - ); -} - -export function getMediaMetaDataWriterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataWriter$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataWriter' from JSON`, - ); -} - -/** @internal */ -export const GetMediaMetaDataProducer$inboundSchema: z.ZodType< - GetMediaMetaDataProducer, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** @internal */ -export type GetMediaMetaDataProducer$Outbound = { - id: number; - filter: string; - tag: string; - tagKey: string; - role?: string | undefined; - thumb?: string | undefined; -}; - -/** @internal */ -export const GetMediaMetaDataProducer$outboundSchema: z.ZodType< - GetMediaMetaDataProducer$Outbound, - z.ZodTypeDef, - GetMediaMetaDataProducer -> = z.object({ - id: z.number().int(), - filter: z.string(), - tag: z.string(), - tagKey: z.string(), - role: z.string().optional(), - thumb: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataProducer$ { - /** @deprecated use `GetMediaMetaDataProducer$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataProducer$inboundSchema; - /** @deprecated use `GetMediaMetaDataProducer$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataProducer$outboundSchema; - /** @deprecated use `GetMediaMetaDataProducer$Outbound` instead. */ - export type Outbound = GetMediaMetaDataProducer$Outbound; -} - -export function getMediaMetaDataProducerToJSON( - getMediaMetaDataProducer: GetMediaMetaDataProducer, -): string { - return JSON.stringify( - GetMediaMetaDataProducer$outboundSchema.parse(getMediaMetaDataProducer), - ); -} - -export function getMediaMetaDataProducerFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataProducer$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataProducer' from JSON`, - ); -} - /** @internal */ export const GetMediaMetaDataSimilar$inboundSchema: z.ZodType< GetMediaMetaDataSimilar, @@ -2422,6 +2623,238 @@ export function getMediaMetaDataLocationFromJSON( ); } +/** @internal */ +export const Chapter$inboundSchema: z.ZodType = + z.object({ + id: z.number().int(), + filter: z.string(), + index: z.number().int(), + startTimeOffset: z.number().int(), + endTimeOffset: z.number().int(), + thumb: z.string(), + }); + +/** @internal */ +export type Chapter$Outbound = { + id: number; + filter: string; + index: number; + startTimeOffset: number; + endTimeOffset: number; + thumb: string; +}; + +/** @internal */ +export const Chapter$outboundSchema: z.ZodType< + Chapter$Outbound, + z.ZodTypeDef, + Chapter +> = z.object({ + id: z.number().int(), + filter: z.string(), + index: z.number().int(), + startTimeOffset: z.number().int(), + endTimeOffset: z.number().int(), + thumb: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Chapter$ { + /** @deprecated use `Chapter$inboundSchema` instead. */ + export const inboundSchema = Chapter$inboundSchema; + /** @deprecated use `Chapter$outboundSchema` instead. */ + export const outboundSchema = Chapter$outboundSchema; + /** @deprecated use `Chapter$Outbound` instead. */ + export type Outbound = Chapter$Outbound; +} + +export function chapterToJSON(chapter: Chapter): string { + return JSON.stringify(Chapter$outboundSchema.parse(chapter)); +} + +export function chapterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Chapter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Chapter' from JSON`, + ); +} + +/** @internal */ +export const Attributes$inboundSchema: z.ZodType< + Attributes, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + version: z.number().int().optional(), +}); + +/** @internal */ +export type Attributes$Outbound = { + id: number; + version?: number | undefined; +}; + +/** @internal */ +export const Attributes$outboundSchema: z.ZodType< + Attributes$Outbound, + z.ZodTypeDef, + Attributes +> = z.object({ + id: z.number().int(), + version: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Attributes$ { + /** @deprecated use `Attributes$inboundSchema` instead. */ + export const inboundSchema = Attributes$inboundSchema; + /** @deprecated use `Attributes$outboundSchema` instead. */ + export const outboundSchema = Attributes$outboundSchema; + /** @deprecated use `Attributes$Outbound` instead. */ + export type Outbound = Attributes$Outbound; +} + +export function attributesToJSON(attributes: Attributes): string { + return JSON.stringify(Attributes$outboundSchema.parse(attributes)); +} + +export function attributesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Attributes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Attributes' from JSON`, + ); +} + +/** @internal */ +export const Marker$inboundSchema: z.ZodType = z + .object({ + id: z.number().int(), + type: z.string(), + startTimeOffset: z.number().int(), + endTimeOffset: z.number().int(), + final: z.boolean().optional(), + Attributes: z.lazy(() => Attributes$inboundSchema).optional(), + }).transform((v) => { + return remap$(v, { + "Attributes": "attributes", + }); + }); + +/** @internal */ +export type Marker$Outbound = { + id: number; + type: string; + startTimeOffset: number; + endTimeOffset: number; + final?: boolean | undefined; + Attributes?: Attributes$Outbound | undefined; +}; + +/** @internal */ +export const Marker$outboundSchema: z.ZodType< + Marker$Outbound, + z.ZodTypeDef, + Marker +> = z.object({ + id: z.number().int(), + type: z.string(), + startTimeOffset: z.number().int(), + endTimeOffset: z.number().int(), + final: z.boolean().optional(), + attributes: z.lazy(() => Attributes$outboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + attributes: "Attributes", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Marker$ { + /** @deprecated use `Marker$inboundSchema` instead. */ + export const inboundSchema = Marker$inboundSchema; + /** @deprecated use `Marker$outboundSchema` instead. */ + export const outboundSchema = Marker$outboundSchema; + /** @deprecated use `Marker$Outbound` instead. */ + export type Outbound = Marker$Outbound; +} + +export function markerToJSON(marker: Marker): string { + return JSON.stringify(Marker$outboundSchema.parse(marker)); +} + +export function markerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Marker$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Marker' from JSON`, + ); +} + +/** @internal */ +export const Extras$inboundSchema: z.ZodType = z + .object({ + size: z.number().int().optional(), + }); + +/** @internal */ +export type Extras$Outbound = { + size?: number | undefined; +}; + +/** @internal */ +export const Extras$outboundSchema: z.ZodType< + Extras$Outbound, + z.ZodTypeDef, + Extras +> = z.object({ + size: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Extras$ { + /** @deprecated use `Extras$inboundSchema` instead. */ + export const inboundSchema = Extras$inboundSchema; + /** @deprecated use `Extras$outboundSchema` instead. */ + export const outboundSchema = Extras$outboundSchema; + /** @deprecated use `Extras$Outbound` instead. */ + export type Outbound = Extras$Outbound; +} + +export function extrasToJSON(extras: Extras): string { + return JSON.stringify(Extras$outboundSchema.parse(extras)); +} + +export function extrasFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Extras$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Extras' from JSON`, + ); +} + /** @internal */ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< GetMediaMetaDataMetadata, @@ -2429,6 +2862,35 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< unknown > = z.object({ ratingKey: z.string(), + key: z.string(), + guid: z.string(), + slug: z.string(), + studio: z.string().optional(), + type: GetMediaMetaDataType$inboundSchema, + title: z.string(), + titleSort: z.string(), + contentRating: z.string().optional(), + summary: z.string(), + rating: z.number(), + audienceRating: z.number(), + year: z.number().int().optional(), + tagline: z.string(), + thumb: z.string(), + art: z.string(), + theme: z.string(), + index: z.number().int(), + leafCount: z.number().int().optional(), + viewedLeafCount: z.number().int().optional(), + childCount: z.number().int(), + seasonCount: z.number().int(), + duration: z.number().int(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)), + addedAt: z.number().int(), + updatedAt: z.number().int().optional(), + audienceRatingImage: z.string().optional(), + chapterSource: z.string().optional(), + primaryExtraKey: z.string().optional(), + originalTitle: z.string().optional(), parentRatingKey: z.string().optional(), grandparentRatingKey: z.string().optional(), parentGuid: z.string().optional(), @@ -2436,86 +2898,102 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< grandparentSlug: z.string().optional(), grandparentKey: z.string().optional(), parentKey: z.string().optional(), - key: z.string(), - guid: z.string(), - slug: z.string().optional(), - studio: z.string().optional(), - type: z.string(), - title: z.string(), - originalTitle: z.string().optional(), - librarySectionTitle: z.string(), - librarySectionID: z.number().int(), - librarySectionKey: z.string(), - contentRating: z.string().optional(), - summary: z.string(), - index: z.number().int().optional(), grandparentTitle: z.string().optional(), + grandparentThumb: z.string().optional(), + grandparentTheme: z.string().optional(), + grandparentArt: z.string().optional(), parentTitle: z.string().optional(), - audienceRating: z.number().optional(), - viewCount: z.number().int().optional(), - skipCount: z.number().int().optional(), - lastViewedAt: z.number().int().optional(), - year: z.number().int(), - rating: z.number().optional(), - ratingImage: z.string().optional(), - tagline: z.string().optional(), - chapterSource: z.string().optional(), - primaryExtraKey: z.string().optional(), - thumb: z.string(), - art: z.string(), - theme: z.string().optional(), - duration: z.number().int(), - originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), - leafCount: z.number().int().optional(), - viewedLeafCount: z.number().int().optional(), - childCount: z.number().int().optional(), - addedAt: z.number().int(), - updatedAt: z.number().int(), - audienceRatingImage: z.string().optional(), parentIndex: z.number().int().optional(), parentThumb: z.string().optional(), - grandparentThumb: z.string().optional(), - grandparentArt: z.string().optional(), + ratingImage: z.string().optional(), + viewCount: z.number().int().optional(), + viewOffset: z.number().int().optional(), + skipCount: z.number().int().optional(), + subtype: z.string().optional(), + lastRatedAt: z.number().int().optional(), + createdAtAccuracy: z.string().optional(), + createdAtTZOffset: z.string().optional(), + lastViewedAt: z.number().int().optional(), + userRating: z.number().optional(), + Image: z.array(z.lazy(() => GetMediaMetaDataImage$inboundSchema)).optional(), + UltraBlurColors: z.lazy(() => GetMediaMetaDataUltraBlurColors$inboundSchema) + .optional(), + librarySectionID: z.number().int(), + librarySectionTitle: z.string(), + librarySectionKey: z.string(), Media: z.array(z.lazy(() => GetMediaMetaDataMedia$inboundSchema)).optional(), - Image: z.array(z.lazy(() => GetMediaMetaDataImage$inboundSchema)), - UltraBlurColors: z.lazy(() => GetMediaMetaDataUltraBlurColors$inboundSchema), Genre: z.array(z.lazy(() => GetMediaMetaDataGenre$inboundSchema)).optional(), Country: z.array(z.lazy(() => GetMediaMetaDataCountry$inboundSchema)) .optional(), - Guid: z.array(z.lazy(() => GetMediaMetaDataGuids$inboundSchema)).optional(), - Rating: z.array(z.lazy(() => Ratings$inboundSchema)).optional(), - Role: z.array(z.lazy(() => GetMediaMetaDataRole$inboundSchema)).optional(), Director: z.array(z.lazy(() => GetMediaMetaDataDirector$inboundSchema)) .optional(), Writer: z.array(z.lazy(() => GetMediaMetaDataWriter$inboundSchema)) .optional(), Producer: z.array(z.lazy(() => GetMediaMetaDataProducer$inboundSchema)) .optional(), + Role: z.array(z.lazy(() => GetMediaMetaDataRole$inboundSchema)).optional(), + Guid: z.array(z.lazy(() => GetMediaMetaDataGuids$inboundSchema)).optional(), + Rating: z.array(z.lazy(() => Ratings$inboundSchema)).optional(), Similar: z.array(z.lazy(() => GetMediaMetaDataSimilar$inboundSchema)) .optional(), Location: z.array(z.lazy(() => GetMediaMetaDataLocation$inboundSchema)) .optional(), + Chapter: z.array(z.lazy(() => Chapter$inboundSchema)).optional(), + Marker: z.array(z.lazy(() => Marker$inboundSchema)).optional(), + Extras: z.lazy(() => Extras$inboundSchema).optional(), }).transform((v) => { return remap$(v, { - "Media": "media", "Image": "image", "UltraBlurColors": "ultraBlurColors", + "Media": "media", "Genre": "genre", "Country": "country", - "Guid": "guids", - "Rating": "ratings", - "Role": "role", "Director": "director", "Writer": "writer", "Producer": "producer", + "Role": "role", + "Guid": "guids", + "Rating": "ratings", "Similar": "similar", "Location": "location", + "Chapter": "chapter", + "Marker": "marker", + "Extras": "extras", }); }); /** @internal */ export type GetMediaMetaDataMetadata$Outbound = { ratingKey: string; + key: string; + guid: string; + slug: string; + studio?: string | undefined; + type: string; + title: string; + titleSort: string; + contentRating?: string | undefined; + summary: string; + rating: number; + audienceRating: number; + year?: number | undefined; + tagline: string; + thumb: string; + art: string; + theme: string; + index: number; + leafCount?: number | undefined; + viewedLeafCount?: number | undefined; + childCount: number; + seasonCount: number; + duration: number; + originallyAvailableAt: string; + addedAt: number; + updatedAt?: number | undefined; + audienceRatingImage?: string | undefined; + chapterSource?: string | undefined; + primaryExtraKey?: string | undefined; + originalTitle?: string | undefined; parentRatingKey?: string | undefined; grandparentRatingKey?: string | undefined; parentGuid?: string | undefined; @@ -2523,59 +3001,42 @@ export type GetMediaMetaDataMetadata$Outbound = { grandparentSlug?: string | undefined; grandparentKey?: string | undefined; parentKey?: string | undefined; - key: string; - guid: string; - slug?: string | undefined; - studio?: string | undefined; - type: string; - title: string; - originalTitle?: string | undefined; - librarySectionTitle: string; - librarySectionID: number; - librarySectionKey: string; - contentRating?: string | undefined; - summary: string; - index?: number | undefined; grandparentTitle?: string | undefined; + grandparentThumb?: string | undefined; + grandparentTheme?: string | undefined; + grandparentArt?: string | undefined; parentTitle?: string | undefined; - audienceRating?: number | undefined; - viewCount?: number | undefined; - skipCount?: number | undefined; - lastViewedAt?: number | undefined; - year: number; - rating?: number | undefined; - ratingImage?: string | undefined; - tagline?: string | undefined; - chapterSource?: string | undefined; - primaryExtraKey?: string | undefined; - thumb: string; - art: string; - theme?: string | undefined; - duration: number; - originallyAvailableAt?: string | undefined; - leafCount?: number | undefined; - viewedLeafCount?: number | undefined; - childCount?: number | undefined; - addedAt: number; - updatedAt: number; - audienceRatingImage?: string | undefined; parentIndex?: number | undefined; parentThumb?: string | undefined; - grandparentThumb?: string | undefined; - grandparentArt?: string | undefined; + ratingImage?: string | undefined; + viewCount?: number | undefined; + viewOffset?: number | undefined; + skipCount?: number | undefined; + subtype?: string | undefined; + lastRatedAt?: number | undefined; + createdAtAccuracy?: string | undefined; + createdAtTZOffset?: string | undefined; + lastViewedAt?: number | undefined; + userRating?: number | undefined; + Image?: Array | undefined; + UltraBlurColors?: GetMediaMetaDataUltraBlurColors$Outbound | undefined; + librarySectionID: number; + librarySectionTitle: string; + librarySectionKey: string; Media?: Array | undefined; - Image: Array; - UltraBlurColors: GetMediaMetaDataUltraBlurColors$Outbound; Genre?: Array | undefined; Country?: Array | undefined; - Guid?: Array | undefined; - Rating?: Array | undefined; - Role?: Array | undefined; Director?: Array | undefined; Writer?: Array | undefined; Producer?: Array | undefined; + Role?: Array | undefined; + Guid?: Array | undefined; + Rating?: Array | undefined; Similar?: Array | undefined; Location?: Array | undefined; + Chapter?: Array | undefined; + Marker?: Array | undefined; + Extras?: Extras$Outbound | undefined; }; /** @internal */ @@ -2585,6 +3046,35 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< GetMediaMetaDataMetadata > = z.object({ ratingKey: z.string(), + key: z.string(), + guid: z.string(), + slug: z.string(), + studio: z.string().optional(), + type: GetMediaMetaDataType$outboundSchema, + title: z.string(), + titleSort: z.string(), + contentRating: z.string().optional(), + summary: z.string(), + rating: z.number(), + audienceRating: z.number(), + year: z.number().int().optional(), + tagline: z.string(), + thumb: z.string(), + art: z.string(), + theme: z.string(), + index: z.number().int(), + leafCount: z.number().int().optional(), + viewedLeafCount: z.number().int().optional(), + childCount: z.number().int(), + seasonCount: z.number().int(), + duration: z.number().int(), + originallyAvailableAt: z.instanceof(RFCDate).transform(v => v.toString()), + addedAt: z.number().int(), + updatedAt: z.number().int().optional(), + audienceRatingImage: z.string().optional(), + chapterSource: z.string().optional(), + primaryExtraKey: z.string().optional(), + originalTitle: z.string().optional(), parentRatingKey: z.string().optional(), grandparentRatingKey: z.string().optional(), parentGuid: z.string().optional(), @@ -2592,81 +3082,67 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< grandparentSlug: z.string().optional(), grandparentKey: z.string().optional(), parentKey: z.string().optional(), - key: z.string(), - guid: z.string(), - slug: z.string().optional(), - studio: z.string().optional(), - type: z.string(), - title: z.string(), - originalTitle: z.string().optional(), - librarySectionTitle: z.string(), - librarySectionID: z.number().int(), - librarySectionKey: z.string(), - contentRating: z.string().optional(), - summary: z.string(), - index: z.number().int().optional(), grandparentTitle: z.string().optional(), + grandparentThumb: z.string().optional(), + grandparentTheme: z.string().optional(), + grandparentArt: z.string().optional(), parentTitle: z.string().optional(), - audienceRating: z.number().optional(), - viewCount: z.number().int().optional(), - skipCount: z.number().int().optional(), - lastViewedAt: z.number().int().optional(), - year: z.number().int(), - rating: z.number().optional(), - ratingImage: z.string().optional(), - tagline: z.string().optional(), - chapterSource: z.string().optional(), - primaryExtraKey: z.string().optional(), - thumb: z.string(), - art: z.string(), - theme: z.string().optional(), - duration: z.number().int(), - originallyAvailableAt: z.instanceof(RFCDate).transform(v => v.toString()) - .optional(), - leafCount: z.number().int().optional(), - viewedLeafCount: z.number().int().optional(), - childCount: z.number().int().optional(), - addedAt: z.number().int(), - updatedAt: z.number().int(), - audienceRatingImage: z.string().optional(), parentIndex: z.number().int().optional(), parentThumb: z.string().optional(), - grandparentThumb: z.string().optional(), - grandparentArt: z.string().optional(), + ratingImage: z.string().optional(), + viewCount: z.number().int().optional(), + viewOffset: z.number().int().optional(), + skipCount: z.number().int().optional(), + subtype: z.string().optional(), + lastRatedAt: z.number().int().optional(), + createdAtAccuracy: z.string().optional(), + createdAtTZOffset: z.string().optional(), + lastViewedAt: z.number().int().optional(), + userRating: z.number().optional(), + image: z.array(z.lazy(() => GetMediaMetaDataImage$outboundSchema)).optional(), + ultraBlurColors: z.lazy(() => GetMediaMetaDataUltraBlurColors$outboundSchema) + .optional(), + librarySectionID: z.number().int(), + librarySectionTitle: z.string(), + librarySectionKey: z.string(), media: z.array(z.lazy(() => GetMediaMetaDataMedia$outboundSchema)).optional(), - image: z.array(z.lazy(() => GetMediaMetaDataImage$outboundSchema)), - ultraBlurColors: z.lazy(() => GetMediaMetaDataUltraBlurColors$outboundSchema), genre: z.array(z.lazy(() => GetMediaMetaDataGenre$outboundSchema)).optional(), country: z.array(z.lazy(() => GetMediaMetaDataCountry$outboundSchema)) .optional(), - guids: z.array(z.lazy(() => GetMediaMetaDataGuids$outboundSchema)).optional(), - ratings: z.array(z.lazy(() => Ratings$outboundSchema)).optional(), - role: z.array(z.lazy(() => GetMediaMetaDataRole$outboundSchema)).optional(), director: z.array(z.lazy(() => GetMediaMetaDataDirector$outboundSchema)) .optional(), writer: z.array(z.lazy(() => GetMediaMetaDataWriter$outboundSchema)) .optional(), producer: z.array(z.lazy(() => GetMediaMetaDataProducer$outboundSchema)) .optional(), + role: z.array(z.lazy(() => GetMediaMetaDataRole$outboundSchema)).optional(), + guids: z.array(z.lazy(() => GetMediaMetaDataGuids$outboundSchema)).optional(), + ratings: z.array(z.lazy(() => Ratings$outboundSchema)).optional(), similar: z.array(z.lazy(() => GetMediaMetaDataSimilar$outboundSchema)) .optional(), location: z.array(z.lazy(() => GetMediaMetaDataLocation$outboundSchema)) .optional(), + chapter: z.array(z.lazy(() => Chapter$outboundSchema)).optional(), + marker: z.array(z.lazy(() => Marker$outboundSchema)).optional(), + extras: z.lazy(() => Extras$outboundSchema).optional(), }).transform((v) => { return remap$(v, { - media: "Media", image: "Image", ultraBlurColors: "UltraBlurColors", + media: "Media", genre: "Genre", country: "Country", - guids: "Guid", - ratings: "Rating", - role: "Role", director: "Director", writer: "Writer", producer: "Producer", + role: "Role", + guids: "Guid", + ratings: "Rating", similar: "Similar", location: "Location", + chapter: "Chapter", + marker: "Marker", + extras: "Extras", }); }); diff --git a/src/sdk/models/operations/getrecentlyadded.ts b/src/sdk/models/operations/getrecentlyadded.ts index 146f6405..2ad1213e 100644 --- a/src/sdk/models/operations/getrecentlyadded.ts +++ b/src/sdk/models/operations/getrecentlyadded.ts @@ -266,15 +266,47 @@ export enum HasThumbnail { True = "1", } +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export enum StreamType { + Video = 1, + Audio = 2, + Subtitle = 3, +} +/** + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle + */ +export type StreamTypeOpen = OpenEnum; + export type Stream = { /** * Unique stream identifier. */ id: number; /** - * Stream type (1=video, 2=audio, 3=subtitle). + * Stream type: + * + * @remarks + * - 1 = video + * - 2 = audio + * - 3 = subtitle */ - streamType: number; + streamType: StreamTypeOpen; + /** + * Format of the stream (e.g., srt). + */ + format?: string | undefined; /** * Indicates if this stream is default. */ @@ -286,7 +318,7 @@ export type Stream = { /** * Index of the stream. */ - index: number; + index?: number | undefined; /** * Bitrate of the stream. */ @@ -380,6 +412,10 @@ export type Stream = { * Frame rate of the stream. */ frameRate?: number | undefined; + /** + * Key to access this stream part. + */ + key?: string | undefined; /** * Height of the video stream. */ @@ -2051,14 +2087,47 @@ export namespace HasThumbnail$ { export const outboundSchema = HasThumbnail$outboundSchema; } +/** @internal */ +export const StreamType$inboundSchema: z.ZodType< + StreamTypeOpen, + z.ZodTypeDef, + unknown +> = z + .union([ + z.nativeEnum(StreamType), + z.number().transform(catchUnrecognizedEnum), + ]); + +/** @internal */ +export const StreamType$outboundSchema: z.ZodType< + StreamTypeOpen, + z.ZodTypeDef, + StreamTypeOpen +> = z.union([ + z.nativeEnum(StreamType), + z.number().and(z.custom>()), +]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace StreamType$ { + /** @deprecated use `StreamType$inboundSchema` instead. */ + export const inboundSchema = StreamType$inboundSchema; + /** @deprecated use `StreamType$outboundSchema` instead. */ + export const outboundSchema = StreamType$outboundSchema; +} + /** @internal */ export const Stream$inboundSchema: z.ZodType = z .object({ id: z.number().int(), - streamType: z.number().int(), + streamType: StreamType$inboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -2083,6 +2152,7 @@ export const Stream$inboundSchema: z.ZodType = z colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(), @@ -2120,9 +2190,10 @@ export const Stream$inboundSchema: z.ZodType = z export type Stream$Outbound = { id: number; streamType: number; + format?: string | undefined; default?: boolean | undefined; codec: string; - index: number; + index?: number | undefined; bitrate?: number | undefined; language?: string | undefined; languageTag?: string | undefined; @@ -2147,6 +2218,7 @@ export type Stream$Outbound = { colorSpace?: string | undefined; colorTrc?: string | undefined; frameRate?: number | undefined; + key?: string | undefined; height?: number | undefined; level?: number | undefined; original?: boolean | undefined; @@ -2176,10 +2248,11 @@ export const Stream$outboundSchema: z.ZodType< Stream > = z.object({ id: z.number().int(), - streamType: z.number().int(), + streamType: StreamType$outboundSchema, + format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), - index: z.number().int(), + index: z.number().int().optional(), bitrate: z.number().int().optional(), language: z.string().optional(), languageTag: z.string().optional(), @@ -2204,6 +2277,7 @@ export const Stream$outboundSchema: z.ZodType< colorSpace: z.string().optional(), colorTrc: z.string().optional(), frameRate: z.number().optional(), + key: z.string().optional(), height: z.number().int().optional(), level: z.number().int().optional(), original: z.boolean().optional(),