|
@@ -122,8 +122,8 @@
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"outputs": [],
|
|
"source": [
|
|
"source": [
|
|
- "import_dir = '/Users/federicaspinelli/Google Drive/OVI:CNR/LAVORO 2020/SELEZIONE CONTENUTI/01_ASPO/XDAMS/'\n",
|
|
+ "import_dir = '../../Data/DallASPO/'\n",
|
|
- "export_dir = '/Users/federicaspinelli/Google Drive/OVI:CNR/CSV/ASPO/ospedale/'"
|
|
+ "export_dir = './'"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
@@ -142,7 +142,7 @@
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "1.052720069885254\n"
|
|
+ "1.2158260345458984\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
@@ -173,7 +173,7 @@
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "{'subseries', 'series', 'file', 'subgrp', 'otherlevel', 'recordgrp', 'collection', 'fonds', 'subfonds'}\n"
|
|
+ "{'otherlevel', 'fonds', 'series', 'collection', 'subfonds', 'file', 'subgrp', 'recordgrp', 'subseries'}\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
@@ -200,17 +200,17 @@
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "# di tag \"c\", livello subseries, primo passaggio: 151\n",
|
|
+ "# di tag \"c\", livello otherlevel, primo passaggio: 321\n",
|
|
|
|
+ "# di tag \"c\", livello fonds, primo passaggio: 1\n",
|
|
"# di tag \"c\", livello series, primo passaggio: 254\n",
|
|
"# di tag \"c\", livello series, primo passaggio: 254\n",
|
|
|
|
+ "# di tag \"c\", livello collection, primo passaggio: 1\n",
|
|
|
|
+ "# di tag \"c\", livello subfonds, primo passaggio: 3\n",
|
|
"# di tag \"c\", livello file, primo passaggio: 7199\n",
|
|
"# di tag \"c\", livello file, primo passaggio: 7199\n",
|
|
"# di tag \"c\", livello subgrp, primo passaggio: 10\n",
|
|
"# di tag \"c\", livello subgrp, primo passaggio: 10\n",
|
|
- "# di tag \"c\", livello otherlevel, primo passaggio: 321\n",
|
|
|
|
"# di tag \"c\", livello recordgrp, primo passaggio: 7\n",
|
|
"# di tag \"c\", livello recordgrp, primo passaggio: 7\n",
|
|
- "# di tag \"c\", livello collection, primo passaggio: 1\n",
|
|
+ "# di tag \"c\", livello subseries, primo passaggio: 151\n",
|
|
- "# di tag \"c\", livello fonds, primo passaggio: 1\n",
|
|
|
|
- "# di tag \"c\", livello subfonds, primo passaggio: 3\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "Tempo trascorso: 0.7257428169250488\n"
|
|
+ "Tempo trascorso: 0.6825399398803711\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
@@ -251,26 +251,26 @@
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "# di tag \"c\", livello subseries, primo passaggio: 151\n",
|
|
+ "# di tag \"c\", livello otherlevel, primo passaggio: 321\n",
|
|
- "# di tag \"c\", livello subseries, totali: 163\n",
|
|
+ "# di tag \"c\", livello otherlevel, totali: 321\n",
|
|
|
|
+ "# di tag \"c\", livello fonds, primo passaggio: 1\n",
|
|
|
|
+ "# di tag \"c\", livello fonds, totali: 11\n",
|
|
"# di tag \"c\", livello series, primo passaggio: 254\n",
|
|
"# di tag \"c\", livello series, primo passaggio: 254\n",
|
|
"# di tag \"c\", livello series, totali: 254\n",
|
|
"# di tag \"c\", livello series, totali: 254\n",
|
|
|
|
+ "# di tag \"c\", livello collection, primo passaggio: 1\n",
|
|
|
|
+ "# di tag \"c\", livello collection, totali: 1\n",
|
|
|
|
+ "# di tag \"c\", livello subfonds, primo passaggio: 3\n",
|
|
|
|
+ "# di tag \"c\", livello subfonds, totali: 3\n",
|
|
"# di tag \"c\", livello file, primo passaggio: 7199\n",
|
|
"# di tag \"c\", livello file, primo passaggio: 7199\n",
|
|
"# di tag \"c\", livello file, totali: 7199\n",
|
|
"# di tag \"c\", livello file, totali: 7199\n",
|
|
"# di tag \"c\", livello subgrp, primo passaggio: 10\n",
|
|
"# di tag \"c\", livello subgrp, primo passaggio: 10\n",
|
|
"# di tag \"c\", livello subgrp, totali: 10\n",
|
|
"# di tag \"c\", livello subgrp, totali: 10\n",
|
|
- "# di tag \"c\", livello otherlevel, primo passaggio: 321\n",
|
|
|
|
- "# di tag \"c\", livello otherlevel, totali: 321\n",
|
|
|
|
"# di tag \"c\", livello recordgrp, primo passaggio: 7\n",
|
|
"# di tag \"c\", livello recordgrp, primo passaggio: 7\n",
|
|
"# di tag \"c\", livello recordgrp, totali: 7\n",
|
|
"# di tag \"c\", livello recordgrp, totali: 7\n",
|
|
- "# di tag \"c\", livello collection, primo passaggio: 1\n",
|
|
+ "# di tag \"c\", livello subseries, primo passaggio: 151\n",
|
|
- "# di tag \"c\", livello collection, totali: 1\n",
|
|
+ "# di tag \"c\", livello subseries, totali: 163\n",
|
|
- "# di tag \"c\", livello fonds, primo passaggio: 1\n",
|
|
|
|
- "# di tag \"c\", livello fonds, totali: 11\n",
|
|
|
|
- "# di tag \"c\", livello subfonds, primo passaggio: 3\n",
|
|
|
|
- "# di tag \"c\", livello subfonds, totali: 3\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "Tempo trascorso: 1.1849439144134521\n"
|
|
+ "Tempo trascorso: 1.0391268730163574\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
@@ -360,7 +360,7 @@
|
|
"\n",
|
|
"\n",
|
|
"[('c', {'level': 'otherlevel', 'otherlevel': 'subfile', 'id': 'IT-ASPO-ST00005-0002653', 'audience': 'external'}, ''), ('did', {}, ''), ('physdesc', {'encodinganalog': 'ISAD 3-1-5 extent and medium of the unit of description'}, '')]\n",
|
|
"[('c', {'level': 'otherlevel', 'otherlevel': 'subfile', 'id': 'IT-ASPO-ST00005-0002653', 'audience': 'external'}, ''), ('did', {}, ''), ('physdesc', {'encodinganalog': 'ISAD 3-1-5 extent and medium of the unit of description'}, '')]\n",
|
|
"[0, 2, 3]\n",
|
|
"[0, 2, 3]\n",
|
|
- "('physfacet', {'type': 'note'}, 'Legatura�origiale�i�cartoe')\n",
|
|
+ "('physfacet', {'type': 'note'}, 'Legatura\\xa0origiale\\xa0i\\xa0cartoe')\n",
|
|
"# of children: 0\n",
|
|
"# of children: 0\n",
|
|
"\n",
|
|
"\n",
|
|
"[('c', {'level': 'otherlevel', 'otherlevel': 'subfile', 'id': 'IT-ASPO-ST00005-0002653', 'audience': 'external'}, ''), ('processinfo', {}, ''), ('list', {}, ''), ('item', {}, 'iserimeto i Ariaa 3.2')]\n",
|
|
"[('c', {'level': 'otherlevel', 'otherlevel': 'subfile', 'id': 'IT-ASPO-ST00005-0002653', 'audience': 'external'}, ''), ('processinfo', {}, ''), ('list', {}, ''), ('item', {}, 'iserimeto i Ariaa 3.2')]\n",
|
|
@@ -422,7 +422,7 @@
|
|
"cell_type": "markdown",
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"source": [
|
|
"source": [
|
|
- "(*NOTA X ME:* **'did' = 'Descriptive IDentification'**)"
|
|
+ "## QUI SI INIZIA"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
@@ -431,7 +431,7 @@
|
|
"source": [
|
|
"source": [
|
|
"A questo punto, quello che devo fare è scrivere un **traduttore** -- una funzione che scorra l'output degli elementi esaminati e trasformi le info in modo da poterle esportare in formato csv (o in qualunque altro formato vogliamo).\n",
|
|
"A questo punto, quello che devo fare è scrivere un **traduttore** -- una funzione che scorra l'output degli elementi esaminati e trasformi le info in modo da poterle esportare in formato csv (o in qualunque altro formato vogliamo).\n",
|
|
"\n",
|
|
"\n",
|
|
- "La mia attuale versione di **traduttore per gli item** è data nella prossima cella; accetta come argomento un nodo (che è supposto essere di tipo item) e restituisce un dict."
|
|
+ "La veccia versione di **traduttore per gli item** dell'Ospedale è data nella prossima cella; accetta come argomento un nodo (che è supposto essere di tipo item) e restituisce un dict."
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
@@ -728,7 +728,7 @@
|
|
"\n",
|
|
"\n",
|
|
"titolo_aspo: \"N.2 1420. Testamento di mona Margherita Buri moglie di Paolo Saccagnini con obbligo a' suoi figliuoli eredi di fare ogni anno in S. Francesco la festa di S. Antonio da Padova\"\n",
|
|
"titolo_aspo: \"N.2 1420. Testamento di mona Margherita Buri moglie di Paolo Saccagnini con obbligo a' suoi figliuoli eredi di fare ogni anno in S. Francesco la festa di S. Antonio da Padova\"\n",
|
|
"\n",
|
|
"\n",
|
|
- "data_periodo: 1420�nov.�19\n",
|
|
+ "data_periodo: 1420 nov. 19\n",
|
|
"\n",
|
|
"\n",
|
|
"segnatura_attuale: 1\n",
|
|
"segnatura_attuale: 1\n",
|
|
"\n",
|
|
"\n",
|
|
@@ -759,535 +759,370 @@
|
|
"cell_type": "markdown",
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"source": [
|
|
"source": [
|
|
- "# Export\n",
|
|
+ "L'idea è di definire un **nuovo** traduttore che lavora tramite file di configurazione e dà lo stesso output."
|
|
- "\n",
|
|
|
|
- "Produciamo il CSV per gli item tracciando, al solito, il tempo impiegato."
|
|
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 12,
|
|
+ "execution_count": null,
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 1.894237995147705\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "# Do it! Export del CSV - items.\n",
|
|
|
|
- "\n",
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
- "\n",
|
|
|
|
- "# Apro il file per l'export\n",
|
|
|
|
- "with open(export_dir + \"data_file.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
|
|
- " # Definisco la classe-motore per l'export\n",
|
|
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(itemHeader.keys()))\n",
|
|
|
|
- " # Scrivo l'intestazione\n",
|
|
|
|
- " writer.writeheader()\n",
|
|
|
|
- " # Scrivo la seconda riga, esplicativa\n",
|
|
|
|
- " writer.writerow(itemHeader)\n",
|
|
|
|
- " # Scrivo gli item tradotti, uno a uno\n",
|
|
|
|
- " for ii in range(len(allCs2['file'])):\n",
|
|
|
|
- " test = allCs2['file'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
- "\n",
|
|
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "markdown",
|
|
|
|
- "metadata": {},
|
|
|
|
- "source": [
|
|
|
|
- "# Altri livelli"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
"metadata": {},
|
|
- "source": [
|
|
+ "outputs": [],
|
|
- "Definisco un dizionario ridotto per l'header delle *subseries*, poi esporto -- per il momento con lo stesso traduttore usato per gli *item*"
|
|
+ "source": []
|
|
- ]
|
|
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 13,
|
|
+ "execution_count": null,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
- "outputs": [
|
|
+ "outputs": [],
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.009209156036376953\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
"source": [
|
|
"source": [
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
+ "def traduttoreNew(elem):\n",
|
|
|
|
+ " # Variabile che contiene l'output della traduzione:\n",
|
|
|
|
+ " csvProt = {}\n",
|
|
"\n",
|
|
"\n",
|
|
- "subSeriesKeys = set()\n",
|
|
+ " # Processo i nodi-parent di 'elem'\n",
|
|
- "for ii in range(len(allCs2['subgrp'])):\n",
|
|
+ " par_tags = list(map(lambda a: a.tag, elem['a_par']))\n",
|
|
- " test = allCs2['subgrp'][ii]\n",
|
|
+ " par_attributes = list(map(lambda a: a.attrib, elem['a_par']))\n",
|
|
- " subSeriesKeys = subSeriesKeys.union( traduttoreItem(test).keys() )\n",
|
|
+ " \n",
|
|
|
|
+ " # e0: Le varie id dei nodi parent\n",
|
|
|
|
+ " for ii in indices(par_tags, 'c'):\n",
|
|
|
|
+ " key = 'id_' + par_attributes[ii]['level']\n",
|
|
|
|
+ " csvProt[key] = par_attributes[ii]['id']\n",
|
|
"\n",
|
|
"\n",
|
|
- "subSeriesHeader = OrderedDict()\n",
|
|
+ " # Processo i nodi-child di 'elem'\n",
|
|
- "for key in itemHeader:\n",
|
|
+ " childrenNodes = traceElems(elem['child'], isLeafOrC)\n",
|
|
- " if(key in subSeriesKeys):\n",
|
|
+ " first = True\n",
|
|
- " subSeriesHeader[key] = itemHeader[key]\n",
|
|
+ " for node in childrenNodes:\n",
|
|
|
|
+ " tags = [ a.tag for a in node['a_par'] ].append(node['child'].tag)\n",
|
|
|
|
+ " attributes = [ a.attrib for a in node['a_par'] ].append(node['child'].attrib)\n",
|
|
|
|
+ " nodeContent = node['child'].text\n",
|
|
"\n",
|
|
"\n",
|
|
|
|
+ " # Da controllare solo per il primo nodo\n",
|
|
|
|
+ " # (informazioni a livello del nodo, uguali per tutti i figli)\n",
|
|
|
|
+ " if(first):\n",
|
|
|
|
+ " # e1 ID della item\n",
|
|
|
|
+ " csvProt['id'] = attributes[tags.index('c')]['id']\n",
|
|
|
|
+ " # e2 Audience: external o internal\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['audience'] = attributes[tags.index('c')]['audience']\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " # e3 Otherlevel\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['altro_livello'] = attributes[tags.index('c')]['otherlevel']\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " first = False\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_subgrp.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ " # La 'ciccia': si processa il contenuto vero e proprio\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(subSeriesHeader.keys()))\n",
|
|
+ " # e4 Repository (qui dovrebbe essere sempre l'Archivio di Prato)\n",
|
|
- " writer.writeheader()\n",
|
|
+ " if('repository' in tags):\n",
|
|
- " writer.writerow(subSeriesHeader)\n",
|
|
+ " csvProt['repository'] = nodeContent \n",
|
|
- " for ii in range(len(allCs2['subgrp'])):\n",
|
|
|
|
- " test = allCs2['subgrp'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ " # e8 Tipologia\n",
|
|
- ]
|
|
+ " try:\n",
|
|
- },
|
|
+ " ii = tags.index('materialspec')\n",
|
|
- {
|
|
+ " if(attributes[ii]['label']=='tipologia'): \n",
|
|
- "cell_type": "code",
|
|
+ " csvProt['tipologia'] = nodeContent\n",
|
|
- "execution_count": 14,
|
|
+ " except:\n",
|
|
- "metadata": {},
|
|
+ " pass\n",
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.14556884765625\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "subSeriesKeys = set()\n",
|
|
+ " # e9 Segnatura attuale\n",
|
|
- "for ii in range(len(allCs2['subseries'])):\n",
|
|
+ " try:\n",
|
|
- " test = allCs2['subseries'][ii]\n",
|
|
+ " ii = tags.index('num')\n",
|
|
- " subSeriesKeys = subSeriesKeys.union( traduttoreItem(test).keys() )\n",
|
|
+ " type1 = attributes[ii]['type']\n",
|
|
|
|
+ " if(type1=='nuovo ordinamento'):\n",
|
|
|
|
+ " csvProt['segnatura_attuale'] = nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " # e9 Segnatura precedente ('odd')\n",
|
|
|
|
+ " if('odd' in tags):\n",
|
|
|
|
+ " csvProt['segnatura_precedente'] = nodeContent \n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e11 Il titolo da unittitle\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " aa = csvProt['titolo_aspo']\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('unittitle')\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['titolo_aspo'] = str(node['a_par'][ii].text).replace('\\t','').replace('\\n','').strip()\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt['titolo_aspo'] = str(nodeContent).replace('\\t','').replace('\\n','').strip()\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e12 Scope-content head & body\n",
|
|
|
|
+ " if('scopecontent' in tags):\n",
|
|
|
|
+ " if('p' in tags):\n",
|
|
|
|
+ " csvProt['scope-content_body'] = nodeContent\n",
|
|
"\n",
|
|
"\n",
|
|
- "subSeriesHeader = OrderedDict()\n",
|
|
+ " # e14 Nome della compagnia\n",
|
|
- "for key in itemHeader:\n",
|
|
+ " try:\n",
|
|
- " if(key in subSeriesKeys):\n",
|
|
+ " ii = tags.index('corpname')\n",
|
|
- " subSeriesHeader[key] = itemHeader[key]\n",
|
|
+ " if(attributes[ii]['authfilenumber']):\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " authId = attributes[ii]['authfilenumber']\n",
|
|
|
|
+ " csvProt['compagnia'] = '{\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + ', \"authID\": ' + \"\\\"\" + authId + \"\\\"\" + '}'\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt['compagnia'] = '{\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + '}'\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e16 Persona\n",
|
|
|
|
+ " if ('controlaccess' in tags):\n",
|
|
|
|
+ " try: \n",
|
|
|
|
+ " ii=tags.index('persname') \n",
|
|
|
|
+ " key='persona' \n",
|
|
|
|
+ " authId = attributes[ii]['authfilenumber']\n",
|
|
|
|
+ " try: \n",
|
|
|
|
+ " csvProt[key] = csvProt[key] + ' | {\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + ', \"authID\": ' + \"\\\"\" + authId + \"\\\"\" +'}'\n",
|
|
|
|
+ " except: \n",
|
|
|
|
+ " csvProt[key] = '{\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + ', \"authID\": ' + \"\\\"\" + authId + \"\\\"\" +'}'\n",
|
|
|
|
+ " except: \n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt[key] = csvProt[key] + ' | {\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + '}'\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt[key] = '{\"nome\": ' + \"\\\"\" + nodeContent + \"\\\"\" + '}'\n",
|
|
"\n",
|
|
"\n",
|
|
|
|
+ " # e17 Date\n",
|
|
|
|
+ " if ('unittitle' in tags):\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('date')\n",
|
|
|
|
+ " key = 'data'\n",
|
|
|
|
+ " csvProt[key] = nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e18 Data 1: periodo\n",
|
|
|
|
+ " if('unitdate' in tags):\n",
|
|
|
|
+ " csvProt['data_periodo'] = nodeContent\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e20 Supporto fisico\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('physfacet')\n",
|
|
|
|
+ " if(attributes[ii]['type']=='supporto'):\n",
|
|
|
|
+ " csvProt['supporto'] = nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_subseries.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ " # e21 Physdesc \n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(subSeriesHeader.keys()))\n",
|
|
+ " if('extent' in tags):\n",
|
|
- " writer.writeheader()\n",
|
|
+ " csvProt['numero'] = nodeContent\n",
|
|
- " writer.writerow(subSeriesHeader)\n",
|
|
+ " if('genreform' in tags):\n",
|
|
- " for ii in range(len(allCs2['subseries'])):\n",
|
|
+ " csvProt['genere'] = nodeContent\n",
|
|
- " test = allCs2['subseries'][ii]\n",
|
|
+ " \n",
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
+ " # e21 Dimensions\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('dimensions')\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['dimensione_altezza_larghezza_spessore'] = csvProt['dimensione_altezza_larghezza_spessore'] + ' | ' + nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt['dimensione_altezza_larghezza_spessore'] = nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e22 Phystech \n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('phystech')\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['conservazione'] = csvProt['conservazione'] + ' | ' + nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt['conservazione'] = nodeContent\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e24 Note\n",
|
|
|
|
+ " if('note' in tags):\n",
|
|
|
|
+ " csvProt['nota'] = nodeContent\n",
|
|
|
|
+ " \n",
|
|
|
|
+ " # e26 Oggetto digitale allegato (nome)\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " ii = tags.index('daoloc')\n",
|
|
|
|
+ " out = attributes[ii]['title']\n",
|
|
|
|
+ " try:\n",
|
|
|
|
+ " csvProt['oggetto_digitale'] = csvProt['oggetto_digitale'] + ' | ' + out\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " csvProt['oggetto_digitale'] = out\n",
|
|
|
|
+ " except:\n",
|
|
|
|
+ " pass\n",
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ " return csvProt\n",
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "markdown",
|
|
|
|
- "metadata": {},
|
|
|
|
- "source": [
|
|
|
|
- "*Rinse & Repeat* con i livelli *series*, *subfonds* e *fonds*"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 15,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.14042901992797852\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "seriesKeys = set()\n",
|
|
|
|
- "for ii in range(len(allCs2['series'])):\n",
|
|
|
|
- " test = allCs2['series'][ii]\n",
|
|
|
|
- " seriesKeys = seriesKeys.union( traduttoreItem(test).keys() )\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "seriesHeader = OrderedDict()\n",
|
|
+ "# Di pari passo alla funzione, definisco un dict contenente tutti gli header;\n",
|
|
- "for key in itemHeader:\n",
|
|
+ "# servirà per il CSV.\n",
|
|
- " if(key in seriesKeys):\n",
|
|
+ "itemHeader = OrderedDict()\n",
|
|
- " seriesHeader[key] = itemHeader[key]\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
|
|
+ "# e1 ID dell'entità\n",
|
|
|
|
+ "itemHeader.update({'id': '<c level=\"X\" id=#>'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_series.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "# e2 Audience: external o internal\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(seriesHeader.keys()))\n",
|
|
+ "itemHeader.update({'audience': '<c level=\"#\" audience=#>'})\n",
|
|
- " writer.writeheader()\n",
|
|
|
|
- " writer.writerow(seriesHeader)\n",
|
|
|
|
- " for ii in range(len(allCs2['series'])):\n",
|
|
|
|
- " test = allCs2['series'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ "# e3 Otherlevel\n",
|
|
- ]
|
|
+ "itemHeader.update({'altro_livello': '<c otherlevel=#>'})\n",
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 16,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.004575967788696289\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "subfondsKeys = set()\n",
|
|
+ "# e4 Repository (qui dovrebbe essere sempre l'Archivio di Prato)\n",
|
|
- "for ii in range(len(allCs2['subfonds'])):\n",
|
|
+ "itemHeader.update({'repository': '<repository>#'})\n",
|
|
- " test = allCs2['subfonds'][ii]\n",
|
|
|
|
- " subfondsKeys = subfondsKeys.union( traduttoreItem(test).keys() )\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "subfondsHeader = OrderedDict()\n",
|
|
+ "# e8 Tipologia\n",
|
|
- "for key in itemHeader:\n",
|
|
+ "itemHeader.update({'tipologia': '<materialspec label=\"tipologia\">#'})\n",
|
|
- " if(key in subfondsKeys):\n",
|
|
|
|
- " subfondsHeader[key] = itemHeader[key]\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
|
|
+ "# e9 Segnatura attuale\n",
|
|
|
|
+ "itemHeader.update({'segnatura_attuale': '<num type=\"nuovo ordinamento\">#'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_subfonds.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "# e9 Segnatura precedente\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(subfondsHeader.keys()))\n",
|
|
+ "itemHeader.update({'segnatura_precedente': '<odd>#'})\n",
|
|
- " writer.writeheader()\n",
|
|
|
|
- " writer.writerow(subfondsHeader)\n",
|
|
|
|
- " for ii in range(len(allCs2['subfonds'])):\n",
|
|
|
|
- " test = allCs2['subfonds'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ "# e11 Titolo ASPO\n",
|
|
- ]
|
|
+ "itemHeader.update({'titolo_aspo': '<unittitle>#'})\n",
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 17,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.006090879440307617\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "fondsKeys = set()\n",
|
|
+ "# e12 Scope content, head & body\n",
|
|
- "for ii in range(len(allCs2['fonds'])):\n",
|
|
+ "itemHeader.update(\n",
|
|
- " test = allCs2['fonds'][ii]\n",
|
|
+ "{'scope-content_head': '<scopecontent><head>#',\n",
|
|
- " fondsKeys = fondsKeys.union( traduttoreItem(test).keys() )\n",
|
|
+ " 'scope-content_body': '<scopecontent><p>#'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "fondsHeader = OrderedDict()\n",
|
|
+ "# e14 Nome della compagnia\n",
|
|
- "for key in itemHeader:\n",
|
|
+ "itemHeader.update({'compagnia': '<corpname>#'})\n",
|
|
- " if(key in fondsKeys):\n",
|
|
|
|
- " fondsHeader[key] = itemHeader[key]\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
|
|
+ "# e15 Soggetto\n",
|
|
|
|
+ "itemHeader.update({'soggetto': '<subject>#'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_fonds.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "# e16 Persona\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(fondsHeader.keys()))\n",
|
|
+ "itemHeader.update({'persona': '<persname authfilenumber=#>#'})\n",
|
|
- " writer.writeheader()\n",
|
|
|
|
- " writer.writerow(fondsHeader)\n",
|
|
|
|
- " for ii in range(len(allCs2['fonds'])):\n",
|
|
|
|
- " test = allCs2['fonds'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ "# e17 Date\n",
|
|
- ]
|
|
+ "itemHeader.update(\n",
|
|
- },
|
|
+ "{'data': '<date>#'})\n",
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 18,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "name": "stdout",
|
|
|
|
- "output_type": "stream",
|
|
|
|
- "text": [
|
|
|
|
- "Tempo trascorso: 0.001628875732421875\n"
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "collectionKeys = set()\n",
|
|
+ "# e18 Data 1: periodo\n",
|
|
- "for ii in range(len(allCs2['collection'])):\n",
|
|
+ "itemHeader.update({'data_periodo': '<unitdate>#'})\n",
|
|
- " test = allCs2['collection'][ii]\n",
|
|
+ "\n",
|
|
- " collectionKeys = collectionKeys.union( traduttoreItem(test).keys() )\n",
|
|
+ "# e20 Supporto fisico\n",
|
|
|
|
+ "itemHeader.update({'supporto': '<physfacet type=\"supporto\">#'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "collectionHeader = OrderedDict()\n",
|
|
+ "# e21 descrizione fisica\n",
|
|
- "for key in itemHeader:\n",
|
|
+ "itemHeader.update({'numero': '<extent>#'})\n",
|
|
- " if(key in collectionKeys):\n",
|
|
+ "itemHeader.update({'genere': '<genreform>#'})\n",
|
|
- " collectionHeader[key] = itemHeader[key]\n",
|
|
+ "# e21 dimensions\n",
|
|
|
|
+ "itemHeader.update({'dimensione_altezza_larghezza_spessore': '<dimensions>#'})\n",
|
|
"\n",
|
|
"\n",
|
|
|
|
+ "# e22 Phystech\n",
|
|
|
|
+ "itemHeader.update({'conservazione': '<phystech>#'})\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_collection.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "# e23 Consistenza\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(collectionHeader.keys()))\n",
|
|
+ "itemHeader.update({'consistenza': '<extent unit=#1>#2, #1: #2'})\n",
|
|
- " writer.writeheader()\n",
|
|
|
|
- " writer.writerow(collectionHeader)\n",
|
|
|
|
- " for ii in range(len(allCs2['collection'])):\n",
|
|
|
|
- " test = allCs2['collection'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ "# 24 Note\n",
|
|
|
|
+ "itemHeader.update({'nota': '<note>#'})\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "# e26 Oggetto digitale allegato (nome)\n",
|
|
|
|
+ "itemHeader.update({'oggetto_digitale': '<daoloc title=#>'})\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "#0: Le varie id dei nodi parent\n",
|
|
|
|
+ "itemHeader.update(\n",
|
|
|
|
+ "{'id_subfonds': '<c level=\"subfonds\" id=#>',\n",
|
|
|
|
+ " 'id_fonds': '<c level=\"fonds\" id=#>',\n",
|
|
|
|
+ " 'id_series': '<c level=\"series\" id=#>',\n",
|
|
|
|
+ " 'id_subseries': '<c level=\"subseries\" id=#>',\n",
|
|
|
|
+ " 'id_recordgrp': '<c level=\"recordgrp\" id=#>',\n",
|
|
|
|
+ " 'id_otherlevel': '<c level=\"otherlevel\" id=# otherlevel=\"subfile\">',\n",
|
|
|
|
+ " 'id_collection': '<c level=\"collection\" id=#>',\n",
|
|
|
|
+ " 'id_subgrp': '<c level=\"subgrp\" id=#>',\n",
|
|
|
|
+ " 'id_collection': '<c level=\"collection\" id=#>',\n",
|
|
|
|
+ " 'id_file': '<c level=\"file\" id=#>'})"
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 19,
|
|
+ "execution_count": 12,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [
|
|
"outputs": [
|
|
{
|
|
{
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "Tempo trascorso: 0.003462076187133789\n"
|
|
+ "id_fonds: IT-ASPO-ST00005-0000002\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "id_series: IT-ASPO-ST00005-0000003\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "id: IT-ASPO-ST00005-0000004\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "audience: external\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "titolo_aspo: \"N.2 1420. Testamento di mona Margherita Buri moglie di Paolo Saccagnini con obbligo a' suoi figliuoli eredi di fare ogni anno in S. Francesco la festa di S. Antonio da Padova\"\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "data_periodo: 1420 nov. 19\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "segnatura_attuale: 1\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "genere: pergamena\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "dimensione_altezza_larghezza_spessore: 370 | 255 | 20\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "persona: {\"nome\": \"Buri Margherita di Bartolomeo\", \"authID\": \"IT-ASPO-AU00002-0001222\"} | {\"nome\": \"Saccagnini Paolo di Vanni da Pratolino\", \"authID\": \"IT-ASPO-AU00002-0001014\"} | {\"nome\": \"Bandini Paolo di ser Vannozzo\", \"authID\": \"IT-ASPO-AU00002-0001330\"}\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "scope-content_body: Atto rogato da Paolo di ser Vannozzo Bandini da Prato.\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "conservazione: buona\n",
|
|
|
|
+ "\n",
|
|
|
|
+ "segnatura_precedente: 2996/5\n",
|
|
|
|
+ "\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
"source": [
|
|
"source": [
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
+ "test = allCs2['file'][0]\n",
|
|
- "\n",
|
|
+ "toShow = traduttoreItem(test)\n",
|
|
- "subSeriesKeys = set()\n",
|
|
+ "for key in toShow.keys():\n",
|
|
- "for ii in range(len(allCs2['recordgrp'])):\n",
|
|
+ " print(key + ': ' + str(toShow[key]))\n",
|
|
- " test = allCs2['recordgrp'][ii]\n",
|
|
+ " print()"
|
|
- " subSeriesKeys = subSeriesKeys.union( traduttoreItem(test).keys() )\n",
|
|
+ ]
|
|
- "\n",
|
|
+ },
|
|
- "subSeriesHeader = OrderedDict()\n",
|
|
+ {
|
|
- "for key in itemHeader:\n",
|
|
+ "cell_type": "markdown",
|
|
- " if(key in subSeriesKeys):\n",
|
|
+ "metadata": {},
|
|
- " subSeriesHeader[key] = itemHeader[key]\n",
|
|
+ "source": [
|
|
- "\n",
|
|
+ "# Export\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_recordgrp.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "### -- questo serve **dopo**\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(subSeriesHeader.keys()))\n",
|
|
|
|
- " writer.writeheader()\n",
|
|
|
|
- " writer.writerow(subSeriesHeader)\n",
|
|
|
|
- " for ii in range(len(allCs2['recordgrp'])):\n",
|
|
|
|
- " test = allCs2['recordgrp'][ii]\n",
|
|
|
|
- " writer.writerow(traduttoreItem(test))\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
- "print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
+ "Produciamo il CSV per gli item tracciando, al solito, il tempo impiegato."
|
|
]
|
|
]
|
|
},
|
|
},
|
|
{
|
|
{
|
|
"cell_type": "code",
|
|
"cell_type": "code",
|
|
- "execution_count": 20,
|
|
+ "execution_count": 12,
|
|
"metadata": {},
|
|
"metadata": {},
|
|
"outputs": [
|
|
"outputs": [
|
|
{
|
|
{
|
|
"name": "stdout",
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"text": [
|
|
- "Tempo trascorso: 0.1351768970489502\n"
|
|
+ "Tempo trascorso: 1.894237995147705\n"
|
|
]
|
|
]
|
|
}
|
|
}
|
|
],
|
|
],
|
|
"source": [
|
|
"source": [
|
|
- "ts1 = datetime.timestamp(datetime.now())\n",
|
|
+ "# Do it! Export del CSV - items.\n",
|
|
- "\n",
|
|
|
|
- "otherlevelKeys = set()\n",
|
|
|
|
- "for ii in range(len(allCs2['otherlevel'])):\n",
|
|
|
|
- " test = allCs2['otherlevel'][ii]\n",
|
|
|
|
- " otherlevelKeys = otherlevelKeys.union( traduttoreItem(test).keys() )\n",
|
|
|
|
- "\n",
|
|
|
|
- "otherlevelHeader = OrderedDict()\n",
|
|
|
|
- "for key in itemHeader:\n",
|
|
|
|
- " if(key in otherlevelKeys):\n",
|
|
|
|
- " otherlevelHeader[key] = itemHeader[key]\n",
|
|
|
|
"\n",
|
|
"\n",
|
|
|
|
+ "ts1 = datetime.timestamp(datetime.now())\n",
|
|
"\n",
|
|
"\n",
|
|
- "with open(export_dir + \"data_otherlevel.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
+ "# Apro il file per l'export\n",
|
|
- " writer = csv.DictWriter(csv_file, fieldnames=list(otherlevelHeader.keys()))\n",
|
|
+ "with open(export_dir + \"data_file.csv\", \"w\", newline=\"\") as csv_file:\n",
|
|
|
|
+ " # Definisco la classe-motore per l'export\n",
|
|
|
|
+ " writer = csv.DictWriter(csv_file, fieldnames=list(itemHeader.keys()))\n",
|
|
|
|
+ " # Scrivo l'intestazione\n",
|
|
" writer.writeheader()\n",
|
|
" writer.writeheader()\n",
|
|
- " writer.writerow(otherlevelHeader)\n",
|
|
+ " # Scrivo la seconda riga, esplicativa\n",
|
|
- " for ii in range(len(allCs2['otherlevel'])):\n",
|
|
+ " writer.writerow(itemHeader)\n",
|
|
- " test = allCs2['otherlevel'][ii]\n",
|
|
+ " # Scrivo gli item tradotti, uno a uno\n",
|
|
|
|
+ " for ii in range(len(allCs2['file'])):\n",
|
|
|
|
+ " test = allCs2['file'][ii]\n",
|
|
" writer.writerow(traduttoreItem(test))\n",
|
|
" writer.writerow(traduttoreItem(test))\n",
|
|
"\n",
|
|
"\n",
|
|
"print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
"print('Tempo trascorso:', datetime.timestamp(datetime.now()) - ts1)"
|
|
]
|
|
]
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 21,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "data": {
|
|
|
|
- "text/plain": [
|
|
|
|
- "{'altro_livello',\n",
|
|
|
|
- " 'audience',\n",
|
|
|
|
- " 'conservazione',\n",
|
|
|
|
- " 'data_periodo',\n",
|
|
|
|
- " 'dimensione_altezza_larghezza_spessore',\n",
|
|
|
|
- " 'genere',\n",
|
|
|
|
- " 'id',\n",
|
|
|
|
- " 'id_file',\n",
|
|
|
|
- " 'id_fonds',\n",
|
|
|
|
- " 'id_recordgrp',\n",
|
|
|
|
- " 'id_series',\n",
|
|
|
|
- " 'id_subfonds',\n",
|
|
|
|
- " 'id_subgrp',\n",
|
|
|
|
- " 'id_subseries',\n",
|
|
|
|
- " 'nota',\n",
|
|
|
|
- " 'numero',\n",
|
|
|
|
- " 'persona',\n",
|
|
|
|
- " 'scope-content_body',\n",
|
|
|
|
- " 'segnatura_attuale',\n",
|
|
|
|
- " 'segnatura_precedente',\n",
|
|
|
|
- " 'supporto',\n",
|
|
|
|
- " 'titolo_aspo'}"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- "execution_count": 21,
|
|
|
|
- "metadata": {},
|
|
|
|
- "output_type": "execute_result"
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "otherlevelKeys = set()\n",
|
|
|
|
- "for ii in range(len(allCs2['otherlevel'])):\n",
|
|
|
|
- " test = allCs2['otherlevel'][ii]\n",
|
|
|
|
- " otherlevelKeys = otherlevelKeys.union( traduttoreItem(test).keys() )\n",
|
|
|
|
- "\n",
|
|
|
|
- "otherlevelKeys"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 22,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "data": {
|
|
|
|
- "text/plain": [
|
|
|
|
- "odict_keys(['id', 'audience', 'altro_livello', 'repository', 'tipologia', 'segnatura_attuale', 'segnatura_precedente', 'titolo_aspo', 'scope-content_head', 'scope-content_body', 'compagnia', 'soggetto', 'persona', 'data', 'data_periodo', 'supporto', 'numero', 'genere', 'dimensione_altezza_larghezza_spessore', 'conservazione', 'consistenza', 'nota', 'oggetto_digitale', 'id_subfonds', 'id_fonds', 'id_series', 'id_subseries', 'id_recordgrp', 'id_otherlevel', 'id_collection', 'id_subgrp', 'id_file'])"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- "execution_count": 22,
|
|
|
|
- "metadata": {},
|
|
|
|
- "output_type": "execute_result"
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "otherlevelHeader = OrderedDict()\n",
|
|
|
|
- "for key in itemHeader:\n",
|
|
|
|
- " if(key in otherlevelKeys):\n",
|
|
|
|
- " otherlevelHeader[key] = itemHeader[key]\n",
|
|
|
|
- "\n",
|
|
|
|
- "otherlevelHeader\n",
|
|
|
|
- "\n",
|
|
|
|
- "itemHeader.keys()"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 23,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "data": {
|
|
|
|
- "text/plain": [
|
|
|
|
- "OrderedDict([('id', '<c level=\"X\" id=#>'),\n",
|
|
|
|
- " ('audience', '<c level=\"#\" audience=#>'),\n",
|
|
|
|
- " ('altro_livello', '<c otherlevel=#>'),\n",
|
|
|
|
- " ('segnatura_attuale', '<num type=\"nuovo ordinamento\">#'),\n",
|
|
|
|
- " ('segnatura_precedente', '<odd>#'),\n",
|
|
|
|
- " ('titolo_aspo', '<unittitle>#'),\n",
|
|
|
|
- " ('scope-content_body', '<scopecontent><p>#'),\n",
|
|
|
|
- " ('persona', '<persname authfilenumber=#>#'),\n",
|
|
|
|
- " ('data_periodo', '<unitdate>#'),\n",
|
|
|
|
- " ('supporto', '<physfacet type=\"supporto\">#'),\n",
|
|
|
|
- " ('numero', '<extent>#'),\n",
|
|
|
|
- " ('genere', '<genreform>#'),\n",
|
|
|
|
- " ('dimensione_altezza_larghezza_spessore', '<dimensions>#'),\n",
|
|
|
|
- " ('conservazione', '<phystech>#'),\n",
|
|
|
|
- " ('nota', '<note>#'),\n",
|
|
|
|
- " ('id_subfonds', '<c level=\"subfonds\" id=#>'),\n",
|
|
|
|
- " ('id_fonds', '<c level=\"fonds\" id=#>'),\n",
|
|
|
|
- " ('id_series', '<c level=\"series\" id=#>'),\n",
|
|
|
|
- " ('id_subseries', '<c level=\"subseries\" id=#>'),\n",
|
|
|
|
- " ('id_recordgrp', '<c level=\"recordgrp\" id=#>'),\n",
|
|
|
|
- " ('id_subgrp', '<c level=\"subgrp\" id=#>'),\n",
|
|
|
|
- " ('id_file', '<c level=\"file\" id=#>')])"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- "execution_count": 23,
|
|
|
|
- "metadata": {},
|
|
|
|
- "output_type": "execute_result"
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "otherlevelHeader"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- "cell_type": "code",
|
|
|
|
- "execution_count": 24,
|
|
|
|
- "metadata": {},
|
|
|
|
- "outputs": [
|
|
|
|
- {
|
|
|
|
- "data": {
|
|
|
|
- "text/plain": [
|
|
|
|
- "OrderedDict([('id', '<c level=\"X\" id=#>'),\n",
|
|
|
|
- " ('audience', '<c level=\"#\" audience=#>'),\n",
|
|
|
|
- " ('altro_livello', '<c otherlevel=#>'),\n",
|
|
|
|
- " ('repository', '<repository>#'),\n",
|
|
|
|
- " ('tipologia', '<materialspec label=\"tipologia\">#'),\n",
|
|
|
|
- " ('segnatura_attuale', '<num type=\"nuovo ordinamento\">#'),\n",
|
|
|
|
- " ('segnatura_precedente', '<odd>#'),\n",
|
|
|
|
- " ('titolo_aspo', '<unittitle>#'),\n",
|
|
|
|
- " ('scope-content_head', '<scopecontent><head>#'),\n",
|
|
|
|
- " ('scope-content_body', '<scopecontent><p>#'),\n",
|
|
|
|
- " ('compagnia', '<corpname>#'),\n",
|
|
|
|
- " ('soggetto', '<subject>#'),\n",
|
|
|
|
- " ('persona', '<persname authfilenumber=#>#'),\n",
|
|
|
|
- " ('data', '<date>#'),\n",
|
|
|
|
- " ('data_periodo', '<unitdate>#'),\n",
|
|
|
|
- " ('supporto', '<physfacet type=\"supporto\">#'),\n",
|
|
|
|
- " ('numero', '<extent>#'),\n",
|
|
|
|
- " ('genere', '<genreform>#'),\n",
|
|
|
|
- " ('dimensione_altezza_larghezza_spessore', '<dimensions>#'),\n",
|
|
|
|
- " ('conservazione', '<phystech>#'),\n",
|
|
|
|
- " ('consistenza', '<extent unit=#1>#2, #1: #2'),\n",
|
|
|
|
- " ('nota', '<note>#'),\n",
|
|
|
|
- " ('oggetto_digitale', '<daoloc title=#>'),\n",
|
|
|
|
- " ('id_subfonds', '<c level=\"subfonds\" id=#>'),\n",
|
|
|
|
- " ('id_fonds', '<c level=\"fonds\" id=#>'),\n",
|
|
|
|
- " ('id_series', '<c level=\"series\" id=#>'),\n",
|
|
|
|
- " ('id_subseries', '<c level=\"subseries\" id=#>'),\n",
|
|
|
|
- " ('id_recordgrp', '<c level=\"recordgrp\" id=#>'),\n",
|
|
|
|
- " ('id_otherlevel',\n",
|
|
|
|
- " '<c level=\"otherlevel\" id=# otherlevel=\"subfile\">'),\n",
|
|
|
|
- " ('id_collection', '<c level=\"collection\" id=#>'),\n",
|
|
|
|
- " ('id_subgrp', '<c level=\"subgrp\" id=#>'),\n",
|
|
|
|
- " ('id_file', '<c level=\"file\" id=#>')])"
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- "execution_count": 24,
|
|
|
|
- "metadata": {},
|
|
|
|
- "output_type": "execute_result"
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- "source": [
|
|
|
|
- "itemHeader"
|
|
|
|
- ]
|
|
|
|
}
|
|
}
|
|
],
|
|
],
|
|
"metadata": {
|
|
"metadata": {
|