kernelが公開されたら、通知を送る方法
kernelが公開されたら(versionが上がったら)discordやslackに通知を送る方法
discordもslackもwebhookを使って通知する
以下のコードを、herokuを使って1時間毎にmain.pyを実行するなどする
upvoteの絵文字は登録しておく
通知のイメージは以下
discord
https://gyazo.com/fb79c7d3c37d9831df69c82f2177c444
slack
https://gyazo.com/7f27f4b82c234a6c5dce7690751ca2b8
slackは、最近使っていないので、修正が必要かも?
code: main.py
# -*- coding: utf-8 -*-
import sys
import datetime
import yaml
import requests
import json
from kaggle import KaggleApi
with open('config.yml', 'r') as yml:
CONFIG = yaml.load(yml, Loader=yaml.SafeLoader)
competition_list = list(CONFIG.keys())
api = KaggleApi()
api.authenticate()
now = datetime.datetime.utcnow()
def post_discord(conf, kernels_list):
for kernel_info in kernels_list:
n_upvote = kernel_info.totalVotes
message = f'---\n{upvote_emoji}{n_upvote} {kernels_url}'
main_content = {"user_name": 'test',
"content": message}
requests.post(webhook_url, main_content)
def post_slack(conf, kernels_list):
for kernel_info in kernels_list:
n_upvote = kernel_info.totalVotes
title = kernel_info.title
author = kernel_info.author
requests.post(web_hook_url, data=json.dumps({
'text': f"---\n:upvote:<{kernels_url}|{str(n_upvote)}> {title}, author: {author}",
"unfurl_links": True,
'username': u'Kernel-notify',
}))
def main():
for competition in competition_list:
kernels_list = api.kernels_list(
competition=competition_name, page_size=100, sort_by='dateRun')
last_date = now - datetime.timedelta(days=1, seconds=30)
else:
last_date = now - datetime.timedelta(hours=1, seconds=30)
if __name__ == "__main__":
main()
code:config.yml
compe1:
debug: False
competition: hoge # kaggle apiでコンペ名を取得して、変更する 例: titanic
discord: True # discordに投稿するか否か
discord_params:
upvote_emoji_id: "<:upvote:706019179924553788>" # emoji idを取得して置き換え
slack: False # slackに投稿するか否か
slack_params:
compe2:
# 以降投稿したいコンペの数だけ、下に同様に書く