- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| docs | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| scraper.py | ||
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,langfr|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/etaudio/sont ignorés par git (artefacts reproductibles, et l'audio reste la propriété de loecsen) ; ils sont régénérés parpython 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.