Stanchi delle aste fantacalcio manuali? "Fantahackalcio" è qui per salvarvi! Nato nel 2018 con il mio amico M, questo progetto è passato dalla CLI Python a una dashboard web pronta all'uso. Usate i miei "strani e arzigogolati algoritmi" per dominare l'asta senza dover toccare un solo script o nessun foglio Excel!
E per finire: mi sono disintossicato dal fantacalcio. Questo progetto è la chiusura di un ciclo, un regalo alla community e la fine delle mie domeniche d'ansia. Godetevi lo strumento, ma sappiate che io mi godo la pace!
Benvenuti, fantallenatori e aspiranti fantallenatori!
Se siete qui, probabilmente siete stanchi del solito tran tran dell'asta del fantacalcio, fatta di fogli di carta volanti, calcoli a mente (spesso sbagliati) e liti furibonde per un centesimo. Per anni, anch'io ho abbracciato la tradizione, armato del mio fedele foglio Excel, meticolosamente creato a mano. Sì, avete capito bene: un'opera d'arte digitale, frutto di ore di lavoro e notti insonni, per gestire i miei campioni (e i miei bidoni) al fantacalcio.
Un enorme grazie a Fantacalcio.it per il rilascio degli OpenData, facilmente scaricabili dal loro sitoweb, che hanno reso possibile non solo questo giochino ma, anche, l'ampliamento della community del Fantacalcio rendendola un po' più fancy con app, dati e campioncini e tante altre cose carine.
Le leggende narrano che tra i miei colleghi fantallenatori, il mio progetto fosse semplicemente noto come "el software", perché ero quello che, a differenza di tutti gli altri "non studiava" (per i profani del Fantacalcio sì, il Fantacalcio si studia) ma che si limitava a scegliere un giocatore piuttosto che un altro sulla base di strani calcoli fatti, appunto, da un "software".
Fatto sta che, a fine stagione, dopo aver fatto all-in su uno Zaccagni del Verona, aver fatto all-in sul super-Vlahovic della Fiorentina o, meglio ancora, aver sempre puntato sulla, quasi sempre dimenticata, certezza Bonaventura, ha contribuito a farmi fare più che una gran bella figura nelle stagioni passate.
Ai tempi, mi limitavo a generare dati direttamente dalla CLI Python, un'operazione che richiedeva una certa devozione e, ammettiamolo, un amore incondizionato per il terminale. Questo approccio rudimentale, ma efficace, è nato dopo aver messo sul groppone la bellezza di ben un anno di esperienza con quella favolosa libreria che è Pandas. Sì, un anno intero a domare DataFrames e Series, un'impresa epica che mi ha reso un pioniere nel campo! (Se non si fosse capito qua c'è della gran ironia) Il codice di quelle prime incarnazioni? Lo trovate sempre qui, sepolto tra le pieghe della storia di questo progetto.
Ma, quest'anno, ho deciso di alzare l'asticella. Basta con la fatica di dover lanciare script Python o di configurare chissà quali ambienti di sviluppo! Ho preso la mia creatura, l'ho fatta evolvere, e l'ho resa una dashboard pronta all'uso, accessibile a tutti e pensata per guidarvi nell'arte dell'asta in maniera... beh, chiamiamola "creativa". Ho integrato i risultati di strani e arzigogolati algoritmi scritti in Python con fogli Excel che si autocolorano in maniera quasi magica, creando questo favoloso frontend. E sì, la UI e i colori di Excel continuano a essere sempre nel mio cuore, tanto che ho deciso di impostare la visual identity di tutto il frontend su un bel verde, appunto Excel. Non aspettatevi la formula della vittoria come, altri software su abbonamento, vi promettono, questo è un mero calcolo statistico sulle performance dei giocatori nelle ultime stagioni del campionato italiano, il one season wonder non puoi prevederlo con i numeri, è inutile.
Il file finale Database.csv utilizzando dal frontend si basa su un formato proprietario con dati derivati da Fantacalcio.it. Il recupero di tali dati è interamente demandato all'utente. Il frontend, per funzionare, richiede semplicemente che il file Database.csv sia accessibile tramite un URL (anche locale) e che contenga una struttura compatibile con l'applicazione.
In sintesi, il processo è:
- Normalizza i dati usando
dataset_builder.py
- Genera
Database.csv
utilizzandocore.py
- Carica questo file nel tuo frontend per la visualizzazione.
- Profit
Questo progetto, amici miei, affonda le sue radici in un lontano 2018. Era un'epoca d'oro, fatta di sogni, algoritmi rudimentali e lunghe sessioni di coding con il mio amico M (che colgo l'occasione per salutare calorosamente e fargli i miei più sentiti auguri per l'imminente arrivo del nascituro! Preparati, le notti insonni cambieranno, non saranno più quelle che passavamo insieme ma, si vocifera che non finiranno! 😉). Insieme, abbiamo gettato le basi di quello che oggi vedete.
Ora, non vorrei fare il moralista, ma si sa che nel mondo delle idee (e del codice), la tentazione è sempre dietro l'angolo. Lasciare un codice open source non significa "regalare" un'idea e un algoritmo pubblicamente, senza che ne vengano riconosciuti i natali. Diciamo che se doveste imbattervi in qualcosa di stranamente familiare là fuori, sappiate che l'originale è qui. E, tra l'altro, "rubare" idea e algorimto, unito ad un bel CTRL+C-CTRL+V di tutto il codice sorgente, beh, quello è proprio contro lo spirito della collaborazione e della trasparenza che l'open source e tutte le righe di codice ospitate qui su GitHub dovrebbero incarnare, motivo per cui vi trovate questa nuova versione buttata sull'Internet sotto licenza GNU General Public Licenze 3 ❤️.
E, per chiudere il cerchio (e il progetto), un'ultima, doverosa precisazione: questo sarà il mio secondo anno consecutivo in cui non cadrò nella tentazione di bruciarmi un'intera giornata estiva dietro l'asta del Fantacalcio. La gioia di poter vivere i fine settimana senza l'ansia di controllare l'app di Fantagazzetta? Non ha prezzo, credetemi, non ne vale la pena. Vedete questo progetto non solo come uno strumento, ma come un regalo a tutta la community dei fantallenatori la chiusura di un cerchio, la fine gloriosa di un progettino la cui idea è nata nella noia di un pomeriggio di agosto in cui il lavoro forse non era così tanto, e sul cui sviluppo ci siamo buttati a capofitto la sera stessa. È stato un bel viaggio, ma è ora di appendere l'Excel del Fantacalcio al chiodo...
Ah, quasi dimenticavo, intercetto la domanda "nella descrizione del repo e anche nel frontend c'è un riferimento all'AI, non ci spieghi nulla?" Un Random Forest, punto. Solo marketing, tanto chi vuoi che sia arrivato a leggere fin qua. In realtà importare le API di un qualsiasi LLM è costless, ma suvvia, evitiamo di uccidere una mosca con un bazooka.
Buona asta a tutti!
Attenzione, fantallenatori! È importante precisare che il termine "Fantacalcio" utilizzato in questo README e nel progetto è un marchio registrato di Fantacalcio.it. La sua menzione qui è puramente a scopo esplicativo e descrittivo. Questo progetto non è in alcun modo affiliato, sponsorizzato o avallato dagli ideatori o detentori del marchio "Fantacalcio".
Questo progetto è distribuito sotto la licenza GNU General Public License v3.0 (GPLv3).
Che dire? Ho scelto la licenza GPLv3 non perché mi piaccia complicarvi la vita, ma perché sono un vero paladino della libertà! Se decidi di usare, modificare o (udite udite!) distribuire questo codice, sappi che sei caldamente obbligato a rilasciare anche il tuo progetto sotto la stessa licenza GPLv3. È il mio modo per assicurarmi che il codice rimanga libero come un uccellino (e non finisca rinchiuso in qualche gabbia proprietaria). In più, con la GPLv3, hai qualche superpotere extra contro troll di brevetti e ti assicuro che nessuno potrà "intrappolare" il tuo software in un qualsiasi cosa che non ti permetta di farci ciò che vuoi. Libertà, gente!