OK, OK, I’ll just use tmdb

After last night’s post, I realised I was probably just getting too invested in somehow using imdb for the “who’s that actor, anyway?” command for my Emacs-based video player.

Not only is it an extremely fragile setup that’s gonna stop working, but it’s also very slow — it takes half a minute to return the actor profile images.

So I just implemented a tmdb API shim and then I ask it for the actor profile photo instead. tmdb doesn’t have as large a data base, but… The API is free (for non-commercial use) and is extremely easy to use.

Things are now faster:

The main wait is from the response from the LLM — I’m using gemini-3.8-flash. I’ve tried gemini-3.1-flash-lite, and it’s much faster… but gives the wrong result most of the time. No, that’s not Roy Scheider, Gemini!

So now the setup is less Rube Goldberguesque. Sort of:

  1. I hit a key on my li’l wireless keyboard.
  2. It’s picked up by a Python script that listens for evdev events.
  3. It uses emacsclient to notify the Emacs running on the TV machine.
  4. Emacs there tells mpv to do a screenshot.
  5. Emacs waits until the screenshot arrives on disc.
  6. Emacs sends it to Gemini and says “who dis? JSON please”.
  7. Gemini responds and Emacs then creates an SVG overlay with the actor name.
  8. rsvg-convert converts to PNG and then imagemagick convert to BGRA.
  9. Emacs asks mpv to display it.
  10. Emacs asks tmdb for the actor profile URL and fetches the image.
  11. If it gets a response, it then recreates the svg with the image embedded.
  12. (repeat 8-9).

Couldn’t be simpler.

Who’s That Actor? Revisited

I was watching The Four Seasons yesterday, and there were a couple of actors I wondered who were. I mean, not Alan Alda, but a couple of the others… so I hit the “Emacs, tell me who what is” button on my remote, and nothing much happened.

So things had bitrotted once again, which isn’t weird — the code is a bit of a Rube Goldberg thing which you can peruse here, but I wouldn’t really recommend it.

But I’ve spent the entire day fixing it, so I deserve to complain aimlessly in a blog post, right?

OK?

OK: The main problem is that AI web scrapers are hitting imdb so hard that Amazon has tightened its shield even more. The main motor behind the Actor Guessing Machine is an LLM, and that API still works (if you can call “being wrong half of the time” to “work”), but I’m trying to use imdb to show the actor’s face (see inset on the top right above) so that I can check whether what the LLM said is likely.

My first idea was to just avoid using imdb altogether. Instead I asked the LLM to include an image of the actor, too. Shouldn’t be too hard, right? Well, Gemini will do this if you ask — but it takes 45 seconds or so. Yes! 45 seconds! So that’s not very UX-ey.

I also tried using Claude, but it sternly told me that I was very naughty for even trying to make it output images of real people, and that I should be ashamed of myself. Oh, and then also (since I had asked it to return JSON and nothing else), it also included this in the middle of the rant:

```json
[]
```

🤷

So… Back to imdb: I’m already using a headless Chrome to fetch imdb data, but now it requires popping up Chrome (once in a while) to click on some hats or something:

How elegant! I’m so proud of the UX!

So what I’m doing is running a “server” (Emacs based, of course) on the laptop, and when the TV computer needs to get some imdb data, it (Emacs) asks the laptop (Emacs), and if it then turns out that it needs to pop up a window, it can do so (Chrome).

*sigh*

So… it’s all a bit stupid. And is it worth it? Eh. It’s probably gonna break in a few weeks anyway. I guess I’m more offended that I have to do this much work more than anything else. The challenge? Eh. Dunno.

But when it doesn’t need a popup, it’s kinda OK:

See? So… eh.

Oh, and while I’m moaning and carrying on:

LLMs are still guessomats. I ask the LLM (Gemini, in this case) to include the imdb ID of the actor in the response, and it will totally just make up an ID. So that’s not Carol Burnett in the inset image there.

And is that really Alan Alda?

That’s definitely not Alan Alda.

I guess that could be Alan Alda.

Anyway, since Gemini just makes up imdb IDs, I’m instead resorting to using the imdb data dump — when I get “Alan Alda” back from the LLM, I then look up the name in the imdb data dump database (that I have locally) and use that instead. If the name is spelt differently there than what Gemini returned? Well, them’s the breaks.

So this is totally a toy, but it’s kinda useful anyway.

4AD Tape Chains Vol II: Limitless

This is the second tape chain that we did on the 4ad-l list in the mid 90s. I guess it really was about the last time in history you could do a tape chain. A few years earlier, Frauenhofer (that’s literally what it was named) had invented mp3s, and then the free mp3 encoder lame was released some years later and everybody started distributing mp3s instead.

Which was a better idea, really. (For more blathering about what this all was, read the first part of this blog series.)

But here’s the second tape:

The first tape, RareOne, was comprised of tracks released on samplers and the like — nothing actually released on 4AD. This one is all about limited edition 7″ things that 4AD had put out, so it’s a bit more controversial business wise, I guess.

But while you’re listening to the tape, you can also read the magnificently designed tape:

Such serious.

Heh. “Master”.

And these are the tracks…

… and these, too. Some good stuff on here!