NHKオンラインはRSSでニュースを提供している(→RSSについて)。これを定期的に読んで,気になるニュースを通知してみよう。
まずは主要ニュースのフィードを読んで各項目のタイトルを表示するだけのコード:
import feedparser
d = feedparser.parse('https://www.nhk.or.jp/rss/news/cat0.xml')
for i in d['entries']:
print(i['title'])
10分ごとに自動で読みに行って新着ニュースのタイトルを表示する:
import feedparser
import time
s = set() # 空集合
while True:
d = feedparser.parse('https://www.nhk.or.jp/rss/news/cat0.xml')
for i in d['entries']:
x = i['title']
if x not in s:
print(x)
s.add(x)
time.sleep(600) # 10分
Python で空集合は set()
とすることに注意。{}
では「空の辞書(dict)」になってしまう。
あとは好きなように拡張すればよい。例えば時分秒を付けてタイトルに「東京」かつ「「感染」または「コロナ」」が含まれればMacの通知センターにも通知を表示する:
import feedparser
import time
import os
from dateutil.parser import parse
s = set()
while True:
try:
d = feedparser.parse('https://www.nhk.or.jp/rss/news/cat0.xml')
except:
print("Timeout")
else:
for i in d['entries']:
x = f"{parse(i['published']):%H:%M:%S} {i['title']}"
if x not in s:
print(x)
s.add(x)
if '東京' in x and ('感染' in x or 'コロナ' in x):
x = x.replace("'", "").replace('"', '')
os.system(f"osascript -e 'display notification \"{x}\"'")
time.sleep(300)
ほかにメールやLINEを送ったりツイートしたりすることもできる。メールを送るには postfix などが動いているマシンで次のようにする:
os.system(f"echo '{x}' | mail hoge@example.com")
ちなみに,例えば三重県のニュース https://www3.nhk.or.jp/lnews/tsu/ であれば https://www3.nhk.or.jp/lnews/tsu/toplist.xml のように最後に toplist.xml を付ければ地方版の RSS も得られることを教えていただいた。
Last modified: