Un Script tout simple pour exporter ses données de visionnage SensCritique dans un fichier .CSV compatible avec Letterboxd.
➡️ ➡️ ➡️ Accès à l'instance principale. ⬅️ ⬅️ ⬅️
Il y a de plus en plus d'intérêt à avoir un profil complet SensCritique et Letterboxd : les deux plateformes deviennent de plus en plus complémentaires et gagnent chaqu'une en force tous les jours.
Ce projet vient simplement de l'envie d'avoir un profil Letterboxd complet à partir de mes données SensCritique.
Vous pouvez utiliser cet outil toutes les semaines/mois pour remplir toutes vos données manquantes sur Letterboxd !
Cet outil utilise un petit script JavaScript executé en local, qui récupère les données de l'utilisateur depuis l'API de nouvelle version de SensCritique.
Vous obtiendrez à la fin un fichier .CSV contenant tous vos films, la note & la date de visionnage que vous avez entrées sur SensCritique, qu'il est ensuite possible d'importer sur Letterboxd.
- PHP 7.4+ (recommandé : PHP 8+)
- Un navigateur web moderne
macOS (via Homebrew) :
brew install phpLinux (Debian/Ubuntu) :
sudo apt install php-cli php-curlWindows : télécharger depuis windows.php.net
Méthode recommandée (script tout-en-un qui gère les cas particuliers) :
./dev.sh # port 9000 par défaut
./dev.sh 8080 # ou choisis ton portMéthode manuelle :
php -S localhost:9000Puis ouvre http://localhost:9000 dans ton navigateur.
⚠️ Si tu lances depuis le terminal intégré de Cursor : utilise./dev.shobligatoirement. Cursor exporte des variablesHTTP_PROXY/HTTPS_PROXY(proxy sandbox) que PHP/cURL hérite, ce qui fait échouer les requêtes vers l'API SensCritique avec l'erreurCONNECT tunnel failed, response 403. Le scriptdev.shsupprime ces variables au lancement.
Vider le cache navigateur : les fichiers JS et CSS ont un paramètre ?v=NN qui doit être bumpé à chaque modification :
<script defer src="src/index.js?v=21" charset="utf-8"></script>
<link rel="stylesheet" href="css/style.css?v=21">Incrémente le numéro dans index.html pour forcer un rechargement côté navigateur.
Hard-refresh pendant le dev pour bypasser le cache HTTP :
- macOS :
Cmd + Shift + R - Windows/Linux :
Ctrl + Shift + R
DevTools : ouvrir avec F12, onglet Network → cocher Disable cache pendant que DevTools est ouvert.
SensBoxd/
├── index.html # Page principale
├── help.html # Panneau d'erreur (403, profil privé…)
├── css/style.css # Styles
├── src/
│ ├── config.js # Config API, UI, retry/throttle
│ ├── graphql-queries.js # Query GraphQL UserCollection
│ ├── state-manager.js # Gestion d'état + listeners
│ ├── index.js # Logique métier (load, retry, export)
│ └── proxy.php # Proxy CORS → API SensCritique
├── data/changelog.json # Changelog affiché sur la page
└── img/, video/ # Assets
Pour contourner les restrictions CORS et accéder à l'API SensCritique depuis votre navigateur, ce projet utilise un proxy PHP basé sur PHP Cross Domain Proxy créé par Iacovos Constantinou.
Le proxy (src/proxy.php) agit comme un intermédiaire qui :
- Reçoit les requêtes depuis votre script JavaScript
- Les transmet à l'API SensCritique
- Retourne les réponses à votre navigateur
Note de sécurité : Le proxy est configuré pour n'accepter que les requêtes vers les domaines SensCritique autorisés.
- Et les critiques ?
- Les critiques ne sont pas incluses dans l'export. D'un point de vue technique, il serait simple de les ajouter. Il est tout de même préférable de faire ce genre de choses à la main pour être sûr du formatage de chaque plateforme. Si c'est très demandé, je pourrai ajouter une option.
- Et si je ne veux plus noter mes films sur Letterboxd ?
- Les notes seront incluses dans le .CSV, mais l'outil d'importation de Letterboxd comporte une case à cocher "Import Ratings" qu'il est possible de décocher.
- J'ai déjà noté certains films sur Letterboxd
- La note est différente, Letterboxd la remplacera par celle de SensCritique.
Ceci un projet personnel non affilié à SensCritique, SensCritique.com ou SENSCRITIQUE SARL, et n'utilise aucune de leurs technologies ou code privé.