Transférer ses films de TV Time vers Letterboxd 🎬
Je suis le seul à avoir un entourage qui me force à m’inscrire sur Letterboxd ?
Le truc c’est que je viens de TV Time. L’appli est notoire pour empêcher d’accéder à ses données. Du coup je suis un peu obligé de passer par un autre moyen, car j’ai plusieurs centaines de films à ajouter.
Une appli monopage codée avec Flutter
Heureusement pour nous, il est possible d’accéder à TV Time via le web.
- Se connecter
- Aller sur le profil
- Voir la liste des films vus.
Je me rends vite compte que le DOM HTML n’est pas accessible. C’est en raison du shadow DOM que permet Flutter (si j’ai bien compris).
On va donc devoir manœuvrer autrement.
L’onglet Network
Dans la console développeur (Ctrl/Cmd + Shift + C), aller dans l’onglet Network.
Naviguer sur le profil puis aller dans la liste des films.
En faisant un hard refresh un json assez gros est récupéré.
L’URL du json correspond à https://app.tvtime.com/sidecar?o=https%3A%2F%2Fmsapi.tvtime.com%2Fprod%2Fv1%2Ftracking%2Fcgw%2Ffollows%2Fuser%2F<user_id>&entity_type=movie&sort=watched_date%2Cdesc. Il pèse ~400kb pour ~200 films regardés.
Cliquer dessus, et dans l’onglet Response le résultat ressemble en gros à ça :
{
"status": "success",
"data": {
"user_id": 12345678,
"type": "list",
"objects": [
{
"uuid": "1f663b20-66d9-5f07-b6eb-59225ffea406",
"type": "follow",
"...": "..."
}
]
}
}

Récupérer le json sur Firefox

Récupérer le json sur Chrome/Chromium
Si c’est le bon, copier son contenu et le coller dans un fichier tvtime.json.
Manipulation avec jq
Letterboxd a un outil d’import de fichiers csv. C’est pourquoi il faut convertir le json pour qu’il soit lu par Letterboxd.
Il faut une liste avec les titres, les années de sortie et les dates de visionnage des films.
Installez donc jq au préalable.
Dans la colonne WatchedDate, je récupère la date de visionnage. Comme certains films n’ont pas la valeur de remplie, j’ai dû mettre une date par défaut.
Pensez donc à remplacer le 2025-05-19.
jq -r '
(["Title","Year","WatchedDate"]),
( .data.objects[] |
[
.meta.name,
(.meta.first_release_date | split("-")[0]),
(.watched_at // "" | if length > 0 then split("T")[0] else "2025-05-19" end)
]
)
| @csv
' tvtime.json > letterboxd.csv
Un équivalent sur PowerShell pour Windows (n’utilise pas jq)
$json = Get-Content -Raw -Path "tvtime.json" | ConvertFrom-Json
$csvLines = @()
$csvLines += '"Title","Year","WatchedDate"'
foreach ($item in $json.data.objects) {
$title = $item.meta.name
$year = ($item.meta.first_release_date -split "-")[0]
if ($item.watched_at) {
$watchedDate = ($item.watched_at -split "T")[0]
} else {
$watchedDate = "2025-05-19"
}
$csvLine = '"' + $title.Replace('"', '""') + '","' + $year + '","' + $watchedDate + '"'
$csvLines += $csvLine
}
$csvLines | Set-Content -Path "letterboxd.csv" -Encoding UTF8
Import du csv dans Letterboxd
Sur la page d’importation, ouvrir le fichier letterboxd.csv généré au-dessus.
Il faut ajouter manuellement les films qui n’ont pas été reconnus. Activer Hide successful matches pour les compléter.
Puis cliquer sur Import films.
Si vous avez des questions ou des suggestions, n’hésitez pas à me contacter par mail, sur LinkedIn ou directement en envoyant une issue sur GitHub
