Using DEVONthink as a movie database

Personally, I’d go for something like Ninox, i.e. a relational database. But then that’s where I’m coming from. Reasoning for that below, if you care for that.

It seems that NeoFinder is scriptable. You could ask it via a script run in DT where the movie is and then add the answer to this question to DT. A sample script in AppleScript:

tell application "NeoFinder"
	find "me" catalogs {"Fotos"}
	set numResults to found items amount
	repeat with i from 1 to numResults
		log complete path of (found item index i) as text
	end repeat
end tell

The same can be achieved with a JavaScript script, of course. But The property finder path does not seem to work as described, it returns only missing value in my test. So, it might be less useful than it should be.
Edit The property works just fine if the relevant volume is mounted. Found that out thanks to NeoFinder’s support.

NeoFinder’s scripting technique is described briefly online.

As to why a relational database in my opinion would be a better tool for this task:

  • Required fields: You can force yourself to enter data that are absolutely necessary (in your opinion, that is) before the database accepts a new entry. For example, you’d want to make sure that every movie has a director and a language. Then you’d define these two fields in your database as required. You could, of course, use custom metadata for that in DT, but there’s no “required” attribute for them. If you forget to enter a language, you simply forget it.
  • Redundancy: In DT, you’d have to type “Martin Scorcese” into the “director” field for every movie of this director Firstly, that’s a lot of unnecessary work. Secondly, it duplicates information unnecessarily. In a relational database, you’d have a table “Directors”, and “Martin Scorcese” would be just one entry there. In your “Movies” table, you’d simply have a reference to this entry for every movie by this director. The same goes, BTW, for actors, though that is a bit more difficult since a movie generally has more than one of those.
  • Mistakes: I, for one, would certainly make typing errors like “Martin Scrocese” when having to enter the name several times. Having it only in one place, like described before, reduces this risk and makes fixing a spelling error very simple.
  • Searchability: DT has great search functions. But they are geared more towards full text search (no offense here, it’s just what the product has been developed for). In a relational database, it’s dead simple to find all movies directed by the famous director in which Ellen Burstyn starred. Or all movies in French produced between 2015 and 2018. And so on. That might all be possible in DT, too. But I believe it is more difficult and it requires very well-formed data (read: a lot of discipline when entering them).
2 Likes