cojimaru BLOG

エンジニア支援のために技術情報を発信するブログ

Slack APIで高配当株情報をスマートフォンに自動配信してみた

f:id:cojimaru-chan:20210220222502p:plain

はじめに

どうも、こじまるです。
今回は『Webスクレイピングで高配当株 スクリーニング自動化ツールを作成した』の続編になります。


以前の記事で、スクリーニング済みの高配当株情報を含むExcelファイルをフォルダに配置できるようにしました。しかしながら、平日の特定の時間帯にツールが自動で動作する要件を満たせていないため、続編として対応を行いました。また、スマートフォンでも高配当株情報を見たいので、スマートフォンに情報を配信できるようにしました。

スクリーニングツールの作成

要件定義

前回の記事で下記のようにスクリーニングツールの要件を定義しました。今回は要件1と新たに追加した要件3を満たすようにします。


スクリーニングツールの要件定義

  1. 平日の特定の時間帯にツールが自動で動作すること。
  2. 東証一部上場の株式情報を取得すること。
  3. スマートフォンに高配当株情報を配信できるようにすること。(New)

スクリーニングツールの自動実行

私はWindowsのパソコンとUbuntuのサーバを所有しています。Windowsのパソコンは常に起動しているわけではないため、今回はUbuntuのサーバを使って自動実行を行います。


Windowsパソコンでpythonスクリプトを自動実行する方法はこちらで説明していますので、参考にしてください。
cojimaru-chan.hatenablog.com

Ubuntuの自動実行設定

Ubuntuのタスクを自動実行するために、cronを使用します。下記コマンドを実行すると、Vimを起動します。

$crontab -e

平日の17:00に自動実行するように設定します。

$crontab -l
LANG=ja_JP.UTF-8
0 17 * * 1-6 cd /home/{user}/finance;/usr/bin/python3 /home/{user}/finance/createStockMap.py

cronの設定は下記を参考にしました。
qiita.com

スマートフォンに高配当株情報の配信

Slack APIの設定

スマートフォンに高配当株情報を配信するために、Slack APIを使用します。詳細な手順については割愛しますので、参考サイトをご確認ください。


設定手順

  1. Slack APIより、アプリを作成
  2. スコープにファイル書き込みのため files:write の設定
  3. Slackにアプリをインストール
  4. Tokenをコピー
  5. Slackのチャンネルにアプリを追加

Slack APIの設定を行った後に、ソースコードを実行することでファイルをアップロードすることができました。
f:id:cojimaru-chan:20210220180810j:plain


検証に使用したソースコードは下記になります。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

api_token = '' # please enter your api_token
channel = '' # please enter your channel

class SlackManager:
    def __init__(self):
        self.api_token = api_token
        self.channel = channel

    def upload_file(self,file,file_name):
        files = {'file':open(file,'rb')}
        param = {
            'token' : self.api_token,
            'channels' : self.channel,
            'filename' : file_name,
            'initial_comment' : 'file upload',
            'title' : 'dividend stocks'
        }
        res = requests.post(url="https://slack.com/api/files.upload",
            params=param,
            files=files)
        print(res.json())

if __name__ =='__main__':
    file_name = 'stock_210220_144325.xlsx'
    file_path = './' + file_name
    slack = SlackManager()
    slack.upload_file(file_path,file_name)

参考
https://qiita.com/yaju/items/2e1ab8a25b6e207bfbe6
https://www.whizz-tech.co.jp/5857/

スクリーニングツールの修正

前回作成したスクリーニングツールでは、1行(1つの銘柄)に20個の情報を表示しています。スマートフォンでは情報が多すぎると見づらいので、14個の情報を表示します。

ソースコード

ソースコードはこちらに配置しています。
github.com

結果

スマートフォンのSlackでファイルを受け取れることができました。
f:id:cojimaru-chan:20210220181355p:plain


Excelアプリでファイルを表示した結果はこちらになります。1画面ですべての情報が表示できなかったため、2つの画像に分けています。
f:id:cojimaru-chan:20210220181728p:plain
f:id:cojimaru-chan:20210220181737p:plain

まとめ

スクリーニングした高配当株情報をスマートフォンに自動配信できるようになりました。今更ながらSlackを使用してみましたが、情報を収集するのにかなり便利ですね。今後はSlack API以外のAPIなども使って、情報収集などの紹介もしていけたらと思います。