cedric 36da183404
Déploiement API BETA / build (push) Successful in 2m6s
Vérification PR / build (pull_request) Successful in 2m11s
Déploiement API BETA / deploy (push) Successful in 45s
Vérification PR / deploy-beta (pull_request) Successful in 44s
ci: deploy beta on all branches including master
2026-06-26 07:26:04 +04:00
2026-04-21 21:35:59 +04:00
2026-04-28 12:25:09 +04:00
2022-05-10 22:01:40 +04:00
2021-05-28 21:58:31 +02:00
2020-12-05 21:40:18 +01:00
2020-12-05 21:40:18 +01:00
2020-12-05 21:40:18 +01:00
2020-12-05 21:40:18 +01:00
2026-04-16 16:07:25 +04:00
2024-02-05 14:57:06 +01:00
2026-05-18 18:32:48 +04:00
2026-06-15 20:19:53 +04:00
2026-04-29 17:55:39 +04:00

API made with Strapi

Prérequis

  • Node >= 16
  • Npm ou Yarn

Variables d'environnement

  • Copier le contenu du fichier .env.sample dans un nouveau fichier .env
cp .env.sample .env

STRAPI_URL sera utile en production uniquement. Cette variable fait référence à l'url du site de production (exemple : https://api.mon-site.fr).

STRAPI_ADMIN_URL fait référence à la route pour accéder à l'espace d'administration (par défaut : /admin) .

Générer les clés nécessaires :

Ces variables d'environnement sont obligatoires :

  • APP_KEYS
  • API_TOKEN_SALT
  • ADMIN_JWT_SECRET
  • JWT_SECRET (générée automatique si non renseignée)

Afin de les renseigner, vous pouvez générer des clés en passant par node :

node

Une fois dans la console node, tapez :

crypto.randomBytes(16).toString('base64')

retourne par exemple : 'BwUANVKSfenqAs1eFBHDIA=='

Générez une clé pour chaque variable et ajoutez les au fichier .env. La varialbe APP_KEYS peut en contenir plusieurs séparées, par une virgule : APP_KEYS=BwUANVKSfenqAs1eFBHDIA==,GiznuBga8kH0ZcOM5YO85w==

Si la variable JWT_SECRET n'est pas renseignée, elle est générée automatiquement par Strapi.

Installation des dépendances & lancement du serveur

yarn && yarn build && yarn dev

Tokens API

Les endpoints marqués ⚙️ Token requis nécessitent un token API Strapi.

Créer le token : Administration Strapi → Settings → API Tokens → Create new API Token

Endpoint Type de token Permissions requises
GET /paroles/export Custom Parole → export
POST /paroles/bulk-translate Custom Parole → bulkTranslate

Pour un token couvrant les deux endpoints, créer un token de type Custom et cocher dans la section Parole : export et bulkTranslate.

Le token est à passer dans le header HTTP :

Authorization: Bearer <token>

Point d'accès

/awtis

  • GET : Lister tous les artistes

/awtis/{id}

  • GET : Récupérer les informations d'un artiste

/awtis/count

  • GET : Récupère le nombre d'artiste

/paroles

  • GET : Lister tous les textes

/paroles/{id}

  • GET : Récupérer les informations d'un texte

/paroles/count

  • GET : Récupère le nombre de texte

/paroles/bulk-translate ⚙️ Token requis

  • POST : Traduit automatiquement via DeepL toutes les paroles ayant une source française (traductions.francais ou langueSource: fr) vers les langues manquantes (EN, ES, DE, IT). Ne modifie pas les traductions déjà existantes.

Réponse :

{"translated": 42, "skipped": 18, "errors": []}
Champ Description
translated Nombre de traductions ajoutées
skipped Paroles ignorées (pas de source FR ou déjà complètes)
errors Erreurs DeepL avec documentId, titre et lang

Exemple :

curl -X POST -H "Authorization: Bearer <token>" \
  "https://api.pawol.nu/api/paroles/bulk-translate"

/paroles/export ⚙️ Token requis

  • GET : Exporter les paroles et traductions au format JSONL ou JSON pour l'entraînement de modèles LLM

Paramètres de requête :

Paramètre Valeurs acceptées Défaut Description
type pairs | instruct pairs Format des exemples d'entraînement
lang fr,en,es,de,it toutes Langues cibles à inclure (séparées par des virgules)
format jsonl | json jsonl Format de la réponse

Type pairs — corpus parallèle source/cible, adapté aux modèles de traduction :

{"source_lang":"ka","target_lang":"fr","source":"Mwen ka palé épi ou…","target":"Je suis en train de te parler…","title":"Titre","artists":["Artiste"]}

Type instruct — format instruction/chat, adapté au fine-tuning de modèles d'instruction :

{"messages":[{"role":"system","content":"Tu es un expert en langue KA…"},{"role":"user","content":"Tradui an fransé :\n\nMwen ka palé épi ou…"},{"role":"assistant","content":"Je suis en train de te parler…"}]}

Format jsonl : la première ligne contient les métadonnées (champ _metadata: true). Pour les filtrer :

jq 'select(._metadata | not)' export.jsonl

Métadonnées incluses (_metadata: true en JSONL, clé metadata en JSON) :

Champ Description
exported_at Horodatage de l'export
total_paroles Nombre de paroles traitées
total_pairs Nombre d'exemples d'entraînement générés
languages Nombre de paires par langue
missing_translations Paroles avec des traductions manquantes, par langue
non_ka_transcriptions Paroles dont la transcription est suspectée d'être dans une autre langue (ex. français)

Exemple :

curl -H "Authorization: Bearer <token>" \
  "https://api.pawol.nu/api/paroles/export?type=instruct&lang=fr,en&format=jsonl" \
  -o dataset.jsonl

License

Copyright (C) 2024 Cédric Famibelle-Pronzola & ORGANISATION KA INTERNATIONALE (OKI)

FR

Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU Affero publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou d'ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU Affero pour plus de détails.

Vous devriez avoir reçu une copie de la licence publique générale GNU Affero avec ce programme. Si ce n'est pas le cas, consultez https://www.gnu.org/licenses/.

EN

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

S
Description
API de l'application web est conçue pour faciliter la transcription et la traduction automatiques de contenus musicaux.
https://api.pawol.nu
Readme AGPL-3.0 2.2 MiB
Languages
JavaScript 96.2%
HTML 3.8%