Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonでTwitterBotを作ってみたかった
Search
Yuuki Shimizu
April 06, 2019
Programming
0
350
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
980
Perlで痩せる
yuukis
1
800
Pythonで遊べるLEDボードの紹介
yuukis
0
98
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
540
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
510
Gemini API を試した話と山梨でオススメのものを語るLT
yuukis
0
93
山梨のIT勉強会コミュニティを盛り上げるためにアレ作ってみた!
yuukis
0
88
FastAPI を活用した オープンデータAPI の作成
yuukis
0
1k
FastAPIで始める やまなし温泉めぐり
yuukis
0
480
Other Decks in Programming
See All in Programming
Developing static sites with Ruby
okuramasafumi
0
320
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
420
AtCoder Conference 2025
shindannin
0
270
Cell-Based Architecture
larchanjo
0
140
Patterns of Patterns
denyspoltorak
0
330
Implementation Patterns
denyspoltorak
0
120
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
270
gunshi
kazupon
1
120
AIエージェントの設計で注意するべきポイント6選
har1101
5
2.3k
クラウドに依存しないS3を使った開発術
simesaba80
0
160
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
580
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
730
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
340
Optimizing for Happiness
mojombo
379
70k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
34
Visualization
eitanlees
150
16k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
680
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
76
First, design no harm
axbom
PRO
1
1.1k
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