Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonでTwitterBotを作ってみたかった
Search
Yuuki Shimizu
April 06, 2019
Programming
0
310
PythonでTwitterBotを作ってみたかった
2019.4.6
Shingen.py #4 LT
Yuuki Shimizu
April 06, 2019
Tweet
Share
More Decks by Yuuki Shimizu
See All by Yuuki Shimizu
Gemini API を試した話と山梨でオススメのものを語るLT
yuukis
0
52
山梨のIT勉強会コミュニティを盛り上げるためにアレ作ってみた!
yuukis
0
56
FastAPI を活用した オープンデータAPI の作成
yuukis
0
910
FastAPIで始める やまなし温泉めぐり
yuukis
0
410
Slack の困りごとを何とかしてみた①
yuukis
0
81
Pythonでslackの困りごとを何とかしてみた①
yuukis
0
290
Pythonでお絵かき①
yuukis
0
330
Pythonを使ってみんなでワイワイしたい
yuukis
0
170
Pythonで始めるお手軽ダイエット(2)
yuukis
0
360
Other Decks in Programming
See All in Programming
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
410
JavaでLチカしたい! / JJUG CCC 2024 Fall LT
nhayato
0
110
外部システム連携先が10を超えるシステムでのアーキテクチャ設計・実装事例
kiwasaki
1
280
Identifying User Idenity
moro
6
9.5k
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
200
Realtime API 入門
riofujimon
0
140
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
17
4.3k
推し活としてのrails new/oshikatsu_ha_iizo
sakahukamaki
3
2k
Googleのテストサイズを活用したテスト環境の構築
toms74209200
0
300
Kubernetes for Data Engineers: Building Scalable, Reliable Data Pipelines
sucitw
1
220
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.9k
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
590
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Building Applications with DynamoDB
mza
90
6.1k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Fireside Chat
paigeccino
33
3k
Designing for humans not robots
tammielis
249
25k
Automating Front-end Workflow
addyosmani
1366
200k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How GitHub (no longer) Works
holman
310
140k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Transcript
【Shingen.py #4 LT】 Python で TwitterBot を作ってみたかった 2019. 4. 6 しみず
ゆうき 1
おまえ誰よ? しみず ゆうき • Android / iOS プログラマ • 甲府生まれ
甲府育ち ※ 現在は東京に出稼ぎ中(3年目) 2
今日は 信玄公祭り!!! 3
信玄公祭りといえば、甲州軍団出陣 4
他にも色々イベントやってる 5 ▪平成31年4月5日(金)~7日(日)【主な催し(予定)】 お祭りおもてなし衆 賑わい城下町 湖衣姫コンテスト 信玄公を想う茶会 信玄グルメ横丁 琴・尺八奉納演奏 ひし丸スタンプラリー 輝きの祭典「大宝飾展」 スーパー風林火山パフォーマンスコンテスト 東京オリンピック・パラリンピック PRブース 出陣の宴 戦勝祈願式 陣屋の開設 太鼓の演奏 「風・林・火・山」総踊り 軍団集結 川中島ミニ決戦 出陣を彩るパレード 信玄公サイクルロードレース 出陣式 甲州軍団出陣 帰陣式 剣道大野試合 空手演舞会 こうふ開府
500年記念ステージ 甲斐◇風林火山 子ども武者行列 甲府囃子演奏 和太鼓演奏会 KAIFUマルシェ2019 太白桜祭り 甲州寺子屋 (信玄公祭りスケジュール https://www.yamanashi-kankou.jp/shingen/schedule.html より)
Bot で教えてあげたい 6 今は平和通りで「信玄公サイクルロードレース」 をやってるよ 今、何やってる? Twitter Bot
作ってみる! 7 ※ 以降のページは、LT内デモの内容を、発表後に資料としてまとめたものです
信玄公祭りスケジュールを json 化 8
開催中の催しのみ抽出し、並べ替え 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
ツイートさせる内容を作成 status_text = f'今は{events[0]["place"]}で「{events[0]["name"]}」をやってるよ' print(status_text) 10 今は舞鶴城公園自由広場特設ステージで「出陣式」をやってるよ
Twitter API を利用するための下準備 11 # ヒミツ consumer_key = '**********************' consumer_secret
= '*****************************************' access_token_key = '**************************************************' access_token_secret = '*********************************************' $ pip install python-twitter • 今回は python-twitter パッケージを利用する • Twitter 開発者ポータルからトークン等取得しておく
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
ツイートしよう! # ツイート api.PostUpdate(status_text) 13
Bot にするために... • Bot 用の Twitter アカウントを作成する • Bot 宛のツイートを検索・取得し、
送信者に対してメッセージを返信する 14
何が問題だったのか? 15
Twitter アプリ申請のハードルが高くなってた 16 アプリケーションの内 容を説明する (英語・300字以上) レビューされる
うーん、面倒! (昔は簡単だったのに ...) 17