Is there a newest development document?

The main site is still 9.0 version.

That's still the current version.

The viewer plugin API hasn't changed much since then.

The VFS plugin API has a lot of new things (added for our own Archives plugin), but no one outside the team seems interested in using it so we haven't updated the documentation. We can update if it there is real interest.

Just yesterday evening I was checking the plugins forum examining the ADF plugin, the header files, and your page for information on multiple plugin ideas. I have many more questions regarding plugins but this one is the highest prio:

MediaInfo, for which I have written a user script earlier. MediaInfo recognizes more formats and handles a few files better than DOpus, especially Matroska and some MP4/M4A files, w.r.t bitrates, number of channels, audio codec and so on. DOpus handles these formats much better than any file manager and you most likely will improve the native DOpus support for MKV/MP4 in time but at the moment MediaInfo has the advantage. Using its data, I can supply a ton of extra information such as number of audio streams, audio/subtitle languages, attachments, etc. from my script. The script is fast-ish, but not as DOpus-native fast. One could take it and replace it with ffprobe, exiftool, etc. and develop alternatives.

Will I be able to develop MediaInfo plugin using the current SDK docs? Or would updated docs ease the job substantially?

You would, yes. I can't think of anything that's not in the docs that you'd need.

FWIW we are working on adding MediaInfo support ourselves, so it's coming in the future anyway, and making a plugin for it may be redundant in the longer term. I'm not sure when this work will be finished, though. (It's started, but part of a replacement for the whole Movie plugin. The metadata stuff is mostly done, but the replacement movie playback stuff hasn't begun yet.)

3 Likes

Great news, love it! Looking forward to v13!

I got many more plugin ideas and questions but if you could indulge 1 more.

In the docs, there is only CalcCRC32() method but FSUtil provides more algorithms. Probably you now CalcSHA1() etc methods which are one of those yet undocumented stuff you mention. With that in mind, I asked for Blake3 support before and wrote a script for personal use. And while checking the docs I remembered that some Foobar2000 plugins extend JScript/WSH methods by utils.GetWHnd(), window.move() and other goodies, probably like you extend WSH with your own objects.

Is there any undocumented calls or a planned SDK for tapping into WSH/your scripting objects so that I could for example override FSUtil.Hash() or introduce new scripting objects and methods?

The FSUtil.Hash method already supports sha1, as documented here:

https://www.gpsoft.com.au/help/opus12/index.html#!Documents/Scripting/FSUtil.htm

You don't need to modify WSH or Opus objects to add things that scripts can call. You can make your own objects with whatever methods you want, and all JScript/VBScript code can call them (not just in Opus but from anything that uses ActiveScripting). Basically just make a COM DLL that implements IDispatch and sticks to the types that ActiveScripting/Automation knows how to use.

1 Like

The SDK API lists CalcCRC32(), but CalcSHA1() and all the other algorithms from FSUtil are missing in the API, that's what I meant.

Anyway. The IDispatch is the answer! I got no clue but many prejudices and misconceptions about COM and but a quick search revealed it is possible to write COM components even in C#, and holy cow, in Rust! They look very promising. Reading helps.

@Leo, you opened my eyes! :smiley:

Which API are we talking about? Viewer plugin? VFS? Neither of those is relevant to scripting in any way.

No no no, I'm talking about "Plugin Support API SDK.pdf" - CalcCRC32() is listed there. And I suspected you have new, yet undocumented utility functions in your SDK, CalcSHA1(), CalcSHA256(), CalcCRC32_PHP() or whatever, like you do in the scripting method.

This was just a passing-by remark, not a big deal.

I'm not sure. We can add / document new plugin helper functions when/if people need them. No one has asked for that. I'm not sure what the existing function was provided for, but presumably some plugin needed it for something.

Permit me to elbow in, semi-off topic. I'd like to emphatically up vote the MediaInfo plugin effort.

My particular interests lie in data extraction and metadata management. I'll note that the Matroska/MKV container allows user defined metadata items, very handy.

Thanks

1 Like

I think yours should update the API document regularly.
Add more examples, and other languages ​​bindings.

Let more people participate in the translation work,
The translation quality of Simplified Chinese is really bad.

It's a waste of time as no one uses it.

The viewer API hasn't changed. The docs are still accurate.

The VFS API has been used by zero people, other than myself, who finished a plugin. If someone shows serious interest, we'll update the docs, but there's no point otherwise, and the docs that are there still work and are enough for someone to get started.