Collecte du vocabulaire basque (francais/basque) de loecsen vers une base SQLite locale + audio
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-08 16:26:40 +02:00
docs Collecte vocabulaire basque (loecsen) vers SQLite + audio 2026-10-08 16:26:40 +02:00
.gitignore Collecte vocabulaire basque (loecsen) vers SQLite + audio 2026-10-08 16:26:40 +02:00
README.md Collecte vocabulaire basque (loecsen) vers SQLite + audio 2026-10-08 16:26:40 +02:00
requirements.txt Collecte vocabulaire basque (loecsen) vers SQLite + audio 2026-10-08 16:26:40 +02:00
scraper.py Collecte vocabulaire basque (loecsen) vers SQLite + audio 2026-10-08 16:26:40 +02:00

Vocabulaire basque (français ⇄ basque) + audio — base SQLite locale

Script de collecte du vocabulaire basque de loecsen.com : les paires français / basque (classées par thème) et leurs fichiers audio MP3, stockés dans une base SQLite locale (avec le chemin des audio français et basque).

Le site n'est sollicité qu'en lecture (requêtes GET). Rien n'y est écrit.

Résultat

Élément Valeur
Thèmes 17
Paires (dont variantes) 540
Fichiers audio 945 (408 français + 537 basque)
Taille audio ~24 Mo
Base data/basque.db
Audio audio/fr/*.mp3, audio/eu/*.mp3

Les paires marquées variation sont les traductions alternatives (même texte français, plusieurs équivalents basques), par ex. Bonjour → Egun on / variante Kaixo.

Utilisation

pip install -r requirements.txt
python scraper.py                # collecte + téléchargement complet
python scraper.py --no-download  # base seulement (sans les MP3)
python scraper.py --limit 20     # télécharger seulement 20 MP3 (test)
python scraper.py --html data/vocabulaire-basque.html   # rejouer depuis un HTML en cache

Le script est idempotent : relancé, il réutilise les MP3 déjà présents et ne re-télécharge pas. Le HTML de la page est mis en cache dans data/.

Base de données

Schéma (data/basque.db) :

  • themes (id, position, slug, title) — les 17 thèmes, dans l'ordre de la page.
  • audio (id, lang fr|eu, filename, url, local_path, size_bytes, sha256, status, fetched_at) — un enregistrement par fichier MP3, dédupliqué par nom de fichier.
  • entries (id, theme_id, position, fr, eu, is_variation, fr_audio_id, eu_audio_id) — une ligne par paire français/basque.

Vue pratique v_entries (jointe) :

SELECT fr, fr_audio, eu, eu_audio
FROM v_entries
WHERE theme_position = 6           -- 6 - Repères de temps
ORDER BY position;

Exemple d'exploration :

import sqlite3
c = sqlite3.connect("data/basque.db")
for fr, fr_mp3, eu, eu_mp3 in c.execute(
        "SELECT fr, fr_audio, eu, eu_audio FROM v_entries ORDER BY theme_position, position"):
    print(f"{fr:35} {eu:35} {fr_mp3} | {eu_mp3}")

Structure du dépôt

scraper.py          script de collecte et de construction de la base
requirements.txt
data/               (ignoré par git) base SQLite + HTML en cache
audio/              (ignoré par git) MP3 fr/ et eu/
docs/HANDOFF.md     architecture + état d'avancement

data/ et audio/ sont ignorés par git (artefacts reproductibles, et l'audio reste la propriété de loecsen) ; ils sont régénérés par python scraper.py.

Droits

Les textes et enregistrements proviennent de loecsen.com. Ce dépôt ne contient que l'outil de collecte ; les données téléchargées restent pour un usage personnel.