Browse Source

README.md file update and more...

Added a description of the structure of the JSON file used in the `time2word`
script.
master
Sergey Kiselev 4 months ago
parent
commit
cf8338c8a6
  1. 120
      JSON_STRUCTURE.md
  2. 4
      README.md

120
JSON_STRUCTURE.md

@ -0,0 +1,120 @@
# Описание структуры JSON-файла для информатора времени
Данный конфигурационный файл является универсальной языковой базой данных
для скрипта `time2word`. Архитектура файла спроектирована для динамического
вывода времени на основе четырёх различных триггеров и поддерживает систему
гибких текстовых подстановок.
---
## 1. Текстовые подстановки (Метки)
Внутри текстовых строк используются специальные метки в фигурных скобках `{}`.
При выводе времени вместо них автоматически подставляются нужные слова,
сгенерированные скриптом с помощью библиотеки `num2words`:
* `{h_word}` — час текстом (например: *«три»*, *«десять»*).
* `{h_sfx}` — обозначение часа (*«час»*, *«часа»*, *«часов»*).
* `{m_word}` — минута текстом (например: *«одиннадцать»*, *«сорок»*).
* `{m_sfx}` — обозначение минуты (*«минута»*, *«минуты»*, *«минут»*).
* `{time_of_day}` — время суток (*«ночи»*, *«утра»*, *«дня»*, *«вечера»*).
---
## 2. Минимальный пример структуры файла
```json
{
"midnight_phrases": [
"Полночь. Начинаются новые сутки."
],
"noon_phrases": [
"На часах полдень. Середина дня."
],
"hour_templates_by_period": {
"night": [
["Наступил первый час ночи. На приборах уже {h_word} {h_sfx}."],
["На курантах уже {h_word} {h_sfx} {time_of_day}."],
["Время {h_word} {h_sfx} {time_of_day}."],
["На часах {h_word} {h_sfx} {time_of_day}."],
["Уже {h_word} {h_sfx} {time_of_day}."]
],
"morning": [
["Шесть утра, подъем! На часах уже {h_word} {h_sfx}."],
["На курантах уже {h_word} {h_sfx} {time_of_day}."],
["Время {h_word} {h_sfx} {time_of_day}."],
["На часах {h_word} {h_sfx} {time_of_day}."],
["Уже {h_word} {h_sfx} {time_of_day}."],
["Стрелки показывают ровно {h_word} {h_sfx} {time_of_day}."]
],
"day": [
["Первый час после полудня. На часах уже {h_word} {h_sfx}."],
["На курантах уже {h_word} {h_sfx} {time_of_day}."],
["Время {h_word} {h_sfx} {time_of_day}."],
["На часах {h_word} {h_sfx} {time_of_day}."],
["Уже {h_word} {h_sfx} {time_of_day}."]
],
"evening": [
["День окончен, на курантах уже {h_word} {h_sfx}."],
["На курантах уже {h_word} {h_sfx} {time_of_day}."],
["Время {h_word} {h_sfx} {time_of_day}."],
["На часах {h_word} {h_sfx} {time_of_day}."],
["Уже {h_word} {h_sfx} {time_of_day}."],
["Стрелки показывают ровно {h_word} {h_sfx} {time_of_day}."]
]
},
"minute_phrases": [
"Точное время: {h_word} {h_sfx} {time_of_day} и {m_word} {m_sfx}."
]
}
```
---
## 3. Назначение ключей и привязка к сетке времени
Файл разделен на четыре основных блока в зависимости от того, какое время
сейчас на часах.
**Количество фраз внутри любого конечного списка не ограничено** (одна-две
штуки в примере — лишь демонстрационный вариант, списки можно расширять до
любого объема).
### `midnight_phrases` (Полночь)
* **Время**: Ровно **00:00**.
* **Описание**: Набор готовых фраз для объявления начала новых суток.
### `noon_phrases` (Полдень)
* **Время**: Ровно **12:00**.
* **Описание**: Набор готовых фраз для объявления середины дня.
### `hour_templates_by_period` (Почасовые блоки для ровного времени)
* **Время**: Начало любого часа, когда на часах **ровно 00 минут**
(за исключением 00:00 и 12:00).
* **Описание**: Содержит четыре списка, разбитых по временам суток. Внутри
каждого списка лежат отдельные вложенные списки с фразами для
**каждого конкретного часа**.
**Важное замечание к контенту**: Каждый вложенный список жестко привязан
к хронологическому порядку. При написании сложных сюжетных и ролевых реплик
(например, для роли радиоведущего) продолжение фразы и контекст должны
соответствовать логике именно этого часа (не стоит использовать контекст
раннего утра для списков позднего утра).
* **`night`** (Ночь) — включает в себя 5 последовательных списков фраз:
* 1-й список: для **01:00**
* 2-й список: для **02:00**
* 3-й список: для **03:00**
* 4-й список: для **04:00**
* 5-й список: для **05:00**
* **`morning`** (Утро) — включает в себя 6 последовательных списков фраз:
* списки для каждого часа отдельно с **06:00** до **11:00**
* **`day`** (День) — включает в себя 5 последовательных списков фраз:
* списки для каждого часа отдельно с **13:00** до **17:00**
* **`evening`** (Вечер) — включает в себя 6 последовательных списков фраз:
* списки для каждого часа отдельно с **18:00** до **23:00**
### `minute_phrases` (Фразы для некруглого времени)
* **Время**: Любая минута **от 01 до 59** (например: 15:11, 08:45, 23:02).
* **Описание**: Общий набор универсальных фраз. Шаблоны из этого списка
используются в любое некруглое время, полностью заменяя собой почасовые
блоки. Каждая строка содержит одновременно метки и для часов, и для минут,
чтобы составить законченное предложение.

4
README.md

@ -26,6 +26,10 @@
из Fallout 3. Файл нужно положить в каталог `~/.local/share/time_signals/`.
Скрипт ищет его именно там.
Подробное руководство по созданию собственных языковых пакетов и внутреннему
устройству конфигурационного файла вынесено в
[описание структуры JSON-файла](JSON_STRUCTURE.md).
---
## scrn-sht

Loading…
Cancel
Save