"
],
"text/plain": [
- " Systemnummer MMS-ID Volltext Barcode VerfasserGND ; GND-ID \\\n",
- "AC09771400 NaN NaN NaN NaN NaN \n",
- "AC09787927 NaN NaN NaN NaN NaN \n",
- "AC09792016 NaN NaN NaN NaN NaN \n",
- "AC09792044 NaN NaN NaN NaN NaN \n",
- "AC09792047 NaN NaN NaN NaN NaN \n",
- "AC09792499 NaN NaN NaN NaN NaN \n",
- "AC09806083 NaN NaN NaN NaN NaN \n",
- "AC09954400 NaN NaN NaN NaN NaN \n",
- "AC09960983 NaN NaN NaN NaN NaN \n",
- "AC09996631 NaN NaN NaN NaN NaN \n",
- "AC10011007 NaN NaN NaN NaN NaN \n",
- "AC10011543 NaN NaN NaN NaN NaN \n",
- "AC10443086 NaN NaN NaN NaN NaN \n",
- "AC13781340 NaN NaN NaN NaN NaN \n",
- "AC15228519 NaN NaN NaN NaN NaN \n",
- "AC07921482 NaN NaN NaN NaN NaN \n",
- "AC08512822 NaN NaN NaN NaN NaN \n",
- "AC15245305 NaN NaN NaN NaN NaN \n",
- "AC15245267 NaN NaN NaN NaN NaN \n",
- "AC15245255 NaN NaN NaN NaN NaN \n",
- "AC10457848 NaN NaN NaN NaN NaN \n",
- "AC09626715 NaN NaN NaN NaN NaN \n",
- "AC09626717 NaN NaN NaN NaN NaN \n",
- "AC09627140 NaN NaN NaN NaN NaN \n",
- "AC09627175 NaN NaN NaN NaN NaN \n",
- "AC09627176 NaN NaN NaN NaN NaN \n",
- "AC09627177 NaN NaN NaN NaN NaN \n",
- "AC10480538 NaN NaN NaN NaN NaN \n",
- "AC09629087 NaN NaN NaN NaN NaN \n",
- "AC09629088 NaN NaN NaN NaN NaN \n",
- "AC08886350 NaN NaN NaN NaN NaN \n",
- "AC09633292 NaN NaN NaN NaN NaN \n",
- "AC09635585 NaN NaN NaN NaN NaN \n",
- "AC09636834 NaN NaN NaN NaN NaN \n",
- "AC09636837 NaN NaN NaN NaN NaN \n",
- "AC07152452 NaN NaN NaN NaN NaN \n",
- "AC11450226 NaN NaN NaN NaN NaN \n",
- "\n",
- " Werktitel Reihentitel ; Bandzählung \\\n",
- "AC09771400 NaN NaN \n",
- "AC09787927 NaN NaN \n",
- "AC09792016 NaN NaN \n",
- "AC09792044 NaN NaN \n",
- "AC09792047 NaN NaN \n",
- "AC09792499 NaN NaN \n",
- "AC09806083 NaN NaN \n",
- "AC09954400 NaN NaN \n",
- "AC09960983 NaN NaN \n",
- "AC09996631 NaN NaN \n",
- "AC10011007 NaN NaN \n",
- "AC10011543 NaN NaN \n",
- "AC10443086 NaN NaN \n",
- "AC13781340 NaN NaN \n",
- "AC15228519 NaN NaN \n",
- "AC07921482 NaN NaN \n",
- "AC08512822 NaN NaN \n",
- "AC15245305 NaN NaN \n",
- "AC15245267 NaN NaN \n",
- "AC15245255 NaN NaN \n",
- "AC10457848 NaN NaN \n",
- "AC09626715 NaN NaN \n",
- "AC09626717 NaN NaN \n",
- "AC09627140 NaN NaN \n",
- "AC09627175 NaN NaN \n",
- "AC09627176 NaN NaN \n",
- "AC09627177 NaN NaN \n",
- "AC10480538 NaN NaN \n",
- "AC09629087 NaN NaN \n",
- "AC09629088 NaN NaN \n",
- "AC08886350 NaN NaN \n",
- "AC09633292 NaN NaN \n",
- "AC09635585 NaN NaN \n",
- "AC09636834 NaN NaN \n",
- "AC09636837 NaN NaN \n",
- "AC07152452 NaN NaN \n",
- "AC11450226 NaN NaN \n",
- "\n",
- " Haupttitel ; Titelzusatz ; Verantwortlichkeitsangabe \\\n",
- "AC09771400 NaN \n",
- "AC09787927 NaN \n",
- "AC09792016 NaN \n",
- "AC09792044 NaN \n",
- "AC09792047 NaN \n",
- "AC09792499 NaN \n",
- "AC09806083 NaN \n",
- "AC09954400 NaN \n",
- "AC09960983 NaN \n",
- "AC09996631 NaN \n",
- "AC10011007 NaN \n",
- "AC10011543 NaN \n",
- "AC10443086 NaN \n",
- "AC13781340 NaN \n",
- "AC15228519 NaN \n",
- "AC07921482 NaN \n",
- "AC08512822 NaN \n",
- "AC15245305 NaN \n",
- "AC15245267 NaN \n",
- "AC15245255 NaN \n",
- "AC10457848 NaN \n",
- "AC09626715 NaN \n",
- "AC09626717 NaN \n",
- "AC09627140 NaN \n",
- "AC09627175 NaN \n",
- "AC09627176 NaN \n",
- "AC09627177 NaN \n",
- "AC10480538 NaN \n",
- "AC09629087 NaN \n",
- "AC09629088 NaN \n",
- "AC08886350 NaN \n",
- "AC09633292 NaN \n",
- "AC09635585 NaN \n",
- "AC09636834 NaN \n",
- "AC09636837 NaN \n",
- "AC07152452 NaN \n",
- "AC11450226 NaN \n",
- "\n",
- " Bandzählung ; Titel des Bandes Ausgabe ... \\\n",
- "AC09771400 NaN NaN ... \n",
- "AC09787927 NaN NaN ... \n",
- "AC09792016 NaN NaN ... \n",
- "AC09792044 NaN NaN ... \n",
- "AC09792047 NaN NaN ... \n",
- "AC09792499 NaN NaN ... \n",
- "AC09806083 NaN NaN ... \n",
- "AC09954400 NaN NaN ... \n",
- "AC09960983 NaN NaN ... \n",
- "AC09996631 NaN NaN ... \n",
- "AC10011007 NaN NaN ... \n",
- "AC10011543 NaN NaN ... \n",
- "AC10443086 NaN NaN ... \n",
- "AC13781340 NaN NaN ... \n",
- "AC15228519 NaN NaN ... \n",
- "AC07921482 NaN NaN ... \n",
- "AC08512822 NaN NaN ... \n",
- "AC15245305 NaN NaN ... \n",
- "AC15245267 NaN NaN ... \n",
- "AC15245255 NaN NaN ... \n",
- "AC10457848 NaN NaN ... \n",
- "AC09626715 NaN NaN ... \n",
- "AC09626717 NaN NaN ... \n",
- "AC09627140 NaN NaN ... \n",
- "AC09627175 NaN NaN ... \n",
- "AC09627176 NaN NaN ... \n",
- "AC09627177 NaN NaN ... \n",
- "AC10480538 NaN NaN ... \n",
- "AC09629087 NaN NaN ... \n",
- "AC09629088 NaN NaN ... \n",
- "AC08886350 NaN NaN ... \n",
- "AC09633292 NaN NaN ... \n",
- "AC09635585 NaN NaN ... \n",
- "AC09636834 NaN NaN ... \n",
- "AC09636837 NaN NaN ... \n",
- "AC07152452 NaN NaN ... \n",
- "AC11450226 NaN NaN ... \n",
- "\n",
- " Widmungsempfänger ; GND-ID Art des Inhalts Inhalt \\\n",
- "AC09771400 NaN NaN NaN \n",
- "AC09787927 NaN NaN NaN \n",
- "AC09792016 NaN NaN NaN \n",
- "AC09792044 NaN NaN NaN \n",
- "AC09792047 NaN NaN NaN \n",
- "AC09792499 NaN NaN NaN \n",
- "AC09806083 NaN NaN NaN \n",
- "AC09954400 NaN NaN NaN \n",
- "AC09960983 NaN NaN NaN \n",
- "AC09996631 NaN NaN NaN \n",
- "AC10011007 NaN NaN NaN \n",
- "AC10011543 NaN NaN NaN \n",
- "AC10443086 NaN NaN NaN \n",
- "AC13781340 NaN NaN NaN \n",
- "AC15228519 NaN NaN NaN \n",
- "AC07921482 NaN NaN NaN \n",
- "AC08512822 NaN NaN NaN \n",
- "AC15245305 NaN NaN NaN \n",
- "AC15245267 NaN NaN NaN \n",
- "AC15245255 NaN NaN NaN \n",
- "AC10457848 NaN NaN NaN \n",
- "AC09626715 NaN NaN NaN \n",
- "AC09626717 NaN NaN NaN \n",
- "AC09627140 NaN NaN NaN \n",
- "AC09627175 NaN NaN NaN \n",
- "AC09627176 NaN NaN NaN \n",
- "AC09627177 NaN NaN NaN \n",
- "AC10480538 NaN NaN NaN \n",
- "AC09629087 NaN NaN NaN \n",
- "AC09629088 NaN NaN NaN \n",
- "AC08886350 NaN NaN NaN \n",
- "AC09633292 NaN NaN NaN \n",
- "AC09635585 NaN NaN NaN \n",
- "AC09636834 NaN NaN NaN \n",
- "AC09636837 NaN NaN NaN \n",
- "AC07152452 NaN NaN NaN \n",
- "AC11450226 NaN NaN NaN \n",
- "\n",
- " Werke in Relation Schlagworte Marker Zusammenstellung Signatur \\\n",
- "AC09771400 NaN NaN NaN NaN NaN \n",
- "AC09787927 NaN NaN NaN NaN NaN \n",
- "AC09792016 NaN NaN NaN NaN NaN \n",
- "AC09792044 NaN NaN NaN NaN NaN \n",
- "AC09792047 NaN NaN NaN NaN NaN \n",
- "AC09792499 NaN NaN NaN NaN NaN \n",
- "AC09806083 NaN NaN NaN NaN NaN \n",
- "AC09954400 NaN NaN NaN NaN NaN \n",
- "AC09960983 NaN NaN NaN NaN NaN \n",
- "AC09996631 NaN NaN NaN NaN NaN \n",
- "AC10011007 NaN NaN NaN NaN NaN \n",
- "AC10011543 NaN NaN NaN NaN NaN \n",
- "AC10443086 NaN NaN NaN NaN NaN \n",
- "AC13781340 NaN NaN NaN NaN NaN \n",
- "AC15228519 NaN NaN NaN NaN NaN \n",
- "AC07921482 NaN NaN NaN NaN NaN \n",
- "AC08512822 NaN NaN NaN NaN NaN \n",
- "AC15245305 NaN NaN NaN NaN NaN \n",
- "AC15245267 NaN NaN NaN NaN NaN \n",
- "AC15245255 NaN NaN NaN NaN NaN \n",
- "AC10457848 NaN NaN NaN NaN NaN \n",
- "AC09626715 NaN NaN NaN NaN NaN \n",
- "AC09626717 NaN NaN NaN NaN NaN \n",
- "AC09627140 NaN NaN NaN NaN NaN \n",
- "AC09627175 NaN NaN NaN NaN NaN \n",
- "AC09627176 NaN NaN NaN NaN NaN \n",
- "AC09627177 NaN NaN NaN NaN NaN \n",
- "AC10480538 NaN NaN NaN NaN NaN \n",
- "AC09629087 NaN NaN NaN NaN NaN \n",
- "AC09629088 NaN NaN NaN NaN NaN \n",
- "AC08886350 NaN NaN NaN NaN NaN \n",
- "AC09633292 NaN NaN NaN NaN NaN \n",
- "AC09635585 NaN NaN NaN NaN NaN \n",
- "AC09636834 NaN NaN NaN NaN NaN \n",
- "AC09636837 NaN NaN NaN NaN NaN \n",
- "AC07152452 NaN NaN NaN NaN NaN \n",
- "AC11450226 NaN NaN NaN NaN NaN \n",
- "\n",
- " Standort VD17 \n",
- "AC09771400 NaN NaN \n",
- "AC09787927 NaN NaN \n",
- "AC09792016 NaN NaN \n",
- "AC09792044 NaN NaN \n",
- "AC09792047 NaN NaN \n",
- "AC09792499 NaN NaN \n",
- "AC09806083 NaN NaN \n",
- "AC09954400 NaN NaN \n",
- "AC09960983 NaN NaN \n",
- "AC09996631 NaN NaN \n",
- "AC10011007 NaN NaN \n",
- "AC10011543 NaN NaN \n",
- "AC10443086 NaN NaN \n",
- "AC13781340 NaN NaN \n",
- "AC15228519 NaN NaN \n",
- "AC07921482 NaN NaN \n",
- "AC08512822 NaN NaN \n",
- "AC15245305 NaN NaN \n",
- "AC15245267 NaN NaN \n",
- "AC15245255 NaN NaN \n",
- "AC10457848 NaN NaN \n",
- "AC09626715 NaN NaN \n",
- "AC09626717 NaN NaN \n",
- "AC09627140 NaN NaN \n",
- "AC09627175 NaN NaN \n",
- "AC09627176 NaN NaN \n",
- "AC09627177 NaN NaN \n",
- "AC10480538 NaN NaN \n",
- "AC09629087 NaN NaN \n",
- "AC09629088 NaN NaN \n",
- "AC08886350 NaN NaN \n",
- "AC09633292 NaN NaN \n",
- "AC09635585 NaN NaN \n",
- "AC09636834 NaN NaN \n",
- "AC09636837 NaN NaN \n",
- "AC07152452 NaN NaN \n",
- "AC11450226 NaN NaN \n",
+ " old_value new_value\n",
+ "Systemnummer \n",
+ "AC03114611 990004456580603338 990004456580603136\n",
+ "AC03826205 990005906350603338 990005906350603264\n",
+ "AC09792500 990029473670603338 990029473670603264\n",
+ "AC09836279 990029921640603338 990029921640603136\n",
+ "AC07705435 990016481420603338 990016481420603136\n",
+ "... ... ...\n",
+ "AC14487653 990057677380603338 990057677380603136\n",
+ "AC14494673 990057713410603338 990057713410603264\n",
+ "AC14494679 990057713430603338 990057713430603264\n",
+ "AC06335423 990057719990603338 990057719990603264\n",
+ "AC14499956 990057728090603338 990057728090603264\n",
"\n",
- "[37 rows x 48 columns]"
+ "[479 rows x 2 columns]"
]
},
- "execution_count": 28,
+ "execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "new[new.Systemnummer.isna()]"
+ "mms_different"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Volltext"
]
},
{
@@ -2075,16 +1449,16 @@
"metadata": {},
"outputs": [],
"source": [
- "old[old.Systemnummer.in]"
+ "volltext_diff = compare('Volltext')"
]
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "import json"
+ "volltext_diff.old_value.is"
]
},
{
diff --git a/test/dataextractors/test_index.py b/test/dataextractors/test_index.py
index 2d48d4e39cd4a2f6ad5d28191ea704653fbfcf7e..29a6d4daa230a3c3deea82d8c8b306612510bee5 100644
--- a/test/dataextractors/test_index.py
+++ b/test/dataextractors/test_index.py
@@ -8,6 +8,7 @@ from travelogues_extraction.dataextractors.dataextractors.index import IndexSett
dummy_data = pd.read_excel('test/dummy_data/TravelogueD19_ALMAoutput_20200712.xlsx')
+
@pytest.mark.asyncio
async def test_index_and_mmsid():
reduced_series = dummy_data['Datensatznummer'][:25]
@@ -25,7 +26,9 @@ async def test_index_and_mmsid():
assert index_setter.target_dataframe.iloc[0, 0].startswith('AC')
await mmsid_extractor.write(record)
assert mmsid_extractor.target_dataframe.shape == (1, 2)
- assert index_setter.target_dataframe.iloc[0, 1][0].isdigit()
+ mmsid: str = index_setter.target_dataframe.iloc[0, 1]
+ assert mmsid.isdigit()
+ assert mmsid.endswith('331') or mmsid.endswith('338')
# once more in another style
@@ -37,11 +40,10 @@ async def test_index_and_mmsid():
for column, transformer in enumerate(transformers):
await transformer.write(record)
assert target_dataframe.shape == (index, 2)
- assert target_dataframe.iat[index -1, column].__class__ is str
+ assert target_dataframe.iat[index - 1, column].__class__ is str
+ print(target_dataframe.iat[index - 1, column])
index += 1
if index == 5:
break
-
-
diff --git a/test/getrecords/test_session.py b/test/getrecords/test_session.py
index d75562365146df87155cfd9e5cf86cb09295bcaf..2c173b499f45b8861738ddd070d29874e60f5a61 100644
--- a/test/getrecords/test_session.py
+++ b/test/getrecords/test_session.py
@@ -16,6 +16,7 @@ from travelogues_extraction.dataextractors.dataextractors.index import IndexSett
dummy_data = pd.read_excel('test/dummy_data/TravelogueD19_ALMAoutput_20200712.xlsx')
+
@pytest.mark.asyncio
async def test_record_retriever():
reduced_series = dummy_data['Datensatznummer'][:25]
diff --git a/travelogues_extraction/analytics/__init__.py b/travelogues_extraction/analytics/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/travelogues_extraction/analytics/compare.py b/travelogues_extraction/analytics/compare.py
new file mode 100644
index 0000000000000000000000000000000000000000..be0b3e7fda5bf88d77c6cc2eb469185de14b1472
--- /dev/null
+++ b/travelogues_extraction/analytics/compare.py
@@ -0,0 +1,13 @@
+import pandas as pd
+
+def compare(column: str, left: pd.DataFrame, right: pd.DataFrame) -> pd.DataFrame:
+ left_column = left[column]
+ right_column = right[column]
+ old_diff = left_column[left_column != right_column]
+ new_diff = right_column[left_column != right_column]
+ return pd.DataFrame({
+ 'old_value': old_diff,
+ 'new_value': new_diff,
+ }, index=old_diff.index)
+
+
diff --git a/travelogues_extraction/getrecords/session.py b/travelogues_extraction/getrecords/session.py
index 73e066d944a7d2cce39e9577167ab25c3a909ff8..f344285daf38f566e7d7973e4a831c4d46d29257 100644
--- a/travelogues_extraction/getrecords/session.py
+++ b/travelogues_extraction/getrecords/session.py
@@ -13,6 +13,7 @@ class RecordRetriever:
ac_list: typing.List[str]
session: httpx.AsyncClient
+ current_response: typing.Optional[httpx.Response]
url = 'https://obv-at-oenb.alma.exlibrisgroup.com/view/sru/43ACC_ONB'
@@ -31,6 +32,7 @@ class RecordRetriever:
self.all_ok = True # so far
self.session = session
self.sleep = 0.01
+ self.current_response = None
@dataclass
class Record:
@@ -51,7 +53,7 @@ class RecordRetriever:
try:
await asyncio.sleep(self.sleep)
- response = await self.session.get(url=self.url, params={
+ self.current_response = await self.session.get(url=self.url, params={
'startRecord': 1,
'maximumRecords': 1,
'query': f'alma.local_control_field_009={ac_number}',
@@ -72,7 +74,7 @@ class RecordRetriever:
self.sleep *= 1.3
try:
await asyncio.sleep(self.sleep)
- response = await self.session.get(url=self.url, params={
+ self.current_response = await self.session.get(url=self.url, params={
'startRecord': 1,
'maximumRecords': 1,
'query': f'alma.local_control_field_009={ac_number}',
@@ -100,21 +102,21 @@ class RecordRetriever:
sub_log = {
'ac_number': ac_number,
- 'status_code': response.status_code,
- 'url': response.url.full_path,
+ 'status_code': self.current_response.status_code,
+ 'url': self.current_response.url.full_path,
}
- if response.status_code != 200:
- sub_log['response_error_message'] = response.text
+ if self.current_response.status_code != 200:
+ sub_log['response_error_message'] = self.current_response.text
self.log.append(sub_log)
self.all_ok = False
return None
try:
- xml = lxmletree.fromstring(response.content)
+ xml = lxmletree.fromstring(self.current_response.content)
except Exception as e:
sub_log['lxml_error'] = e
- sub_log['content'] = response.content
+ sub_log['content'] = self.current_response.content
self.log.append(sub_log)
self.all_ok = False
return None