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
340
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
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
350
Perlで痩せる
yuukis
1
740
Pythonで遊べるLEDボードの紹介
yuukis
0
78
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
300
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
450
Gemini API を試した話と山梨でオススメのものを語るLT
yuukis
0
87
山梨のIT勉強会コミュニティを盛り上げるためにアレ作ってみた!
yuukis
0
82
FastAPI を活用した オープンデータAPI の作成
yuukis
0
1k
FastAPIで始める やまなし温泉めぐり
yuukis
0
470
Other Decks in Programming
See All in Programming
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
270
kiroでゲームを作ってみた
iriikeita
0
170
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.1k
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
290
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
130
tool ディレクティブを導入してみた感想
sgash708
1
140
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
2
480
DataformでPythonする / dataform-de-python
snhryt
0
180
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
170
「リーダーは意思決定する人」って本当?~ 学びを現場で活かす、リーダー4ヶ月目の試行錯誤 ~
marina1017
0
220
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
480
Understanding Kotlin Multiplatform
l2hyunwoo
0
260
Featured
See All Featured
Balancing Empowerment & Direction
lara
2
570
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
Speed Design
sergeychernyshev
32
1.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
We Have a Design System, Now What?
morganepeng
53
7.7k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Raft: Consensus for Rubyists
vanstee
140
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Making Projects Easy
brettharned
117
6.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Documentation Writing (for coders)
carmenintech
73
5k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
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