Skip to main content

Sincronizza automaticamente eventi Classeviva con Google Calendar.

Project description

CVVCalendarSync Banner

CVVCalendarSync

Python License Lines of Code PyPI CI Tests Publish to PyPI

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:

📊 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.json e credentials.json

🚀 Installazione

Opzione 1: Installazione da PyPI (Consigliata)

  1. Installa il pacchetto:

    pip install cvvcalendarsync
    
  2. Esegui lo script:

    cvvcalendarsync
    

Opzione 2: Installazione da Sorgente

  1. Clona il repository:

    git clone https://github.com/LNLenost/CVVCalendarSync.git
    cd CVVCalendarSync
    
  2. Installa le dipendenze:

    pip install -r requirements.txt
    
  3. 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

  1. Vai su Google Cloud Console
  2. Crea un nuovo progetto o seleziona uno esistente
  3. Abilita l'API Google Calendar
  4. Crea credenziali (Service Account Key) e scarica credentials.json
  5. 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_id e user_pass siano corretti
  • Assicurati che credentials.json sia 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:

  1. Fork il progetto
  2. Crea un branch per la tua feature (git checkout -b feature/AmazingFeature)
  3. Commit le tue modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. 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:

  1. Controlla i log di output dello script
  2. Verifica la configurazione (config.json e credentials.json)
  3. Assicurati di aver seguito tutte le istruzioni di configurazione
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cvvcalendarsync-1.0.2.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cvvcalendarsync-1.0.2-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

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

Hashes for cvvcalendarsync-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3e371f80434c3b67521b327c8d5bf59e018cbb7996d84fb1866b241c1ca144f6
MD5 de4d85a29c6b3b2d28c405554ee6cf36
BLAKE2b-256 73da094b30fcbcb00b49eab7f1caa1c557e2eb236efd4d6440976e17681bebf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cvvcalendarsync-1.0.2.tar.gz:

Publisher: publish-pypi.yml on LNLenost/CVVCalendarSync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cvvcalendarsync-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cvvcalendarsync-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 33ebe7a4aff19301df1cd71b83755697379f70a5dfdd45d148e2f1b774d15357
MD5 c138f00b052d5f5c25523bd7fc159ab7
BLAKE2b-256 482780e722b0ca35f2d51c2f375c50ef5b0904f0db9515b782db286e02ec276a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cvvcalendarsync-1.0.2-py3-none-any.whl:

Publisher: publish-pypi.yml on LNLenost/CVVCalendarSync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page