@@ -198,6 +198,10 @@ def _get_multi_items(self, record_list):
198
198
199
199
return self .filter (openalex_id = "|" .join (record_list )).get ()
200
200
201
+ def _full_collection_name (self ):
202
+
203
+ return config .openalex_url + "/" + self .__class__ .__name__ .lower ()
204
+
201
205
def __getattr__ (self , key ):
202
206
203
207
if key == "groupby" :
@@ -218,7 +222,7 @@ def __getitem__(self, record_id):
218
222
if isinstance (record_id , list ):
219
223
return self ._get_multi_items (record_id )
220
224
221
- url = self .url_collection + "/" + record_id
225
+ url = self ._full_collection_name () + "/" + record_id
222
226
params = {"api_key" : config .api_key } if config .api_key else {}
223
227
res = requests .get (
224
228
url ,
@@ -228,13 +232,13 @@ def __getitem__(self, record_id):
228
232
res .raise_for_status ()
229
233
res_json = res .json ()
230
234
231
- return self .obj (res_json )
235
+ return self .resource_class (res_json )
232
236
233
237
@property
234
238
def url (self ):
235
239
236
240
if not self .params :
237
- return self .url_collection
241
+ return self ._full_collection_name ()
238
242
239
243
l_params = []
240
244
for k , v in self .params .items ():
@@ -250,7 +254,9 @@ def url(self):
250
254
l_params .append (k + "=" + quote_plus (str (v )))
251
255
252
256
if l_params :
253
- return self .url_collection + "?" + "&" .join (l_params )
257
+ return self ._full_collection_name () + "?" + "&" .join (l_params )
258
+
259
+ return self ._full_collection_name ()
254
260
255
261
def count (self ):
256
262
_ , m = self .get (return_meta = True , per_page = 1 )
@@ -289,7 +295,7 @@ def get(self, return_meta=False, page=None, per_page=None, cursor=None):
289
295
if "group-by" in self .params :
290
296
results = res_json ["group_by" ]
291
297
else :
292
- results = [self .obj (ent ) for ent in res_json ["results" ]]
298
+ results = [self .resource_class (ent ) for ent in res_json ["results" ]]
293
299
294
300
# return result and metadata
295
301
if return_meta :
@@ -369,45 +375,31 @@ def select(self, s):
369
375
370
376
371
377
class Works (BaseOpenAlex ):
372
-
373
- url_collection = config .openalex_url + "/works"
374
- obj = Work
378
+ resource_class = Work
375
379
376
380
377
381
class Authors (BaseOpenAlex ):
378
-
379
- url_collection = config .openalex_url + "/authors"
380
- obj = Author
382
+ resource_class = Author
381
383
382
384
383
385
class Sources (BaseOpenAlex ):
384
-
385
- url_collection = config .openalex_url + "/sources"
386
- obj = Source
386
+ resource_class = Source
387
387
388
388
389
389
class Institutions (BaseOpenAlex ):
390
-
391
- url_collection = config .openalex_url + "/institutions"
392
- obj = Institution
390
+ resource_class = Institution
393
391
394
392
395
393
class Concepts (BaseOpenAlex ):
396
-
397
- url_collection = config .openalex_url + "/concepts"
398
- obj = Concept
394
+ resource_class = Concept
399
395
400
396
401
397
class Publishers (BaseOpenAlex ):
402
-
403
- url_collection = config .openalex_url + "/publishers"
404
- obj = Publisher
398
+ resource_class = Publisher
405
399
406
400
407
401
class Funders (BaseOpenAlex ):
408
-
409
- url_collection = config .openalex_url + "/funders"
410
- obj = Funder
402
+ resource_class = Funder
411
403
412
404
# deprecated
413
405
0 commit comments