Browse Source
Added a description of the structure of the JSON file used in the `time2word` script.master
2 changed files with 124 additions and 0 deletions
@ -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). |
||||
|
* **Описание**: Общий набор универсальных фраз. Шаблоны из этого списка |
||||
|
используются в любое некруглое время, полностью заменяя собой почасовые |
||||
|
блоки. Каждая строка содержит одновременно метки и для часов, и для минут, |
||||
|
чтобы составить законченное предложение. |
||||
|
|
||||
Loading…
Reference in new issue