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
330
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
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
130
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
360
Gemini API を試した話と山梨でオススメのものを語るLT
yuukis
0
75
山梨のIT勉強会コミュニティを盛り上げるためにアレ作ってみた!
yuukis
0
70
FastAPI を活用した オープンデータAPI の作成
yuukis
0
980
FastAPIで始める やまなし温泉めぐり
yuukis
0
460
Slack の困りごとを何とかしてみた①
yuukis
0
87
Pythonでslackの困りごとを何とかしてみた①
yuukis
0
320
Pythonでお絵かき①
yuukis
0
370
Other Decks in Programming
See All in Programming
Orleans + Sekiban + SignalR でリアルタイムWeb作ってみた
tomohisa
0
250
「理解」を重視したAI活用開発
fast_doctor
0
310
Global Azure 2025 @ Kansai / Hyperlight
kosmosebi
0
160
「MCPを使ってる人」が より詳しくなるための解説
yamaguchidesu
0
230
リアーキテクチャの現場で向き合う 既存サービスの読み解きと設計判断
ymiyamu
0
130
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
320
Serving TUIs over SSH with Go
caarlos0
0
730
実践Webフロントパフォーマンスチューニング
cp20
45
10k
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
120
Designing Your Organization's Test Pyramid ( #scrumniigata )
teyamagu
PRO
5
1.5k
クラス設計の手順
akikogoto
0
110
Jakarta EE Meets AI
ivargrimstad
0
960
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
A designer walks into a library…
pauljervisheath
205
24k
Adopting Sorbet at Scale
ufuk
76
9.4k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
We Have a Design System, Now What?
morganepeng
52
7.6k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Invisible Side of Design
smashingmag
299
50k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
For a Future-Friendly Web
brad_frost
177
9.7k
A better future with KSS
kneath
239
17k
Producing Creativity
orderedlist
PRO
344
40k
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