#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Работа со временем. import subprocess from datetime import datetime import requests # noqa minutes = [ "ноль минут", "одна минута", "две минуты", "три минуты", "четыре минуты", "пять минут", "шесть минут", "семь минут", "восемь минут", "девять минут", "десять минут", "одиннадцать минут", "двенадцать минут", "тринадцать минут", "четырнадцать минут", "пятнадцать минут", "шестнадцать минут", "семнадцать минут", "восемнадцать минут", "девятнадцать минут", "двадцать минут", "двадцать одна минута", "двадцать две минуты", "двадцать три минуты", "двадцать четыре минуты", "двадцать пять минут", "двадцать шесть минут", "двадцать семь минут", "двадцать восемь минут", "двадцать девять минут", "тридцать минут", "тридцать одна минута", "тридцать две минуты", "тридцать три минуты", "тридцать четыре минуты", "тридцать пять минут", "тридцать шесть минут", "тридцать семь минут", "тридцать восемь минут", "тридцать девять минут", "сорок минут", "сорок одна минута", "сорок две минуты", "сорок три минуты", "сорок четыре минуты", "сорок пять минут", "сорок шесть минут", "сорок семь минут", "сорок восемь минут", "сорок девять минут", "пятьдесят минут", "пятьдесят одна минута", "пятьдесят две минуты", "пятьдесят три минуты", "пятьдесят четыре минуты", "пятьдесят пять минут", "пятьдесят шесть минут", "пятьдесят семь минут", "пятьдесят восемь минут", "пятьдесят девять минут", ] clocks = [ "ноль часов", "один час", "два часа", "три часа", "четыре часа", "пять часов", "шесть часов", "семь часов", "восемь часов", "девять часов", "десять часов", "одиннадцать часов", "двенадцать часов", "тринадцать часов", "четы*рнадцать часов", "пятнадцать часов", "шестнадцать часов", "семнадцать часов", "восемнадцать часов", "девятнадцать часов", "двадцать часов", "двадцать один час", "двадцать два часа", "двадцать три часа", ] days = [ "ноль", "первое", "второе", "третье", "четвертое", "пятое", "шестое", "седьмое", "восьмое", "девятое", "десятое", "одиннадцатое", "двенадцатое", "тринадцатое", "четырнадцатое", "пятнадцатое", "шестнадцатое", "семнадцатое", "восемнадцатое", "девятнадцатое", "двадцатое", "двадцать первое", "двадцать второе", "двадцать третье", "двадцать четвертое", "двадцать пятое", "двадцать шестое", "двадцать седьмое", "двадцать восьмое", "двадцать девятое", "тридцатое", "тридцать первое", ] w_day = [ "понед*ельник", "вт*орник", "сред*а", "четв*ерг", "п*ятница", "субб*ота", "воскрес*енье", ] month_dic = { 1: "январ*я", 2: "феврал*я", 3: "м*арта", 4: "апр*еля", 5: "м*ая", 6: "и*юня", 7: "и*юля", 8: "*августа", 9: "сентябр*я", 10: "октябр*я", 11: "ноябр*я", 12: "декабр*я", } def get_date(): """ Получение текущего времени. В формате: "HH часов YY минут" """ now_time = datetime.now() # текущая дата со временем week_day = datetime.today().weekday() hour = clocks[now_time.hour] minute = minutes[now_time.minute] day = now_time.day month = now_time.month say_date = ( hour + " " + minute + ", " + w_day[week_day] + ", " + days[day] + " " + month_dic.get(month) + ", " ) return say_date def inflect(n: object, form1: object, form2: object, form5: object) -> object: """ Приведение в соответствие слова в зависимости от числа. Например: inflect(18,'градус','градуса','градусов') -> 'градусов' """ n = abs(n) # убираем минус, если есть n = n % 100 # две последних цифры n1 = n % 10 # последняя цифра if 10 < n < 20: form = form5 elif 1 < n1 < 5: form = form2 elif n1 == 1: form = form1 else: form = form5 return form def temperature(n): if n < 0: f = "мор*оза" elif n >= 1: f = "тепл*а" else: f = "" return f with open("/sys/class/power_supply/BAT0/capacity", "r") as f: capacity = f.read() with open("/sys/class/power_supply/BAT0/cycle_count", "r") as f: cycle = f.read() with open("/sys/class/power_supply/BAT0/status", "r") as f: status = f.read() if int(capacity) % 10 == 1: percent = "процент" elif int(capacity) % 10 == 2 or int(capacity) % 10 == 3 or int(capacity) % 10 == 4: percent = "процента" else: percent = "процентов" if status.strip() == "Discharging": bstat = "Разряжается" else: bstat = "Заряжается" def main(): str_time = get_date() weather_url = ( "http://api.openweathermap.org/data/2.5/" "weather?id=472757&lang=ru" "&appid=6f9d925282c57d29a95977d346e2d528&units=metric" ) # 539221 r = requests.get(weather_url).text.split(sep=",") hum = r[4].split(sep=":")[1] t = r[7].split(sep=":")[2] temp = round(float(t)) temp_f = temperature(temp) lc_weather = inflect(temp, "градус", "градуса", "градусов") weather_string = ( # " Сейч*ас в стан*ице Кум*ылженской" + str(temp) + lc_weather + temp_f + hum " Сейч*ас в Волгогр*аде" + str(temp) + lc_weather + temp_f + hum ) battery = f" Заряд батареи - {capacity} {percent}. {bstat}" a = "Текущее Время " + str_time + weather_string + battery return subprocess.run(["rhvoice_say", a]) try: main() except KeyboardInterrupt: print("\rПрервано пользователем!")