项目作者: sckott

项目描述 :
Low level Ruby client for Crossref
高级语言: Ruby
项目地址: git://github.com/sckott/serrano.git
创建时间: 2015-09-08T03:24:52Z
项目社区:https://github.com/sckott/serrano

开源协议:MIT License

下载


serrano

gem version
Ruby
codecov.io
DOI
Ruby Style Guide

serrano is a low level client for Crossref APIs

Docs: https://www.rubydoc.info/gems/serrano

Other Crossref API clients:

Crossref’s API issue tracker: https://gitlab.com/crossref/issues

Changes

For changes see the Changelog

API

Methods in relation to Crossref search API routes

  • /works - Serrano.works()
  • /members - Serrano.members()
  • /prefixes - Serrano.prefixes()
  • /funders - Serrano.funders()
  • /journals - Serrano.journals()
  • /licenses - Serrano.licenses()
  • /types - Serrano.types()

Additional methods built on top of the Crossref search API:

  • DOI minting agency - Serrano.registration_agency()
  • Get random DOIs - Serrano.random_dois()

Other methods:

Note about searching:

You are using the Crossref search API described at https://api.crossref.org When you search with query terms, on Crossref servers they are not searching full text, or even abstracts of articles, but only what is available in the data that is returned to you. That is, they search article titles, authors, etc. For some discussion on this, see https://gitlab.com/crossref/issues/issues/101

Rate limits:

Crossref introduced rate limiting recently. The rate limits apparently vary,
so we can’t give a predictable rate limit. As of this writing, the rate
limit is 50 requests per second. Look for the headers X-Rate-Limit-Limit
and X-Rate-Limit-Interval in requests to see what the current rate
limits are.

The Polite Pool:

To get in the polite pool it’s a good idea now to include a mailto email
address. See docs for more information. TLDR: set your email in an env var CROSSREF_EMAIL.

URL Encoding:

We do URL encoding of DOIs for you for all methods except Serrano.citation_count which doesn’t work if you encode DOIs beforehand. We use ERB::Util.url_encode to encode.

Install

Release version

  1. gem install serrano

Development version

  1. git clone git@github.com:sckott/serrano.git
  2. cd serrano
  3. rake install

Setup

Crossref’s API will likely be used by others in the future, allowing the base URL to be swapped out. You can swap out the base URL by passing named options in a block to Serrano.configuration.

This will also be the way to set up other user options, as needed down the road.

  1. Serrano.configuration do |config|
  2. config.base_url = "https://api.crossref.org"
  3. end

We recommend you set your mailto email here so you can get in the “polite pool” which gives you faster rate limits:

  1. Serrano.configuration do |config|
  2. config.mailto = "jane@doe.org"
  3. end

Or use an env var with name CROSSREF_EMAIL

Examples

Use in a Ruby repl

Search works by DOI

  1. require 'serrano'
  2. Serrano.works(ids: '10.1371/journal.pone.0033693')

Search works by query string

  1. Serrano.works(query: "ecology")

Search works using metadata filters. See CrossRef filter docs.

  1. Serrano.works(query: "ecology", filter: { has_abstract: true })

Search journals by publisher name

  1. Serrano.journals(query: "peerj")

Search funding information by DOI

  1. Serrano.funders(ids: ['10.13039/100000001','10.13039/100000015'])

Get agency for a set of DOIs

  1. Serrano.registration_agency(ids: ['10.1007/12080.1874-1746','10.1007/10452.1573-5125'])

Get random set of DOIs

  1. Serrano.random_dois(sample: 100)

Content negotiation

  1. Serrano.content_negotiation(ids: '10.1126/science.169.3946.635', format: "citeproc-json")

Use on the CLI

The command line tool serrano should be available after you install

  1. ~$ serrano
  2. Commands:
  3. serrano contneg # Content negotiation
  4. serrano funders [funder IDs] # Search for funders by DOI prefix
  5. serrano help [COMMAND] # Describe available commands or one spec...
  6. serrano journals [journal ISSNs] # Search for journals by ISSNs
  7. serrano licenses # Search for licenses by name
  8. serrano members [member IDs] # Get members by id
  9. serrano prefixes [DOI prefixes] # Search for prefixes by DOI prefix
  10. serrano types [type name] # Search for types by name
  11. serrano version # Get serrano version
  12. serrano works [DOIs] # Get works by DOIs
  1. # A single DOI
  2. ~$ serrano works 10.1371/journal.pone.0033693
  3. # Many DOIs
  4. ~$ serrano works "10.1007/12080.1874-1746,10.1007/10452.1573-5125"
  5. ## if above two dois in a file called dois.txt
  6. ~$ cat dois.txt | xargs -I{} serrano works {}
  7. # output JSON, then parse with e.g., jq
  8. ~$ serrano works --filter=has_orcid:true --json --limit=2 | jq '.message.items[].author[].ORCID | select(. != null)'

Meta

  • Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
  • License: MIT