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:
|
||||
def __init__(self):
|
||||
def __init__(self, signature=None) -> None:
|
||||
self.signature = None
|
||||
pass
|
||||
|
||||
def transform(self, data: str) -> BookData:
|
||||
@@ -216,20 +217,72 @@ class ARRAYData:
|
||||
titledata = data.split("[ti_long_f]")[1].split(")\n")[0].strip()
|
||||
title = titledata.split("=>")[1].strip().split("/")[0].strip()
|
||||
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(
|
||||
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=_get_signature(data),
|
||||
place=_get_list_entry(data, "[pp]", "[0]"),
|
||||
ppn=ppn,
|
||||
title=title,
|
||||
author=author,
|
||||
edition=edition,
|
||||
link=link,
|
||||
isbn=isbn,
|
||||
language=language,
|
||||
publisher=publisher,
|
||||
year=year,
|
||||
pages=pages,
|
||||
signature=signature,
|
||||
place=place,
|
||||
adis_idn=adis_idn,
|
||||
in_apparat=in_apparat,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user