prerequisite: python 3.9 и winrt
import asyncio
from winrt.windows.ui.notifications.management import UserNotificationListener
from winrt.windows.ui.notifications import KnownNotificationBindings
async def notification_handler(listener, seen_notifications):
print("Слушатель уведомлений запущен. Ожидание новых уведомлений...")
# Бесконечно слушаем уведомления
while True:
try:
# Получение всех текущих уведомлений
notifications = await listener.get_notifications_async(0)
for notification in notifications:
notification_id = notification.id # Получаем уникальный ID уведомления
# Проверяем, было ли это уведомление уже обработано
if notification_id not in seen_notifications:
seen_notifications.add(notification_id) # Добавляем ID в множество обработанных уведомлений
try:
# Получение информации об уведомлении
app_name = notification.app_info.display_info.display_name
binding = notification.notification.visual.get_binding(KnownNotificationBindings.get_toast_generic())
if binding:
text_elements = binding.get_text_elements()
title = text_elements[0].text if len(text_elements) > 0 else "Без заголовка"
body = text_elements[1].text if len(text_elements) > 1 else "Без текста"
print(f"Новое уведомление!")
print(f"Приложение: {app_name}")
print(f"Заголовок: {title}")
print(f"Текст: {body}")
print("-" * 50)
# Проверяем что ув. от нужного приложения и делаем всякое нужное с ним.
except Exception as e:
print(f"Ошибка при обработке уведомления: {e}")
# Задержка перед следующим циклом
await asyncio.sleep(1)
except Exception as e:
print(f"Ошибка при получении уведомлений: {e}")
await asyncio.sleep(5) # Задержка перед повторной попыткой в случае ошибки
async def main():
# Получение текущего слушателя уведомлений
listener = UserNotificationListener.get_current()
# Смотрим есть ли разрешение на доступ к уведомлениям. Если нет, лезем в настройки уведомлений.
access_status = await listener.request_access_async()
if access_status != 1:
print("Нет разрешения на доступ к уведомлениям. Проверьте настройки конфиденциальности.")
return
seen_notifications = set() # Множество для хранения ID уже обработанных уведомлений
await notification_handler(listener, seen_notifications)
if __name__ == "__main__":
asyncio.run(main())
С чем может быть связана такая проблема?Аппаратная или программная ошибка SSD
Почему SSD исчезает из BIOS?Прошивка SSD выпала в ошибку, например. Перетык питания SSD это временно исправляет
Как диагностировать проблему и устранить её?Переткнуть SSD в другой порт, если не поможет, заменить SSD на нормальный, например, Samsung
Весной 2023 года я устал от Python, т.к. не мог найти ни заказа, ни работыПлохо искали
а ещё обнаружил у себя проблемы с фронтендом.И поэтому сбежали на Unity и C#?
как может выглядеть собеседование на разработчика UnityТочно не так, как вы его представляете
как быть с портфолиоЯ думаю на кликеры в Я.Играх никто смотреть не будет.
есть ли вообще перспективы у изучения этого движка и языка C#Есть, это я вам точно говорю
день, когда пишу этот вопрос, проходит бездарно.Ну это уж вы сами виноваты, саморазвитием можно всегда заниматься
В такие моменты у меня возникают сомнения в идее работать с Unity дальше. Впрочем, с Python такое тоже бывалоНу это вам к психологу надо, а не сюда
forEach
перезаписываете значение b
. Поэтому значение переменной будет равно значению, полученному в результате последней итерации. Должно быть что-то вроде такого:x.forEach(elem => {
b.push(...a.filter((item) => item == elem));
})
b === undefined
, поскольку вы ничего не возвращаете из forEach
.