# Cassandra Crossing/ Archivismi: API, quando il gioco si fa duro
(563) --- Oggi ci sposteremo su un differente piano di utilizzo di Internet Archive, quello della "programmazione" via API; ma prima dovremo... ------------------------------------------------------------------------ ### Cassandra Crossing/ Archivismi: API, quando il gioco si fa duro ![](https://cdn-images-1.medium.com/max/800/1*8cSHLCbycr_q0sNGCC1kxw.png){.graf-image image-id="1*8cSHLCbycr_q0sNGCC1kxw.png" data-width="600" data-height="338" is-featured="true"} *(563) --- Oggi ci sposteremo su un differente piano di utilizzo di Internet Archive, quello della "programmazione" via API; ma prima dovremo obbligatoriamente parlare di doveri e responsabilità degli utenti di Internet Archive.* **29 dicembre 2023** --- Nelle ultime due puntate (è da oggi disponibile una [lista completa](https://calamarim.medium.com/list/archivismi-la-serie-689254e647ad){.markup--anchor .markup--p-anchor data-href="https://calamarim.medium.com/list/archivismi-la-serie-689254e647ad" rel="noopener" target="_blank"} degli articoli di "Archivismi") ci siamo occupati di un'archiviazione elementare su *Internet Archive*; archiviare un singolo file ci ha comunque aperto una parte significativa del sistema che abbiamo davanti, e delle potenti funzionalità che ci mette a disposizione. Molto, molto altro rimane da mostrare, anche solo per le operazioni di archiviazione manuali. Prossimamente descriveremo e realizzeremo una vera campagna di archiviazioni, raccontando le minuzie ed i problemi spiccioli che distinguono i casi reali dagli esempi che troviamo sui manuali. Ma oggi tratteremo di un argomento già accennato di sfuggita in una puntata precedente, e che porta la potenza archivistica che *Internet Archive* mette a disposizione dei suoi utenti ad un nuovo livello. Parliamo ovviamente della possibilità di "programmare" le operazioni su *Internet Archive*. Non ci vuole un genio per immaginare che un servizio come *Internet Archive* esiste perché ha alle spalle un piccolo esercito di programmatori che scrivono, mantengono e fanno evolvere una base di software dedicato. E per inciso, per fomentare la mai estinta "[*Classifica dei migliori linguaggi di programmazione*](https://it.wikipedia.org/wiki/TIOBE_Programming_Community_Index){.markup--anchor .markup--p-anchor data-href="https://it.wikipedia.org/wiki/TIOBE_Programming_Community_Index" rel="noopener" target="_blank"}", anche in *Internet Archive* [*Python*](https://it.wikipedia.org/wiki/Python){.markup--anchor .markup--p-anchor data-href="https://it.wikipedia.org/wiki/Python" rel="noopener" target="_blank"} la fa da padrone! Ma torniamo all'argomento di oggi. In breve: sì, è possibile usare Internet Archive usando script o veri programmi che automatizzano le operazioni di archiviazione che decidiamo di realizzare. E sì, questo viene realizzato "*esponendo una API*". Per il conforto dei non programmatori, significa semplicemente che è possibile automatizzare le operazioni da compiere utilizzando degli script o dei veri e propri programmi, che eseguono, ovviamente via Rete, precise chiamate a delle funzionalità elementari di Internet Archive, definite appunto in una [API --- *Interfaccia per la Programmazione Applicativa*](https://it.wikipedia.org/wiki/Application_programming_interface){.markup--anchor .markup--p-anchor data-href="https://it.wikipedia.org/wiki/Application_programming_interface" rel="noopener" target="_blank"}. Non ci sarebbe bisogno di dire altro, semplicemente di fornire nuovamente il link al [*Portale degli Sviluppatori di Internet Archive*](https://archive.org/developers/index.html#){.markup--anchor .markup--p-anchor data-href="https://archive.org/developers/index.html#" rel="noopener" target="_blank"}, e lasciare che chiunque abbia mai *trafficato*, anche solo realizzando uno script .bat per il DOS, scopra ed utilizzi la potenza delle API di Internet Archive. Ma no, un minimo di indicazioni e raccomandazioni preliminari sono comunque necessarie, prima di fare anche solo un piccolissimo esempio. In primis, **Internet Archive non pone limiti predefiniti a quello che un utente può fare dei servizi che vengono forniti**; ad esempio non limita a priori la quantità di informazioni che possono essere archiviate. Ma nessuna realtà esposta al pubblico può essere "*indifesa*", visto che una percentuale di imbecilli, profittatori e delinquenti esistenti al mondo è presente anche tra gli utenti di Internet Archive. Come la storia della Rete ha più volte dimostrato, realtà collaborative di grandi dimensioni, ad esempio Wikipedia, riescono a sopravvivere e svilupparsi solo se gestite come un ibrido tra democrazia imperfetta e tirannia illuminata. *Internet Archive* non fa eccezione. E' per questo che alcune risorse, come ad esempio le *Collezioni*, vengono centellinate e fornite solo a richiesta. Una serie di amministratori di vario livello supervede e controlla infatti il funzionamento e l'utilizzo di Internet Archive, e tiene in riga, bacchetta od espelle gli utenti *disfunzionali*. **Una tale presenza non deve essere vista come un problema od un limite, ma come una risorsa**; infatti gli amministratori hanno il ruolo principale di aiutare tutti gli utenti ad utilizzare *Internet Archive*. Gli amministratori sono tuttavia una risorsa preziosa e scarsa; **mandare** **una email agli amministratori**, quando non direttamente previsto dalle procedure (ad esempio per la creazione di una Collection) **deve essere vista come ultima risorsa**, da utilizzare solo dopo un'attenta lettura della documentazione e dell'help in linea, molte prove, una ricerca nel blog e perché no, anche sui normali motori di ricerca. **Mi raccomando!** Ma non si era detto che avremmo *programmato* qualcosa? Verissimo, e passiamo subito alla pratica. E per partire da qualcosa di semplice ed innocuo, ipotizziamo di aver trovato una serie di cose che ci interessano, ad esempio parecchi numeri di una rivista, e di volerli scaricare in maniera veloce, affidabile, e che non richieda operazioni manuali ripetitive. E per semplicità, faremo il tutto da linea comandi, senza utilizzare direttamente le API e quindi senza dover scrivere un vero programma in Python o simili; ci basterà scaricare il programma Python "***ia*"** ed utilizzarlo. ***ia*** è un programma già "pseudo-compilato", cioè scritto in un "linguaggio" intermedio detto *Python Bytecode*, che è portabile su qualsiasi piattaforma abbia un ambiente Python3 installato. **L'utilizzo di una versione di Linux, Debian, Ubuntu etc., è vivamente consigliato**. Potete anche utilizzarlo in una macchina virtuale Virtualbox o VMWare su qualsiasi computer. Dovrebbe anche funzionare l'ambiente WSL di Windows, ma qui Cassandra non procede oltre ed abbandona gli arditi che volessero cimentarsi; anzi, eventualmente aspetta da loro dei feedback a riguardo per integrare questo articolo. Quindi torniamo con Cassandra alla sua amata Debian, ed installiamo e configuriamo *ia* con la procedura che troviamo [qui](https://archive.org/developers/quick-start-cli.html){.markup--anchor .markup--p-anchor data-href="https://archive.org/developers/quick-start-cli.html" rel="noopener" target="_blank"}. Ma anche un semplice > sudo apt install internetarchive è sufficiente. Miracoli di Debian ... In breve, su un computer dove sia installato l'ambiente Python3 si deve scaricare dove preferiamo, oppure installare, il comando ia, renderlo eseguibile, ed infine lanciarlo con il parametro *configure* per associarlo al nostro utente (avete creato il vostro utente, vero?). E' tutto pronto; come primo esempio con il seguente comando possiamo scaricare il solo pdf originale del nostro articolo di esempio, che avevamo caricato la scorsa puntata. > \$ ./ia download > cassandra-crossing-2558-il-dizionario-di-cassandra-archivismi --- no-directories --- format="Text > PDF" > cassandra-crossing-2558-il-dizionario-di-cassandra-archivismi:\ >  downloading Cassandra_Crossing_2558_Il Dizionario di Cassandra\_ > Archivismi.pdf: 100%\|█\| 513k/513k \[00:00\<00:00, 709kiB/s Ma se avessimo voluto scaricare tutto l'oggetto, file derivativi inclusi, avremmo potuto scrivere ancor più semplicemente > \$ ./ia download > cassandra-crossing-2558-il-dizionario-di-cassandra-archivismi Avremmo così ottenuto una directory con lo stesso nome dell'identificatore dell'oggetto, contenente tutti i file da cui è formato. Lo stesso procedimento funziona anche per scaricare una intera collezione, o parti di essa. Un'altra raccomandazione, **calcolate prima quanto è grande la selezione che avete fatto**; su *Internet Archive* ci sono oggetti di dimensioni enormi. Per avere aiuto, oltre che consultare la [guida online,](https://archive.org/developers/internetarchive/cli.html){.markup--anchor .markup--p-anchor data-href="https://archive.org/developers/internetarchive/cli.html" rel="noopener" target="_blank"} basta dare i comandi > \$ ./ia help > \$ ./ia help download > \$ ./ia help upload Terminiamo con altre raccomandazioni in ordine sparso. Se caricate nuovi oggetti, è meglio usare il metodo con foglio elettronico in formato CSV, di cui trovate un esempio [qui](https://archive.org/download/ia-pex/uploading.csv){.markup--anchor .markup--p-anchor data-href="https://archive.org/download/ia-pex/uploading.csv" rel="noopener" target="_blank"} o nella guida. In questo modo avrete sempre sotto controllo tutti i parametri insieme. Dare tutti i parametri da linea comandi può essere complesso e si possono facilmente commettere errori. Quando creerete i vostri oggetti, **inseriteli sempre nella collezione *test_collection***, come è mostrato anche nel foglio di esempio. I motivi li abbiamo già spiegati. Quando invece inserirete i vostri primi oggetti *definitivi*, non inserite tra i parametri la collection, lasciando quella di default *opensource*. Buona sperimentazione! Ed anche per oggi è tutto. *Stay tuned* per la prossima puntata di "*Archivismi*". ------------------------------------------------------------------------ [Scrivere a Cassandra](mailto:%20cassandra@cassandracrossing.org){.markup--anchor .markup--p-anchor data-href="mailto:%20cassandra@cassandracrossing.org" rel="noopener ugc nofollow" target="_blank"} --- [Twitter](https://twitter.com/calamarim){.markup--anchor .markup--p-anchor data-href="https://twitter.com/calamarim" rel="noopener ugc nofollow noopener noopener noopener noopener noopener noopener noopener noopener" target="_blank"} --- [Mastodon](https://mastodon.uno/@calamarim){.markup--anchor .markup--p-anchor data-href="https://mastodon.uno/@calamarim" rel="noopener ugc nofollow noopener noopener noopener noopener noopener noopener noopener noopener" target="_blank"}\ [Videorubrica "Quattro chiacchiere con Cassandra"](https://www.youtube.com/user/orogong/videos){.markup--anchor .markup--p-anchor data-href="https://www.youtube.com/user/orogong/videos" rel="noopener ugc nofollow noopener noopener noopener noopener noopener noopener noopener noopener" target="_blank"} \ [Lo Slog (Static Blog) di Cassandra](http://www.cassandracrossing.org/){.markup--anchor .markup--p-anchor data-href="http://www.cassandracrossing.org/" rel="noopener ugc nofollow noopener noopener noopener noopener noopener noopener noopener noopener" target="_blank"} \ [L'archivio di Cassandra: scuola, formazione e pensiero](https://medium.com/@calamarim){.markup--anchor .markup--p-anchor data-href="https://medium.com/@calamarim" rel="noopener" target="_blank"} ***Licenza d'utilizzo****: i contenuti di questo articolo, dove non diversamente indicato, sono sotto licenza Creative Commons Attribuzione --- Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0),* tutte le informazioni di utilizzo del materiale sono disponibili a [questo link](https://creativecommons.org/licenses/by-sa/4.0/deed.it){.markup--anchor .markup--p-anchor data-href="https://creativecommons.org/licenses/by-sa/4.0/deed.it" rel="noopener ugc nofollow noopener noopener noopener noopener noopener noopener noopener noopener" target="_blank"}*.* By [Marco A. L. Calamari](https://medium.com/@calamarim){.p-author .h-card} on [January 1, 2024](https://medium.com/p/93e2f6eaf4d0). [Canonical link](https://medium.com/@calamarim/cassandra-crossing-archivismi-api-quando-il-gioco-si-fa-duro-93e2f6eaf4d0){.p-canonical} Exported from [Medium](https://medium.com) on January 15, 2024.