You can use Docotic.Pdf library to find and remove potentially insecure content:
Remove all scripts in PdfDocument.SharedScripts collection.
Check PdfDocument.GetWidgets() collection to detect form fields and annotations. You can remove or flatten them if necessary. Sample: https://github.com/BitMiracle/Docotic.Pdf.Samples/tree/master/Samples/...
Try dupeguru from here: https://dupeguru.voltaicideas.net/.
In Picture mode it checks for similar images, even though they have different sizes, it has a threshold setting, creates groups of similar files, choosing the biggest file as main, but can be set another file for reference too. Is able to move files to some path or to the recycle bin or delete them ...
For 3D shapes, https://www.allwinedesigns.com/blog/stlcmd is notable.
It can draw cubes, spheres, cylinders, cones, toruses, threads (the goal was to provide a tool for 3D printing). There's a transform tool which can scale uniformly and also along any angle. Another tool will do intersections, union and differences.
The output is in STL format, http://...
Node can do this. Download the file to a local ./aes.js or something, and then start node prompt and:
> .load aes.js
Unless by 'or' you mean that you need both to be able to use in from a REPL and import it from a script. I don't know if it's possible to import unexported names from another file (the special .load command-line thing seems to dump ...
You can install Calibre eBook (which has a GUI) and use it exclusively from the Command Line &/or the APIs for integration with VIM, etc. and there is no reason other than performance & roaming that you could not have the library located on a network share.
You can certainly add your own plug-ins to customise behaviour, search, etc.
Free, yes & ...
You may use PortDB.apk and export tables to CSV. I sync the export folder with MEGASync, my journal file is acessible by 3 devices (KaliLinux, Windows7 and Android) https://apkpure.com/br/portodb-database/com.portofarina.portodb