feat: add AniList plugin (#70)

* feat: add AniList plugin

Browse and update anime/manga lists from the bar widget and library panel with OAuth login.

* feat(anilist): add French translations

* docs(anilist): align README with template and current features

* chore(anilist): bump version to 1.0.0

* chore(anilist): update plugin thumbnail

* docs(anilist): document network, cache, and filesystem behavior

* fix(anilist): comply with AniList ToS naming guidelines

Rename the plugin to AniList (UNOFFICIAL), update the thumbnail, and keep service-facing copy referring to AniList itself.
This commit is contained in:
Cleboost
2026-07-23 17:55:08 -04:00
committed by GitHub
parent 1916c1a643
commit 0162521282
9 changed files with 2465 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
{
"settings": {
"client_id": {
"label": "Client ID",
"description": "Your AniList developer app client ID (anilist.co/settings/developer). Redirect URL must be http://127.0.0.1:7823/callback"
},
"client_secret": {
"label": "Client secret",
"description": "The client secret from the same AniList app. Never share it publicly — each user should use their own app."
},
"access_token": {
"label": "Access token (optional)",
"description": "Skip browser login if you already have a bearer token. Usually left empty."
},
"glyph": {
"label": "Bar glyph"
},
"count_mode": {
"label": "Bar count",
"description": "Which number to show next to the bar glyph.",
"options": {
"current": "Watching (anime in progress)",
"completed": "Completed (anime)",
"total": "Total (all anime)",
"in_progress": "In progress (anime + manga)",
"planning": "Planning (anime)"
}
}
},
"widget": {
"tooltip_current": "{count} anime in progress",
"tooltip_completed": "{count} anime completed",
"tooltip_total": "{count} anime on your list",
"tooltip_in_progress": "{count} in progress (anime + manga)",
"tooltip_planning": "{count} anime planned",
"tooltip_empty": "AniList — open library",
"tooltip_loading": "AniList — loading…",
"tooltip_error": "AniList — {error}"
},
"panel": {
"title": "AniList (UNOFFICIAL)",
"login_title": "Connect to AniList",
"login_help": "Set your client ID and client secret in plugin settings, then click Connect. Your browser opens, you approve AniList, and the plugin finishes login automatically.",
"connect": "Connect with AniList",
"login_waiting": "Waiting for browser login…",
"settings": "Plugin settings",
"logout": "Log out",
"refresh": "Reload list",
"refreshing": "Refreshing…",
"close": "Close",
"loading": "Loading your lists…",
"loading_more": "Loading more entries…",
"error": "Error: {message}",
"empty": "No entries in this list.",
"tab_anime": "Anime",
"tab_manga": "Manga",
"filter_current": "Watching",
"filter_reading": "Reading",
"filter_planning": "Planning",
"filter_planning_manga": "Plan to Read",
"filter_completed": "Completed",
"filter_paused": "Paused",
"filter_dropped": "Dropped",
"filter_repeating": "Repeating",
"filter_all": "All",
"progress_anime": "Ep {current}/{total}",
"progress_anime_unknown": "Ep {current}",
"progress_manga": "Ch {current}/{total}",
"progress_manga_unknown": "Ch {current}",
"next_episode": "Ep {episode} soon",
"open_anilist": "Open on AniList",
"cover_preview": "View cover",
"close_preview": "Close preview",
"download_cover": "Download cover",
"download_cover_success": "Cover saved to {path}",
"download_cover_failed": "Could not save the cover image.",
"download_cover_unavailable": "Install zenity or kdialog to choose a save location.",
"mark_complete": "Complete",
"decrement": "Previous episode/chapter",
"increment": "Next episode/chapter",
"updating": "Updating…",
"logged_in_as": "Signed in as {name}"
},
"service": {
"invalid_token": "Invalid or expired access token.",
"network_error": "Could not reach AniList.",
"mutation_failed": "Update failed.",
"not_configured": "Set AniList client ID and client secret in plugin settings.",
"oauth_failed": "Browser login failed.",
"oauth_busy": "A login is already in progress.",
"oauth_unavailable": "Could not start the local login helper. Is python3 installed?"
}
}
+93
View File
@@ -0,0 +1,93 @@
{
"settings": {
"client_id": {
"label": "ID client",
"description": "ID client de votre application développeur AniList (anilist.co/settings/developer). L'URL de redirection doit être http://127.0.0.1:7823/callback"
},
"client_secret": {
"label": "Secret client",
"description": "Secret client de la même application AniList. Ne le partagez jamais publiquement — chaque utilisateur doit utiliser sa propre application."
},
"access_token": {
"label": "Jeton d'accès (optionnel)",
"description": "Ignore la connexion navigateur si vous avez déjà un jeton bearer. Laissez vide en temps normal."
},
"glyph": {
"label": "Icône de la barre"
},
"count_mode": {
"label": "Compteur barre",
"description": "Quel nombre afficher à côté de l'icône dans la barre.",
"options": {
"current": "En cours (anime)",
"completed": "Terminé (anime)",
"total": "Total (tous les anime)",
"in_progress": "En cours (anime + manga)",
"planning": "Prévu (anime)"
}
}
},
"widget": {
"tooltip_current": "{count} anime en cours",
"tooltip_completed": "{count} anime terminés",
"tooltip_total": "{count} anime sur votre liste",
"tooltip_in_progress": "{count} en cours (anime + manga)",
"tooltip_planning": "{count} anime prévus",
"tooltip_empty": "AniList — ouvrir la bibliothèque",
"tooltip_loading": "AniList — chargement…",
"tooltip_error": "AniList — {error}"
},
"panel": {
"title": "AniList (UNOFFICIEL)",
"login_title": "Se connecter à AniList",
"login_help": "Renseignez votre ID client et votre secret client dans les paramètres du plugin, puis cliquez sur Se connecter. Votre navigateur s'ouvre, vous autorisez AniList, et le plugin termine la connexion automatiquement.",
"connect": "Se connecter avec AniList",
"login_waiting": "En attente de la connexion dans le navigateur…",
"settings": "Paramètres du plugin",
"logout": "Se déconnecter",
"refresh": "Actualiser la liste",
"refreshing": "Actualisation…",
"close": "Fermer",
"loading": "Chargement de vos listes…",
"loading_more": "Chargement de la liste…",
"error": "Erreur : {message}",
"empty": "Aucune entrée dans cette liste.",
"tab_anime": "Anime",
"tab_manga": "Manga",
"filter_current": "En cours",
"filter_reading": "En lecture",
"filter_planning": "À voir",
"filter_planning_manga": "À lire",
"filter_completed": "Terminé",
"filter_paused": "En pause",
"filter_dropped": "Abandonné",
"filter_repeating": "En reprise",
"filter_all": "Tout",
"progress_anime": "Ép. {current}/{total}",
"progress_anime_unknown": "Ép. {current}",
"progress_manga": "Ch. {current}/{total}",
"progress_manga_unknown": "Ch. {current}",
"next_episode": "Ép. {episode} bientôt",
"open_anilist": "Ouvrir sur AniList",
"cover_preview": "Voir la pochette",
"close_preview": "Fermer l'aperçu",
"download_cover": "Télécharger la pochette",
"download_cover_success": "Pochette enregistrée dans {path}",
"download_cover_failed": "Impossible d'enregistrer la pochette.",
"download_cover_unavailable": "Installez zenity ou kdialog pour choisir où enregistrer l'image.",
"mark_complete": "Terminer",
"decrement": "Épisode ou chapitre précédent",
"increment": "Épisode ou chapitre suivant",
"updating": "Mise à jour…",
"logged_in_as": "Connecté en tant que {name}"
},
"service": {
"invalid_token": "Jeton d'accès invalide ou expiré.",
"network_error": "Impossible de joindre AniList.",
"mutation_failed": "La mise à jour a échoué.",
"not_configured": "Renseignez l'ID client et le secret client AniList dans les paramètres du plugin.",
"oauth_failed": "La connexion via le navigateur a échoué.",
"oauth_busy": "Une connexion est déjà en cours.",
"oauth_unavailable": "Impossible de démarrer l'assistant de connexion local. python3 est-il installé ?"
}
}