An (almost) single purpose gem wrapping Crossref's API. Pass it a full reference string, get back BibTeX. Pass it a DOI, get BibTeX. Want something more complex? See serrano.
Be polite (https://github.com/CrossRef/rest-api-doc#etiquette). Provide a email as per CrossRef recommendations. Do this by:
-
Add it to the file
~/.ref2bibtex_user_email
. -
Add it to the file .env in the root of your application:
-
Set
REF2BIBTEX_USER_EMAIL
in your shell profile.
If the email is set in multiple places priority is reverse order listed here.
Use citation2bibtex (aliased get):
gem install ref2bibtex
require 'ref2bibtex'
Ref2bibtex.get('Yoder, M. J., A. A. Valerio, A. Polaszek, L. Masner, and N. F. Johnson. 2009. Revision of Scelio pulchripennis - group species (Hymenoptera, Platygastroidea, Platygastridae). ZooKeys 20:53-118.') # => "@article{Yoder_2009,\n\tdoi = {10.3897/zookeys.20.205},\n\turl = {http://dx.doi.org/10.3897/zookeys.20.205},\n\tyear = 2009,\n\tmonth = {sep},\n\tpublisher = {Pensoft Publishers},\n\tvolume = {20},\n\tnumber = {0},\n\tauthor = {Matthew Yoder and Andrew Polaszek and Lubomir Masner and Norman Johnson and Alejandro Valerio},\n\ttitle = {Revision of Scelio pulchripennis - group species (Hymenoptera, Platygastroidea, Platygastridae)},\n\tjournal = {{ZOOKEYS}}\n}"
If you want the doi:
Ref2bibtex.get_doi('Yoder, M. J., A. A. Valerio, A. Polaszek, L. Masner, and N. F. Johnson. 2009. Revision of Scelio pulchripennis - group species (Hymenoptera, Platygastroidea, Platygastridae). ZooKeys 20:53-118.') # => "http://dx.doi.org/10.3897/zookeys.20.205"
If you have the doi:
Ref2bibtex.get_bibtex('http://dx.doi.org/10.3897/zookeys.20.205') # => "@article{Yoder_2009,\n\tdoi = {10.3897/zookeys.20.205},\n\turl = {http://dx.doi.org/10.3897/zookeys.20.205},\n\tyear = 2009,\n\tmonth = {sep},\n\tpublisher = {Pensoft Publishers},\n\tvolume = {20},\n\tnumber = {0},\n\tauthor = {Matthew Yoder and Andrew Polaszek and Lubomir Masner and Norman Johnson and Alejandro Valerio},\n\ttitle = {Revision of Scelio pulchripennis - group species (Hymenoptera, Platygastroidea, Platygastridae)},\n\tjournal = {{ZOOKEYS}}\n}"
If you want a score:
Ref2bibtex.get_score('E. Ven. 1337. Fake articles. Journal Get Scores. Hm:mm') # => 23.688715
Uses a cutoff against score, below cutoff returns false, set the cutoff:
Ref2bibtex.cutoff # => 50
Ref2bibtex.cutoff = 10 # => 10
Ref2bibtex.reset_cutoff # => 50
The code is dumb, it takes the first. You could use the internals to get more results.
The Crossref API. Jon Hill, University of York, for his Python version and bringing up the approach.