追記 2019/12/22 状況報告
きっかけ
connpassの勉強会情報を自動で通知してくれるようにできないかと思ったのがきっかけです。メンバーになっている勉強会の情報はメールで通知がきますが、メンバーになっていない勉強会は通知が来ないため、不便です。なら自分で作てみようかな。
説明
簡単に説明すると、connpassAPIを使い勉強会の情報を取得して、それをwebhookを使いslackに通知する感じです。自分の興味のあるキーワードを指定して、そのキーワードにヒットした勉強会情報を通知してくれます。
データ取得(cronで決められた時間に実行)
↓
新規の勉強会があるかデータベースに格納されているデータと比較
↓
新規の勉強会があったらslackへ送信
使ったもの
・さくらのVPS
・Python 3.6.8
・mysql 5.7.27
・webhook
・github(プライベートリポジトリ)
・cron
問題点
作るにあたっていくつか問題点がありました。
・古い情報の取得
あまり勉強会の開かれていないキーワードを指定すると、データを取得した日より過去の勉強会情報も取得されてしまいます。そのため、取得した情報が過去のものか日付比較の処理をいれました。
・関係のない勉強会の取得
connpassAPIのキーワード検索では、文章中にそのキーワードがあればヒットします。例えば、福岡県で行われるイベントをキーワードに指定して検索すると、文章中の講師紹介欄とかに福岡県出身とあったらヒットしてしまいます。なので、APIの検索では大まかに検索してもらい、あとの正規表現で開催場所を絞り込んでます。
また、開催場所だけでなく"python","セキュリティ"などのキーワードを検索した場合も、文章中にそのキーワードが含まれていればヒットします。(例えば、"セキュリティ的に身分の..."などイベントの内容と関係のないところでヒットしてしまう)そのイベントが頻繁に行われている場合、邪魔になってくるのでイベントのタイトルに対し正規表現を使い弾くようにしています。
作ってみて
pythonは基礎をやった程度、データベースは講義の座学で学んだ程度だったため、うまくいかない事が多かったですが、とても勉強になりました。エラー解決するために色々調べるため、知識が増えたと思います。
コード
https://github.com/houtarou-dism/connpassAPI-event-notification