Thanks! I’ll add in support for all of those.
Oh dang, while that makes sense on the surface, it’s a bit disappointing this can’t be controlled by NFO like most of the other data. I have a bunch of old content recorded from OTA TV that I was finally hoping to update with the true running time of the episode itself and not have the ads account to the runtime via the file.
Does there happen to be a complete list of values that can’t be overridden by NFO in regards to what’s shown on the UX? This would be helpful to know for the sake of judging whether it’s worth pursuing some personal scripts I may want to build now that NFO is supported.
Hello everyone. Is the .nfo file functionality only available in preview versions? Or is it already available in the latest stable version of Plex?
I thought it was only available in the preview, but was corrected that it is available in the current release, actually I think the last 2 current releases. It does need to be manually selected as the matching agent I think.
It’s in the public release (1.43.1)
Nfo series/Movies are ignoring the .actors folder. I did some scans while not connected to the internet to ensure it was using the local metadata. It would not load the actor images until i reconnected to the internet, so it was ignoring/not using the .actors folder and instead using the links in the NFO.
Also would it be possible to upload an icon for custom rating sources? I manually added Myanimelist ratings/vote count to all my anime NFOs, instead of using anidb/tvdb/moviedb.
Maybe include an option to use rating from “name” and an option to upload an ico for that rating source. Similar to how it displays the moviedb/imdb icon next to the rating.
Hi, thanks for this feature. I’m using Plex to serve all my surveillance videos, and the NFO agent has been a godsend.
Everything has been working expexted. However, I did ran into this small issue: how can I specify a local poster for individual seasons?
I’ve tried adding the following to my tvshow.nfo file:
<thumb aspect="poster" type="season" season="2" preview="Season 0002/poster.jpg">Season 0002/poster.jpg</thumb>
I also tried using the full path, but Plex isn’t picking it up. Instead, it applies the same poster to all seasons.
For reference, my Plex server is running on macOS.
The .actors local images is not something specific to NFOs and would just be part of the normal Plex local media support.
There is an internal issue files for this and I’ve taken a look at how to implement this already, no info on when we’ll get around to it yet.
There is no support for pointing at local files from NFOs yet.
There is an issue open for this too. For now just continue using the naming we’ve always supported: https://support.plex.tv/articles/200220717-local-media-assets-tv-shows/
Really excited to hear that this feature has launched! I tried converting my Other Videos library to use this, but I get an error that a scanner is required. I would think no scanner is required here since all of the data should come from NFO files.
Is this a bug or am I missing an NFO specific scanner somewhere?
Other Videos type libraries aren’t supported.
Even though it’s the library for which it would make the most sense. ![]()
Oh, well that’d do it. Bummer!
With Jellyfin (and Emby too I believe) you can have a central ‘people’ folder where it caches a thumbnail cast image.
It’s very easy to replace with an updated one if needed. The files are all named ‘folder.jpg’ located in a subfolder named for the person. If you want to update the image, simply name it ‘folder.jpg’, copy and replace and refresh metadata. Or do it in from within Jellyfin and let the server do it for you.
It doesn’t seem all that of an unsurmountable challenge to have Plex be able to point to such a local file path and pull the image.
As an example for Jellyfin:
C:\ProgramData\Jellyfin\Server\metadata\People\C\Ciarán Hinds\folder.jpg
This filepath is included in the NFO. Ideally I could point the PLEX NFO agent to that .nfo file and Plex could pull the actor image and display it in every client (New Experience or not).
You guys are 90% there. But it’s not the first time you’re 90% there with something and that 10% comes much later, doesn’t materialize or focus gets diverted to something less essential (Plex Arcade anyone?). No offence intended. Truly.
In the end using .nfo files is about retaining control over your media and not relying on third party databases. Those who wish to use them have that option but for those of us who do curate their media rigorously (and perhaps admittedly a bit more than we should
), local cast images are a must.
So I do hope there’s a final push to add this and the other missing things in a future update.
@drzoidberg33 if possible could we have list of the nfo spec or the parts that you have implemented support for? is there any keys that you dont support for example multi uniqueid for example with default key etc. it would be helpful to know what is and is not supported.
Most of it is documented here: https://support.plex.tv/articles/using-nfo-metadata-files-with-plex/
Thanks testing out the new Agent i am noticing difference in responses as i mainly deal with GUIDs for sync purposes. the show level does not return guid:// for the specific show see the following for show level metadata
<MediaContainer size="1" totalSize="1" offset="0" allowSync="1" art="/library/metadata/567819/art/1777314609" identifier="com.plexapp.plugins.library" key="567819" librarySectionID="48" librarySectionTitle="test-nfo" librarySectionUUID="1a1e82d1-b67f-451b-94c1-187add929cf3" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1775731696" nocache="1" parentIndex="1" parentTitle="snip" thumb="/library/metadata/567819/thumb/1777314609" title1="test-nfo" title2="Golden Boy" viewGroup="season" viewMode="65593">
<Directory ratingKey="567820" key="/library/metadata/567820/children" parentRatingKey="567819" guid="tv.plex.agents.nfo.series://season/tvdb_72408_1" parentGuid="tv.plex.agents.nfo.series://show/tvdb_72408" type="season" title="Season 1" parentKey="/library/metadata/567819" parentTitle="Golden Boy" summary="snip" index="1" parentIndex="1" thumb="/library/metadata/567819/thumb/1777314609" art="/library/metadata/567819/art/1777314609" parentThumb="/library/metadata/567819/thumb/1777314609" leafCount="6" viewedLeafCount="0" addedAt="1777314608" updatedAt="1777314609">
<Image alt="Season 1" type="coverPoster" url="/library/metadata/567819/thumb/1777314609"/>
<Image alt="Season 1" type="background" url="/library/metadata/567819/art/1777314609"/>
</Directory>
</MediaContainer>
However individual episodes does give the tvdb://
<MediaContainer size="1" allowSync="1" identifier="com.plexapp.plugins.library" librarySectionID="48" librarySectionTitle="test-nfo" librarySectionUUID="1a1e82d1-b67f-451b-94c1-187add929cf3" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1775731696">
<Video ratingKey="567821" key="/library/metadata/567821" parentRatingKey="567820" grandparentRatingKey="567819" guid="tv.plex.agents.nfo.series://episode/tvdb_84871" parentGuid="tv.plex.agents.nfo.series://season/tvdb_72408_1" grandparentGuid="tv.plex.agents.nfo.series://show/tvdb_72408" type="episode" title="Computer Studies" grandparentKey="/library/metadata/567819" parentKey="/library/metadata/567820" librarySectionTitle="test-nfo" librarySectionID="48" librarySectionKey="/library/sections/48" grandparentTitle="Golden Boy" parentTitle="Season 1" contentRating="TV-MA" summary="snip" index="1" parentIndex="1" year="1995" thumb="/library/metadata/567821/thumb/1777314609" art="/library/metadata/567819/art/1777314609" grandparentThumb="/library/metadata/567819/thumb/1777314609" grandparentArt="/library/metadata/567819/art/1777314609" duration="1704789" originallyAvailableAt="1995-10-27" addedAt="1699558738" updatedAt="1777314609">
<Media id="809235" duration="1704789" bitrate="925" width="720" height="480" aspectRatio="1.66" audioChannels="2" audioCodec="aac" videoCodec="h264" videoResolution="480" container="mkv" videoFrameRate="NTSC" audioProfile="lc" videoProfile="main" hasVoiceActivity="0">
<Part accessible="1" exists="1" id="1161890" key="/library/parts/1161890/1699558738/file.mkv" duration="1704789" file="/storage/test/media/anime/Golden Boy (1995)/Season 01/Golden Boy (1995) - S01E01.mkv" size="197172794" audioProfile="lc" container="mkv" videoProfile="main">
<Stream id="3920861" streamType="1" default="1" codec="h264" index="0" bitrate="925" language="Japanese" languageTag="ja" languageCode="jpn" bitDepth="8" chromaLocation="left" chromaSubsampling="4:2:0" codedHeight="480" codedWidth="720" frameRate="29.970" hasScalingMatrix="0" height="480" level="30" profile="main" refFrames="1" scanType="progressive" title="Video" width="720" displayTitle="480p" extendedDisplayTitle="Video (480p H.264)"></Stream>
<Stream id="3920862" streamType="2" default="1" codec="aac" index="1" channels="2" language="Japanese" languageTag="ja" languageCode="jpn" audioChannelLayout="stereo" profile="lc" samplingRate="48000" title="Japanese" displayTitle="Japanese (AAC Stereo)" extendedDisplayTitle="Japanese (Japanese AAC Stereo)"></Stream>
</Part>
</Media>
<Image alt="Computer Studies" type="coverPoster" url="/library/metadata/567819/thumb/1777314609"/>
<Image alt="Computer Studies" type="snapshot" url="/library/metadata/567821/thumb/1777314609"/>
<Image alt="Computer Studies" type="background" url="/library/metadata/567819/art/1777314609"/>
<Guid id="tvdb://84871"/>
<Guid id="sonarr://27582"/>
<Extras size="0"></Extras>
<Related></Related>
</Video>
</MediaContainer>
you can see the Guid
<Guid id="tvdb://84871"/>
<Guid id="sonarr://27582"/>
which is missing on show level
@drzoidberg33 I’m running into an issue with a custom agent configuration in Plex and wanted to report what looks like unintended behavior.
I have a custom agent set up with:
-
Primary agent: NFO
-
Secondary agent: Plex Movie
During scans, the logs show that the NFO agent is being invoked as expected. However, when no NFO file is present for a given movie, Plex does not appear to fall back to the secondary (Plex Movie) agent.
Expected behavior:
If no NFO metadata is found, the system should continue to the next agent in the list.
Actual behavior:
The scan stops after the NFO agent, and no metadata is retrieved from the Plex Movie agent.
Environment details:
-
Existing Plex install (not fresh)
-
New custom agent setup
-
New library created with two folders added
I can provide logs if needed to help diagnose the issue.
Pretty sure that is expected. As you set NFO as primary, if its does not exist then plex cannot match the media so they would remain unmatched and not process additional providers in the list. It will only populate the data if its matched (at least that is my experience).
If you do this in this order you should get the desired results …
… which is firstly MATCH off Plex Movie and then populate local assets, NFO metadata and then and only then load plex metadata if its missing from NFO.
Can you provide the show and episode NFOs.
As above, dokuro has the answer.
The “primary” provider is the one used to match the item, if it fails we abort the metadata ingestion.

