# Описание структуры 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). * **Описание**: Общий набор универсальных фраз. Шаблоны из этого списка используются в любое некруглое время, полностью заменяя собой почасовые блоки. Каждая строка содержит одновременно метки и для часов, и для минут, чтобы составить законченное предложение.