前回作成したPythonでネットニュース通知アプリを作ってみたに2ちゃんねる投稿通知機能を追加しました。
#やりたいこと
前回作成したネットニュース通知アプリに、2ちゃんねるスレッドの投稿も通知する機能を追加する。
頻繁に投稿されないけど、チェックはしておきたいスレッドを対象とする。
通知レイアウトはネットニュース通知と同等とする。
・通知時の見え方(アイコンクリックで対象スレッドにジャンプ)
#参考にした資料
Pythonでニュース速報(嫌儲)のスレッド一覧を取得してみる。
#作成手順
全2工程で作成
1.mdfmonitorを改修
・改修箇所
ネットニュースの記事取得処理
ネットニュースの記事取得処理に、2ちゃんねるの投稿取得処理を追加しました。
def _get_text(self, url):
try:
l=[]
if (url.find("blog.esuteru") >= 0):
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 = []
elif (url.find("2ch.sc") >= 0):
for line in requests.get(url).iter_lines():
if re.search("<dt>.*<br>", line):
comment = re.sub("<dt>.*<dd>", "", line)
comment = re.sub(" <br> ", " ", comment)
comment = re.sub("<br><br>", "", comment)
comment = re.sub("<a href=.*gt;", ">>", comment)
comment = re.sub("</a>", "", comment)
comment = unicode(comment, "cp932", 'ignore')
comment = comment.encode('utf-8')
l.append([comment, url, "http://www.2ch.sc/img/2ch-logo-fix.gif"])
return l
except requests.exceptions.ConnectionError:
raise ConnectionError("Monitor can't connect the server of url you added.")
2.mdfmoniter.pyを呼び出すnewsmoniter.pyは下記2点を改修。
・通知対象URLの追加
・通知センターのタイトルをURLにより動的に変える
tmp $ diff -u org/newsmoniter.py new/newsmoniter.py
--- org/newsmoniter.py 2015-01-28 22:14:51.000000000 +0900
+++ new/newsmoniter.py 2015-01-28 22:14:32.000000000 +0900
@@ -9,10 +9,15 @@
# append file to mdfmonitor instance
monitor.add_url("http://blog.esuteru.com")
+monitor.add_url("http://nozomi.2ch.sc/test/read.cgi/pcqa/1419898591/l50")
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)
+ if (mdf.url.find("2ch.sc") >= 0):
+ sitename = "2ちゃんねる"
+ else:
+ sitename = "はちま起稿"
+ cmd = "/usr/local/bin/terminal-notifier -title {0} -message \"{1}\" -open {2} -sound Submarine -appIcon {3}".format(sitename, title, urladrs, icon)
f2 = open("/usr/local/bin/news_cmd.sh", "w")
f2.write(cmd)
os.chmod("/usr/local/bin/news_cmd.sh", 0777)
#今後やりたいこと
本ツールをpepper君へ移植し、新着記事は胸のタブレットに表示させる。
また、メッセージはpepper君にしゃべらせてみる。
#動作確認環境
・OS X Mavericks 10.9.5
・Python 2.7.5
・terminal-notifier 1.6.1