Ryot
@magistr/ryotv2026.10.25.10
01README
Import a film history into a self-hosted Ryot (https://github.com/IgnisDa/ryot) as one generic-JSON import job.
Methods:
import_films— a@jamesakeech/letterboxdexportSnapshot plus owned films (TMDB ids, e.g. from@magistr/film-library): watched/rated films get one undated seen entry, ratings become 0–100 (stars × 20), watchlist films go to the Watchlist collection, owned films to Owned. TMDB ids for Letterboxd films are scraped from their film pages (hostcurl) and cached. Guarded against re-import (Ryot would duplicate seen entries).import_reports— Ryot's import job reports (progress, failed items)
The auth token is a sensitive globalArgument.
02Release Notes
2026.10.25.10
- Repo-wide republish; no functional change.
03Behaviors
@magistr/ryotv2026.10.25.10extensions/models/ryot.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| baseUrl | string | Ryot base URL, e.g. https://ryot.aopab.art |
| authToken | string | Auth token from Ryot Settings → Integrations → Generate auth token |
fn import_films(owned?: array, ownedAsSeen?: boolean, dryRun?: boolean, force?: boolean)
Import a Letterboxd export snapshot plus owned films into Ryot as
| Argument | Type | Description |
|---|---|---|
| owned? | array | Owned films with a TMDB movie id (e.g. from @magistr/film-library) |
| ownedAsSeen? | boolean | |
| dryRun? | boolean | |
| force? | boolean |
fn import_reports()
Fetch Ryot's import job reports (progress, success, failed items)
Resources
letterboxdMap(infinite)— Cache of Letterboxd URI → TMDB id, scraped from Letterboxd film
importResult(infinite)— What one import run sent to Ryot, and what it skipped
importReports(infinite)— Ryot's own import job reports (progress, failed items)
04Previous Versions
2026.10.15.9MIT
2026.10.15.9
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.8MIT
2026.10.15.8
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.6MIT
2026.10.15.6
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.5MIT
2026.10.15.5
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.4MIT
2026.10.15.4
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.3MIT
2026.10.15.3
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.2MIT
2026.10.15.2
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.1MIT
2026.10.15.1
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.10.1MIT
2026.10.10.1
First release.
import_filmsbuilds one Ryot generic-JSONCompleteExportfrom a@jamesakeech/letterboxdexport snapshot plus owned films, uploads it to/backend/uploadand startsdeployImportJob(source: GENERIC_JSON). Watched and rated films get one undated seen entry, ratings become 0–100 (stars × 20), watchlist films go to the Watchlist collection and owned films to Owned. A completed non-dry run blocks later runs unlessforceis set, because Ryot does not dedupe seen entries.- TMDB ids for Letterboxd films are read from each film page with the host
curland cached inletterboxd-tmdb-map. import_reportsstores Ryot's import job reports.
Fixed before release
- Snapshot URIs are checked before they reach
curl: onlyhttpsURLs onletterboxd.com/boxd.itare fetched, andcurlruns with--proto =https. A URI such as-o /pathor--config=...was passed tocurlas an option. - An upload response that is not a JSON array of strings is rejected. A bare string response was indexed to its first character and used as the path.
- Non-JSON 200 responses from the upload and GraphQL endpoints fail with a clear
message instead of a raw
SyntaxError. - The Letterboxd retry loop no longer sleeps after the final attempt.
05Stats
A
100 / 100
Downloads
15
Archive size
9.3 KB
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Docs keep secrets in a vault1/1earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned
Repository
https://github.com/umag/swamp-workspace06Platforms
07Labels