unpywall - Interfacing the Unpaywall API with Python
Introduction
unpywall is a Python client that utilizes the Unpaywall REST API for scholarly analysis with pandas. This package is influenced by roadoi, a R client that interacts with the Unpaywall API.
You can find more about the Unpaywall service here: https://unpaywall.org/.
The documentation about the Unpaywall REST API is located here: https://unpaywall.org/products/api.
Install
Install from pypi using pip:
pip install unpywall
Use
Authentication
An authentification is required to use the Unpaywall Service. For that, unpywall offers two options for authorizing the client. You can either import UnpywallCredentials which generates an environment variable or you can set the environment variable by yourself. Both methods require an email.
from unpywall.utils import UnpywallCredentials
UnpywallCredentials('nick.haupka@gmail.com')
Notice that the environment variable for authentication needs to be called UNPAYWALL_EMAIL.
export UNPAYWALL_EMAIL=nick.haupka@gmail.com
Query Unpaywall by DOI
If you want to search articles by a given DOI use the method doi. The result is a pandas DataFrame.
from unpywall import Unpywall
Unpywall.doi(dois=['10.1038/nature12373', '10.1093/nar/gkr1047'])
# data_standard ... best_oa_location.version
#0 2 ... publishedVersion
#1 2 ... publishedVersion
#[2 rows x 32 columns]
You can track the progress of your API call by setting the parameter progress to True. This is especially useful for estimating the time required.
Unpywall.doi(dois=['10.1038/nature12373', '10.1093/nar/gkr1047'],
progress=True)
#|========================= | 50%
This method also allows two options for catching errors (raise and ignore)
Unpywall.doi(dois=['10.1038/nature12373', '10.1093/nar/gkr1047'],
errors='ignore')
Query Unpaywall by text search
If you want to search articles by a given term use the method query. The result is a pandas DataFrame
Unpywall.query(query='sea lion',
is_oa=True)
# data_standard ... first_oa_location.version
#0 2 ... publishedVersion
#1 2 ... publishedVersion
#2 2 ... publishedVersion
Conveniently obtain full text
If you are using Unpaywall to obtain full-text copies of papers for literature mining, you may benefit from the following functions:
You can use the download_pdf_handle method to return a PDF handle for the given DOI.
Unpywall.download_pdf_handle(doi='10.1038/nature12373')
#<http.client.HTTPResponse object at 0x7fd08ef677c0>
To return an URL to a PDF for the given DOI, use get_pdf_link.
Unpywall.get_pdf_link(doi='10.1038/nature12373')
#'https://dash.harvard.edu/bitstream/1/12285462/1/Nanometer-Scale%20Thermometry.pdf'
To return an URL to the best available OA copy, regardless of the format, use get_doc_link.
Unpywall.get_doc_link(doi='10.1016/j.envint.2020.105730')
#'https://doi.org/10.1016/j.envint.2020.105730'
To return a list of all URLS to OA copies, use get_all_links.
Unpywall.get_all_links(doi='10.1038/nature12373')
#['https://dash.harvard.edu/bitstream/1/12285462/1/Nanometer-Scale%20Thermometry.pdf']
You can also directly access all data provided by unpaywall in json format using get_json.
Unpywall.get_json(doi='10.1038/nature12373')
#{'best_oa_location': {'endpoint_id': '8c9d8ba370a84253deb', 'evidence': 'oa repository (via OAI-PMH doi match)', 'host_type': ...
Command-Line-Interface
unpywall comes with a command-line-interface that can be used to quickly look up a PDF or to download free full-text articles to your device.
Obtain a PDF URL
Retrieve the URL of a PDF for a given DOI with the following command.
unpywall link 10.1038/nature12373
View a PDF
If you want to view a PDF in your Browser or on your system use view.
unpywall view 10.1038/nature12373 -m browser
PDF Download
Use download if you want to store a PDF on your machine.
unpywall download 10.1038/nature12373 -f article.pdf -p ./documents
Help
You can always use help to open a description for the provided functions.
unpywall -h
Documentation
Full documentation is available at https://unpywall.readthedocs.io/.
Develop
To install unpywall, along with dev tools, run:
pip install -e '.[dev]'
Metadata
Release files for unpywall 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| unpywall-0.2.3.tar.gz | 15.4 kB | Without provenance | Details |
Release files / unpywall-0.2.3.tar.gz
| Download URL | unpywall-0.2.3.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b1977d4e90ae5638a851bf1a8c1c04aa092ad3f8c0137aae0d0c07038f86e68
|
|
BLAKE2b-256 checksum How to use checksums |
1bd4c7734a4b188db5eba57c50e283ebbc05673ff0ab85b6d9485356f18643de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.7
|
Security for unpywall 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.