Skip to main content

Divan Hafez Poems & Omen

This library gives you access to the Hafez Poems. To get more information about this poet, you can check https://en.wikipedia.org/wiki/Hafez.

Poems can be accessed as following:

  • By the number of poem,
  • By searching a query,
  • Random poem (known as Omen or Fal in Persian)

Installation

This package can be installed:

  • using pip:
pip install hafez
  • using Makefile on a cloned/forked repo:
make install
  • using pip on a cloned/forked repo:
pip install -e . --upgrade --upgrade-strategy only-if-needed

Methods

  • hafez.total_poems() -> int

It returns `int`, the total number of poems available in the package.
  • hafez.get_poem(poem_id: int) -> dict

It returns the poem in a dictionary format (see Poem Data Structure)
  • poem_id: int: It is a number between 1 and hafez.total_poems().

  • hafez.omen() or hafez.fal() -> dict


It returns a random poem in a dictionary format (see Poem Data Structure)
  • hafez.search(qeury: str, exact_match: bool = False) -> list

It returns a list of poems in a dictionary format (see Poem Data Structure)
  • query: str: It is a string to search within the verses of the Divan Hafez

  • `exact_match: bool': if True, it will search for exact match of the query

  • hafez.download_all_audio(force: boolean = False) -> int


It downloads all the audio files.
  • force: boolean = False: If it is set to False, it only downloads the file if not previously downloaded. If set to True, it will force to re-download and replace the existing file.

  • hafez.download_audio(poem: int) -> int


It downloads the audio file of the given `poem`. It returns `1`, once the downloaded is completed.
  • hafez.get_audio(poem: int=1, download: boolean = True) -> str

It returns the absolute path of the audio file related to the given `poem`.
  • poem: int=1: It is the poem number.
  • download: boolean = True: If download=True, it downloads the audio file if not existing.

Poem's Data Structure

{"id": 1,
"poem": [],
"interpretation": "",
"alt_interpretation": "",
"mp3": "https://..."}

Example

# it returns the total number of poems
# returns: int
total_number_of_poems = hafez.total_poems()

# get a poem by ID
# returns: dict
poem_5 = hafez.get_poem(5)

# get a random poem - omen (fal)
# returns: dict
omen = hafez.omen()  # same as: hafez.fal()

# search within the verses of poems
# returns: list[dict]
search_result = hafez.search("حافظ")

Database

The poems of Divan Hafez are extracted from an open-source database as below:

Source: https://github.com/mahmoud-eskandari/HafezFaalDatabase

Vocal Audios

The vocal audio files are done by Ms. Modares Zadeh, and it is available below:

Source: https://avayemastan.deklame.net/hafez/

Demo

You can access the demo version deployed on Streamlit server at:

https://divan-hafez.streamlit.app/

Developer(s)

Kaveh Bakhtiyari - Website | Medium | LinkedIn | GitHub

Contribution

Feel free to join the open-source community and contribute to this repository.

Metadata

Release files for hafez 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hafez 0.4.2
File Size Uploaded
hafez-0.4.2.tar.gz 314.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hafez 0.4.2
File Interpreter ABI Platform
hafez-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 655.8 kB

Release files / hafez-0.4.2.tar.gz

Download URL hafez-0.4.2.tar.gz
Size 314.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b8f86e76a501deec10e7ee918ef99b87da5af774819ccdb0a30c767a0926f5f6
BLAKE2b-256 checksum
How to use checksums
23e110e42218a3eee3bd4f78941500b96bf65bb37ba02c918e9ba96722367eab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / hafez-0.4.2-py3-none-any.whl

Download URL hafez-0.4.2-py3-none-any.whl
Size 341.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0b2f82fbdbbdff29564b1a1962d5e4138c0c1004791f259412b8c68af848306c
BLAKE2b-256 checksum
How to use checksums
70c40730eddb60adcf8358548d1ed9d826651d83d0573e2efdaefd8384509827
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page