Ich habe eine App erstellt, die Sie benachrichtigt, wenn ein neuer Artikel in den Zielnetznachrichten im Benachrichtigungscenter des Mac veröffentlicht wird.
① 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.
Erstellt in allen 5 Schritten.
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
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
/Library/StartupItems/Newsmoniter
StartService()
{
/usr/local/bin/autorun.sh
}
cron
* * * * * /usr/local/bin/news_cmd.sh > /dev/null 2>&1; rm -f /usr/local/bin/news_cmd.sh > /dev/null 2>&1
Recommended Posts