Convert doi:10.xxxxx/xxxx to nice bibliographic metadata
Project description
# Document Object Identifiers and Python and Markdown, together!
Type journal article DOIs, and have them automagically converted into a beautiful bibliography.
[![travis](https://travis-ci.org/bcaller/markdown_doi.svg)](https://travis-ci.org/bcaller/markdown_doi)
[![PyPI version](https://badge.fury.io/py/markdown_doi.svg)](https://badge.fury.io/py/markdown_doi)
A Markdown extension that looks through your text for things like `doi:10.1234/j.banana.5678`,
looks up the metadata on the crossref API and outputs text according to your requirements
Add `'markdown_doi'` to your Markdown call and watch the magic unfold:
```python
>>> from markdown import Markdown
>>> markdown = Markdown(extensions=['markdown_doi']
>>> markdown.convert('doi:10.1016/j.applanim.2010.02.004')
```
outputs
```html
<p><span class="doi"><a href="http://dx.doi.org/10.1016/j.applanim.2010.02.004">Are cows more likely to lie down the longer they stand?</a> <span class="doi-year">(2010)</span></span></p>
```
You can enable the caching if for example you are using Pelican and constantly regenerating the same files
```python
>>> markdown = Markdown(extensions=['markdown_doi(cache_file=.doi_cache)']
```
The templating function takes the metadata Dict from the
message key of [the JSON API response](https://api.crossref.org/works/10.1016/j.applanim.2010.02.004)
and returns a `markdown.util.etree.ElementTree`. See the default `template_title_link_year` function.
```python
from markdown_doi import makeExtension as makeDoiExtension
def templater(metadata, doi_pattern):
el = markdown.util.etree.Element("span")
el.text = '%(given)s %(family)s' % metadata['author'][0]
return el
ext = makeDoiExtension(templater=templater)
md = markdown.Markdown(extensions=[ext])
html = md.convert('hello 10.1016/j.applanim.2010.02.004')
assert html == 'hello <p><span>Bert J. Tolkamp</span></p>'
```
## Options
| Option | Type | Default |Description |
|-----------|------|---------|------------|
| templater | (Dict, LinkPattern) -> etree.ElementTree | None | Function which renders the metadata as an element tree |
| cache_file | str | '' | File name that can store a cache of the DOIs looked up |
| cache | dict | None | Instead, you can pass a map from DOI to metadata dict as the cache rather than a file name |
## Installation
>From Github:
```
git clone https://github.com/bcaller/markdown_doi.git
pip install -e ./markdown_doi
```
>From Pypi:
```
pip install markdown_doi
```
Type journal article DOIs, and have them automagically converted into a beautiful bibliography.
[![travis](https://travis-ci.org/bcaller/markdown_doi.svg)](https://travis-ci.org/bcaller/markdown_doi)
[![PyPI version](https://badge.fury.io/py/markdown_doi.svg)](https://badge.fury.io/py/markdown_doi)
A Markdown extension that looks through your text for things like `doi:10.1234/j.banana.5678`,
looks up the metadata on the crossref API and outputs text according to your requirements
Add `'markdown_doi'` to your Markdown call and watch the magic unfold:
```python
>>> from markdown import Markdown
>>> markdown = Markdown(extensions=['markdown_doi']
>>> markdown.convert('doi:10.1016/j.applanim.2010.02.004')
```
outputs
```html
<p><span class="doi"><a href="http://dx.doi.org/10.1016/j.applanim.2010.02.004">Are cows more likely to lie down the longer they stand?</a> <span class="doi-year">(2010)</span></span></p>
```
You can enable the caching if for example you are using Pelican and constantly regenerating the same files
```python
>>> markdown = Markdown(extensions=['markdown_doi(cache_file=.doi_cache)']
```
The templating function takes the metadata Dict from the
message key of [the JSON API response](https://api.crossref.org/works/10.1016/j.applanim.2010.02.004)
and returns a `markdown.util.etree.ElementTree`. See the default `template_title_link_year` function.
```python
from markdown_doi import makeExtension as makeDoiExtension
def templater(metadata, doi_pattern):
el = markdown.util.etree.Element("span")
el.text = '%(given)s %(family)s' % metadata['author'][0]
return el
ext = makeDoiExtension(templater=templater)
md = markdown.Markdown(extensions=[ext])
html = md.convert('hello 10.1016/j.applanim.2010.02.004')
assert html == 'hello <p><span>Bert J. Tolkamp</span></p>'
```
## Options
| Option | Type | Default |Description |
|-----------|------|---------|------------|
| templater | (Dict, LinkPattern) -> etree.ElementTree | None | Function which renders the metadata as an element tree |
| cache_file | str | '' | File name that can store a cache of the DOIs looked up |
| cache | dict | None | Instead, you can pass a map from DOI to metadata dict as the cache rather than a file name |
## Installation
>From Github:
```
git clone https://github.com/bcaller/markdown_doi.git
pip install -e ./markdown_doi
```
>From Pypi:
```
pip install markdown_doi
```
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
markdown_doi-1.1.0.tar.gz
(17.0 kB
view details)
Built Distribution
File details
Details for the file markdown_doi-1.1.0.tar.gz
.
File metadata
- Download URL: markdown_doi-1.1.0.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.8.1 pkginfo/1.4.1 requests/2.9.1 setuptools/20.7.0 requests-toolbelt/0.7.0 clint/0.5.1 CPython/2.7.12 Linux/4.4.6-3-surface
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 061d6b0f06c24855cb848599f839ce526572653b83b7f6a887d7f2f098b87997 |
|
MD5 | ccb87258167a6603f8c8ba80137cec26 |
|
BLAKE2b-256 | c7f3cec6537320e8184c66a956542c82bcf33480648523b2e0a846734fb8c2b6 |
File details
Details for the file markdown_doi-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: markdown_doi-1.1.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.8.1 pkginfo/1.4.1 requests/2.9.1 setuptools/20.7.0 requests-toolbelt/0.7.0 clint/0.5.1 CPython/2.7.12 Linux/4.4.6-3-surface
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef4ecc3e37d70ddd58b6d6fda6af1b57c756c0462ad058d163b66cfeebce3a3c |
|
MD5 | 414dfb41212af5c008d7945be0f3598e |
|
BLAKE2b-256 | 631c490b7a79ecbfe6f9395abe4d74ac3f2722daba920e39cbc26afeac9d9267 |