Пример #1
0
def send_folio_roboad(channel):
    """おまかせの資産の通知
    """

    roboad = folio_repository.fetch_roboad()

    if roboad['status'] == 'NG':
        post_message = '```データの取得に失敗しました```'
        slack_messenger.post(post_message, channel)

    deposit = '{:,}'.format(roboad['deposit'])
    gains_amount = '{:,}'.format(roboad['gains']['amount'])
    gains_rate = '{:.2%}'.format(roboad['gains']['rate'])
    previous_amount = '{:,}'.format(roboad['previous_day']['amount'])
    previous_rate = '{:.2%}'.format(roboad['previous_day']['rate'])

    post_message = "おまかせの資産の取得に成功しました!\n"
    post_message += "お預かり資産: {}円\n".format(deposit)
    post_message += "含み損益: {} ({})\n".format(gains_amount, gains_rate)
    post_message += "前日比: {} ({})\n".format(previous_amount, previous_rate)
    if roboad['previous_day']['amount'] > 0:
        post_message += '前日比がプラスになっています!\n'
    else:
        post_message += '前日比がマイナスになっています…\n'
    post_message += '詳しくは: https://folio-sec.com/mypage/assets/omakase'

    slack_messenger.post(
        post_message,
        channel,
        as_user=False,
        icon_emoji=':moneybag:',
        username='******')

    print('[info] message is posted. ch:[{ch}] message:[{me}]'.format(
        ch=channel, me=post_message[:10]))
Пример #2
0
def send_folio_sammary(channel):

    sammary = folio_repository.fetch_sammary()

    if sammary['status'] == 'NG':
        post_message = '```データの取得に失敗しました```'
        slack_messenger.post(post_message, channel)

    total = '{:,}'.format(sammary['total'])
    gains_amount = '{:,}'.format(sammary['gains']['amount'])
    gains_rate = '{:.2%}'.format(sammary['gains']['rate'])
    previous_amount = '{:,}'.format(sammary['previous_day']['amount'])
    previous_rate = '{:.2%}'.format(sammary['previous_day']['rate'])

    post_message = "資産概要の取得に成功しました!\n"
    post_message += "すべての資産: {}円\n".format(total)
    post_message += "含み損益: {} ({})\n".format(gains_amount, gains_rate)
    post_message += "前日比: {} ({})\n".format(previous_amount, previous_rate)
    if sammary['previous_day']['amount'] > 0:
        post_message += '前日比がプラスになっています!\n'
    else:
        post_message += '前日比がマイナスになっています…\n'
    post_message += '詳しくは: https://folio-sec.com/mypage/assets'

    slack_messenger.post(
        post_message,
        channel,
        as_user=False,
        icon_emoji=':moneybag:',
        username='******')

    print('[info] message is posted. ch:[{ch}] message:[{me}]'.format(
        ch=channel, me=post_message[:10]))
Пример #3
0
def post_htb_hotentry(message, *args):

    print(f'[info] listen to message. text=[{message.body["text"]}]')
    channel = message.body['channel']
    slack_messenger.post(
        "はてブのホッテントリを取得します",
        channel,
        as_user=False,
    )

    htb_service.send_htb_hotentry(channel)
Пример #4
0
def post_folio_summary(message):
    """FOLIOのWebページから資産概要を取得し表示する。

    Arguments:
        message {message} -- Slack上で取得したメッセージなど
    """
    print('[info] listen to message. text=[{0}],'.format(message.body['text']))
    channel = message.body['channel']
    slack_messenger.post("FOLIOから資産概要を取得します…",
                         channel,
                         as_user=False,
                         icon_emoji=':moneybag:',
                         username='******')
    folio_service.send_folio_sammary(channel)
Пример #5
0
def post_dolio_detail(message, option):
    """FOLIOのWebページからすべてのテーマ・おまかせ投資それぞれのグラフの画像を取得し表示する。
    コマンド: "folio [-g|--graph]"

    Arguments:
        message {message} -- Slack上で取得したmessage
        option {str} -- オプション文字列
    """
    print('[info] listen to message. text=[{0}],'.format(message.body['text']))
    channel = message.body['channel']
    slack_messenger.post("FOLIOから資産推移のグラフを取得します…",
                         channel,
                         as_user=False,
                         icon_emoji=':moneybag:',
                         username='******')
    folio_service.send_folio_detail(channel)
Пример #6
0
def run():

    timestamp = datetime.datetime.now()
    print(f'[info] {timestamp} htb_daily is running.')

    # 投稿先チャンネル
    channel = '9_test'

    slack_messenger.post(
        "はてブのホッテントリを取得します",
        channel,
        as_user=False,
    )

    # 最新の日記をSlackに投稿する
    htb_service.send_htb_hotentry(channel)
Пример #7
0
def send_folio_detail(channel):
    """FOLIO グラフ画像の通知

    Arguments:
        channel {str} -- チャンネルID
    """

    print('[info] called service method. name=[send_folio_detail]')

    # 投稿する画像をそれぞれ取得して保存する
    # ファイルパスを辞書型で返してもらう
    result = folio_repository.fetch_graph_images()

    if result['status'] == 'NG':
        post_message = '```データの取得に失敗しました```'
        slack_messenger.post(post_message, channel)

    # 画像を投稿する(テーマの資産)
    slack_uploader.upload_image(
        result['path']['theme'],
        channel,
        initial_comment='取得元: https://folio-sec.com/mypage/assets',
        title='transition graph about theme assets.',
        as_user=False,
        icon_emoji=':moneybag:',
        username='******')

    # 画像を投稿する(おまかせの資産)
    slack_uploader.upload_image(
        result['path']['roboad'],
        channel,
        initial_comment='取得元: https://folio-sec.com/mypage/assets/omakase',
        title='transition graph about roboad assets.',
        as_user=False,
        icon_emoji=':moneybag:',
        username='******')

    # アップロード完了後画像を削除する
    os_manager.remove_file(result['path']['theme'])
    os_manager.remove_file(result['path']['roboad'])

    print('[info] finish service method. name=[send_folio_detail]')
Пример #8
0
def upload_5_days_weather_graph(city_name, channels):
    """
    5日間予報のグラフ付きメッセージを取得する。
    city_name: 天気データを取得する都市名
    channels: 投稿するチャネルのID
    """

    print('[info] called service method. name=[upload_5_days_weather_graph]')

    # OWMのAPIから天気予報JSONデータを取得する
    data = openweathermap.fetch_5_days_weather_data(city_name)

    # 取得結果チェック
    if cod_check(data) != '200':
        slack_messenger.post('```天気データが正しく取得できませんでした```', channels)
        return False

    # データを渡してグラフ画像のファイルパスをもらう
    img_filepath = graph_creator.create_5_days_weather_graph(data)

    # 画像を投稿する
    up_result = slack_uploader.upload_image(
        img_filepath,
        channels,
        initial_comment='uploaded forecast graph in {}'.format(city_name),
        title='5 days forecast in {}'.format(city_name))

    # 結果を取得
    if up_result == False:
        slack_messenger.post('```天気データが正しく取得できませんでした```', channels)
        return False

    # アップロード完了後画像を削除する
    os_manager.remove_file(img_filepath)

    print('[info] finish service method. name=[upload_5_days_weather_graph]')

    return True
Пример #9
0
def post_njpw_daily(channel, img=True):

    # 開始メッセージを投稿する
    slack_messenger.post('本日の日記を取得します…', channel, as_user=False)

    # 日記テキストと画像を取得
    text, thumb_paths = njpw_repository.fetch_daily_data()

    # テキストを投稿
    slack_messenger.post(f'>>> {text}', channel, as_user=False)

    # thumbnailを投稿(枚数分だけ)
    for i, thumb_path in enumerate(thumb_paths):
        slack_uploader.upload_image(thumb_path,
                                    channel,
                                    initial_comment=f'thumbnail {i+1}')

    # アップロード完了後画像を削除する
    for thumb_path in thumb_paths:
        os_manager.remove_file(thumb_path)

    print(
        f'[info] finish service method. name=[{inspect.currentframe().f_code.co_name}]'
    )
Пример #10
0
def post_daily_folio_notify(channel):

    icon_emoji = ':moneybag:'
    username = '******'

    # 開始メッセージを投稿する
    slack_messenger.post(
        "【定期】FOLIOから資産概要を取得します…",
        channel,
        as_user=False,
        icon_emoji=icon_emoji,
        username=username)

    # FOLIOサイトから一連のデータを取得
    sammary, theme, roboad = folio_repository.fetch_daily_data()

    # それぞれメッセージを作成
    sammary_message = make_sammary_message(sammary)
    theme_message = make_theme_message(theme)
    roboad_message = make_roboad_message(roboad)

    # 資産概要を投稿する
    slack_messenger.post(
        sammary_message,
        channel,
        as_user=False,
        icon_emoji=icon_emoji,
        username=username)

    # テーマの資産状況を投稿する
    slack_messenger.post(
        theme_message,
        channel,
        as_user=False,
        icon_emoji=icon_emoji,
        username=username)

    # おまかせの資産状況を投稿する
    slack_messenger.post(
        roboad_message,
        channel,
        as_user=False,
        icon_emoji=icon_emoji,
        username=username)