#oyasuminase

駆け出しオタクエンジニア

LINE botで占い情報を毎日通知する

会話はできるようになったので今度は毎日占い情報でも通知しようと思います。

占い情報を取得

占いはめざましテレビから取得します。朝は起きられないので何派でも無いです。

fcs2.sp2.fujitv.co.jp

サクッと実装したらひどいコードが出来上がっていたので一部だけ。戒めです。

def fortune_today(seiza):
    res = requests.get(URL_MEZAMASHI_URANAI)
    soup = BeautifulSoup(res.text, 'html.parser')
    rank_list = soup.find_all('div', class_='rankArea')

    info = get_rank_info(rank_list, seiza)

    text = 'おはようございます。\n'
    text += seiza + 'の今日の運勢は' + info.a.div.find_all('span')[0].get_text() + 'です。\n\n'

    for t in info.section.div.p.get_text(',').split(','):
        text += t + '\n'

    # 見やすくするため一行開ける
    text += '\n'
  
    for t in info.section.div.table.get_text(',').split(','):  
        text += t + '\n'  
  
    return text

get_rank_info()は対象の星座のBeautifulSoupオブジェクトを返します。あとはそこから必要な値を取得してメッセージを組み立てていくだけです。

少し厄介なのは星座によって「おまじない」や「アドバイス」があったりなかったりするところ。

11位 いて座
約束を破って信用問題に
決めたことは責任持って

ラッキーポイント
細いベルト

12位 ふたご座
思い込みで先走ると思わぬ落とし穴
全体を見渡して余裕を持って動こう

おまじない
座禅を組む
アドバイス
身内の意見を尊重する
ラッキーポイント
陶器の人形

見難いですがこんな感じです。昨日書いた方法で配列に分割し1行ずつ出力を行います。

    for t in info.section.div.table.get_text(',').split(','):  
        text += t + '\n'  

定時実行

Herokuのアドオンである「Heroku Scheduler」を利用します。GUIから行えるので特に書くこともないです。無料でもクレジットカードの登録が必要なのと時間指定がUTCなところに注意。

毎日朝9時に設定しました。明日LINEが来るか楽しみに就寝。