Skip to content

Genre catalog

gutenberg_kg.genres

Genre registry — loads from corpus/genres.json; falls back to built-in defaults.

To add a genre without touching code: gutenkg genres add --source gutenberg|ia

To seed corpus/genres.json for the first time: gutenkg genres init

add_genre(name, source)

Append name to the registry under source.

Parameters:

Name Type Description Default
name str

Genre slug (e.g. "my-genre").

required
source str

"gutenberg" or "ia".

required

Returns:

Type Description
bool

True if added, False if already present.

Source code in src/gutenberg_kg/genres.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def add_genre(name: str, source: str) -> bool:
    """Append *name* to the registry under *source*.

    :param name: Genre slug (e.g. ``"my-genre"``).
    :param source: ``"gutenberg"`` or ``"ia"``.
    :return: True if added, False if already present.
    """
    data = _load()
    lst = data.setdefault(source, [])
    if name in lst:
        return False
    lst.append(name)
    _save(data)
    return True

seed_registry(force=False)

Write corpus/genres.json from built-in defaults.

Parameters:

Name Type Description Default
force bool

Overwrite even if the file already exists.

False

Returns:

Type Description
bool

True if the file was written, False if it already existed and force=False.

Source code in src/gutenberg_kg/genres.py
53
54
55
56
57
58
59
60
61
62
def seed_registry(force: bool = False) -> bool:
    """Write corpus/genres.json from built-in defaults.

    :param force: Overwrite even if the file already exists.
    :return: True if the file was written, False if it already existed and force=False.
    """
    if _REGISTRY_PATH.exists() and not force:
        return False
    _save(_DEFAULTS)
    return True