Turns out tv_meta_tvdb.py is failing to return posters due to a typo referencing variable "language":
def get_poster(self, title = None, tvdbid = None, languague = "en"):
If you fix this on line 138, you start getting posters returned, where they exist anyway:
root@64f6da68c0bd:/# /usr/bin/tv_meta_tvdb.py --tvdb-key <my-legacy-api-key> --title "Race Across The World"
2023-04-08 08:27:39,957:INFO:tv_meta_tvdb:{'key': '<my-legacy-api-key>', 'languages': None}
{"poster": "https://thetvdb.com/banners/posters/5c7cef5b3b416.jpg", "fanart": "https://thetvdb.com/banners/fanart/original/5c790600db31d.jpg"}
root@64f6da68c0bd:/#
Note, to steer tvhmeta to use thetvdb artwork instead of tmdb, you'll want to add '--modules-tv tv_meta_tvdb' to your tvhmeta command line.
Nice to find and fix this one, same caveat applies though about the legacy API closing down at some point in the future. Also note tv_meta_tvdb.py is only coded for the V3 API and would need a rewrite to support V4. On reading more into the V4 documentation, it looks like a very different setup - one where the project (tvheadend in this case obvs) registers, and us individual users $ub$cribe to get a PIN that allows us to make queries to the API that associate with the project's ID. Coding-up a new version of tv_meta_tvdb.py to work with this V4 arrangement is beyond my skills, plus I'm unlikely to sign up to a paid service when tmdb artwork is good enough for me, so for now I'll open a PR for this fix and enjoy the artwork for whatever remains of the V3 API's lifespan.