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
しみず ゆうき
April 06, 2019
Programming
360
0
Share
PythonでTwitterBotを作ってみたかった
2019.4.6
Shingen.py #4 LT
しみず ゆうき
April 06, 2019
More Decks by しみず ゆうき
See All by しみず ゆうき
EventBridgeで地域イベントのイベントストリームを作ってみた
yuukis
0
96
2025年 山梨の技術コミュニティを振り返る
yuukis
0
360
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
1.1k
Perlで痩せる
yuukis
1
850
Pythonで遊べるLEDボードの紹介
yuukis
0
120
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
630
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
560
Gemini API を試した話と山梨でオススメのものを語るLT
yuukis
0
110
山梨のIT勉強会コミュニティを盛り上げるためにアレ作ってみた!
yuukis
0
110
Other Decks in Programming
See All in Programming
おれのAgentic Coding 2026/03
tsukasagr
1
130
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
240
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
720
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
PHPで TLSのプロトコルを実装してみる
higaki_program
0
740
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
400
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
KagglerがMixSeekを触ってみた
morim
0
370
iOS機能開発のAI環境と起きた変化
ryunakayama
0
160
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
440
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
110
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
A Tale of Four Properties
chriscoyier
163
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
The Pragmatic Product Professional
lauravandoore
37
7.2k
BBQ
matthewcrist
89
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
87
Technical Leadership for Architectural Decision Making
baasie
3
310
Documentation Writing (for coders)
carmenintech
77
5.3k
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