# wikiquote
[![CI Status](https://github.com/federicotdn/wikiquote/workflows/CI/badge.svg)](https://github.com/federicotdn/wikiquote/actions)
![License](https://img.shields.io/pypi/l/wikiquote.svg?style=flat)
![](https://img.shields.io/badge/python-3-blue.svg)
[![Version](https://img.shields.io/pypi/v/wikiquote.svg?style=flat)](https://pypi.python.org/pypi/wikiquote)
![Black](https://img.shields.io/badge/code%20style-black-000000.svg)
The `wikiquote` package for Python (>=3.8) allows you to search and retrieve quotes from any [Wikiquote](https://www.wikiquote.org/) article, as well as retrieve the quote of the day.
## Installation
You can install the `wikiquote` package using `pip`:
```bash
$ pip install --upgrade wikiquote
```
## Usage
```python
>>> import wikiquote
>>> wikiquote.search('The Matrix')
# ['The Matrix (film)', 'The Matrix Revolutions', 'The Matrix Reloaded', 'The Animatrix']
>>> wikiquote.quotes('The Matrix (film)', max_quotes=2) # max_quotes defaults to 20
# ['Don't think you are, know you are.', 'Fate, it seems, is not without a sense of irony.']
>>> wikiquote.quote_of_the_day() # returns a (quote, author) tuple
# 'Always forgive your enemies; nothing annoys them so much.', 'Oscar Wilde'
>>> wikiquote.qotd() # same as quote_of_the_day()
>>> wikiquote.random_titles(max_titles=3) # max_titles defaults to 20
# ['The Lion King', 'Johannes Kepler', 'Rosa Parks']
>>> wikiquote.supported_languages()
# ['de', 'en', 'es', 'eu', 'fr', 'he', 'it', 'pl', 'pt']
```
Some article titles will lead to a Disambiguation page (like `Matrix`), which will raise a `DisambiguationPageException` exception. Usually this happens because there are many articles matching the search term. When this happens, try using `search()` first, and then use one of the specific article titles found.
If the article searched for does not exist, and no similar results exist, `NoSuchPageException` will be raised instead.
When requesting the quote of the day, a `MissingQOTDException` exception will be raised if the quote of the day could not be extracted from Wikiquote's main page. This usually happens because the page's layout has been changed.
## Languages
The `wikiquote` module currently supports the following languages:
| Language | ISO 639-1 Code |
|------------|----------------|
| Basque | `eu` |
| English | `en` |
| French | `fr` |
| German | `de` |
| Hebrew | `he` |
| Italian | `it` |
| Polish | `pl` |
| Portuguese | `pt` |
| Spanish | `es` |
Use the `lang` parameter to specify the language (defaults to `en`):
```python
>>> import wikiquote
>>> wikiquote.quotes('Dune', lang='en')[0]
# 'Parting with friends is a sadness. A place is only a place.'
>>> wikiquote.quotes('Victor Hugo', lang='fr')[0]
# 'Le plus lourd fardeau, c'est d'exister sans vivre.'
>>> wikiquote.quotes('Nueve reinas', lang='es')[0]
# 'Más ofendido estás... menos sospechoso parecés.'
>>> wikiquote.quote_of_the_day(lang='es')
# 'He sospechado alguna vez que la única cosa sin misterio es la felicidad, porque se justifica por sí sola.', 'Jorge Luis Borges'
>>> 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'
>>> wikiquote.quote_of_the_day(lang='pl')
# 'Boże pomóż mi być takim człowiekiem, za jakiego uważa mnie mój pies.', 'Janusz Leon Wiśniewski'
>>> wikiquote.quotes('José Saramago', lang='pt')[0]
# 'Nem a juventude sabe o que pode, nem a velhice pode o que sabe.'
```
Specifying an invalid language will result in an `UnsupportedLanguageException` exception.
## Tips
Use `random.choice()` to select a random quote from an article:
```python
>>> import wikiquote, random
>>> random.choice(wikiquote.quotes('Linus Torvalds'))
# 'WE DO NOT BREAK USERSPACE!'
```
## Caveats
In some cases, `wikiquote` may fail to retrieve quotes from some articles, or the quote of the day (QOTD). This is due to Wikiquote.org's varying internal article layouts: some quotes may be contained in `div` elements, others in `li`, etc. depending on the article and the language.
## Developing
First, make sure you have installed all necessary dependencies, including development dependencies:
```bash
$ pip install -r requirements-dev.txt -r requirements.txt
```
Then, check that all files are correctly formatted, and that the type hints are also correct:
```bash
$ make lint
$ make types
```
After that, check that all tests pass:
```bash
$ make test
```
Some tests may be skipped in the QOTD is not available for some languages.
Finally, create a pull request stating your changes.
## Changelog
See the [CHANGELOG.md](CHANGELOG.md) file.
## License
The `wikiquote` package is licensed under the MIT License.
Raw data
{
"_id": null,
"home_page": "https://github.com/federicotdn/wikiquote",
"name": "wikiquote",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8, <4",
"maintainer_email": "",
"keywords": "quotes,wikiquote,python,api,qotd,quote,day",
"author": "Federico Tedin",
"author_email": "federicotedin@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/36/db/403ca7d79e0719bfedb67e5a3f4b5de2d8b59bc9b9a7ce7a21eb47779d74/wikiquote-0.1.17.tar.gz",
"platform": null,
"description": "# wikiquote\n[![CI Status](https://github.com/federicotdn/wikiquote/workflows/CI/badge.svg)](https://github.com/federicotdn/wikiquote/actions)\n![License](https://img.shields.io/pypi/l/wikiquote.svg?style=flat)\n![](https://img.shields.io/badge/python-3-blue.svg)\n[![Version](https://img.shields.io/pypi/v/wikiquote.svg?style=flat)](https://pypi.python.org/pypi/wikiquote)\n![Black](https://img.shields.io/badge/code%20style-black-000000.svg)\n\nThe `wikiquote` package for Python (>=3.8) allows you to search and retrieve quotes from any [Wikiquote](https://www.wikiquote.org/) article, as well as retrieve the quote of the day.\n\n## Installation\nYou can install the `wikiquote` package using `pip`:\n```bash\n$ pip install --upgrade wikiquote\n```\n\n## Usage\n```python\n>>> import wikiquote\n\n>>> wikiquote.search('The Matrix')\n# ['The Matrix (film)', 'The Matrix Revolutions', 'The Matrix Reloaded', 'The Animatrix']\n\n>>> wikiquote.quotes('The Matrix (film)', max_quotes=2) # max_quotes defaults to 20\n# ['Don't think you are, know you are.', 'Fate, it seems, is not without a sense of irony.']\n\n>>> wikiquote.quote_of_the_day() # returns a (quote, author) tuple\n# 'Always forgive your enemies; nothing annoys them so much.', 'Oscar Wilde'\n\n>>> wikiquote.qotd() # same as quote_of_the_day()\n\n>>> wikiquote.random_titles(max_titles=3) # max_titles defaults to 20\n# ['The Lion King', 'Johannes Kepler', 'Rosa Parks']\n\n>>> wikiquote.supported_languages()\n# ['de', 'en', 'es', 'eu', 'fr', 'he', 'it', 'pl', 'pt']\n\n```\n\nSome article titles will lead to a Disambiguation page (like `Matrix`), which will raise a `DisambiguationPageException` exception. Usually this happens because there are many articles matching the search term. When this happens, try using `search()` first, and then use one of the specific article titles found.\n\nIf the article searched for does not exist, and no similar results exist, `NoSuchPageException` will be raised instead.\n\nWhen requesting the quote of the day, a `MissingQOTDException` exception will be raised if the quote of the day could not be extracted from Wikiquote's main page. This usually happens because the page's layout has been changed.\n\n## Languages\nThe `wikiquote` module currently supports the following languages:\n\n| Language | ISO 639-1 Code |\n|------------|----------------|\n| Basque | `eu` |\n| English | `en` |\n| French | `fr` |\n| German | `de` |\n| Hebrew | `he` |\n| Italian | `it` |\n| Polish | `pl` |\n| Portuguese | `pt` |\n| Spanish | `es` |\n\nUse the `lang` parameter to specify the language (defaults to `en`):\n```python\n>>> import wikiquote\n\n>>> wikiquote.quotes('Dune', lang='en')[0]\n# 'Parting with friends is a sadness. A place is only a place.'\n\n>>> wikiquote.quotes('Victor Hugo', lang='fr')[0]\n# 'Le plus lourd fardeau, c'est d'exister sans vivre.'\n\n>>> wikiquote.quotes('Nueve reinas', lang='es')[0]\n# 'M\u00e1s ofendido est\u00e1s... menos sospechoso parec\u00e9s.'\n\n>>> wikiquote.quote_of_the_day(lang='es')\n# 'He sospechado alguna vez que la \u00fanica cosa sin misterio es la felicidad, porque se justifica por s\u00ed sola.', 'Jorge Luis Borges'\n\n>>> wikiquote.quotes('Hermann Hesse', lang='de')[0]\n# 'Nun, aller h\u00f6here Humor f\u00e4ngt damit an, da\u00df man die eigene Person nicht mehr ernst nimmt.'\n\n>>> wikiquote.quote_of_the_day(lang='it')\n# \"Siamo angeli con un'ala sola. Possiamo volare solo restando abbracciati.\", 'Luciano De Crescenzo'\n\n>>> wikiquote.quote_of_the_day(lang='pl')\n# 'Bo\u017ce pom\u00f3\u017c mi by\u0107 takim cz\u0142owiekiem, za jakiego uwa\u017ca mnie m\u00f3j pies.', 'Janusz Leon Wi\u015bniewski'\n\n>>> wikiquote.quotes('Jos\u00e9 Saramago', lang='pt')[0]\n# 'Nem a juventude sabe o que pode, nem a velhice pode o que sabe.'\n```\n\nSpecifying an invalid language will result in an `UnsupportedLanguageException` exception.\n\n## Tips\nUse `random.choice()` to select a random quote from an article:\n```python\n>>> import wikiquote, random\n\n>>> random.choice(wikiquote.quotes('Linus Torvalds'))\n# 'WE DO NOT BREAK USERSPACE!'\n```\n\n## Caveats\nIn some cases, `wikiquote` may fail to retrieve quotes from some articles, or the quote of the day (QOTD). This is due to Wikiquote.org's varying internal article layouts: some quotes may be contained in `div` elements, others in `li`, etc. depending on the article and the language.\n\n## Developing\nFirst, make sure you have installed all necessary dependencies, including development dependencies:\n```bash\n$ pip install -r requirements-dev.txt -r requirements.txt\n```\n\nThen, check that all files are correctly formatted, and that the type hints are also correct:\n```bash\n$ make lint\n$ make types\n```\n\nAfter that, check that all tests pass:\n```bash\n$ make test\n```\nSome tests may be skipped in the QOTD is not available for some languages.\n\nFinally, create a pull request stating your changes.\n\n## Changelog\nSee the [CHANGELOG.md](CHANGELOG.md) file.\n\n## License\nThe `wikiquote` package is licensed under the MIT License.\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Retrieve quotes from any Wikiquote article.",
"version": "0.1.17",
"project_urls": {
"Download": "https://github.com/federicotdn/wikiquote/archive/0.1.17.tar.gz",
"Homepage": "https://github.com/federicotdn/wikiquote"
},
"split_keywords": [
"quotes",
"wikiquote",
"python",
"api",
"qotd",
"quote",
"day"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "36db403ca7d79e0719bfedb67e5a3f4b5de2d8b59bc9b9a7ce7a21eb47779d74",
"md5": "51aa243d225319b392298a1f168a380d",
"sha256": "4b2679f604875bac715d283d2c0ba128f87a63892ab4f4de7b501fd10699349c"
},
"downloads": -1,
"filename": "wikiquote-0.1.17.tar.gz",
"has_sig": false,
"md5_digest": "51aa243d225319b392298a1f168a380d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8, <4",
"size": 13359,
"upload_time": "2023-08-20T12:50:49",
"upload_time_iso_8601": "2023-08-20T12:50:49.154840Z",
"url": "https://files.pythonhosted.org/packages/36/db/403ca7d79e0719bfedb67e5a3f4b5de2d8b59bc9b9a7ce7a21eb47779d74/wikiquote-0.1.17.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-20 12:50:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "federicotdn",
"github_project": "wikiquote",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "wikiquote"
}