Skip to content

Diary metadata

gutenberg_kg.diary_meta

Shared diary metadata and slug derivation for handler workers.

diary_slug(directory_name)

Derive a stable slug from a diary directory name.

Parameters:

Name Type Description Default
directory_name str

Directory name, e.g. "The Diary of Samuel Pepys — Complete".

required

Returns:

Type Description
str

Kebab-case slug, e.g. "pepys-complete".

Source code in src/gutenberg_kg/diary_meta.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def diary_slug(directory_name: str) -> str:
    """Derive a stable slug from a diary directory name.

    :param directory_name: Directory name, e.g. ``"The Diary of Samuel Pepys — Complete"``.
    :returns: Kebab-case slug, e.g. ``"pepys-complete"``.
    """
    return (
        directory_name.lower()
        .replace("the diary of ", "")
        .replace("the journal of a tour to the hebrides with ", "")
        .replace("samuel pepys", "pepys")
        .replace("john evelyn", "evelyn")
        .replace("samuel johnson", "johnson")
        .replace("—", "")
        .replace("  ", " ")
        .strip()
        .replace(" ", "-")
    )