Closed nelsonmau closed 8 years ago
La soluzione è semplice: gestire bene i tag <category>
previsti dal formato RSS, sia a livello di <channel>
(es. comune, provincia, regione, tipologia di pa, latitudine e longitudine), che a livello di <item>
(es. post-terremoto), magari condividendo un set di domini (attributo domain) predefinito. Ma la valorizzazione di quei tag è a carico degli scraper...
falla! :dancer:
@jenkin costruisci un esempio ciao mondo per un feed RSS tipo, e poi per l'implementazione mi ci metto per il momento io?
Prendo come spunto il feed di Amatrice, eliminando i tag personalizzati di feedburner. L'ideale sarebbe sfruttare l'attributo domain del tag <category>
(vedi qui), ma non so bene come farlo al meglio... :)
<channel>
<title>AlboPOP Amatrice</title>
<link>https://script.google.com/macros/s/AKfycbwnSCtl7mPwzyjt1CyHhkmSmciwqOuBDz6A-1m78_Uu2ej--xam/exec</link>
<description>*non ufficiale* RSS feed dell'Albo Pretorio di Amatrice</description>
<language>it</language>
<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
<image><link>http://creativecommons.org/licenses/by/3.0/</link>
<url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<category domain="comune">Amatrice</category>
<category domain="provincia">Rieti</category>
<category domain="regione">Lazio</category>
<category domain="latitudine">42.629381</category>
<category domain="longitudine">13.288372</category>
<category domain="tipologia_pa">Comune</category>
<item>
<title>VINCOLO IDROGEOLOGICO. SIG. RAPONI SERGIO.</title>
<link>http://halleyweb.com/c057002/mc/mc_gridev_dettaglio.php?x=&interno=1&id_pubbl=5772</link>
<description>VINCOLO IDROGEOLOGICO. SIG. RAPONI SERGIO.</description>
<pubDate>Mon, 22 Aug 2016 10:00:00 +0000</pubDate>
<guid>http://halleyweb.com/c057002/mc/mc_gridev_dettaglio.php?x=&interno=1&id_pubbl=5772</guid>
<category domain="custom">Post-terremoto 24 agosto 2016</category>
</item>
</channel>
Hmm, c'è comunque da gestire opportunamente la possibilità di indicare valori multipli di location ed eventualmente aggiungere la variabile generica category: https://github.com/ondata/albopop-enhanced/blob/develop/feed/fromes.inc.php.
@jenkin ho fatto un piccolo avanzamento sulla parte di canale http://feeds.feedburner.com/AlbopopAmatrice
Per ora sto usando le API di OpenCage in modo da stare open, per estrarre provincia, regione e coppia di coordinate. Valori come LAZ
per la regione sono quelli esposti da OpenCage.
C'è da allineare i vari script, ma si fa. Inizierò dal fare un'anagrafica degli script.
@aborruso @jenkin che faccio mi fermo finché non abbiamo capito il metodo da tenere? Anzi magari continuo ma senza buttarli su feedburner tenendo traccia degli script google in un'altra colonna, così poi facciamo prima ad andarli a prendere?
@aborruso @jenkin Ora ho visto bene cosa volete fare. Io mi sono fermato prima di toccare feedburner perché non ho capito come aggiungere quei tag a posteriori (date un occhio al foglio). Ma volete modificare lo script di matteo? Se inseriamo altre categorie nel foglio meta colonna G e qua in qualche modo settiamo la categoria in questa parte:
function doGet() {
var ss = SpreadsheetApp.openById(ID_SPREADSHEET);
var metaSheet = ss.getSheetByName('meta');
var RSSFeedTitle = metaSheet.getRange('G1').getValue();
var RSSFeedURL = decodeURIComponent(metaSheet.getRange('G2').getValue().trim());
var RSSFeedDesc = metaSheet.getRange('G3').getValue();
var dataSheet = ss.getSheetByName('clean');
var rss=makeRss();
rss.setTitle(RSSFeedTitle);
rss.setLink(RSSFeedURL);
rss.setDescription(RSSFeedDesc);
rss.setLanguage('it');
rss.setAtomlink(RSSFeedURL);
for (var i=2; i < 1000; i++) {
var riga=dataSheet.getRange(i,1,1,3).getValues();
var myguid=riga[0][I_HREF];
var titolo=riga[0][I_TITLE];
var pDate=riga[0][I_PUBDATE];
//Logger.log('Riga ' + i + ' myguid ' + myguid);
if (myguid.length == 0) {
break;
}
//var pattern = /(\d{2})\/(\d{2})\/(\d{4})/;
//var pDateFix=pDate.replace(pattern,'$2/$1/$3')
var pDateFix=pDate;
var pubDateDate = new Date(pDateFix + " 12:00");
rss.addItem({title: titolo,
guid:myguid,
link: myguid,
description: titolo,
pubDate: pubDateDate
});
}
var rssStr=rss.toString();
//Logger.log(rssStr)
return ContentService.createTextOutput(rssStr).setMimeType(ContentService.MimeType.RSS);
}
caro @ebergam , ci sono da modificare gli script. Uno molto usato è quello di Matteo e per quelli della zona del sisma abbiamo usato questi.
Io ho fatto proprio come dici. Ho aggiunto nel foglio meta questi valori:
tipologia_pa > Comune comune > Amatrice provincia > RI regione > LAZ latitude > 42.6292367 longitude > 13.2891755
E modificato così lo script (che è ancora brutto e rozzo):
var comune = metaSheet.getRange('F5').getValue();
var comune_value = metaSheet.getRange('G5').getValue();
var provincia = metaSheet.getRange('F6').getValue();
var provincia_value = metaSheet.getRange('G6').getValue();
var regione = metaSheet.getRange('F7').getValue();
var regione_value = metaSheet.getRange('G7').getValue();
var latitudine = metaSheet.getRange('F8').getValue();
var latitudine_value = metaSheet.getRange('G8').getValue();
var longitudine = metaSheet.getRange('F9').getValue();
var longitudine_value = metaSheet.getRange('G9').getValue();
ch.addContent(createElement('category', tipologia_pa_value)
.setAttribute('domain',tipologia_pa)
);
ch.addContent(createElement('category', comune_value)
.setAttribute('domain',comune)
);
ch.addContent(createElement('category', provincia_value)
.setAttribute('domain',provincia)
);
ch.addContent(createElement('category', regione_value)
.setAttribute('domain',regione)
);
ch.addContent(createElement('category', latitudine_value)
.setAttribute('domain',latitudine)
);
ch.addContent(createElement('category', longitudine_value)
.setAttribute('domain',longitudine)
);
Qui trovi il foglio d'esempio che puoi copiare https://docs.google.com/spreadsheets/d/1Ywh38OU49rdBSZ_RgShaztgpvsPNbzzBXlj3EKqesCA/edit?usp=sharing
Al momento l'albo di Amatrice si sta svuotando
Grazie mille @aborruso, esattamente quello che mi serviva per proseguire! Come mai l'hanno svuotato secondo te? Io intanto sistemo col nuovo script quelli già fatti e aggiorno il tutto. Poi cerco altre liste di comuni terremotati per andare avanti. Cheers
@aborruso scusa, mi sento stupido, ma mi sono incagliato sulla formattazione della casella dove faccio l'import in lat e lng. Ho impostato plain text ma quando fa l'import la mangia come numero e sballa. Non riesco a vedere da te che non sono in edit. Come l'hai impostata?
@ebergam ho impostato il foglio all'americana, che in qualche modo è più "standard"
2016-09-07 15:29 GMT+02:00 Enrico Bergamini notifications@github.com:
Come mai l'hanno svuotato secondo te?
Non ne ho idea. Magari perché sono items scaduti (in albo dopo alcuni giorni, in dipendenza dal tipo di pubblicazione, l'elemento deve essere rimosso dalla pubblicazione). Il tempo passa, e probabilmente i meccanismi di rimozione dalla pubblicazione funzionano bene. Ma sono automatici, e non hanno bisogno di personale che ci lavori sopra da un postazione.
Mentre per inserire nuovi elementi ci deve essere il personale disponibile e una postazione di lavoro. E per ora, è dura :(
Cmq io farei una nuova tabella. Colonna 1 = url singolo albopop, da colonna 2 in poi tutte le classificazioni... una specie di anagrafica degli albi, senza complicarci la vita...
Credo che sia la soluzione più semplice, nonché la più duttile ed efficace. Non voglio che mi si dica grazie per questo eh :D sux @jenkin
@aborruso occhio, lo script che abbiamo usato ieri non funziona bene. Se vedi https://docs.google.com/spreadsheets/d/1UJJk1Kz-klJBvyu0EdPGJ036UAqqn4Ntc0INy-nMuE0/edit#gid=0 nella colonna 'controllato' ho messo messo i problemi. Generalmente inverte la data e non mette le categorie
@ebergam mi dai accesso in scrittura e mi scrivi qui l'URL di uno spreadsheet in cui ci sono i problemi di cui parli?
Grazie
Caro @ebergam ho fatto delle piccole modifiche nel foglio di Arquata del Tronto. Non ho cambiato nulla nello script, ma due sono stati gli elementi essenziali:
Tue, 06 Sep 2016 00:00:00 +0200
;Una volta fatto il geocoding, sfruttando opencage, rimuovi per favore il calcolo e appiattisci il testo. In questo modo non verranno fatte centinaia di chiamate a OpenCage. Che è free fino a un certo limite. Tanto il comune non si sposta :)
@aborruso fatto! Grazie mille di nuovo :) @nelsonmau dunque qui: https://docs.google.com/spreadsheets/d/1UJJk1Kz-klJBvyu0EdPGJ036UAqqn4Ntc0INy-nMuE0/edit#gid=0 c'è la tabella con quelli del terremoto fatti finora. L'importante è avere queste informazioni ordinate poi si possono aggiungere tutte le varie colonne per fare un'anagrafica più precisa
grazie @ebergam, riuscite con quel maraglio di @jenkin a mettere online una versione "solo-sisma" del nostro albopop enhanched?
Ok, direi che ci siamo, ma per mettere tutto in piedi devo fare delle modifiche alla configurazione di logstash e (temo) anche al plugin logstash-input-rss che avevo già modificato a suo tempo...
Scusate ragazzi, mi sono reso conto ora che c'è stato un equivoco... i tag <category>
vanno bene, ma devono stare dentro ogni <item>
! Lo so che sarebbero ripetuti tali e quali per tutti gli item, ma è fondamentale perché poi tutti i feed vengono aggregati in uno solo e i metadati associati ai singoli feed si perdono in quello aggregato. Rimangono invece quelli associati ai singoli item... @aborruso @ebergam
@jenkin ok. Ma sono completamente bollito? Nello schema che ci hai proposto qui non stanno dentro il channel?
A breve modifico lo script. Grazie
E me so' sbagliato... 👎
Intanto ho aggiunto al feed il supporto alle tag multiple (esempio per i comuni del terremoto)...
Ed ecco come verrebbe il motore di ricerca sui soli comuni colpiti dal terremoto (comuni identificati per nome come tag): http://dev.dataninja.it/AlboPOP-enhanced/ :)
Grande @jenkin. Quindi è definitivo o io e @aborruso dobbiamo modificare lo script?
@ebergam è necessario che lo scraper produca un rss con tutte le informazioni utili in modo strutturato (es. in forma di category), io sono arrivato a quel risultato con un workaround (editando a mano i nomi dei feed dell'aggregatore). Ergo c'è da mettere i tag category che avete già inserito all'interno di ogni item, non solo a livello di channel... :)
Ecco qua, ho scritto una bozza di specifiche: https://github.com/jenkin/albo-pop/blob/albopop-specs/specs.md... :)
Caro @jenkin che bel lavoro!
Ecco una prima versione: http://feeds.feedburner.com/AmatriceCimarellix Manca ancora qualcosetta ma mi sembra che ci siamo.
Per @ebergam: qui c'è il foglio (e il codice) di cui puoi fare copia https://docs.google.com/spreadsheets/d/10FPEBTWhRWcaEu6OzlVXY3lxUnZXMuHoE6-_D_aQG7k/edit?usp=sharing
Che piacere fare questa cosa
@jenkin ottimo, grazie! @aborruso nel weekend ci lavoro e vedo di aggiornare tutti quelli del Centro Italia. (ho dato uno sguardo veloce al foglio e non funziona però, occhio) :)
@ebergam funziona, solo che nel frattempo è cambiato l'albo di Amatrice.
Usa questo https://docs.google.com/spreadsheets/d/1JbSBnZoqS1rrW1d3JCGe6NMkV2A-wNkhkuVVYU2bd4A/edit?usp=sharing
@ebergam questa la segnalazione ricevuta per Amatrice: http://albopop.it/comune/amatrice/#comment-2906270429
La aggiungo, perché è una cosa bella
Aggiornate le specifiche del feed! :)
@jenkin nell'output di esempio, per l'item, c'è due volte il type con i due significati previsti
Il primo è sbagliato, lo tolgo! :)
Intanto funziona! :) In TTRSS vengono riconosciute correttamente le categorie del channel e vengono associate ai singoli item! :)
Entro domani sera aggiorno lo script. Scusami @ebergam se non riesco a fare prima.
@jenkin tutto questo mi piace molto
@aborruso nessun problema, io ho tempo tutto il fine settimana, quando hai lo script mi dici da dove replicarlo su tutti gli sheets, senza fretta, buon weekend ;)
@aborruso che si dice? :)
@aborruso andy forse ho perso un passaggio io, devo adattare gli altri da questo che è già pronto? https://docs.google.com/spreadsheets/d/10FPEBTWhRWcaEu6OzlVXY3lxUnZXMuHoE6-_D_aQG7k/edit#gid=375343210 Se invece non hai lo script so che sei impegnatissimo nessuna fretta, solo che tra tutti gli sheets mi son perso :)
caro @ebergam riemergo. Ecco il feed di Amatrice: http://feeds.feedburner.com/AlbopopAmatrice
Qui lo sheet con lo script da cui partire.
@jenkin ti scrivo da un'altra parte su una faccenda di specifice
@aborruso e @ebergam finora io ho questi feed legati al terremoto...
Quando gli scraper sono tutti aggiornati alle nuove specifiche, mi avvertite? Così sistemo la strutturazione dei dati e siamo a posto... :)
@jenkin sei nei nostri pensieri sempre e sarai il primo a saperlo :)
@aborruso @ebergam mi pare ci sia un piccolo errore, le categorie a livello di channel hanno nel domain l'url alle specifiche a livello di item...
@jenkin colpa mia e del balletto item/channel :)
Ho aggiornato script e al prossimo aggiornamento la struttura sarà corretta.
@aborruso Di tutti o devo fare un giro di script anch'io?
Il mercoledì 12 ottobre 2016, Andrea Borruso notifications@github.com ha scritto:
@jenkin https://github.com/jenkin colpa mia e del balletto item/channel :)
Ho aggiornato script e al prossimo aggiornamento la struttura sarà corretta.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ondata/albopop-enhanced/issues/7#issuecomment-253350138, or mute the thread https://github.com/notifications/unsubscribe-auth/ANKE2py7r9F-zAxoAEtWwSrT9NNGh2Hkks5qzVX6gaJpZM4J1ks3 .
Sorry for typos sent by mobile
Ho poi aggiornato il tutto, ma devo ricontrollare i risultati, mi pare che norcia rompa troppo le scatole... :)
On 13 October 2016 at 12:59, Alessio Cimarelli notifications@github.com wrote:
Ho poi aggiornato il tutto, ma devo ricontrollare i risultati, mi pare che norcia rompa troppo le scatole... :)
Ale grazie :)
Ho appena visto Norcia http://feeds.feedburner.com/AlbopopNorcia?format=xml e mi sembra buono. Cosa ha che non va?
Questa issue la chiuderei e ora andrei di fino con segnalazioni più specifiche.
Andrea Borruso website: http://blog.spaziogis.it 38° 7' 48" N, 13° 21' 9" E, EPSG:4326
"cercare e saper riconoscere chi e cosa, in mezzo all’inferno, non è inferno, e farlo durare, e dargli spazio"
Italo Calvino
Sta emergendo una necessità di effettuare una classificazione degli albi. Faccio alcuni esempio di casi d'uso, che possano favorire la discussione e il ragionamento:
Come faccio a selezionare solo: