Skip to content

Commit 85dc55c

Browse files
committed
packages: open-alex refactor
1 parent 6084a36 commit 85dc55c

1 file changed

Lines changed: 38 additions & 34 deletions

File tree

colrev/packages/open_alex/src/open_alex_api.py

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -57,56 +57,53 @@ def _set_author_from_item(self, *, record_dict: dict, item: dict) -> None:
5757

5858
record_dict[Fields.AUTHOR] = " and ".join(author_list)
5959

60-
def _parse_item_to_record(self, *, item: dict) -> colrev.record.record.Record:
61-
def set_entrytype(*, record_dict: dict, item: dict) -> None:
62-
# pylint: disable=colrev-missed-constant-usage
63-
if "title" in record_dict and record_dict["title"] is None:
64-
del record_dict["title"]
65-
if item.get("type_crossref", "") == "proceedings-article":
66-
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.INPROCEEDINGS
67-
if (
68-
item.get("primary_location", None) is not None
69-
and item["primary_location"].get("source", None) is not None
70-
):
71-
display_name = item["primary_location"]["source"]["display_name"]
72-
if display_name != "Proceedings":
73-
record_dict[Fields.BOOKTITLE] = display_name
74-
elif item["type"] in ["journal-article", "article"]:
75-
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.ARTICLE
76-
if (
77-
item.get("primary_location", None) is not None
78-
and item["primary_location"].get("source", None) is not None
79-
):
80-
record_dict[Fields.JOURNAL] = item["primary_location"]["source"][
81-
"display_name"
82-
]
83-
else:
84-
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.MISC
85-
86-
record_dict = {}
87-
record_dict["id"] = item["id"].replace("https://openalex.org/", "")
60+
def _get_record_id(self, *, item: dict) -> str:
61+
return item["id"].replace("https://openalex.org/", "")
62+
63+
def _set_title_field(self, *, record_dict: dict, item: dict) -> None:
8864
# pylint: disable=colrev-missed-constant-usage
8965
if "title" in item and item["title"] is not None:
9066
record_dict[Fields.TITLE] = item["title"].lstrip("[").rstrip("].")
91-
set_entrytype(record_dict=record_dict, item=item)
92-
67+
if "title" in record_dict and record_dict["title"] is None:
68+
del record_dict["title"]
69+
70+
def _set_entrytype(self, *, record_dict: dict, item: dict) -> None:
71+
if item.get("type_crossref", "") == "proceedings-article":
72+
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.INPROCEEDINGS
73+
if (
74+
item.get("primary_location", None) is not None
75+
and item["primary_location"].get("source", None) is not None
76+
):
77+
display_name = item["primary_location"]["source"]["display_name"]
78+
if display_name != "Proceedings":
79+
record_dict[Fields.BOOKTITLE] = display_name
80+
elif item["type"] in ["journal-article", "article"]:
81+
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.ARTICLE
82+
if (
83+
item.get("primary_location", None) is not None
84+
and item["primary_location"].get("source", None) is not None
85+
):
86+
record_dict[Fields.JOURNAL] = item["primary_location"]["source"][
87+
"display_name"
88+
]
89+
else:
90+
record_dict[Fields.ENTRYTYPE] = ENTRYTYPES.MISC
91+
92+
def _set_basic_fields(self, *, record_dict: dict, item: dict) -> None:
9393
if "publication_year" in item and item["publication_year"] is not None:
9494
record_dict[Fields.YEAR] = str(item["publication_year"])
9595
# pylint: disable=colrev-missed-constant-usage
9696
if "language" in item and item["language"] is not None:
9797
record_dict[Fields.LANGUAGE] = item["language"]
98-
9998
if "is_retracted" in item and item["is_retracted"]:
10099
record_dict[FieldValues.RETRACTED] = item["is_retracted"]
101-
102-
# pylint: disable=colrev-missed-constant-usage
103100
if "doi" in item and item["doi"] is not None:
104101
record_dict[Fields.DOI] = (
105102
item["doi"].upper().replace("HTTPS://DOI.ORG/", "")
106103
)
107-
108104
record_dict[Fields.CITED_BY] = item["cited_by_count"]
109105

106+
def _set_biblio_fields(self, *, record_dict: dict, item: dict) -> None:
110107
# pylint: disable=colrev-missed-constant-usage
111108
if "volume" in item["biblio"] and item["biblio"]["volume"] is not None:
112109
record_dict[Fields.VOLUME] = item["biblio"]["volume"]
@@ -117,6 +114,13 @@ def set_entrytype(*, record_dict: dict, item: dict) -> None:
117114
if "last_page" in item["biblio"] and item["biblio"]["last_page"] is not None:
118115
record_dict[Fields.PAGES] += "--" + item["biblio"]["last_page"]
119116

117+
def _parse_item_to_record(self, *, item: dict) -> colrev.record.record.Record:
118+
record_dict = {"id": self._get_record_id(item=item)}
119+
self._set_title_field(record_dict=record_dict, item=item)
120+
self._set_entrytype(record_dict=record_dict, item=item)
121+
self._set_basic_fields(record_dict=record_dict, item=item)
122+
self._set_biblio_fields(record_dict=record_dict, item=item)
123+
120124
self._set_author_from_item(record_dict=record_dict, item=item)
121125
record = colrev.record.record.Record(record_dict)
122126

0 commit comments

Comments
 (0)