feat: enhance ARRAYData initialization and transform method with signature handling and data extraction improvements
This commit is contained in:
@@ -117,7 +117,8 @@ class BaseStruct:
|
|||||||
|
|
||||||
|
|
||||||
class ARRAYData:
|
class ARRAYData:
|
||||||
def __init__(self):
|
def __init__(self, signature=None) -> None:
|
||||||
|
self.signature = None
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def transform(self, data: str) -> BookData:
|
def transform(self, data: str) -> BookData:
|
||||||
@@ -216,20 +217,72 @@ class ARRAYData:
|
|||||||
titledata = data.split("[ti_long_f]")[1].split(")\n")[0].strip()
|
titledata = data.split("[ti_long_f]")[1].split(")\n")[0].strip()
|
||||||
title = titledata.split("=>")[1].strip().split("/")[0].strip()
|
title = titledata.split("=>")[1].strip().split("/")[0].strip()
|
||||||
return title
|
return title
|
||||||
|
|
||||||
|
def _get_adis_idn(data, signature):
|
||||||
|
loksatz_match = re.search(
|
||||||
|
r"\[loksatz\] => Array\s*\((.*?)\)", data, re.DOTALL
|
||||||
|
)
|
||||||
|
if loksatz_match:
|
||||||
|
loksatz_content = loksatz_match.group(1)
|
||||||
|
|
||||||
|
# Step 2: Extract JSON objects within the loksatz section
|
||||||
|
json_objects = re.findall(r"{.*?}", loksatz_content, re.DOTALL)
|
||||||
|
# Print each JSON object
|
||||||
|
for obj in json_objects:
|
||||||
|
data = eval(obj)
|
||||||
|
if data["signatur"] == signature:
|
||||||
|
return data["adis_idn"]
|
||||||
|
|
||||||
|
def _get_in_apparat(data):
|
||||||
|
loksatz_match = re.search(
|
||||||
|
r"\[loksatz\] => Array\s*\((.*?)\)", data, re.DOTALL
|
||||||
|
)
|
||||||
|
if loksatz_match:
|
||||||
|
loksatz_content = loksatz_match.group(1)
|
||||||
|
|
||||||
|
# Step 2: Extract JSON objects within the loksatz section
|
||||||
|
json_objects = re.findall(r"{.*?}", loksatz_content, re.DOTALL)
|
||||||
|
# Print each JSON object
|
||||||
|
for obj in json_objects:
|
||||||
|
data = eval(obj)
|
||||||
|
if data["ausleihcode"] == "R" and data["standort"] == "40":
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
ppn = _get_line(data, "[kid]")
|
||||||
|
title = _get_title(data).strip()
|
||||||
|
author = _get_author(data)
|
||||||
|
edition = _get_list_entry(data, "[ausgabe]", "[0]").replace(",", "")
|
||||||
|
link = f"https://rds.ibs-bw.de/phfreiburg/link?kid={_get_line(data,'[kid]')}"
|
||||||
|
isbn = _get_isbn(data)
|
||||||
|
# [self._get_list_entry(data,"[isbn]","[0]"),self._get_list_entry(data,"[is]","[1]")],
|
||||||
|
language = _get_list_entry(data, "[la_facet]", "[0]")
|
||||||
|
publisher = _get_list_entry(data, "[pu]", "[0]")
|
||||||
|
year = _get_list_entry(data, "[py_display]", "[0]")
|
||||||
|
pages = _get_list_entry(data, "[umfang]", "[0]").split(":")[0].strip()
|
||||||
|
signature = (
|
||||||
|
self.signature if self.signature is not None else _get_signature(data)
|
||||||
|
)
|
||||||
|
|
||||||
|
place = _get_list_entry(data, "[pp]", "[0]")
|
||||||
|
adis_idn = _get_adis_idn(data, signature=signature)
|
||||||
|
in_apparat = _get_in_apparat(data)
|
||||||
return BookData(
|
return BookData(
|
||||||
ppn=_get_line(data, "[kid]"),
|
ppn=ppn,
|
||||||
title=_get_title(data).strip(),
|
title=title,
|
||||||
author=_get_author(data),
|
author=author,
|
||||||
edition=_get_list_entry(data, "[ausgabe]", "[0]").replace(",", ""),
|
edition=edition,
|
||||||
link=f"https://rds.ibs-bw.de/phfreiburg/link?kid={_get_line(data,'[kid]')}",
|
link=link,
|
||||||
isbn=_get_isbn(data),
|
isbn=isbn,
|
||||||
# [self._get_list_entry(data,"[isbn]","[0]"),self._get_list_entry(data,"[is]","[1]")],
|
language=language,
|
||||||
language=_get_list_entry(data, "[la_facet]", "[0]"),
|
publisher=publisher,
|
||||||
publisher=_get_list_entry(data, "[pu]", "[0]"),
|
year=year,
|
||||||
year=_get_list_entry(data, "[py_display]", "[0]"),
|
pages=pages,
|
||||||
pages=_get_list_entry(data, "[umfang]", "[0]").split(":")[0].strip(),
|
signature=signature,
|
||||||
signature=_get_signature(data),
|
place=place,
|
||||||
place=_get_list_entry(data, "[pp]", "[0]"),
|
adis_idn=adis_idn,
|
||||||
|
in_apparat=in_apparat,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user