Pagina 1 di 2

scraping dati e url aggiuntivi

Inviato: 19/05/2020, 14:08
da Gothrek
ciao @motoschifo
mi ricordo quando ne parlammo che diversi software di scraping hanno delle api dedicate, io mi appoggio ancora su quelle "ufficiali" che mi avevi dato.

Volevo capire come recuperare tutta una serie di info che nel json "base" non ho, faccio alcuni esempi, ma in generale vale per tutte le info:
la prima cosa (sicurametne colpa mia), non ho capito i numeri tra parentesi nel titolo cosa rappresentano. NOn nascondo che mi creano non pochi prob, perchè quando faccio scraping di una rom cerco di capire se è già presente nel mio db locale e laddove non matcha md5 prova a cercare se esiste un titolo uguale (che chiaramente non trova) e di fatto crea un nuovo gioco nel db. La morale era capire se ci fosse esposto anche il titolo "pulito".
Poi mi mancano tante info nel json, dall''url della scritta (ultile per fare la composizione dello screenshot finale), cosi come tante immagini/video in cui non c'è esposto l'url.
Poi mancano tante info che non saprei come recuperare.

Non so se hai delle api che lo fanno già e che posso usare oppure no.

Grazie come sempre.

Re: scraping dati e url aggiuntivi

Inviato: 19/05/2020, 20:56
da motoschifo
Le info che trovi sono quelle pubblicate per tutti, a parte altre pagine dedicate (ma poco utili se non ai diretti interessati). Direi che se non trovi qualcosa occorre inserirla/gestirla.

Tra le cose che hai elencato il titolo pulito di un gioco l'ho rimosso tempo fa perchè lo facevo io manualmente, quindi non avevo il tempo di seguirlo con attenzione.
L'url della scritta si può aggiungere ma ho evitato di metterle tutte per non intasare il server.
Non vorrei metterci troppo perchè già le info gestite servono al 99% per il recupero di un paio di immagini e della history.

Devi però dirmi quali cose non trovi e quali vorresti... poi sui tempi non saprei dirti ancora, sono mesi che non faccio pause se non qualche domenica ogni tanto e ferie non ne vedo da un anno o più... ed oggi è uscito pure un altro Mame <-wacko->

Re: scraping dati e url aggiuntivi

Inviato: 20/05/2020, 13:46
da Gothrek
motoschifo ha scritto: 19/05/2020, 20:56 Le info che trovi sono quelle pubblicate per tutti, a parte altre pagine dedicate (ma poco utili se non ai diretti interessati). Direi che se non trovi qualcosa occorre inserirla/gestirla.

Tra le cose che hai elencato il titolo pulito di un gioco l'ho rimosso tempo fa perchè lo facevo io manualmente, quindi non avevo il tempo di seguirlo con attenzione.
L'url della scritta si può aggiungere ma ho evitato di metterle tutte per non intasare il server.
Non vorrei metterci troppo perchè già le info gestite servono al 99% per il recupero di un paio di immagini e della history.

Devi però dirmi quali cose non trovi e quali vorresti... poi sui tempi non saprei dirti ancora, sono mesi che non faccio pause se non qualche domenica ogni tanto e ferie non ne vedo da un anno o più... ed oggi è uscito pure un altro Mame <-wacko->
ciao, no ferie, troppo lavoro? devi far crescere un discepolo hahahah
se la scritta non la stai piu' gestendo inutile metterla concordo

ti elenco i dati di cui avrei bisogno, per i tempi vedi tu

Re: scraping dati e url aggiuntivi

Inviato: 20/05/2020, 15:21
da motoschifo
Gothrek ha scritto: 20/05/2020, 13:46 ciao, no ferie, troppo lavoro? devi far crescere un discepolo hahahah
In realtà non sarebbe male come idea... tempo fa volevo rendere il sito open source su github ma poi il tempo è sempre pochissimo...

Re: scraping dati e url aggiuntivi

Inviato: 21/05/2020, 8:15
da Gothrek
motoschifo ha scritto: 20/05/2020, 15:21
Gothrek ha scritto: 20/05/2020, 13:46 ciao, no ferie, troppo lavoro? devi far crescere un discepolo hahahah
In realtà non sarebbe male come idea... tempo fa volevo rendere il sito open source su github ma poi il tempo è sempre pochissimo...
fai un sondaggio su arcadeitalia prima :D

a questo punto io partirei con la richiesta più semplice (se mi confermi che la scritta non è piu' manutenuta).
la più necessaria per me è avere il titolo "ufficiale" in un altro campo nel risultato del json (original_title?)

questa esigenza come ti dicevo è molto importante per me, perchè quando faccio lo scraping di una rom, laddove non la trova, prova a cercarla per titolo.

Re: scraping dati e url aggiuntivi

Inviato: 21/05/2020, 22:29
da motoschifo
Il campo l'ho rimosso circa 6 mesi fa, era un titolo semplificato ma come scritto inserito manualmente per avere qualcosa di affidabile.
Ma tu mi parli di "original title", mi fai un esempio?
E come dovrei ottenerlo visto che io ho solo il nome del gioco che mi da il mame?

Con "scritta" io intendo l'immagine del logo del gioco, che è ancora mantenuto ovviamente, ma ce ne sono poche rispetto alle normali immagini in quanto non gestito da AntoPisa.

Re: scraping dati e url aggiuntivi

Inviato: 21/05/2020, 22:50
da Gothrek
motoschifo ha scritto: 21/05/2020, 22:29 Il campo l'ho rimosso circa 6 mesi fa, era un titolo semplificato ma come scritto inserito manualmente per avere qualcosa di affidabile.
Ma tu mi parli di "original title", mi fai un esempio?
E come dovrei ottenerlo visto che io ho solo il nome del gioco che mi da il mame?

Con "scritta" io intendo l'immagine del logo del gioco, che è ancora mantenuto ovviamente, ma ce ne sono poche rispetto alle normali immagini in quanto non gestito da AntoPisa.
dunque per titolo originale intendo per esempio:
4D-Warriors rispetto a 4-D Warriors (315-5162)

in teoria potrebbe essere banale dire elimina tutto quello da prima della paraentesi aperta, ma in generale non so se questo varrebbe per tutti ora e per sempre.
non so se questa info tu la hai.

Per la scritta si ho capito, effettivametne se non è manutenuta concordo che sia meglio non mostrarla.

Re: scraping dati e url aggiuntivi

Inviato: 21/05/2020, 23:23
da motoschifo
Il nome semplificato si può gestire, ma è un dato che non esiste ne sul Mame ne in nessun altro sito.
Io lo avevo aggiunto solo perchè serviva a me per avere la lista del mio front-end di casa, integrato con il sito (all'epoca locale) e quindi ero io che mettevo a posto i nomi manualmente.

Farlo come attributo della scheda gioco vorrebbe dire autorizzare quei nomi e controllarli in caso di cambiamento.
La regola che avevo usato era molto complessa perchè la parentesi da sola non basta, ma si può trovare qualcosa insieme per capire come fare.

Se ha senso lo aggiungo comunque, alla fine forse potrebbe tornare utile anche ad altri.

Re: scraping dati e url aggiuntivi

Inviato: 22/05/2020, 0:00
da motoschifo
Intanto ho ripristinato la vecchia gestione, che era già bella completa a dire il vero:
- nuovo campo in tabella
- nuova info nella scheda mame
- gestione di proposta da web, con accettazione/rifiuto o modifica da parte mia ed invio notifica via mail in automatico (se indicata)
- gestione della ricerca anche per quella parte di titolo
- gestione se valorizzata oppure no, in quel caso viene preso di default il titolo normale

Ora mancano due pezzi:
- proposta automatica con regole per scremare il titolo (numeri, parentesi, ecc)
- verifica all'import per poter rivalidare quel campo

Re: scraping dati e url aggiuntivi

Inviato: 22/05/2020, 0:08
da Gothrek
ottimo,
la mia idea, vediamo se ti piace è incrociarlo col le info cpu, forse ne sai più tu di come compongono il nome ma prendendo esempio dal 4d-warriors trovo:
CPU:
Sega 315-5162, Zilog Z80

anche io volevo evitare di cercare la parentesi e tagliare il nome che potrebbe portare a cassare caratteri "veri"

Re: scraping dati e url aggiuntivi

Inviato: 22/05/2020, 20:38
da motoschifo
Secondo me è troppo pericoloso togliere pezzi presenti nei chip, e forse a volte può dimostrarsi inutile. Pensa al caso di doppia parentesi, parentesi con virgola, ecc.
Forse la via più rapida è quella di farlo manualmente scremando prima una serie di titoli.
Si stabilisce la regola, si capisce se può andare bene, e si applica.
Come scritto sopra la validazione è completamente manuale (per scelta) in quanto solo una persona può capire se è giusto o no un nome.
Magari può andar bene togliere tutto quanto dentro alle parentesi, poi eventualmente si aggiunge manualmente.

Re: scraping dati e url aggiuntivi

Inviato: 23/05/2020, 18:19
da Gothrek
motoschifo ha scritto: 22/05/2020, 20:38 Secondo me è troppo pericoloso togliere pezzi presenti nei chip, e forse a volte può dimostrarsi inutile. Pensa al caso di doppia parentesi, parentesi con virgola, ecc.
Forse la via più rapida è quella di farlo manualmente scremando prima una serie di titoli.
Si stabilisce la regola, si capisce se può andare bene, e si applica.
Come scritto sopra la validazione è completamente manuale (per scelta) in quanto solo una persona può capire se è giusto o no un nome.
Magari può andar bene togliere tutto quanto dentro alle parentesi, poi eventualmente si aggiunge manualmente.
provo a titar giu l'elenco dalle mie circa 3000 rom e a togliere parentesi e contenuto e vediamo che viene fuori verificando se restano parentesi o altro- certo strano che non resti il nome del titolo originale da qualche parte

Re: scraping dati e url aggiuntivi

Inviato: 23/05/2020, 18:32
da motoschifo
Non esiste il nome originale, come dici, ogni gioco è semplicemente diverso dagli altri e caratterizzato da una miriade di varianti.
In effetti credo sia una mancanza dell'xml in quanto poi in giro si fa sempre riferimento al nome comune... mah.

Re: scraping dati e url aggiuntivi

Inviato: 25/05/2020, 14:00
da Gothrek
si il problema principale è riuscire dal nome a capire se è già presente nel tuo archivio locale, chiaro che laddove si aggiungono caratteri numeri e quant'altro secondo la logica di creare le info sarebbe bello avere almeno il titolo "generico".

l'idea in generale è avere un gioco, n titoli, n rom. Cosi cercando tra i propri media per gioco potresti avere sott'occhio un pò tutto quello che esiste (almeno localmente) di relazionato.

Re: scraping dati e url aggiuntivi

Inviato: 21/06/2020, 15:51
da motoschifo
Ho completato le modifiche, aggiungendo il campo SHORT_TITLE in output nelle pagine di scraping.
Quel valore viene aggiornato manualmente da me ad ogni import.
Normalmente basta togliere i dati tra parentesi ma a volte ci sono casi particolari di nomi scritti male (contenenti errori tipo parentesi non chiusa o non aperta).

Re: scraping dati e url aggiuntivi

Inviato: 21/06/2020, 17:01
da Gothrek
motoschifo ha scritto: 21/06/2020, 15:51 Ho completato le modifiche, aggiungendo il campo SHORT_TITLE in output nelle pagine di scraping.
Quel valore viene aggiornato manualmente da me ad ogni import.
Normalmente basta togliere i dati tra parentesi ma a volte ci sono casi particolari di nomi scritti male (contenenti errori tipo parentesi non chiusa o non aperta).
grazie @motoschifo , lo implemento subito.
In via temporanea anche io avevo ripiegato sull'eliminazione della parentesi, anche se poi mi sono accorto che a parte qualche errore in tanti casi si utilizzano i due punti (:) invece del trattino meno (-) e quindi non matchava cmq il titolo.

Vediamo come va con questa implementazione.

Grazie come sempre.

devo riuscire a migliorare la funzionalità di matching del titolo, ad oggi son cosi:
Annotazione 2020-06-21 170421.jpg
se in alcuni casi lavorando sul titolo son riuscito a raggrupparli vedi 1941 in altri manca ancora qualcosa (1942, 1943, 1944)

Re: scraping dati e url aggiuntivi

Inviato: 21/06/2020, 18:19
da motoschifo
Puoi dare in pasto il tuo nome ad una funzione per togliere eventuali simboli (due punti, trattino, uguale, spazi, ecc) e fare il match solo con le lettere. Nel 99% dei casi dovrebbe bastare quello.
Come regola standard ho rimosso parentesi tonde e quadre (queste ultime manualmente) ma mantengo quasi tutti simboli e lettere.

Considera che posso esporre una nuova funzione di ricerca che magari utilizza questo nuovo campo per avere i romset corrispondenti.

Questa è la parte php interessata, ovviamente a mano posso intervenire sul titolo ma correggo solo quando vedo anomalie (es. lettere alfa/beta/parentesi non chiuse, ecc):

Codice: Seleziona tutto

$lower_case = "abcdefghijklmnopqrstuvwxyzàèìòùáéíóúäëïöü";
$upper_case = strtoupper($lower_case);
$numbers = "0123456789";
$extra = "!?@#&*-_ '/.,:;%+$\"`µ";
$valid_chars = $lower_case.$upper_case.$numbers.$extra;

$game_short_title = $game_description;
// tolgo le parentesi, anche annidate
$game_short_title = preg_replace("/\(([^()]*+|(?R))*\)/","", $game_short_title);
// tolgo pezzi particolari per smaltire il lavoro manuale
$game_short_title = str_replace(
	array("[BET]", "[Dutch]", "[German]", "[TTL]"), 
	"", 
	$game_short_title
);
$game_short_title = trim($game_short_title);
if (!str_contains_only($game_short_title, $valid_chars)) {
	$log->debug("...{$game_name} - {$game_description}    *** FAILED ***");
	continue;
}

function str_contains_only($name, $chars) {
	for ($i=0; isset($name[$i]); $i++) {
		if (strpos($chars, $name[$i])===false) {
			global $log;
			$log->debug("...INVALID CHAR FOUND '{$name[$i]}' in '{$name}' (valid chars: >{$chars}<)");
			return false;
		}
	}
	return true;
}

Re: scraping dati e url aggiuntivi

Inviato: 21/06/2020, 21:46
da Gothrek
gran belkla idea quella di lasciare solo le lettere e depurarla per il match, l'idea per entrambi credo sia fare meno lavoro manuale possibile cosi da automattizzare quanto piu' possibile.

voglio provare a dargli in pasto domani mattina un 10K di rom, per vedere quanti casi "fail" ho.

Re: scraping dati e url aggiuntivi

Inviato: 22/06/2020, 9:17
da Gothrek
La tua idea dei caratteri mi piace, e sicuramente migliora il matching.

Nel caso di 1944 riuscirebbe ad accorparli, sto cercando una soluzione per 1943 dove nache con questo sistema i giochi sarebbero 2.
Annotazione 2020-06-22 091408.jpg

Re: scraping dati e url aggiuntivi

Inviato: 27/06/2020, 16:05
da motoschifo
Aggiornato adesso al Mame 0.222: 311 titoli da inserire, di cui solo 3 manualmente e tutti gli altri in automatico.