#api-client #data-provider #full-text #client #journal #article #api-service

core_api_client

一个用于与CORE API交互的Rust库,该服务提供访问来自数千个数据提供者的研究论文元数据和全文

5个版本 (2个稳定版)

1.1.0 2024年7月3日
1.0.0 2024年6月7日
0.1.3 2024年6月7日
0.1.1 2024年6月7日
0.1.0 2023年6月30日

HTTP客户端 中排名 69

Download history 351/week @ 2024-06-07 9/week @ 2024-06-14 113/week @ 2024-06-28 24/week @ 2024-07-05 3/week @ 2024-07-12 5/week @ 2024-07-19 12/week @ 2024-07-26

每月下载量 65

自定义许可

62KB
919

core_api_client - CORE API Rust客户端

Crates.io docs.rs Build Test Maintenance

一个用于与CORE交互的Rust库,该服务提供访问来自数千个数据提供者的研究论文元数据和全文。

目录

  1. 简介
  2. 特性
  3. 安装
  4. 文档
  5. 示例
  6. 贡献
  7. 许可

简介

CORE API Rust客户端库允许轻松与CORE API交互,这是一个独特的实时访问大量元数据和全文研究论文的服务。

特性

  • 获取研究论文的元数据
  • 下载研究论文的全文
  • 实时访问CORE的持续增长语料库

安装

要将库添加到您的项目,请在您的Cargo.toml中添加以下内容:

[dependencies]
core_api_client = "1.1.0"

然后运行 cargo build 以下载和编译库。

文档

您可以在这里找到完整的文档。

示例

工作

根据查询在API上执行搜索。这些是表示研究作品的实体,例如研究文章、论文等。总共是一个去重并丰富的记录版本。

use core_api_client::FilterOperator;
use core_api_client::Api;

let api = Api::from("API_KEY");

let query = api.paged_search(10, 0)
   .and(FilterOperator::Exists("doi"))
   .and(FilterOperator::Bigger("citationCount", 20));

match api.search_works(query) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

数据提供者

根据查询在API上执行搜索。它为您提供访问向CORE提供数据的实体集合。它包含存储库(机构性和学科性的)、预印本服务器、期刊和出版社。

use core_api_client::FilterOperator;
use core_api_client::Api;

let api = Api::from("API_KEY");

let query = api.paged_search(10, 0)
   .and(FilterOperator::Exists("software"))
   .and(FilterOperator::HasValue("type", "JOURNAL"));

match api.search_data_providers(query) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

使用提供的提供者标识符从CORE获取特定数据提供者。该函数利用CORE API使用其标识符获取数据提供者详细信息的能力。标识符可以是:

  1. CORE的数据提供者标识符。
  2. OpenDOAR的标识符,以"opendoar:"(例如,“opendoar:123”)为前缀。调用此函数将对CORE API执行查询,并返回一个包装在ApiResponse中的结果。
  • id:数据提供者的标识符。可以是CORE数据提供者标识符(整数)或以“opendoar:”为前缀的OpenDOAR标识符。
use core_api_client::FilterOperator;
use core_api_client::Api;

let api = Api::from("API_KEY");

match api.get_data_provider(86) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

match api.get_data_provider("opendoar:300") {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

期刊

根据查询在API上执行期刊搜索。该数据集包含CORE收藏中包含的所有期刊标题。此外,您还可以搜索和检索任何期刊,即使它不是CORE数据提供者。

use core_api_client::FilterOperator;
use core_api_client::Api;

let api = Api::from("API_KEY");

let query = api.paged_search(10, 0)
    .and(FilterOperator::Eq("publisher", "OJS"));

match api.search_journals(query) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

使用提供的输出ID从CORE获取单个输出。

  • id - 在CORE中的期刊ID。使用issn:ISSN可以通过ISSN而不是CORE标识符进行搜索。
use core_api_client::Api;

let api = Api::from("API_KEY");

match api.get_journal("issn:1179-1497") {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

输出

根据查询在API上执行输出(作品)搜索。输出是数据提供者中作品的表示。数据未进行丰富,并且与从数据提供者收集的内容完全一致。

use core_api_client::FilterOperator;
use core_api_client::Api;

let api = Api::from("API_KEY");

let query = api.paged_search(10, 0)
    .and(FilterOperator::Eq("publisher", "OJS"));

match api.search_outputs(query) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

使用提供的输出ID从CORE获取单个输出。

  • id - 要获取的输出的CORE ID。
use core_api_client::Api;

let api = Api::from("API_KEY");

match api.get_output(0) {
    Ok(data) => println!("{:#?}", data),
    Err(e) => println!("{:#?}", e),
};

贡献

我们非常希望您为core_api_client做出贡献,并帮助使其比今天更好!作为贡献者,以下是我们要您遵循的指南

问题和错误

如果您在源代码中找到错误或在文档中找到错误,您可以通过向core_api_client GitHub仓库提交问题来帮助我们。更好的是,您可以提交一个包含修复的Pull Request。

功能请求

您还可以通过向我们的GitHub仓库提交问题来请求新功能。如果您想实现一个新功能,请首先提交一个包含您工作建议的问题,以确保我们可以使用它。

拉取请求

我们积极欢迎您的拉取请求。以下是快速指南

  1. main分支上分叉仓库并创建您的分支。
  2. 如果您已添加需要测试的代码,请添加测试。
  3. 如果您已更改API,请更新文档。
  4. 确保测试套件通过。
  5. 确保您的代码通过lint。
  6. 提交拉取请求!

提交信息

请遵循简单的提交信息规则:保持简短但具有表达性。提交信息的首行应少于50个字符,并以大写字母开头。如果需要,之后应跟一个空行,然后是一个更详细的说明。

许可

本项目采用MIT许可协议。有关详细信息,请参阅LICENSE文件。

依赖关系

~5–17MB
~248K SLoC