Sincronizza automaticamente eventi Classeviva con Google Calendar.
Project description
CVVCalendarSync
Un script Python per sincronizzare automaticamente gli eventi del registro elettronico Classeviva con Google Calendar.
🔗 Progetto Originale
Questo progetto è un fork migliorato del repository originale:
- Repository: LucaCraft89/CVVCalendarSync
- Autore: LucaCraft89
- Licenza: GPL-3.0
📊 Statistiche del Progetto
- Linguaggi Principali: Python
- Linee di Codice: 343
- Dipendenze: 4 (requests, google-auth, google-api-python-client, google-auth-oauthlib)
- Compatibilità: Linux, macOS, Windows
- Disponibile su PyPI: ✅
✨ Caratteristiche
- 🔄 Sincronizzazione Automatica: Aggiorna il calendario Google con gli eventi di Classeviva
- 🗑️ Gestione Eventi Duplicati: Rimuove automaticamente eventi duplicati o eliminati
- ⏰ Esecuzione Programmata: Supporta esecuzione automatica ogni 20 minuti via cron
- 🛡️ Gestione Errori: Gestisce errori API e stati temporanei (es. anno scolastico non iniziato)
📋 Prerequisiti
- Python 3.8+
- Account Google con Calendar API abilitata
- Credenziali Classeviva valide
- File di configurazione
config.jsonecredentials.json
🚀 Installazione
Opzione 1: Installazione da PyPI (Consigliata)
-
Installa il pacchetto:
pip install cvvcalendarsync
-
Esegui lo script:
cvvcalendarsync
Opzione 2: Installazione da Sorgente
-
Clona il repository:
git clone https://github.com/LNLenost/CVVCalendarSync.git cd CVVCalendarSync
-
Installa le dipendenze:
pip install -r requirements.txt
-
Esegui lo script:
python classevivaSync.py # oppure python -m cvvcalendarsync
⚙️ Configurazione
⚠️ IMPORTANTE: Prima di eseguire lo script, devi configurare i file richiesti nella directory di lavoro!
1. Crea il file config.json
Crea un file config.json nella directory dove eseguirai lo script:
{
"user_id": "tuo_user_id_classeviva",
"user_pass": "tua_password_classeviva",
"calendar_id": "tuo_calendar_id_google@group.calendar.google.com",
"credentials_file": "credentials.json"
}
2. Scarica credentials.json
- Vai su Google Cloud Console
- Crea un nuovo progetto o seleziona uno esistente
- Abilita l'API Google Calendar
- Crea credenziali (Service Account Key) e scarica
credentials.json - Salva il file nella stessa directory di
config.json
📖 Utilizzo
Esecuzione Manuale
Con PyPI:
cvvcalendarsync
Da sorgente:
python classevivaSync.py
# oppure
python -m cvvcalendarsync
Esecuzione Automatica (ogni 20 minuti)
Con PyPI:
crontab -e
Aggiungi questa riga:
*/20 * * * * cvvcalendarsync
Da sorgente:
crontab -e
Aggiungi questa riga:
*/20 * * * * /usr/bin/python3 /percorso/completo/al/progetto/classevivaSync.py
Output di Esempio
Effettuato il login con il profilo NOME COGNOME
{
"periods": [
{
"dateStart": "2025-09-01",
"dateEnd": "2025-12-31",
...
}
]
}
Aggiungo evento: Lezione di Matematica - 2025-09-01T08:00:00+02:00 to 2025-09-01T09:00:00+02:00
🛠️ Gestione Errori
Anno Scolastico Non Iniziato
Se l'anno scolastico non è ancora attivo, lo script mostrerà:
[INFO] L'anno scolastico non è ancora iniziato. Riprova quando sarà attivo nel registro elettronico.
Errori di Autenticazione
- Verifica che
user_ideuser_passsiano corretti - Assicurati che
credentials.jsonsia valido e con permessi adeguati
Errori API
- Controlla la connessione internet
- Verifica che l'account Classeviva sia attivo
📁 Struttura del Progetto
CVVCalendarSync/
├── classevivaSync.py # Script principale
├── config.json # Configurazione (non tracciato)
├── credentials.json # Credenziali Google (non tracciato)
├── requirements.txt # Dipendenze Python
├── Dockerfile # Container Docker
├── compose.yml # Docker Compose
├── LICENSE # Licenza GPL-3.0
├── README.md # Questa documentazione
└── .gitignore # File da ignorare in git
🐳 Docker (Opzionale)
Build e Run
docker build -t cvvcalendarsync .
docker run -v $(pwd)/config.json:/app/config.json -v $(pwd)/credentials.json:/app/credentials.json cvvcalendarsync
Docker Compose
docker-compose up
🤝 Contributi
Contributi benvenuti! Per favore:
- Fork il progetto
- Crea un branch per la tua feature (
git checkout -b feature/AmazingFeature) - Commit le tue modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
📝 Licenza
Questo progetto è distribuito sotto GNU General Public License 3.0 (GPL-3.0).
Vedi il file LICENSE per i termini completi della licenza.
⚠️ Disclaimer
Questo progetto non è ufficialmente affiliato con Classeviva o Google. Utilizzalo a tuo rischio. Assicurati di rispettare i termini di servizio di entrambi i servizi.
📞 Supporto
Se hai problemi:
- Controlla i log di output dello script
- Verifica la configurazione (config.json e credentials.json)
- Assicurati di aver seguito tutte le istruzioni di configurazione
- Apri una issue su GitHub con il messaggio di errore completo
📦 Utilizzo come Libreria Python
Dopo aver installato il pacchetto da PyPI, puoi anche usarlo come libreria:
from cvvcalendarsync import login, get_agenda, sync_to_google_calendar
# Effettua il login
login_response = login("tuo_user_id", "tua_password")
# Ottieni l'agenda
agenda = get_agenda("11920234", "20250901", "20251231", login_response["token"])
# Sincronizza con Google Calendar
sync_to_google_calendar(agenda, "calendar_id@group.calendar.google.com", "credentials.json")
🚀 Pubblicazione su PyPI
Per pubblicare nuove versioni su PyPI:
# Installa gli strumenti di build
pip install --upgrade build twine
# Costruisci il pacchetto
python -m build
# Pubblica su PyPI (richiede account)
twine upload dist/*
⭐ Se questo progetto ti è utile, considera di mettere una stella!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cvvcalendarsync-1.0.2.tar.gz.
File metadata
- Download URL: cvvcalendarsync-1.0.2.tar.gz
- Upload date:
- Size: 43.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e371f80434c3b67521b327c8d5bf59e018cbb7996d84fb1866b241c1ca144f6
|
|
| MD5 |
de4d85a29c6b3b2d28c405554ee6cf36
|
|
| BLAKE2b-256 |
73da094b30fcbcb00b49eab7f1caa1c557e2eb236efd4d6440976e17681bebf2
|
Provenance
The following attestation bundles were made for cvvcalendarsync-1.0.2.tar.gz:
Publisher:
publish-pypi.yml on LNLenost/CVVCalendarSync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cvvcalendarsync-1.0.2.tar.gz -
Subject digest:
3e371f80434c3b67521b327c8d5bf59e018cbb7996d84fb1866b241c1ca144f6 - Sigstore transparency entry: 444702282
- Sigstore integration time:
-
Permalink:
LNLenost/CVVCalendarSync@930d74262ce95124ce5e081892746c6ff45be018 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/LNLenost
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@930d74262ce95124ce5e081892746c6ff45be018 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cvvcalendarsync-1.0.2-py3-none-any.whl.
File metadata
- Download URL: cvvcalendarsync-1.0.2-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33ebe7a4aff19301df1cd71b83755697379f70a5dfdd45d148e2f1b774d15357
|
|
| MD5 |
c138f00b052d5f5c25523bd7fc159ab7
|
|
| BLAKE2b-256 |
482780e722b0ca35f2d51c2f375c50ef5b0904f0db9515b782db286e02ec276a
|
Provenance
The following attestation bundles were made for cvvcalendarsync-1.0.2-py3-none-any.whl:
Publisher:
publish-pypi.yml on LNLenost/CVVCalendarSync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cvvcalendarsync-1.0.2-py3-none-any.whl -
Subject digest:
33ebe7a4aff19301df1cd71b83755697379f70a5dfdd45d148e2f1b774d15357 - Sigstore transparency entry: 444702297
- Sigstore integration time:
-
Permalink:
LNLenost/CVVCalendarSync@930d74262ce95124ce5e081892746c6ff45be018 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/LNLenost
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@930d74262ce95124ce5e081892746c6ff45be018 -
Trigger Event:
release
-
Statement type: