Vai al contenuto principale

Rappresentazione e formattazione dei risultati

Formati disponibili per il salvataggio dei risultati

Per la formattazione dei risultati in A-Parser viene utilizzato il motore di modelli Template Toolkit, che permette di salvare facilmente i risultati dello scraping in vari formati:

  • In file di testo come elenco: un risultato per riga, tramite separatore, in formato arbitrario
  • In file CSV con possibilità di successiva importazione in Excel, Google Docs, ecc.
  • In XML, JSON e altri formati di archiviazione dati
  • In HTML generando pagine "al volo"
  • In formato dump SQL per l'importazione diretta nel database o scrivendo direttamente nel database SQLite
  • In formato binario per il salvataggio di immagini (jpg, png, gif, ...), documenti (pdf, docx, ...), file eseguibili e archivi (exe, dmg, zip, ...) e qualsiasi altro tipo di dati

Modifica del formato del risultato

Result format (Formato del risultato) - permette di formattare i risultati nell'aspetto desiderato utilizzando i modelli, si applica a ogni combinazione query-risultati.

Formati dei risultati
  • Il formato generale del risultato si imposta nel campo Result format
  • Il formato del risultato per ogni scraper può essere impostato separatamente nelle impostazioni dello scraper in Result format

A-Parser supporta il lavoro con più scraper in un unico task; nel formato generale dei risultati è necessario indicare da quale scraper visualizzare il risultato:

  • $p1 - risultati dal primo scraper (SE::GoogleSE::Google nello screenshot), $p2 - risultati dal secondo scraper (SE::BingSE::Bing nello screenshot)
  • Il numero d'ordine dello scraper è visualizzato a sinistra del campo di selezione dello scraper
  • $p1.preset e $p2.preset implicano che è necessario prendere il valore del formato del risultato dalle impostazioni dei rispettivi scraper
  • In questo esempio $p1.preset può essere sostituito con $p1.serp.format('$link\n') che avrà lo stesso effetto, mentre il formato del risultato dalle impostazioni non verrà più utilizzato

Il Result format (Formato del risultato) può essere indicato in un comodo editor multilinea cliccando sull'icona corrispondente nel campo di modifica:

Campo di modifica del formato del risultato

Nel formato generale dei risultati sono disponibili le seguenti variabili:

  • $query - query dopo la formattazione
  • $query.* - tutte le variabili relative alla query, descritte nell'articolo Modelli nelle query
  • $p1, $p2, ... - variabili per l'accesso ai risultati dello scraping per ogni scraper separatamente (Visualizzazione dei possibili risultati per ogni scraper)
  • $p1.query, $p2.query, ... - query dopo la formattazione tenendo conto del formato della query indicato nelle impostazioni di ogni scraper

Testo iniziale e finale

Per ogni file dei risultati viene indicato un Testo iniziale/finale separato:

  • Per la creazione dell'intestazione del file CSV
  • Per i tag iniziali e finali del file XML
  • Per l'header, l'intestazione e il footer dei file HTML
  • Per qualsiasi altra variante di applicazione

Per attivare questa funzionalità è necessario cliccare sul pulsante More options (Più opzioni) nella parte inferiore dell'Editor dei task

Campi per il testo iniziale e finale

Nel testo iniziale e finale è supportato l'uso del motore di modelli Template Toolkit, variabili disponibili:

  • $query - query dopo la formattazione
  • $query.* - tutte le variabili relative alla query, descritte nell'articolo Modelli nelle query
nota

Importante! Queste variabili sono disponibili solo quando si salva ogni query in un file separato o quando si utilizzano queste stesse variabili nel Formato del nome del file del risultato.

Formato del nome del file dei risultati

A-Parser permette di utilizzare i modelli anche nei nomi dei file risultanti, il che consente di creare automaticamente file e cartelle in base alla data corrente, al numero d'ordine della query, alla query stessa e in qualsiasi altro formato.

Campo Nome file

Nel campo File name (Nome file) sono supportate le seguenti variabili:

  • Tutte le variabili disponibili per il Formato generale del risultato
  • $queriesfile - percorso e nome del file con le query; se le query sono indicate tramite il modulo, conterrà queries_from_text.txt
  • $datefile - oggetto del plugin date del motore di modelli Template Toolkit, configurato per il formato data %b-%d_%H-%M-%S; durante la formattazione restituisce l'ora e la data correnti sotto forma di May-08_20-08-38, il formato può essere modificato nelle Impostazioni aggiuntive

Per impostazione predefinita, il nome del file viene creato in base alla data e all'ora al momento dell'avvio del task

Esempio complesso

reports/$queriesfile/${query}.txt
  • Verrà creata la cartella reports
  • Verrà creata una sottocartella con il nome del file delle query
  • Nella sottocartella verranno creati tanti file quante sono le query utilizzate nel task; come nome del file verrà utilizzata la query stessa con l'estensione .txt
suggerimento

La variabile $query è scritta nel formato ${query} per prevenire l'interpolazione dell'estensione .txt come parte della variabile, maggiori dettagli nella documentazione del motore di modelli Template Toolkit

⏩ Video. Denominazione dei file dei risultati

In questo video presenteremo alcuni esempi di denominazione del file del risultato:

  1. Numerazione del file del risultato in base alle query.
  2. Numerazione del file del risultato + parte del nome della query.
  3. Denominazione del file del risultato in base alla query, se la query è un link.

Visualizzazione dei risultati disponibili

Ogni scraper ha il suo set di risultati; è possibile visualizzare l'elenco dei risultati disponibili passando il puntatore sullo scraper: nel suggerimento a comparsa verrà visualizzato l'elenco dei risultati semplici e degli array, con l'elenco degli elementi nidificati:

Elenco dei risultati disponibili nel suggerimento a comparsa

In giallo sono contrassegnati i risultati comuni a tutti gli scraper:

  • $query - query passata allo scraper dopo la formattazione
  • $query.orig - query originale (così come appariva nel file o nel campo di inserimento query)
  • $query.first - prima query quando si utilizzano le opzioni di scraping nidificato (Parse all results o Parse to level)
  • $info.success - informazioni sul successo dello scraping di questa query
  • $info.retries - numero di tentativi utilizzati per questa query
  • $info.stats - statistiche di funzionamento dello scraper per questa query
  • $pages.$i.data - array con le risposte non elaborate dal server per la possibilità di estrarre autonomamente informazioni aggiuntive

In verde sono contrassegnati i risultati disponibili solo per lo scraper SE::BingSE::Bing:

  • $totalcount - numero di risultati della ricerca
  • $ads con gli elementi $link, $anchor, $visiblelink, $snippet, $position e $page - array con l'elenco degli annunci
  • $related.$i.key - array con l'elenco delle parole chiave correlate
  • $serp con gli elementi $link, $anchor, $snippet, $cache - array con i risultati principali del motore di ricerca
nota

Si noti che per gli array viene indicata esplicitamente la variabile $i, il che significa che ci sono più elementi e che è possibile accedervi tramite indice (numero di posizione) o scorrere ogni elemento in un ciclo.

suggerimento

Il risultato $pages.$i.data verrà automaticamente modificato in $data per quegli scraper che non "visitano le pagine" nell'ambito di una singola richiesta. Per esempio come DeepL::TranslatorDeepL::Translator.

Rappresentazione dei risultati

A-Parser è stato creato per lo scraping di informazioni di ogni tipo; per questo sono stati introdotti 2 tipi di risultati:

  • Risultati semplici (Flat)
  • Array di risultati (Array)

Consideriamo ogni tipo usando come esempio lo scraper SE::GoogleSE::Google, screenshot dei risultati:

Screenshot dei risultati di Google

Risultati semplici

Simple results (Risultati semplici) - quando a una query corrisponde un solo risultato, esempi:

  • Numero di risultati per query ($totalcount)
  • Se la query è un errore di battitura ($misspell, non presente nello screenshot)

Altri esempi:

  • Valore del testo tradotto ($translated) nello scraper DeepL::TranslatorDeepL::Translator
  • Numero di domini referenti ($domains), valore di trust ($trustflow), backlink ($backlinks) ecc. nello scraper Rank::MajesticSEORank::MajesticSEO

I risultati singoli vengono salvati in variabili ordinarie (prefisso $ + nome in caratteri latini)

Array di risultati

Array di risultati - quando a una query corrisponde un elenco di risultati, ogni elemento dell'elenco a sua volta può contenere diversi elementi nidificati. Analizziamo l'esempio dei risultati di Google: sono rappresentati nello scraper dall'array $serp; per chiarezza utilizzeremo una tabella, scrivendo i primi 5 risultati:

Link ($link)Ancora ($anchor)Snippet ($snippet)
http://www.speedtest.net/Speedtest.net by Ookla - The Global Broadband Speed TestTest your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla.
http://en.wikipedia.org/wiki/Test_cricketTest cricket - Wikipedia, the free encyclopediaTest cricket is the longest form of the sport of cricket. Test matches are played between national representative teams with "Test status", as determined by the ...
http://www.speakeasy.net/speedtest/Speakeasy Speed TestSaturday 03-May 2014, 11:04:29 AM Your IP: The Speakeasy Speed Test requires Flash v7 or higher. Please update your browser. See Pricing Or Call Today
http://www.humanmetrics.com/cgi-win/jtypes2.aspPersonality test based on C. Jung and I. Briggs Myers type theoryHumanmetrics Jung Typology Test™ instrument uses methodology, questionnaire, scoring and software that are proprietary to Humanmetrics, and shall not be ...
http://test-ipv6.com/Test your IPv6.This will test your browser and connection for IPv6 readiness, as well as show you your current IPV4 and IPv6 address. ... Test your IPv6 connectivity. JavaScript ...

Ogni posizione dei risultati viene scritta in un array con 3 elementi nidificati - link ($link), ancora ($anchor), snippet ($snippet)

Un altro esempio - l'elenco delle parole chiave correlate, che viene salvato nell'array $related:

Parola chiave ($key)
test wwe
depression test
test my speed
wonderlic test
test personality
act test
jiggle test
bipolar test

Come si può vedere, in questo array c'è un solo elemento nidificato - parola chiave ($key)

La numerazione degli elementi degli array inizia da 0, esempio di accesso ai singoli elementi dell'array:

  • $serp.0.link - primo link dai risultati
  • $serp.3.anchor - quarta ancora dai risultati
  • $related.0.key - prima parola chiave correlata

Più avanti verrà descritta in dettaglio la formattazione dei risultati semplici e degli array

Principi di formattazione

Dopo che lo scraper ha raccolto i dati in risultati semplici e array, è necessario visualizzarli (salvarli in un file) nel formato desiderato. Per comodità e funzionalità, A-Parser utilizza il motore di template Template Toolkit. Esaminiamo le costruzioni usate frequentemente; a tale scopo utilizzeremo lo strumento Test dei modelli. Selezioniamo un progetto per lo scraper SE::GoogleSE::Google:

Test dei modelli

Nello screenshot sono presentati 3 campi:

  • JSON - rappresentazione interna dei dati nello scraper
  • Template - modello secondo il quale avviene la formattazione del risultato
  • Result - dati direttamente trasformati secondo il modello indicato; il risultato verrà scritto nel file esattamente in questa forma

Cambiando il modello possiamo cambiare l'aspetto del risultato, consideriamo il seguente modello:

Esempio

Testo nel campo Template (Modello):

Rapporto per la query: $query    
Concorrenza: $totalcount
Elenco di link, ancore e snippet:
$serp.format('$link $anchor\n$snippet\n\n')

Evidenziamo le regole principali:

  • Il testo normale viene visualizzato nel risultato così com'è, senza modifiche
  • Per visualizzare i risultati semplici è necessario inserire nel punto desiderato la variabile contenente il risultato richiesto con il prefisso $
  • Per la formattazione degli array viene utilizzato il metodo .format, di cui parleremo tra poco
  • \n è responsabile dell'andata a capo

Formattazione degli array

Analizziamo la costruzione:

$serp.format('$link $anchor\n$snippet\n\n')

Questa scrittura significa che per l'array $serp è necessario chiamare il metodo .format con il parametro '$link $anchor\n$snippet\n\n'. Il metodo .format unisce in una stringa tutti gli elementi dell'array secondo il modello indicato nel parametro; il modello stesso significa: per ogni elemento dell'array $serp visualizzare il link e l'ancora separati da uno spazio, poi visualizzare lo snippet su una nuova riga, seguito da altri due ritorni a capo, che generano una riga vuota tra i risultati.

Utilizzo del motore di modelli

Visualizzazione delle variabili

Per utilizzare il motore di modelli è necessario inserire i tag [% %], e all'interno dei tag inserire la logica da eseguire.

Visualizzazione CMS con l'uso del motore di modelliRisultato della visualizzazione CMS con l'uso del motore di modelli

Ciclo sull'array

Per visualizzare gli elementi dell'array è necessario utilizzare la costruzione FOREACH:

[% FOREACH i IN p1.list;    
i.cms _ "\n";
END %]
suggerimento

Maggiori informazioni ed esempi sul motore di modelli in Caratteristiche del funzionamento dei modelli in A-Parser.

Esempi

Visualizzazione della concorrenza

Output della concorrenza per query (numero di risultati per query) per tutti gli scraper dei motori di ricerca (SE::GoogleSE::Google, SE::YandexSE::Yandex...).

Formato del risultato:

$query: $totalcount\n

Esempio di risultato:

test: 3910000000
viagra: 278000000
finestre pvc: 3220000
...

Visualizzazione dei link dai risultati dei motori di ricerca.

Formato del risultato:

$serp.format('$link\n')

Esempio di risultato:

http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://html5test.com/
http://test-ipv6.com/
...

Scraping dei suggerimenti

Visualizzazione dei suggerimenti dei motori di ricerca.

Formato del risultato:

$results.format('$suggest\n')

Esempio di risultato:

test server tanki online
test esame di stato russo
ricetta impasto per pancake
testicolo
impasto per pizza al latte

Visualizzazione dei dati sulla query

In Net::HTTPNet::HTTP e negli scraper basati su di esso è inoltre disponibile l'output di:

  • $proxy - proxy su cui è stata eseguita la query

  • $headers - intestazioni della risposta

  • $code - codice di risposta

  • $reason - stato della risposta

Esempio

Visualizzazione dei valori delle variabili in JSON

Metodo .json per gli oggetti

Visualizzazione di tutti i redirect della query

Per questo compito è disponibile la variabile $response, che permette di ottenere qualsiasi variabile della query, inclusi tutti i redirect precedenti.

Formato del risultato:

$response.Redirects.format('$URI\n--> ')$response.URI

Risultato del funzionamento dello scraper:

Esempio

Visualizzazione in JSON con l'uso del motore di modelli per la registrazione della data

L'esempio mostra l'output dei risultati dello scraper Net::WhoisNet::Whois in formato JSON.

Esempio

Il risultato sarà il dominio controllato, la data al momento del controllo e il risultato del controllo. Come si vede nel Formato del risultato, otteniamo la data tramite il motore di modelli Template Toolkit.

Formato del risultato:

{    
"domain": "$query",
"date": "[% USE d = date(format = '%d.%m.20%y', locale = 'C');d.format() %]",
"expire": "$p1.expire_date",
},

Esempio di risultato:

[{
"domain": "a-parser.com",
"date": "05.05.2021",
"expire": "25.02.2022",
},
{}]
Scarica esempio

Come importare l'esempio in A-Parser

eJxtVG1v2jAQ/ivWCUQrZaxM2pdM+0BRkTYx6ErRPgQ0efWFeXXszHYYVZT/3nMS
EtruQyTf23P33EtK8Nw9uluLDr2DOCkhr98QwxJ9HP/4baRj79jNkWe5QjaBCHJu
HdrgnZw5kUFgygvlYbeLgFDo6ebGZjyglVvNGNuCMBmXegsxvQd/C7RPW4hONu6x
sSRDtlnfMME+s6C8SGsYkkZDMR5m4w9Xw6dRxJR54FQUqWejy09i3LhdXLLhrkfF
Yy5tizvIJ+NG/tkkI6eKPugKXvMD3hsqOJUKe/WcpCXPkAyDEBmsXbqxP3py5UJI
L43mqmEdOtR3YqMl0aV4bcg3MJfo5tZkfa66HaeOJW17gCCKOvZ7EwNxypXDCByV
OucUKl5bpEfLvbGrPNRD+hKMniq1wAOq3q3Gvy6kEjTOaUpBX9rA/7us3mBUHb3z
VAe0/yzVALG3BYHUwvXqWx8kzMLsibj4RbSVzKQn2c1MocOuXJHyETHvWrYMLcuM
xS5LA9zmpvXNUQtyTPqJTfNWV1Y7eEXkxWBeKh+MTuV+RRSsFHjyLPQ93clKz0y4
gsBMF0rRYBze9Qsyde0ggtC18E3wrE4R2Lf3EoE3Rrmva9KF+7KSFvBjKDCjXp5n
bSFp69XmbnFugbOlqrMnJ/F9c3Ku3tLAkNZ3b2ixiFq16865+weU50cdlxWN64+7
bZwCdK2MgDrkaBYQT6pnHsF5pA==

Verifica della presenza del sito in Google News per parola chiave

Esempio di verifica della presenza di un sito in Google News per parola chiave

Formato del risultato:

[% linksToOneString = p1.serp.format('$link. ');
matches = linksToOneString.match('.+?(' _ p1.query.domain _ ').+?');

IF matches.0;
p1.query.orig _';yes' _ "\n";
ELSE;
p1.query.orig _';no' _ "\n";
END %]

Esempio di risultato:

scraper google|a-parser.com;no
scraper google|forbes.ru;yes
Scarica esempio

Come importare l'esempio in A-Parser

eJylVVFv2jAQ/iuR1YpWo1EQ7UuqaaIMpk6stKV9AoRccqQeju3aCQVR/vvOTkjS
ruNlEoq4u+++O9+dz1uSUrM0txoMpIaE4y1R7j8JyagXhj+kjDl4Z173GeZLL5IJ
ZcLDX2EQ8Go8WNNEcSBNoqg2oC3PuOaOhggWNOMpaW5JulGA7HIFWrPIGlmEsqIx
zGUmEENWlGeIae3+DccwqkIS8WrIATRnYmkUumCQGn9wwCXmNfr7x0Psz3Wozg4m
omtQTkU8O4xXWq43GlLNwNQ8W0EQkN102iTYLKyr6UudUNu08fFEuNM+yKGAETqK
2PvqqZZvK+YvHO6kcWQxvtc4vZwIVMyfwSDqo6PvTCcN/8u3k4Y3sywvGeiNX8zB
DAnQ5lg+CTvzJmSCFuLM132viOQHqCi5pGYIbVxuwDTeufQGo95nQCE/4G6+T8Tx
lJTFGNEVPEgsxoK54dvXCKUbmtj6HUU0BWvdF+TUT9d28mgUsZRJQXleUTvKVZUf
BXvJx00i1maFbelrmaAqBUfgUt13Y0yOnEyQInO+d7kPCReUG2gSg6n2KSYSlZZU
Z2hgKWiaSj1UNh1Ub4kUHc4HsAJe+Tv6q4zxCK9dZ4FO14Xj55DhXxy78nT1UDiG
rxpzKFmcdDX8VXlFciBjPHj0hMfmLGEpyqbrrnBIAlQuAVRZshtbskRqKMMUzEV0
XEEKhJ35qmMdVaneHcMtKiMzPbfUeY2b+ztk3PSNFGe2IQZwKeUFIW8WJG1f9i75
IJPprmpyLQYq51IsWDwsruV+HDLxgGtzKLrSLj5bJpFxjk02cF8NW8cUTbVCdd6P
zl0XwlZyvyQxScnNz1F+cqUZ5nxhE0ywMfWoBeWccv54P6hbSDWgKEyy4Ly9cN/A
fs/zb8tpLnKN54S2E9rV//bTGz3L97o/lwneuf/iwvv2hBsAt55NO4VYYh9sN939
CUkvf0vssoO1oiKCKL8SO9ej4oEp36tt/ZkJtzucy9/mNgfZqlsI6rB9BofOPil/
AGn6WSM=

Visualizzazione del valore timestamp in formato data

A volte capita che nei risultati non ci sia una data normale, ma un valore timestamp come nello scraper Social::Instagram::TagSocial::Instagram::Tag. Questo valore può essere rappresentato in formato data utilizzando il motore di template Template-Toolkit.

Esempio di visualizzazione del valore timestamp in formato data

Formato del risultato:

[% USE date;

query.orig _ ": total posts - " _ postscount _ "\nPosts:\n";

FOREACH i IN posts;
d = date.format(i.time, format => '%d.%m.20%y');
i.link _ " - " _ d _ ":\n";
i.text _ "\n";
END %]

Esempio di risultato:

sport: total posts - 96500663
Posts:
https://www.instagram.com/p/COfJHshAkeD/ - 05.05.2021:
Quelques exemples de notre nouvelle campagne de communication personnalisable avec le nom des clubs 😀

Vous préférez quel visuel : 1, 2, 3, 4, 5 ? 🤔

#clubnormand #tennis #padel #beachtennis #tenniscourt #padelcourt #beachtenniscourt #lnt #LigueNormandieTennis #🎾 #sport #normandie #normandietourisme
https://www.instagram.com/p/COfJG7olavg/ - 05.05.2021:
💥 Sau màn lật đổ “Bà già” thành công, Nửa xanh thành Milan chính thức vượt qua Nửa đỏ về số lần lên đỉnh nước Ý nhiều nhất lịch sử.
-----------------------------
➖ Website: https://webthethao247.com/
➖ https://g.page/webthethao247?share
#wtt247 #webthethao247 #thethao #sport #bongda #SerieA #InterMilan #Juventus #ACMilan
https://www.instagram.com/p/COfJG1Hg7ax/ - 05.05.2021:
Which Skill was better 1 or 2? 🤔👇
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
________________________________________
Leave a Like 👍🏽
Subscribe for more 🔔
Leave your thoughts in the Comments  💬
________________________________________
❌Ignore the Tags ❌
#football #soccer #fussball #futbol #fifa #championsleague #bundesliga #ucl #footballmemes #goal #transfer #sports #penalty #ultimateteam #pacybits #fut #ultras #laliga #freekick #referee #sport #calcio #messi #ronaldo #skills #premierleague #foul #footballseason
https://www.instagram.com/p/COfIlXqhfAa/ - 05.05.2021:
Be Fuckin’ Ready 🤣🤣🤣

Get ready to fly!!!! 🏐🏐🏐🏐

Follow - @crackonkings

#beachball #nalin&kane #trance #music #90s #onyerhead #festival #party #afterparty #love #summer #uk #happy #sesh #crackon #football #sport #festivaloutfit #festivalfashion #sun #dj #dancing #club #festivalgirl #house #techno #rave
...
Scarica esempio

Come importare l'esempio in A-Parser

eJx1VNtuGjEQ/RXLCkoj0VVSqS9bpRKhoFJRNuXyxKLKxQa58dqO7aVBiH/vjPeW
pM0+7RzPzDlzsU80MP/g753wIniark/Uxn+a0oXZSqbSdKJ9YHvHijRdsj15T5ay
EAAVlgRDOAuCiCewlKB9apnzwmGm9RsJwImLHStVoP0TDUcrgMschHOSYwbJwd4Z
V7AASqIbPTBVotu6R1aLUeT8lOtcP5bCHRPj5J78JDlNQVBgiljjgwehOQU4GltT
6hB98lzfI5LCT05jlnE2Hw2GX4kkk1nljnDg5DYyJZWYdzIJUHifVCa5/Uwuezzp
FcmH697x8gpiCHwyUVI/RKpGAa/ENYSVVxBPraAIj2ZfSG9Dz5tNn1aF+3Fkgrov
7E1Sz6U9XLCDWBrslYydb2LAmrECu3WB6vG0qeAqCU+YgXEugzSaqYoBx9WxrrR8
jN3WBnyxxVL4sTMFQKi6Bo+NujW9iDaFFGWM/VHF0HTHlBd96kHqmIEQ/vpEBuFY
MC6zqAfwEzV6oNRUHITq3GL+u1IqDrs12EHQpA78v0v2T45zW95zKti6Pw40tFmi
dZd976K4mZo9VM5/Qd1KFjKA7Ye4T4BeA/gghG17NsOeFcaJlqbOXLPDTbNC44p3
IxvYDnpRxouxvAS3Ru/kPquvTeNZ6iVc50wPDV5HrEuXSsFYvJh36zHw9RjQ6AS+
Dh5GCiy9ua40GKP8t0Ul1ToJ6/cRBRbQyeesdcotU2o1nz4/wUAfjM30yLlX44uL
Qb01Drm2sLx7A2sFpZ037cvSPlWnt96X9HSGuf3291UAFonugEG3PAyFpjfnvwdy
t1Y=

Altri esempi

Esempi di modelli usati frequentemente