Metadata-Version: 2.4
Name: school-photo-dl
Version: 0.1.0
Summary: Téléchargeurs de photos pour plateformes scolaires françaises (toutemonannee.com, fr.klass.ly).
Author-email: Vincent Werdeil <werdeil@hotmail.com>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/werdeil/school-photo-dl
Project-URL: Repository, https://github.com/werdeil/school-photo-dl
Project-URL: Issues, https://github.com/werdeil/school-photo-dl/issues
Keywords: scraper,selenium,toutemonannee,klassly,photos,school
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Natural Language :: French
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Multimedia :: Graphics
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Pillow>=10.0
Requires-Dist: python-dotenv>=1.0
Requires-Dist: requests>=2.32
Requires-Dist: selenium>=4.33
Requires-Dist: webdriver-manager>=4.0
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: pylint>=4.0; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Dynamic: license-file

# school-photo-dl

Téléchargeurs de photos en ligne de commande pour deux plateformes scolaires françaises :

- [toutemonannee.com](https://www.toutemonannee.com)
- [fr.klass.ly](https://fr.klass.ly)

Pilote Chrome via Selenium, s'authentifie avec vos identifiants, parcourt les
albums/classes et enregistre les images HD localement, organisées par
album/classe et date.

## Installation

```bash
pip install school-photo-dl
```

Python 3.10 ou supérieur. Chrome doit être installé sur la machine. Le pilote
ChromeDriver est récupéré automatiquement par
[webdriver-manager](https://pypi.org/project/webdriver-manager/).

## Configuration

Les identifiants et le dossier de téléchargement sont lus depuis les variables
d'environnement (chargées depuis un fichier `.env` du dossier courant si
présent). Voir [`.env.example`](.env.example).

### Partagé

```bash
DOWNLOAD_DIR="/chemin/vers/dossier"
HEADLESS="true"   # "false" pour voir le navigateur
```

### toutemonannee.com

```bash
TMA_USERNAME="email@example.com"
TMA_PASSWORD="motdepasse"
```

### fr.klass.ly

```bash
KLASSLY_USERNAME="+33600000000"
KLASSLY_PASSWORD="motdepasse"
```

## Utilisation

Une seule commande, deux sous-commandes :

```bash
school-photo-dl tma        # télécharge depuis toutemonannee.com
school-photo-dl klassly    # télécharge depuis fr.klass.ly
school-photo-dl --version
```

Sans sous-commande, la CLI lit `.env` et lance en séquence toutes les
plateformes pour lesquelles les identifiants sont renseignés :

```bash
school-photo-dl            # auto : TMA puis Klassly si les deux sont configurés
```

### Arborescence de sortie

- TMA : `{DOWNLOAD_DIR}/{nom_espace}/{date} - {titre}/*.jpg`
- Klassly : `{DOWNLOAD_DIR}/{nom_classe}/{YYYY-MM-DD} - {texte_post}/*.jpg`

## Développement

```bash
git clone https://github.com/werdeil/school-photo-dl
cd school-photo-dl
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
```

Publication sur PyPI : pousser un tag `vX.Y.Z` déclenche
[`.github/workflows/publish.yml`](.github/workflows/publish.yml) (Trusted
Publisher PyPI, aucun token à gérer).

```bash
git tag v0.1.0 && git push --tags
```

Pour un build local (test du paquet avant tag) :

```bash
python -m build
twine check dist/*
```

## Licence

GPL-3.0-or-later. Voir [LICENSE](LICENSE).

## Soutenez les plateformes

[toutemonannee.com](https://www.toutemonannee.com) et
[Klassly](https://fr.klass.ly) sont des services qui facilitent le lien entre
les familles et l'école au quotidien. Leur fonctionnement repose sur des
équipes qui développent et maintiennent ces outils.

**Si vous appréciez le service rendu, pensez à souscrire aux offres payantes
proposées par ces plateformes** (albums photo imprimés, abonnements premium,
etc.). C'est le meilleur moyen de les soutenir et de garantir leur pérennité.

Cet outil n'a pas vocation à se substituer à ces offres mais simplement à vous
permettre de conserver une copie locale de vos photos.

## Avertissement

Cet outil est destiné à récupérer **vos propres** photos auxquelles vous avez
légalement accès via votre compte. L'utilisateur est responsable du respect des
conditions d'utilisation des plateformes concernées et des droits à l'image.
