Skip to main content

Retrieve quotes from any Wikiquote article.

Project description

# python-wikiquotes
[![Build Status](https://travis-ci.org/federicotdn/python-wikiquotes.svg?branch=travis)](https://travis-ci.org/federicotdn/python-wikiquotes)
![License](https://img.shields.io/pypi/l/wikiquote.svg?style=flat)
[![Version](https://img.shields.io/pypi/v/wikiquote.svg?style=flat)](https://pypi.python.org/pypi/wikiquote)

The `wikiquote` Python module allows you to search and retrieve quotes from any [Wikiquote](https://www.wikiquote.org/) article, and also retrieve the quote of the day. Please keep in mind that due to Wikiquote's varying HTML page layouts, some quotes may not be retrieved correctly. If you wish to collaborate, head over to the [Developing](https://github.com/federicotdn/python-wikiquotes#developing) section below.

## Installation
You can install the `wikiquote` module using `pip`:
```bash
$ pip3 install --upgrade wikiquote
```

## Usage
```python
>>> import wikiquote

>>> wikiquote.search('Dune')
# ['Dune', 'Frank Herbert', 'Children of Dune (TV miniseries)', 'Dune (film)', 'Dune (TV miniseries)']

>>> wikiquote.quotes('Dune', max_quotes = 3) # max_quotes defaults to 20
# ['A popular man arouses the jealousy of the powerful.', 'Parting with friends is a sadness. A place is only a place.', 'Hope clouds observation.']

>>> wikiquote.quote_of_the_day() # returns a (quote, author) tuple
# 'Always forgive your enemies; nothing annoys them so much.', 'Oscar Wilde'

>>> wikiquote.random_titles(max_titles = 3) # max_titles defaults to 20
# ['The Lion King', 'Johannes Kepler', 'Rosa Parks']

>>> wikiquote.supported_languages()
# ['de', 'en', 'es', 'fr', 'it']

```

Some page titles will lead to a Disambiguation page (like `Matrix`), which will raise a `DisambiguationPageException` exception. If the page does not exist, a `NoSuchPageException` will be raised instead.

## Languages
The `wikiquote` module currently supports the following languages:

| Language | ISO 639-1 Code |
|----------|----------------|
| English | `en` |
| Spanish | `es` |
| German | `de` |
| French | `fr` |
| Italian | `it` |

Use the `lang` parameter to specify the language (defaults to `en`):
```python
>>> import wikiquote

>>> wikiquote.search('Dune', lang='fr')
# ['Dune', 'Les Enfants de Dune', 'Les Hérétiques de Dune', 'Le Messie de Dune']

>>> wikiquote.quotes('Dune', lang='fr')[0]
# 'Si les vœux étaient des poissons, nous lancerions tous des filets.'

>>> wikiquote.quotes('Nueve reinas', lang='es')[0]
# 'Más ofendido estás... menos sospechoso pareces.'

>>> wikiquote.quote_of_the_day(lang='es')
# 'El universo no fue hecho a medida del hombre; tampoco le es hostil: es indiferente.', 'Carl Edward Sagan'

>>> wikiquote.quotes('Hermann Hesse', lang='de')[0]
# 'Nun, aller höhere Humor fängt damit an, daß man die eigene Person nicht mehr ernst nimmt.'

>>> wikiquote.quote_of_the_day(lang='it')
# "Siamo angeli con un'ala sola. Possiamo volare solo restando abbracciati.", 'Luciano De Crescenzo'
```

## Tips
Use `random.choice()` to select a random quote from a single page:
```python
>>> import wikiquote, random

>>> random.choice(wikiquote.quotes('Linus Torvalds'))
# 'WE DO NOT BREAK USERSPACE!'
```

## Caveats
As mentioned in the introduction, `wikiquote` may fail to retrieve quotes from some pages. This is due to Wikiquote.org's varying internal page layouts: some quotes may be contained in `div` elements, others in `li`, etc. depending on the article.

As of 2018/09/03, the French version of Wikiquote no longer provides a quote of the day. The `wikiquote` module raises an `UnsupportedLanguageException` when `quote_of_the_day` is called with `lang='fr'`.

## Developing
First, check that all tests pass:
```bash
$ python3 -m unittest -v
```
After that, check that the `wikiquote` package follows the PEP 8 conventions ([pycodestyle](https://github.com/PyCQA/pycodestyle) required):
```bash
$ pycodestyle wikiquote tests
```
Finally, create a pull request stating your changes.

## TODO
- Improve the way quotes are searched for in the HTML page, avoid returning things like external references, links or notes from quotes.
- Add more/better tests (for example, check that returned quotes do not contain characters like '(' or ')').
- Add support for more languages: each language may require a different scrapping method.

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

wikiquote-0.1.9.tar.gz (7.4 kB view details)

Uploaded Source

File details

Details for the file wikiquote-0.1.9.tar.gz.

File metadata

  • Download URL: wikiquote-0.1.9.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.4

File hashes

Hashes for wikiquote-0.1.9.tar.gz
Algorithm Hash digest
SHA256 f7ecb9fc57c1c2c3aa295ed4d7d6f1c4572fe06b752ddbff5cc40e9abb078e59
MD5 4db253b8b2e682ca23664dae846f6c2f
BLAKE2b-256 9147abe730486ceab4ca481be76a6d5544f36954facacb9920a6b211e6806385

See more details on using hashes here.

Supported by

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