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
.
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