python windows или chrome уведомление, открывающее ссылку в браузере при нажатии - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть API с Django Rest Framework, который я использую для извлечения json данных из моего веб-приложения. Который постоянно обновляется, я сортирую по отметке времени, чтобы получить последние 10.

Моя цель здесь - сохранить извлеченные данные JSON в локальной базе данных SQLite, и если уведомление не существует в базе данных, отправьте уведомление на рабочий стол.

Это до некоторой степени работает с win10toast , но win10toast или plyer не поддерживает события щелчка

win10toast send Одно уведомление за раз означает, что оно заменяет первое уведомление вторым

import time 
import json, requests 
from win10toast import ToastNotifier


def send_noti():
    ICON_PATH = "pycon.ico"
    toaster = ToastNotifier()

    newsitems = load_from_str()

    for newsitem in newsitems['results']: 

        title = newsitem['title']
        date = newsitem['date_display'] 
        link = newsitem['story_link']

        toaster.show_toast(title[0:60],
            str(date) + " | " + title,
            icon_path=ICON_PATH,
            duration=5000,
            threaded=True)

        time.sleep(5) 

def load_json():
    response = json.loads(requests.get("http://127.0.0.1:8000/api/newsone").text)

    return response

def load_from_str():
    hoho = """
    {"count":25,"next":"http://127.0.0.1:8000/api/newsone/?format=json&page_number_size=2","previous":null,"results":[{"id":10,"title":"22:25 CPD SA (10/2020) Powołanie Członów Zarządu na nową kadencję","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896946,cpd-sa-(10-2020)-powolanie-czlonow-zarzadu-na-nowa-kadencje","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":11,"title":"21:44 MOONLIT SA (19/2020) Zmiana terminu publikacji raportu rocznego za 2019 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896940,moonlit-sa-(19-2020)-zmiana-terminu-publikacji-raportu-rocznego-za-2019-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":12,"title":"21:42 URSUS SA W RESTRUKTURYZACJI (36/2020) Zawiadomienie o zmniejszeniu dotychczas posiadanego udziału w ogólnej liczbie głosów na walnym zgromadzeniu Emitenta","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896938,ursus-sa-w-restrukturyzacji-(36-2020)-zawiadomienie-o-zmniejszeniu-dotychczas-posiadanego-udzialu-w-ogolnej-liczbie-glosow-na-walnym-zgromadzeniu-emit","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":13,"title":"21:35 PARTNERBUD SA (16/2020) Otrzymanie zawiadomienia o zmianie stanu posiadania akcji Spółki","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896936,partnerbud-sa-(16-2020)-otrzymanie-zawiadomienia-o-zmianie-stanu-posiadania-akcji-spolki","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":14,"title":"21:31 MOONLIT SA (18/2020) Zwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. na dzień 21 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896934,moonlit-sa-(18-2020)-zwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--na-dzien-21-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":15,"title":"21:29 ORBIS SA (28/2020) Uchwała Rady Nadzorczej w sprawie oceny sytuacji Spółki","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896932,orbis-sa-(28-2020)-uchwala-rady-nadzorczej-w-sprawie-oceny-sytuacji-spolki","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":16,"title":"21:23 MOONLIT SA (13/2020) Zwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. na dzień 21 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896930,moonlit-sa-(13-2020)-zwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--na-dzien-21-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":17,"title":"21:09 ONE MORE LEVEL SA (1/2020) Przekroczenie progu","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896928,one-more-level-sa-(1-2020)-przekroczenie-progu","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":18,"title":"20:58 PAMAPOL SA (7/2020) Otrzymanie zawiadomienia na podstawie art. 69 ustawy o ofercie publicznej","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896926,pamapol-sa-(7-2020)-otrzymanie-zawiadomienia-na-podstawie-art--69-ustawy-o-ofercie-publicznej","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":19,"title":"20:42 MOONLIT SA (17/2020) Odwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. zwołanego na dzień 6 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896923,moonlit-sa-(17-2020)-odwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--zwolanego-na-dzien-6-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"}]}
    """
    res = json.loads(hoho)

    return res

plyer одновременно отправляет больше уведомлений, но, к сожалению, оно не имеет событий щелчка тот же код, но с plyer

import time 
import json, requests 
from plyer import notification


def send_noti():
    ICON_PATH = "C:\\Users\\Sohan\\Downloads\\chromeico.ico"

    newsitems = load_from_str()

    for newsitem in newsitems['results']: 
        print('here')

        title = newsitem['title']
        date = newsitem['date_display'] 
        link = newsitem['story_link']

        notification.notify(
            title=title[0:50],
            message=link,
            app_icon=ICON_PATH,  # e.g. 'C:\\icon_32x32.ico'
            timeout=60,  # seconds
        )

        time.sleep(2)


def load_json():
    response = json.loads(requests.get("http://127.0.0.1:8000/api/newsone").text)

    return response

def load_from_str():
    hoho = """
    {"count":25,"next":"http://127.0.0.1:8000/api/newsone/?format=json&page_number_size=2","previous":null,"results":[{"id":10,"title":"22:25 CPD SA (10/2020) Powołanie Członów Zarządu na nową kadencję","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896946,cpd-sa-(10-2020)-powolanie-czlonow-zarzadu-na-nowa-kadencje","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":11,"title":"21:44 MOONLIT SA (19/2020) Zmiana terminu publikacji raportu rocznego za 2019 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896940,moonlit-sa-(19-2020)-zmiana-terminu-publikacji-raportu-rocznego-za-2019-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":12,"title":"21:42 URSUS SA W RESTRUKTURYZACJI (36/2020) Zawiadomienie o zmniejszeniu dotychczas posiadanego udziału w ogólnej liczbie głosów na walnym zgromadzeniu Emitenta","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896938,ursus-sa-w-restrukturyzacji-(36-2020)-zawiadomienie-o-zmniejszeniu-dotychczas-posiadanego-udzialu-w-ogolnej-liczbie-glosow-na-walnym-zgromadzeniu-emit","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":13,"title":"21:35 PARTNERBUD SA (16/2020) Otrzymanie zawiadomienia o zmianie stanu posiadania akcji Spółki","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896936,partnerbud-sa-(16-2020)-otrzymanie-zawiadomienia-o-zmianie-stanu-posiadania-akcji-spolki","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":14,"title":"21:31 MOONLIT SA (18/2020) Zwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. na dzień 21 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896934,moonlit-sa-(18-2020)-zwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--na-dzien-21-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":15,"title":"21:29 ORBIS SA (28/2020) Uchwała Rady Nadzorczej w sprawie oceny sytuacji Spółki","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896932,orbis-sa-(28-2020)-uchwala-rady-nadzorczej-w-sprawie-oceny-sytuacji-spolki","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":16,"title":"21:23 MOONLIT SA (13/2020) Zwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. na dzień 21 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896930,moonlit-sa-(13-2020)-zwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--na-dzien-21-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":17,"title":"21:09 ONE MORE LEVEL SA (1/2020) Przekroczenie progu","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896928,one-more-level-sa-(1-2020)-przekroczenie-progu","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":18,"title":"20:58 PAMAPOL SA (7/2020) Otrzymanie zawiadomienia na podstawie art. 69 ustawy o ofercie publicznej","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896926,pamapol-sa-(7-2020)-otrzymanie-zawiadomienia-na-podstawie-art--69-ustawy-o-ofercie-publicznej","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"},{"id":19,"title":"20:42 MOONLIT SA (17/2020) Odwołanie Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Moonlit S.A. zwołanego na dzień 6 maja 2020 r.","story_link":"http://biznes.pap.pl/pl/news/listings/info/2896923,moonlit-sa-(17-2020)-odwolanie-nadzwyczajnego-walnego-zgromadzenia-akcjonariuszy-moonlit-s-a--zwolanego-na-dzien-6-maja-2020-r-","pubdate":"2020-04-25T10:49:05Z","timesince":"0 minutes ago","date_display":"Apr 25, 2020 at 10:49 AM"}]}
    """
    res = json.loads(hoho)

    return res

Для этого я подумал, может быть chrome уведомление , или, возможно, с использованием win10toast или plyer для настройки событий кликов, открывающих ссылку в уведомлении в браузере

, что будет лучшим способом сделать это?

...