package main
import(
"context"
"github.com/LukeHagar/plexgo/models/components"
"github.com/LukeHagar/plexgo"
"github.com/LukeHagar/plexgo/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := plexgo.New(
plexgo.WithAccepts(components.AcceptsApplicationXML),
plexgo.WithClientIdentifier("abc123"),
plexgo.WithProduct("Plex for Roku"),
plexgo.WithVersion("2.4.1"),
plexgo.WithPlatform("Roku"),
plexgo.WithPlatformVersion("4.3 build 1057"),
plexgo.WithDevice("Roku 3"),
plexgo.WithModel("4200X"),
plexgo.WithDeviceVendor("Roku"),
plexgo.WithDeviceName("Living Room TV"),
plexgo.WithMarketplace("googlePlay"),
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
)
res, err := s.Content.GetMetadataItem(ctx, operations.GetMetadataItemRequest{
Ids: []string{},
AsyncCheckFiles: components.BoolIntTrue.ToPointer(),
AsyncRefreshLocalMediaAgent: components.BoolIntTrue.ToPointer(),
AsyncRefreshAnalysis: components.BoolIntTrue.ToPointer(),
CheckFiles: components.BoolIntTrue.ToPointer(),
SkipRefresh: components.BoolIntTrue.ToPointer(),
CheckFileAvailability: components.BoolIntTrue.ToPointer(),
AsyncAugmentMetadata: components.BoolIntTrue.ToPointer(),
AugmentCount: components.BoolIntTrue.ToPointer(),
})
if err != nil {
log.Fatal(err)
}
if res.MediaContainerWithMetadata != nil {
// handle response
}
}{
"MediaContainer": {
"identifier": "<string>",
"offset": 123,
"size": 123,
"totalSize": 123,
"Metadata": [
{
"title": "<string>",
"type": "<string>",
"addedAt": 123,
"key": "<string>",
"absoluteIndex": 123,
"art": "/library/metadata/58683/art/1703239236",
"audienceRating": 5,
"audienceRatingImage": "<string>",
"Autotag": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"banner": "<string>",
"chapterSource": "media",
"childCount": 1,
"composite": "<string>",
"contentRating": "<string>",
"Country": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"Director": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"duration": 123,
"Filter": [
{
"title": "<string>",
"type": "<string>",
"art": "<string>",
"content": true,
"filter": "<string>",
"hasPrefs": true,
"hasStoreServices": true,
"hubKey": "<string>",
"identifier": "<string>",
"key": "<string>",
"lastAccessedAt": 123,
"Pivot": [
{
"title": "<string>",
"type": "<string>",
"context": "<string>",
"id": "<string>",
"key": "<string>",
"symbol": "<string>"
}
],
"share": 123,
"thumb": "<string>",
"titleBar": "<string>",
"filterType": "<string>"
}
],
"Genre": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"grandparentArt": "<string>",
"grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4",
"grandparentHero": "<string>",
"grandparentKey": "<string>",
"grandparentRatingKey": "<string>",
"grandparentTheme": "<string>",
"grandparentThumb": "<string>",
"grandparentTitle": "<string>",
"guid": "plex://movie/5d7768ba96b655001fdc0408",
"Guid": [
{
"id": {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
}
}
],
"hero": "<string>",
"Image": [
{
"type": "background",
"alt": "<string>",
"url": "<string>"
}
],
"index": 123,
"lastViewedAt": 1556281940,
"leafCount": 123,
"Media": [
{
"id": 1,
"aspectRatio": 2.35,
"audioChannels": 2,
"audioCodec": "aac",
"audioProfile": "lc",
"bitrate": 5612,
"container": "mov",
"duration": 150192,
"has64bitOffsets": false,
"hasVoiceActivity": true,
"height": 544,
"optimizedForStreaming": false,
"Part": [
{
"id": 1,
"key": "/library/parts/1/1531779263/file.mov",
"accessible": true,
"audioProfile": "lc",
"container": "mov",
"duration": 150192,
"exists": true,
"file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov",
"has64bitOffsets": false,
"indexes": "sd",
"optimizedForStreaming": false,
"size": 105355654,
"Stream": [
{
"codec": "hevc",
"displayTitle": "4K DoVi/HDR10 (HEVC Main 10)",
"id": 1002625,
"key": "/library/streams/216389",
"streamType": 1,
"default": true,
"audioChannelLayout": "5.1(side)",
"channels": 6,
"bitDepth": 10,
"DOVIBLCompatID": 1,
"DOVIBLPresent": true,
"DOVIELPresent": false,
"DOVILevel": 6,
"DOVIPresent": true,
"DOVIProfile": 8,
"DOVIRPUPresent": true,
"DOVIVersion": "1.0",
"bitrate": 24743,
"canAutoSync": false,
"chromaLocation": "topleft",
"chromaSubsampling": "4:2:0",
"codedHeight": 1608,
"codedWidth": 3840,
"closedCaptions": true,
"colorPrimaries": "bt2020",
"colorRange": "tv",
"colorSpace": "bt2020nc",
"colorTrc": "smpte2084",
"extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)",
"frameRate": 23.976,
"hasScalingMatrix": false,
"height": 1602,
"index": 0,
"language": "English",
"languageCode": "eng",
"languageTag": "en",
"format": "srt",
"headerCompression": true,
"level": 150,
"original": true,
"profile": "main 10",
"refFrames": 1,
"samplingRate": 48000,
"scanType": "progressive",
"embeddedInVideo": "progressive",
"selected": true,
"forced": true,
"hearingImpaired": true,
"dub": true,
"title": "SDH",
"streamIdentifier": 1,
"width": 3840
}
],
"videoProfile": "main"
}
],
"videoCodec": "h264",
"videoFrameRate": "24p",
"videoProfile": "main",
"videoResolution": "720",
"width": 1280
}
],
"originallyAvailableAt": "2022-12-14",
"originalTitle": "<string>",
"parentGuid": "plex://show/5d9c081b170e24001f2a7be4",
"parentHero": "<string>",
"parentIndex": 123,
"parentKey": "<string>",
"parentRatingKey": "<string>",
"parentThumb": "<string>",
"parentTitle": "<string>",
"primaryExtraKey": "<string>",
"prompt": "<string>",
"rating": 5,
"Rating": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"ratingCount": 123,
"ratingImage": "<string>",
"ratingKey": "<string>",
"Role": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"search": true,
"secondary": true,
"skipChildren": true,
"skipParent": true,
"Sort": [
{
"title": "<string>",
"type": "<string>",
"art": "<string>",
"content": true,
"filter": "<string>",
"hasPrefs": true,
"hasStoreServices": true,
"hubKey": "<string>",
"identifier": "<string>",
"key": "<string>",
"lastAccessedAt": 123,
"Pivot": [
{
"title": "<string>",
"type": "<string>",
"context": "<string>",
"id": "<string>",
"key": "<string>",
"symbol": "<string>"
}
],
"share": 123,
"thumb": "<string>",
"titleBar": "<string>",
"default": "asc",
"defaultDirection": "asc",
"descKey": "<string>",
"firstCharacterKey": "<string>"
}
],
"studio": "<string>",
"subtype": "<string>",
"summary": "<string>",
"tagline": "<string>",
"theme": "/library/metadata/1/theme/1705636920",
"thumb": "/library/metadata/58683/thumb/1703239236",
"titleSort": "<string>",
"updatedAt": 123,
"userRating": 5,
"viewCount": 123,
"viewedLeafCount": 123,
"viewOffset": 123,
"Writer": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"year": 123
}
]
}
}Get one or more metadata items.
package main
import(
"context"
"github.com/LukeHagar/plexgo/models/components"
"github.com/LukeHagar/plexgo"
"github.com/LukeHagar/plexgo/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := plexgo.New(
plexgo.WithAccepts(components.AcceptsApplicationXML),
plexgo.WithClientIdentifier("abc123"),
plexgo.WithProduct("Plex for Roku"),
plexgo.WithVersion("2.4.1"),
plexgo.WithPlatform("Roku"),
plexgo.WithPlatformVersion("4.3 build 1057"),
plexgo.WithDevice("Roku 3"),
plexgo.WithModel("4200X"),
plexgo.WithDeviceVendor("Roku"),
plexgo.WithDeviceName("Living Room TV"),
plexgo.WithMarketplace("googlePlay"),
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
)
res, err := s.Content.GetMetadataItem(ctx, operations.GetMetadataItemRequest{
Ids: []string{},
AsyncCheckFiles: components.BoolIntTrue.ToPointer(),
AsyncRefreshLocalMediaAgent: components.BoolIntTrue.ToPointer(),
AsyncRefreshAnalysis: components.BoolIntTrue.ToPointer(),
CheckFiles: components.BoolIntTrue.ToPointer(),
SkipRefresh: components.BoolIntTrue.ToPointer(),
CheckFileAvailability: components.BoolIntTrue.ToPointer(),
AsyncAugmentMetadata: components.BoolIntTrue.ToPointer(),
AugmentCount: components.BoolIntTrue.ToPointer(),
})
if err != nil {
log.Fatal(err)
}
if res.MediaContainerWithMetadata != nil {
// handle response
}
}{
"MediaContainer": {
"identifier": "<string>",
"offset": 123,
"size": 123,
"totalSize": 123,
"Metadata": [
{
"title": "<string>",
"type": "<string>",
"addedAt": 123,
"key": "<string>",
"absoluteIndex": 123,
"art": "/library/metadata/58683/art/1703239236",
"audienceRating": 5,
"audienceRatingImage": "<string>",
"Autotag": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"banner": "<string>",
"chapterSource": "media",
"childCount": 1,
"composite": "<string>",
"contentRating": "<string>",
"Country": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"Director": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"duration": 123,
"Filter": [
{
"title": "<string>",
"type": "<string>",
"art": "<string>",
"content": true,
"filter": "<string>",
"hasPrefs": true,
"hasStoreServices": true,
"hubKey": "<string>",
"identifier": "<string>",
"key": "<string>",
"lastAccessedAt": 123,
"Pivot": [
{
"title": "<string>",
"type": "<string>",
"context": "<string>",
"id": "<string>",
"key": "<string>",
"symbol": "<string>"
}
],
"share": 123,
"thumb": "<string>",
"titleBar": "<string>",
"filterType": "<string>"
}
],
"Genre": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"grandparentArt": "<string>",
"grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4",
"grandparentHero": "<string>",
"grandparentKey": "<string>",
"grandparentRatingKey": "<string>",
"grandparentTheme": "<string>",
"grandparentThumb": "<string>",
"grandparentTitle": "<string>",
"guid": "plex://movie/5d7768ba96b655001fdc0408",
"Guid": [
{
"id": {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
}
}
],
"hero": "<string>",
"Image": [
{
"type": "background",
"alt": "<string>",
"url": "<string>"
}
],
"index": 123,
"lastViewedAt": 1556281940,
"leafCount": 123,
"Media": [
{
"id": 1,
"aspectRatio": 2.35,
"audioChannels": 2,
"audioCodec": "aac",
"audioProfile": "lc",
"bitrate": 5612,
"container": "mov",
"duration": 150192,
"has64bitOffsets": false,
"hasVoiceActivity": true,
"height": 544,
"optimizedForStreaming": false,
"Part": [
{
"id": 1,
"key": "/library/parts/1/1531779263/file.mov",
"accessible": true,
"audioProfile": "lc",
"container": "mov",
"duration": 150192,
"exists": true,
"file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov",
"has64bitOffsets": false,
"indexes": "sd",
"optimizedForStreaming": false,
"size": 105355654,
"Stream": [
{
"codec": "hevc",
"displayTitle": "4K DoVi/HDR10 (HEVC Main 10)",
"id": 1002625,
"key": "/library/streams/216389",
"streamType": 1,
"default": true,
"audioChannelLayout": "5.1(side)",
"channels": 6,
"bitDepth": 10,
"DOVIBLCompatID": 1,
"DOVIBLPresent": true,
"DOVIELPresent": false,
"DOVILevel": 6,
"DOVIPresent": true,
"DOVIProfile": 8,
"DOVIRPUPresent": true,
"DOVIVersion": "1.0",
"bitrate": 24743,
"canAutoSync": false,
"chromaLocation": "topleft",
"chromaSubsampling": "4:2:0",
"codedHeight": 1608,
"codedWidth": 3840,
"closedCaptions": true,
"colorPrimaries": "bt2020",
"colorRange": "tv",
"colorSpace": "bt2020nc",
"colorTrc": "smpte2084",
"extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)",
"frameRate": 23.976,
"hasScalingMatrix": false,
"height": 1602,
"index": 0,
"language": "English",
"languageCode": "eng",
"languageTag": "en",
"format": "srt",
"headerCompression": true,
"level": 150,
"original": true,
"profile": "main 10",
"refFrames": 1,
"samplingRate": 48000,
"scanType": "progressive",
"embeddedInVideo": "progressive",
"selected": true,
"forced": true,
"hearingImpaired": true,
"dub": true,
"title": "SDH",
"streamIdentifier": 1,
"width": 3840
}
],
"videoProfile": "main"
}
],
"videoCodec": "h264",
"videoFrameRate": "24p",
"videoProfile": "main",
"videoResolution": "720",
"width": 1280
}
],
"originallyAvailableAt": "2022-12-14",
"originalTitle": "<string>",
"parentGuid": "plex://show/5d9c081b170e24001f2a7be4",
"parentHero": "<string>",
"parentIndex": 123,
"parentKey": "<string>",
"parentRatingKey": "<string>",
"parentThumb": "<string>",
"parentTitle": "<string>",
"primaryExtraKey": "<string>",
"prompt": "<string>",
"rating": 5,
"Rating": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"ratingCount": 123,
"ratingImage": "<string>",
"ratingKey": "<string>",
"Role": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"search": true,
"secondary": true,
"skipChildren": true,
"skipParent": true,
"Sort": [
{
"title": "<string>",
"type": "<string>",
"art": "<string>",
"content": true,
"filter": "<string>",
"hasPrefs": true,
"hasStoreServices": true,
"hubKey": "<string>",
"identifier": "<string>",
"key": "<string>",
"lastAccessedAt": 123,
"Pivot": [
{
"title": "<string>",
"type": "<string>",
"context": "<string>",
"id": "<string>",
"key": "<string>",
"symbol": "<string>"
}
],
"share": 123,
"thumb": "<string>",
"titleBar": "<string>",
"default": "asc",
"defaultDirection": "asc",
"descKey": "<string>",
"firstCharacterKey": "<string>"
}
],
"studio": "<string>",
"subtype": "<string>",
"summary": "<string>",
"tagline": "<string>",
"theme": "/library/metadata/1/theme/1705636920",
"thumb": "/library/metadata/58683/thumb/1703239236",
"titleSort": "<string>",
"updatedAt": 123,
"userRating": 5,
"viewCount": 123,
"viewedLeafCount": 123,
"viewOffset": 123,
"Writer": [
{
"tag": "Shaun Lawton",
"confidence": 123,
"context": "<string>",
"filter": "actor=49",
"id": 123,
"ratingKey": "58683",
"role": "Secretary",
"tagKey": "5d3ee12c4cde6a001c3e0b27",
"tagType": 123,
"thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"
}
],
"year": 123
}
]
}
}The token which identifies the user accessing the PMS. This can be either:
JWT tokens provide better security with:
Indicates the client accepts the indicated media types
application/json, application/xml An opaque identifier unique to the client
"abc123"
The name of the client product
"Plex for Roku"
The version of the client application
"2.4.1"
The platform of the client
"Roku"
The version of the platform
"4.3 build 1057"
A relatively friendly name for the client device
"Roku 3"
A potentially less friendly identifier for the device model
"4200X"
The device vendor
"Roku"
A friendly name for the client
"Living Room TV"
The marketplace on which the client application is distributed
"googlePlay"
Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.
0, 1 1
Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
0, 1 1
Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
0, 1 1
Determines if file check should be performed synchronously. Specifying asyncCheckFiles will cause this option to be ignored. Default is false.
0, 1 1
Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.
0, 1 1
Determines if file existence check should be performed synchronously. Specifying checkFiles will imply this option. Default is false.
0, 1 1
Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.
0, 1 1
Number of augmentations to add. Requires asyncAugmentMetadata to be specified.
0, 1 1
OK
MediaContainer is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the parentTitle attribute may appear on the MediaContainer rather than being repeated on each track.
Show child attributes
Was this page helpful?