MediaInfo++ Script Add-in (Feedback needed)

MediaInfo++ is a script add‑in for Directory Opus that extends the default multimedia columns, letting you pull in any MediaInfo value right into Opus. What really sets it apart is its intuitive UI—no more manual edits to the script. Just preview and pick exactly the data you need, then choose how it’ll appear in Opus.

Key Features:

  • Full support for virtually every property exposed by MediaInfo.
  • A built-in UI to manage which columns you want to add—customize the name, header, type, applicable extensions, and more.
  • Designed for both casual and advanced users: the interface is simple to use but powerful enough to define custom rules and formatting.
  • Real-time preview of fully customizable infotip content as you edit.
  • Supports both single-value and multi-stream outputs at runtime—no need to modify the script manually.
  • Easily switch data types on the fly.
  • No data caching required—performance is fast enough without it.

Installation:

This script uses DOpus-Scripting-Extensions by @PolarGoose. First, you’ll need to install it from here.

Then install the script as usual. (Required v13.16.5)
v0.9.9 (preview) : MediaInfo++

Usage:

The first time you install the script, it’ll ask if you want to start configuring columns—assuming you already have the program mentioned. If not, it’ll give you the link to install it.

Argument Type Value Desc
CONFIG /O Shows the dialog windows for configuring columns/infotips.
filepath Accepts a filepath to populate the preview column right after start.
EXPORT /S Exports columns/infotips to a file.
IMPORT /O Imports columns/infotips from a file without deleting existing ones. If no file is specified, you'll be prompted to choose one.
!IMPORT /O Imports columns/infotips from a file, deleting existing ones. If no file is specified, you'll be prompted to choose one.

Below is an image that briefly explains each part of the CONFIG dialog.

Checked columns will activate as soon as you close the dialog.

That’s it. You can use special values in the infotips as a summary, which you also set up in the dialog.

Notes:

  • Columns marked as "Multiple" show its value for each stream in their group (if there’s more than one), using your choosed separator (default " | "), and are always treated as type "text." Otherwise, they show the first stream’s value in the group and apply the chosen type (number, size, etc.).
  • Only keywords in the "General" group have an immutable "Multiple" flag, since there’s always just one.
  • The script adds certain values to the "Menu" group for convenience: ChaptersCount and ChaptersList.
  • Custom regexes are ignored (for now) when the type is datetime, date, or time, since it doesn’t make sense to customize those. Their original design was for a different extraction/formatting method. You probably won’t need it, but it’s there if you do.
  • For extensions, you can reference filegroups using grp:, either by their internal name or visible name (or translated). You can include any extensions you want, with the leading dot included.
  • Because MediaInfo has a massive number of keywords and I didn’t want to spend ages matching each to the perfect type or relevant file types, there may be some inconsistencies in default values. Since this script lets you change anything, that shouldn’t be a problem.
  • The search supports Opus wildcard syntax, so you’ll need to escape certain characters where required.

Infotips

When building infotips, to get the keyword you want, select it from the list and press Ctrl+C so you can paste it from the clipboard.
Available infotips are for : General, Audio, Video, Text, Menu and Image.
The infotips have a special syntax, which basically is:

{keyword|value if not available|specific format}

Where parts 2 and 3 are optional.
The specific format expects "%1" to insert the keyword's value in the desired position.
If the keyword doesn't exist, or the text isn't inside {}, the text is passed as is.
These values support all the markup code that Opus allows.

Importing from a file

The command supports importing columns directly from a valid JSON file with the following format:

Detailed explanation

There are two sections: "columns" and "infotips".

Each entry (KEY) in both groups must have the following properties:

  • "label": Cannot be empty.
  • "header":
  • "align": Must be left, center, or right.
  • "type": Must be string, number, size, double, duration, datetime, date, or time.
  • "category": Must be music, movie, image, script, size, std, date, or sums.
  • "enabled": Must be 1 or 0.
  • "exts": Cannot be empty; must include at least one . or grp:. Multiple values are separated by ; .
  • "group": Must be General, Audio, Video, Image, Text, Menu, or Other.
  • "keyword": Cannot be empty (except for infotips).
  • "multi": Must be true or false.
  • "regex": The regex used for custom formatting.
  • "regex1": The regex flags.
  • "regex2": The replacement value for the regex.
  • "value": Only for infotips. Cannot be empty.

Additionally:

  • KEY must follow the internal format for columns (group_keyword) or infotips (group_infotip).

E.g.
{
"columns": {
"Audio_Default": {
"label": "Audio Default",
"header": "Default",
"align": "left",
"type": "string",
"category": "script",
"enabled": 1,
"exts": "grp:Video",
"group": "Audio",
"keyword": "Default",
"multi": true,
"regex": "",
"regex1": "",
"regex2": ""
}
}
"infotips": {
"General_infotip": {
"label": "General_infotip",
"header": "General_infotip",
"align": "left",
"type": "string",
"category": "script",
"enabled": 1,
"exts": "grp:Music; grp:Movies; grp:Images",
"group": "General",
"keyword": "",
"multi": true,
"regex": "",
"regex1": "",
"regex2": "",
"value": "{FileSize_String||Size: %1},{OverallBitRate_String|| Bitrate: %1}{Duration_String||, Duration: %1} {File_Created_Date||Created: %1} {Encoded_Date||Encoded: %1} {Released_Date||Released: %1}"
}
}
}

Thanks to:

MediaInfo.
@PolarGoose, for the awesome plugin that makes this project possible.
Opus devs, for an amazing program that goes beyond a file manager.

This is a work in progress. Please report any errors, suggestions, or feedback below or via direct message. Thanks!

Planned:

  • New IMPORT and EXPORT arguments to modify registered columns without a UI, using a file instead. (done in v0.9.3)
  • A working reset button for columns, so you can revert to each field’s default value (still planning how to do this). (done in v0.9.2)
  • Make the UI preview apply data‑type changes. (done in v0.9.9)
  • A more robust search (by column, etc.). Currently, it only searches by keyword + label.
  • You tell me…

Changelog

v0.9.9 (01/07/2025) :

  • When you run CONFIG and the list is empty, you'll be prompted to pick a file. Hopefully this clears up confusion about how to add new values that some users had.
  • CONFIG now accepts a file path as an argument. So MediaInfo++ CONFIG c:\path\to\file.mp4 will open the dialog with the preview already loaded.
  • After opening a file for preview in the dialog, every keyword you see is saved in a database to populate the list on future runs. This is really useful, since you no longer have to remember which file had the entry you wanted—you just need to have previewed it at least once.
  • The preview now converts values to the specified type, just like they'd appear in the column.
  • Thanks to @PolarGoose and the latest MediaInfoRetriever plugin, localization (unit fields and certain translated values) is supported. The language used will match the one Opus is running in.
  • Files marked "offline" are ignored when fetching data, to avoid unintentionally downloading them.
  • Improved how new file-type groups are added to avoid issues when using Opus in multiple languages.
  • The "star" type is now properly recognized in column types.
  • Fixed a possible error that could occur in saved data when switching languages in some cases.
  • Other minor tweaks.

v0.9.3 (27/06/2025) :

  • When you run CONFIG, if there aren't any saved columns yet, you'll be prompted to pick a file for preview and to populate the list.
  • Improved how controls get enabled and disabled in CONFIG.
  • Added new arguments:
    • EXPORT: Export columns to a file.
    • IMPORT: Import columns from a file without deleting existing ones (accepts a filepath).
    • !IMPORT: Import columns from a file and remove existing ones (accepts a filepath).
      Note: IMPORT needs a JSON file in a specific format (explained in the first post), or it won't run.

v0.9.2 (26/06/2025) :

  • Extra Mediainfo keywords can be added now too.
  • You can now change the category for an specific column.
  • Other fixes.

v0.9 (18/06/2025) :

  • Initial release (preview)
15 Likes

@errante,

Amazing. The amount of work that you put into this is remarkable.
I'm surprised that your GUI is fully written in DOpus. It is not easy to make something so functional with a very limited GUI library.
Thank you for the plugin. I'm also glad that DOpus-Scripting-Extensions is useful. Actually, you added MediaInfo functionality there :slight_smile:

Thanks!
Where this concept would really come in handy, IMHO, would be with your Exiftool columns addin. Hopefully the GUI part can serve you as a basis.

Yes, you have done an amazing reference implementation for similar scripts. I will look into it. Thank you. However, I cannot promise that I will have the time to implement something similar.

Trying to use this to verify mxf files for a Duplicate File comparison so I can sort by Format Profile and then select the file that is empty (corrupt) in this column but the column has stopped populating. Initially 309 out of 4853 duplicate groups had Format Profile values but upon restarting dopus no files appear to have values in this column.

The column logic appears correct - mxf is listed under extensions, and dragging these same files into the MediaInfo++ editor shows full field population. Any insight or diagnostic advice appreciated.

In the exts field, try using .mxf (with the dot) instead. I think I got that part wrong when I described it above. The correct would be "with the dot included."

1 Like

Tried unchecking and re-adding just Format Profile when chaning mxf to .mxf didn't work. Still no go even with a smaller folder of two files.

Set log level to debug in the script config and then open the script log and refresh the lister, then please post the log related to the script here.

FWIW, it's working here.

Also, please note that any changes you make won't take effect until you close the command's dialog and if the edited columns were already in use, refresh the lister.

Thank you!
I installed, I selected columns, and then I added those columns to a folder format.
Now I want to select more columns, but I can't figure out how to open that dialog.
I can only open this:


Or this:

How do I re-open this:

Thank you.

MediaInfo++ CONFIG

Thanks, but I don't even know what to do with that!
Is there nothing here that will open it:

Put the command in a button.

Or type a > then MediaInfo++ CONFIG

1 Like

I modified this line in the script:

if (value === undefined) return 'X';

This way, I can differentiate between files that failed to return a value (likely corrupt) versus those not yet scanned.

However, MediaInfo++ still stops scanning at around 309 duplicate groups.

I then used Advanced Selection to select rows where the Format Profile column shows "X", but Directory Opus became Not Responding. Is this because it's triggering MediaInfo++ to rescan all files in the result set rather than using the already-scanned "X" values?

Any advice on avoiding the rescan or ensuring values are cached before selection?

I misunderstood your answer at first. So, to clarify, the column is working now, but for some reason it stops after processing ~300 files?
The script does not use caches, in the tests I did I saw that it was not necessary, since the retrieval was very fast. I have not tested with the file type you mention in the quantity you mention.
Could you put aside the duplicate check for now and focus on the columns value? That is, wait for the data to finish calculating. How long does it take, if at all, to complete, or does it also stop at 300 files? You can use debug mode to see the file currently being processed.

Yes, it consistently stops after scanning ~300 files.

Here’s the log output:

:page_facing_up: MediaInfo++ log on Pastebin

It includes only the final 179 .mxf entries — the earlier entries were pushed out of the Directory Opus script log buffer, even after I increased it from 1,000 to 10,000 lines. Anticipating this, I manually copied the top intro portion of the log before it was overwritten during the duplicate results scan.

P.S.: it doesn't take long before it stops, maybe a minute, the log timestamps can attest to that.

Thanks.
Please try this version, it has a cleaner log and some minor fixes in the configuration dialog.

As ofr the issue, here's what I found/ my point of view:
Since I don't have that kind of files you mentioned, I tested with around 2.000 videos of 500-2.000 MB each.

  • It doesn't stop at 300 files, it completes the whole batch.
  • It took about 3:30 minutes, which seems normal to me.
  • Memory usage doesn't spike or grow significantly; it stays surprisingly stable.

So according to this, unless there's something specific to those filetypes, I don't see any issue with the script itself.

My guess is it's not halting—it just takes time :slightly_smiling_face:, and it's hard to tell how many files have been processed or are left. With the version I gave you, it'd be easier to track that.

OTOH, I'd expect similar timings if you used any built-in metadata column or thumbnails (does it show thumbnails?) for those files. It depends on other factors, like disk type, file sizes, etc.

Still, an in-memory cache might make sense, so I'll keep that in mind. Since this script hasn't gained much feedback, and given how many hours it took me to build this script, it may be a while before it's implemented—if I even keep publishing updates for this project.

I forgot to explain infotips, so I've updated the main post, also you can see some examples in the default infotips if you any doubt about it.

Installed v0.9.1prev. Here's the log:

froze at #361

buffer only went as far back as #180. I pre-saved the startup part of the log and joined the two logs together.

Could you please:

  • Enable seconds and milliseconds for the script log (option is in Preferences)
  • Copy ~500 of those files to a collection, then enable the column there.

No need to rerun the column editor each time for logging purposes.

Does the column populate there?