Ce projet contient le code source de l'extension ainsi que les différentes versions des navigateurs (Firefox et Chrome).
La partie client du code, permet de parcourir les différentes plateformes (Netflix, Disney et Prime). Elle analyse le DOM pour trouver l'emplacement où afficher la note et récupèrer l'id des produits disponibles sur la plateforme. Le scrapping est différent en fonction de chaque plateformes.
- Netflix: Notes sur le wall et sur chaque produits (on trouve facilement l'id de chaque produits pour l'envoyer côté serveur).
- Disney+: Notes sur les pages produits, mais impossible de l'afficher sur le wall car l'id du produit n'est pas récupérable dans le DOM.
- Prime: Notes sur le wall et toutes les pages produits, intégration plus complexe dans le DOM.
La partie en tâche de fond permet de récupérer la note de chaque produits grâce à l'envoi d'un tableau d'ids (récupéré côté client) et du provider via la requête GraphQL ci-dessous:
query productByPlatform($platformIds: [String]!, $provider: String)
{
productByPlatform(platformIds: $platformIds provider: $provider)
{
platformId
rating
slug
typeId
productId
}
}
Variables de la requète
- platformIds: tableau d'IDs de produit de la plateforme
- provider: nom de la plateforme (ex: Netflix)
Exemple de réponse:
{
"data": {
"productByPlatform": [
{
"platformId": "0NTL8EP3Y7FZPKAIPH2AABBIC5",
"rating": 3.3,
"slug": "bde",
"typeId": 1,
"productId": 54625567
},
{
"platformId": "0G5O1KUJH5VOH9V9NOO5WXANMR",
"rating": null,
"slug": null,
"typeId": null,
"productId": null
}
]
}
}
Cette requête va retourner la note et les différentes informations utilent pour l'affichage côté client (ex: Disney+).
Avantages
- SensCritique à la main sur sa propre table en BDD (indépendance).
- Possibilité de modifier rapidement si on rencontre une erreur de matching.
Inconvénients
- Erreurs de matching (fiablilité).
- Problème au niveau du multi-plateforme, par exemple Canal+ affiche les produits Disney+ sur sa plateforme mais avec un autre ID que celui présente sur Disney+.
- Netflix: Récupère les infos sur le wall ou la page produit
- Disney: Récupère les infos sur la page produit
- PrimeVideo: Récupère les infos sur le wall ou la page produit
- SensCritique (HTTP): Récupère la note via une requète
- browser-extension: Génère le DOM avec les notes SensCritique
Même installation pour Firefox et Chrome:
- Vous devez installer
docker
etdocker-compose
. make install
make watch-firefox
oumake watch-chrome
pour exécuter webpack dans le watch-mode.
- Aller sur
chrome://extensions/
et cocher le mode développeur. Load unpackaged extension
et sélectionner le dossierdist/main/chrome
.- À chaque fois que vous faites un changement dans le code, cliquez sur le bouton
Refresh
.
- Aller sur la page de debug
about:debugging#/runtime/this-firefox
Load a temporary add-on module
et sélectionner le fichierdist/main/firefox/manifest.json
- À chaque fois que vous faites un changement dans le code, cliquez sur le bouton
Refresh
.
-
Pour nous remonter vos idées ou obtenir de l'aide, vous pouvez créer une nouvelle discussion.
-
Pour nous remonter des bugs, pour pouvez créer un ticket.
-
Si vous souhaitez contribuer au projet et nous proposer votre code. Vous devez Fork le projet, créer un branche et proposer une pull-request.