Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt

Ich habe eine App erstellt, die Sie benachrichtigt, wenn ein neuer Artikel in den Zielnetznachrichten im Benachrichtigungscenter des Mac veröffentlicht wird.

Was du machen willst

① Neue Artikel werden veröffentlicht ② Das Benachrichtigungscenter benachrichtigt Sie (die Benachrichtigung verschwindet in wenigen Sekunden). ③ ー a Klicken Sie auf das Benachrichtigungssymbol, um den entsprechenden Artikel zu öffnen ③ ー b Artikel, die nicht geöffnet wurden, werden im Benachrichtigungsfenster gespeichert, auch wenn der Mac die Benachrichtigung nicht bemerkt.

Tools, die die oben genannten Spezifikationen erfüllen, werden beim Start des Betriebssystems automatisch ausgeführt. Auch wenn das Tool aufgrund eines vorübergehenden Kommunikationsfehlers usw. abnormal beendet wird, wird es neu gestartet.   名称未設定.png

Referenzierte Materialien

Erstellungsverfahren

Erstellt in allen 5 Schritten.

  1. Reparieren Sie mdfmonitor ・ Reparaturort A. Erkennungsprozess für URL-Updates B. Extraktionsprozess für URL-Aktualisierungsverlaufsinformationen

A. Die Erkennungsbedingungen für die URL-Aktualisierung wurden wie folgt geändert. · Vorhandenen Wenn sich das Header-Datum und der Inhalt der WEB-Seite seit der letzten Erfassung geändert haben ·diesmal Wenn sich seit der letzten Erfassung nur der Artikelteil der WEB-Seite geändert hat

mdfmonitor.py


    def _check_modify(self, url, o_rbody):
        n_rbody = self._get_text(url)
        if n_rbody == o_rbody:
            return False
        else:
            return True

    def _get_text(self, url):
        try:
            l=[]
            title = urladrs = icon = []
            for line in requests.get(url).iter_lines():
                # get title
                if line.find("<h2>") >= 0:
                    title = re.sub(".*html\">", "", line)
                    title = re.sub("</a>.*", "", title)
                # get url
                if line.find("<h2>") >= 0:
                    urladrs = re.sub(".*href=\"", "", line)
                    urladrs = re.sub("\">.*", "", urladrs)
                # get icon
                if re.search("<img src=.* class=\"pict.*\"", line):
                    icon = re.sub("\s.*<a.*img src=\"", "", line)
                    icon = re.sub("\" width.*", "", icon)

                if title and urladrs and icon:
                    l.append([title, urladrs, icon])
                    title = urladrs = icon = []
            return l
        except requests.exceptions.ConnectionError:
            raise ConnectionError("Monitor can't connect the server of url you added.")

Da die neue Ankunftserkennungslogik von der zu erkennenden WEB-Seite abhängt, ist dies unweigerlich ein nicht allgemeiner Zweck. Wenn die Anzahl der Erkennungsziele zunimmt, ist es besser, eine externe Datei für die Erkennungsschlüsselwörter zu erstellen.

B. Der Extraktionsprozess für URL-Aktualisierungsverlaufsinformationen wurde wie folgt geändert. · Vorhandenen Extraktionsprozess für URL-Aktualisierungsverlaufsinformationen ·diesmal Speichern Sie nur den neuen Artikelnamen, die neue Artikel-URL und das neue Artikelüberschriftenbild, die in A oben erfasst wurden, in einer mehrdimensionalen Liste.

mdfmoniter.py


    def _diffgen(self):
        l = []
        for new in self.new_rbody:
            if not new in self.old_rbody:
                l.append(new)
        return l
  1. Ausgabeverarbeitung der MAC-Benachrichtigungscenter-Aufrufbefehlsanweisung Dies ist eine Python-Datei, die mdfmoniter.py in 1 oben aufruft.

Ausführung von Terminal-Notifier Ich wollte es so ausführen, wie es nach dem Erstellen der Befehlsanweisung ist, aber wenn ich es durch automatischen Start ausführe, wird Terminal-Notifier aus irgendeinem Grund abnormal beendet. Daher wird der Befehl hier nicht ausgeführt, sondern von cron ausgeführt.

newsmoniter.py


#!/usr/bin/python
#coding: utf-8

import os
from mdfmonitor import URLModificationMonitor

# create Watcher instnce
monitor = URLModificationMonitor()

# append file to mdfmonitor instance
monitor.add_url("http://blog.esuteru.com")

for mdf in monitor.monitor():
    for title, urladrs, icon in mdf.diff:
        cmd = "/usr/local/bin/terminal-notifier -title new! -message {0} -open {1} -sound Submarine -appIcon {2}".format(title, urladrs, icon)
        f2 = open("/usr/local/bin/news_cmd.sh", "w")
        f2.write(cmd)
        os.chmod("/usr/local/bin/news_cmd.sh", 0777)
        f2.close()

3.newsmoniter.py Tool zur Überwachung von Leben und Tod Die obige newsmoniter.py wird möglicherweise aufgrund eines vorübergehenden Kommunikationsfehlers usw. abnormal beendet, und der Prozess kann verschwinden. Dieses Tool erkennt das Verschwinden und startet es neu.

autorun.sh


#!/bin/sh

while true;
do
    ps -ef | grep newsmoniter.py | grep -v grep
    if [ $? = "1" ]; then
        echo "restart newsmoniter.py"
        /usr/local/bin/newsmoniter.py
    fi
    sleep 10
done
  1. Einstellungen für den automatischen Start beim Start des Betriebssystems Verwenden Sie die Standardfunktionen des Betriebssystems und stellen Sie die obige autorun.sh so ein, dass sie beim Start des Betriebssystems gestartet wird.

/Library/StartupItems/Newsmoniter


StartService()
{
    /usr/local/bin/autorun.sh
}
  1. Ausführung des MAC-Benachrichtigungscenter-Aufrufbefehls durch cron

cron


* * * * * /usr/local/bin/news_cmd.sh > /dev/null 2>&1; rm -f /usr/local/bin/news_cmd.sh > /dev/null 2>&1

Was ich in Zukunft machen möchte

Betriebsüberprüfungsumgebung

Recommended Posts

Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe einen Blackjack mit Python gemacht!
Ich habe einen Python-Text gemacht
Ich habe mit Python einen Blackjack gemacht.
Ich habe Wordcloud mit Python gemacht.
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Erstellt eine Reise von Darts mit Python (Nachrichten)
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Was ich mit Python-Arrays gemacht habe
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Erstellen Sie eine Desktop-App mit Python mit Electron
Ich habe eine WEB-Bewerbung bei Django gemacht
Othello App (iOS App) erstellt mit Python (Kivy)
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe ein Tool erstellt, das die Dekomprimierung mit CLI (Python3) etwas erleichtert.
Ich habe ein Modul PyNanaco erstellt, das Nanaco-Guthaben mit Python belasten kann
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich möchte ein Spiel mit Python machen
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Ich habe eine einfache Brieftasche aus Bitcoin mit Pycoin gemacht
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Ich möchte mit Python in eine Datei schreiben
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Python Qiita API Wrapper "qiipy" gemacht