diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2019-06-02 14:43:34 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2019-06-02 14:43:34 -0300 |
commit | d9b125e1593eeda59c2877e03f9b32d26e97aefa (patch) | |
tree | de76ec0828d658e9571a393bd6358b0cf8ff7ced /doi2bib | |
parent | c3bb7c52671a4725721bff628f982b228806fc90 (diff) | |
download | scripts-d9b125e1593eeda59c2877e03f9b32d26e97aefa.tar.gz scripts-d9b125e1593eeda59c2877e03f9b32d26e97aefa.tar.bz2 |
Adds doi2bib
Diffstat (limited to 'doi2bib')
-rwxr-xr-x | doi2bib | 53 |
1 files changed, 53 insertions, 0 deletions
@@ -0,0 +1,53 @@ +#!/usr/bin/python3 +# Adapted from https://scipython.com/blog/doi-to-bibtex/ + +import sys +import pycurl +from io import BytesIO +#import urllib.request +#from urllib.error import HTTPError + +BASE_URL = 'http://dx.doi.org/' + +try: + doi = sys.argv[1] +except IndexError: + print('Usage:\n{} <doi>'.format(sys.argv[0])) + sys.exit(1) + +url = BASE_URL + doi + +# Urllib version +#req = urllib.request.Request(url) +#req.set_proxy('socks5://localhost:9050', 'socks') +#req.add_header('Accept', 'application/x-bibtex') + +# PyCurl version with Tor support +# See http://pycurl.io/docs/latest/quickstart.html +buffer = BytesIO() +req = pycurl.Curl() +req.setopt(req.URL, url) +req.setopt(req.HTTPHEADER, ('Accept: application/x-bibtex',)) +req.setopt(req.FOLLOWLOCATION, True) +req.setopt(req.WRITEDATA, buffer) +req.setopt(req.PROXY, 'socks5://localhost:9050') + +try: + #with urllib.request.urlopen(req) as f: + # bibtex = f.read().decode() + #print(bibtex) + + req.perform() + req.close() + body = buffer.getvalue() + + # Body is a byte string. + # We have to know the encoding in order to print it to a text file + # such as standard output. + print(body.decode('iso-8859-1')) +except HTTPError as e: + if e.code == 404: + print('DOI not found.') + else: + print('Service unavailable.') + sys.exit(1) |