diff --git a/src/transformers/transformers.py b/src/transformers/transformers.py index 0a8434d..28a2963 100644 --- a/src/transformers/transformers.py +++ b/src/transformers/transformers.py @@ -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, )