こんばんは〜
今日はAtcoderじゃなくて、slackbotを作った話です
指定したキーワードを含む最新のgoogleニュース5件を返してくれるようにしました。
入力は「news (キーワード)」※newsの後にスペースが必要
初期設定はこちらを参考にさせて頂きました。
# coding: utf-8
from slackbot.bot import respond_to
import feedparser
import json
import pprint
import urllib
import re
@respond_to('news\s(.*)') #入力はnews xxxx
def news_reply(message, keyword): #inputの2つ目を調べる際のkeywordとする
# RSSのスクレイピング
s = keyword
# URLエンコーディング
s_quote = urllib.parse.quote(s)
url = "https://news.google.com/news/rss/search/section/q/" + s_quote + "/" + s_quote + "?ned=jp&hl=ja&gl=JP"
d = feedparser.parse(url)
news = list()
for i, entry in enumerate(d.entries, 1):
p = entry.published_parsed
sortkey = "%04d%02d%02d%02d%02d%02d" % (p.tm_year, p.tm_mon, p.tm_mday, p.tm_hour, p.tm_min, p.tm_sec)
tmp = {
"no": i,
"title": entry.title,
"link": entry.link,
"published": entry.published,
"sortkey": sortkey #日付でソート
}
news.append(tmp)
news = sorted(news, key=lambda x: x['sortkey'])
#最新のニュース5件のタイトルとリンクを表示
for i in range(1,6):
text = news[-i]["title"] + '\n' + news[-i]["link"]
message.reply(text)
結論:
slackbotは簡単に作れる。
普通にググれば良い