From 8f330f50109de74932ff06a48f35767d71b3ce8b Mon Sep 17 00:00:00 2001 From: janvarev Date: Thu, 10 Mar 2022 18:01:09 +0300 Subject: [PATCH] =?UTF-8?q?plugin=5Furlopener.py=20-=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B0=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=D1=8B=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=20=D0=B4=D0=B5=D1=84=D0=BE=D0=BB=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLUGINS.md | 2 ++ plugins/plugin_datetime.py | 55 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 plugins/plugin_datetime.py diff --git a/PLUGINS.md b/PLUGINS.md index e6abe79..579b5e3 100644 --- a/PLUGINS.md +++ b/PLUGINS.md @@ -18,6 +18,8 @@ **plugin_random.py** - рандом (оффлайн). Примеры: "подбрось|брось кубик|монетку". Содержит примеры парсинга дерева команд (команды можно задавать деревом) +**plugin_datetime.py** - команды "дата, время" + **plugin_weatherowm.py** - погода (онлайн). Примеры: "погода, погода завтра, погода послезавтра, прогноз погоды". Требует установки в конфиге бесплатного API-ключа с https://openweathermap.org/ , а также местоположения diff --git a/plugins/plugin_datetime.py b/plugins/plugin_datetime.py new file mode 100644 index 0000000..7ce3e4d --- /dev/null +++ b/plugins/plugin_datetime.py @@ -0,0 +1,55 @@ +# Дата и время +# author: Vladislav Janvarev + +from datetime import datetime + +from vacore import VACore + +# функция на старте +def start(core:VACore): + manifest = { # возвращаем настройки плагина - словарь + "name": "Дата и время", # имя + "version": "1.0", # версия + "require_online": False, # требует ли онлайн? + + "commands": { # набор скиллов. Фразы скилла разделены | . Если найдены - вызывается функция + "дата": play_date, + "время": play_time, + } + } + return manifest + +def play_date(core:VACore, phrase: str): # в phrase находится остаток фразы после названия скилла, + # если юзер сказал больше + # в этом плагине не используется + now = datetime.now() + date = now.strftime("%Y-%m-%d") + weekday = ["понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"][datetime.weekday(now)] + core.play_voice_assistant_speech("сегодня "+weekday+", "+get_date(date)) + +def get_date(date): + day_list = ['первое', 'второе', 'третье', 'четвёртое', + 'пятое', 'шестое', 'седьмое', 'восьмое', + 'девятое', 'десятое', 'одиннадцатое', 'двенадцатое', + 'тринадцатое', 'четырнадцатое', 'пятнадцатое', 'шестнадцатое', + 'семнадцатое', 'восемнадцатое', 'девятнадцатое', 'двадцатое', + 'двадцать первое', 'двадцать второе', 'двадцать третье', + 'двадацать четвёртое', 'двадцать пятое', 'двадцать шестое', + 'двадцать седьмое', 'двадцать восьмое', 'двадцать девятое', + 'тридцатое', 'тридцать первое'] + month_list = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', + 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'] + date_list = date.split('-') + return (day_list[int(date_list[2]) - 1] + ' ' + + month_list[int(date_list[1]) - 1] + ' ' + #date_list[0] + ' года' + ) + +def play_time(core:VACore, phrase: str): # в phrase находится остаток фразы после названия скилла, + # если юзер сказал больше + # в этом плагине не используется + from utils.num_to_text_ru import num2text + now = datetime.now() + hours = int(now.strftime("%H")) + mins = int(now.strftime("%M")) + core.play_voice_assistant_speech("сейчас "+num2text(hours)+" "+num2text(mins))