Save 37% off PRO during our Black Friday Sale! »

PythonでTwitterBotを作ってみたかった

 PythonでTwitterBotを作ってみたかった

2019.4.6
Shingen.py #4 LT

1ac022a81a17900b312d8f7b03d2b4db?s=128

Yuuki Shimizu

April 06, 2019
Tweet

Transcript

  1. 【Shingen.py #4 LT】 Python で TwitterBot を作ってみたかった 2019. 4. 6 しみず

    ゆうき 1
  2. おまえ誰よ? しみず ゆうき • Android / iOS プログラマ • 甲府生まれ

    甲府育ち ※ 現在は東京に出稼ぎ中(3年目) 2
  3. 今日は 信玄公祭り!!! 3

  4. 信玄公祭りといえば、甲州軍団出陣 4

  5. 他にも色々イベントやってる 5 ▪平成31年4月5日(金)~7日(日)【主な催し(予定)】 お祭りおもてなし衆 賑わい城下町 湖衣姫コンテスト 信玄公を想う茶会 信玄グルメ横丁 琴・尺八奉納演奏 ひし丸スタンプラリー 輝きの祭典「大宝飾展」 スーパー風林火山パフォーマンスコンテスト 東京オリンピック・パラリンピック PRブース 出陣の宴 戦勝祈願式 陣屋の開設 太鼓の演奏 「風・林・火・山」総踊り 軍団集結 川中島ミニ決戦 出陣を彩るパレード 信玄公サイクルロードレース 出陣式 甲州軍団出陣 帰陣式 剣道大野試合 空手演舞会 こうふ開府

    500年記念ステージ 甲斐◇風林火山 子ども武者行列 甲府囃子演奏 和太鼓演奏会  KAIFUマルシェ2019 太白桜祭り 甲州寺子屋 (信玄公祭りスケジュール https://www.yamanashi-kankou.jp/shingen/schedule.html より)
  6. Bot で教えてあげたい 6 今は平和通りで「信玄公サイクルロードレース」 をやってるよ 今、何やってる? Twitter Bot

  7. 作ってみる! 7 ※ 以降のページは、LT内デモの内容を、発表後に資料としてまとめたものです

  8. 信玄公祭りスケジュールを json 化 8

  9. 開催中の催しのみ抽出し、並べ替え from datetime import datetime now = datetime.now() list =

    [] for event in events: dt_from = datetime.strptime(event['from'], '%Y/%m/%d %H:%M') dt_to = datetime.strptime(event['to'], '%Y/%m/%d %H:%M') event['time'] = dt_to - dt_from if dt_from < now and dt_to > now: list.append(event) # 開催時間が短い順にソート(メインの催しと勝手に定義) events = sorted(list, key=lambda x: x['time']) 9
  10. ツイートさせる内容を作成 status_text = f'今は{events[0]["place"]}で「{events[0]["name"]}」をやってるよ' print(status_text) 10 今は舞鶴城公園自由広場特設ステージで「出陣式」をやってるよ

  11. Twitter API を利用するための下準備 11 # ヒミツ consumer_key = '**********************' consumer_secret

    = '*****************************************' access_token_key = '**************************************************' access_token_secret = '*********************************************' $ pip install python-twitter • 今回は python-twitter パッケージを利用する • Twitter 開発者ポータルからトークン等取得しておく
  12. python-twitter パッケージの利用方法 import twitter # twitter.Api インスタンスを作成 api = twitter.Api(consumer_key=consumer_key,

    consumer_secret=consumer_secret, access_token_key=access_token_key, access_token_secret=access_token_secret) # 特定のユーザのタイムラインを取得 statuses = api.GetUserTimeline(screen_name=user) # ユーザの友達を取得 users = api.GetFriends() 12
  13. ツイートしよう! # ツイート api.PostUpdate(status_text) 13

  14. Bot にするために... • Bot 用の Twitter アカウントを作成する • Bot 宛のツイートを検索・取得し、

    送信者に対してメッセージを返信する 14
  15. 何が問題だったのか? 15

  16. Twitter アプリ申請のハードルが高くなってた 16 アプリケーションの内 容を説明する (英語・300字以上) レビューされる

  17. うーん、面倒! (昔は簡単だったのに ...) 17