Skip to main content

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
```


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)

Uploaded Source

Built Distribution

markdown_doi-1.1.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

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

Hashes for markdown_doi-1.1.0.tar.gz
Algorithm Hash digest
SHA256 061d6b0f06c24855cb848599f839ce526572653b83b7f6a887d7f2f098b87997
MD5 ccb87258167a6603f8c8ba80137cec26
BLAKE2b-256 c7f3cec6537320e8184c66a956542c82bcf33480648523b2e0a846734fb8c2b6

See more details on using hashes here.

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

Hashes for markdown_doi-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ef4ecc3e37d70ddd58b6d6fda6af1b57c756c0462ad058d163b66cfeebce3a3c
MD5 414dfb41212af5c008d7945be0f3598e
BLAKE2b-256 631c490b7a79ecbfe6f9395abe4d74ac3f2722daba920e39cbc26afeac9d9267

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page