Wikinotizie:Bar/Torniamo ad essere un portale multifunzionale

Da Wikinotizie, le notizie a contenuto aperto


Torniamo ad essere un portale multifunzionale

Aggiornando la Pagina principale/Lo-Fi ho notato che prima fornivamo meteo, prezzi benzina, ascolti e programmi TV, estrazioni del Lotto ed avevamo una vetrina. Chiedo l'aiuto di [@ Vituzzu] e [@ Tooby] per poter usare un bot per aggiornare automaticamente queste cose (non la vetrina, naturalmente). Chiedo anche l'aiuto di tutta la comunità, naturalmente, che deve approvare e deve anche dare suggerimenti :). Che ne dite?--Ferdi2005 Posta 18:59, 24 lug 2017 (CEST)[rispondi]

Anche di [@ Pietrodn]--Ferdi2005 Posta 19:00, 24 lug 2017 (CEST)[rispondi]

Ciao, scusa se non ho risposto prima. Mi sono reso conto che i miei vecchi script (2009...) non sono disponibili da nessuna parte, perché il repo SVN del Toolserver è stato tirato giù. Li ho caricati su questo repository su GitHub. Sono molto vecchi e quasi sicuramente non funzioneranno con la versione corrente di pywikipedia. Inoltre, siccome facevano scraping dalle pagine web delle sorgenti dei dati, erano pesantemente dipendenti dal formato di tali pagine... quindi la probabilità che qualcosa funzioni ancora è prossima allo zero. Però se qualcuno vuole guardarci dentro, o prendere ispirazione, è il benvenuto. :) Per fare le cose per bene, bisogna seguire questi passi:

  1. scegliere delle fonti per i dati che offrano delle API decenti, invece che fare scraping da pagine HTML;
  2. scrivere del codice modulare e fatto bene, compatibile con l'ultima versione di pywikipedia;
  3. mettere il codice sotto version control, e pubblicarlo;
  4. creare un progetto su Wikimedia Tool Labs con più di un developer (in modo che non resti abbandonato);
  5. impostare l'esecuzione automatica del bot con gli strumenti automatici disponibili su Tool Labs.

Se mi dici esattamente i task che vanno fatti (cosa aggiornare, dove, da che fonte, ogni quanto tempo), posso contribuire nei limiti del mio tempo libero. Ho anche un account su Wikimedia Tool Labs, che è l'infrastruttura ideale su cui far girare queste cose. Inoltre dal 2009 ad oggi le mie competenze nella programmazione Python sono decisamente aumentate. :) --Pietrodn · blaterami 21:18, 6 ago 2017 (CEST)[rispondi]

[@ Pietrodn] Scusa se ti rispondo in ritardo. Le cose che dovrebbe fare sarebbero: controllo dei prezzi della benzina italo-svizzeri, del meteo nelle principali città italiane e svizzere, delle estrazioni del superenalotto, del lotto e della lotteria svizzera e dei palinsesti televisivi dei principali canali italiani (quelli su teleguida.tv) e dell'RSI. Purtroppo nessuno dei servizi che ho trovato offre delle API. Come si può fare?--Ferdi2005 Posta 09:46, 9 ago 2017 (CEST)[rispondi]
[@ Ferdi2005] Allora, usare una API non è un requisito tecnico stringente: si può benissimo fare scraping da una pagina HTML. Il vantaggio è che le API offrono un'interfaccia più stabile per gli sviluppatori e quindi richiederanno meno manutenzione dei bot in futuro. Per il meteo ci sono sicuramente delle API, di svariati servizi, per cui non è un problema. Per i palinsesti TV c'è uno standard in formato XML (XMLTV), bisogna trovare un provider che distribuisca questi file, però. Per la benzina finora non ho trovato nulla. Un lavoro che si può fare fin da ora è creare i template per queste pagine generate, in modo che il testo sia interamente gestito e modificabile con il template, e il bot si debba solo occupare di inserire i dati che variano giorno per giorno. Si può fare? --Pietrodn · blaterami 10:09, 9 ago 2017 (CEST)[rispondi]
[@ Pietrodn] Certo che si può fare. Come andrebbero strutturati i template?--Ferdi2005 Posta 10:25, 9 ago 2017 (CEST)[rispondi]
Bisogna prima vedere quali dati ci sono. Idealmente il template dovrebbe creare tutta la grafica e il testo di accompagnamento, ed accettare come parametri i dati (nel caso della benzina, i prezzi, ad esempio). Intanto per i carburanti ho trovato gli open data del MISE, in formato CSV: [1] [2]. --Pietrodn · blaterami 11:02, 9 ago 2017 (CEST)[rispondi]