【なんでも自動化してみたい🤖①】 Twitter ✖️ note ✖️ Heroku
なんでも自動化していきたい!!!!!🤖🤖🤖
自動化って単語がすごいカッコいいですよね?
定期実行するTwitter Botを作っていこうと思います!!!!
やっていきましょう!
Twitter🕊
APIの申請✨
とにかくここが山です。⛰⛰⛰⛰⛰⛰⛰⛰⛰⛰⛰
しかも高めです。🦖🦖🦖🦖🦖🦖🦖🦖🦖🦖🦖
ですが、申請後すぐAPIを利用することができました!!!
頑張っていきましょう。
参考になる記事👇
Heroku🟪
新規登録✨
これは壁低めです。🐜🐜🐜🐜🐜🐜🐜🐜🐜🐜🐜
飛び越えてやりましょう。
装備が整いました。🥷🥷🥷🥷🥷
Twitter APIについて❓
API KEY
API SECRET
ACCESS TOKEN
ACCESS TOKEN SECRET
上記の4つをとりあえず取得しましょう。
(メモ帳なんかに保存?しておきましょう)
下の記事が時にわかりやすいです。
noteのRSSについて❓
RSSについてはhttps://www.asobou.co.jp/blog/life/rss-2でわかるかと思います。
下の画像になんとRSSのURLが!!!!!!
Herokuについて❓
とりあえず使えるコマンドでもメモしておきます。。。。
$brew tap heroku/brew && brew install heroku # Macの方向けです🙇♂️
$heroku login # herokuにログイン!!!
$git init # https://atmarkit.itmedia.co.jp/ait/articles/2003/12/news010.html
$git add . # ローカルの差分追加
$git commit -m "<commit_msg>" # <commit_msg>は好みのコミットメッセージで!!!
$heroku create <app_name> # herokuのアプリ作成, <app_name>は無しでもおk
$git push heroku master # Herokuへデプロイ⏫⏫⏫⏫
デプロイしたソースコード❓(コードが汚い)
ディレクトリ
├── Procfile
├── README.md
├── infra
│ ├── rss.py
│ └── twitter.py
├── main.py
├── requirements.txt
├── runtime.txt
└── tasks
└── task1_note_tweet.py
ソースコード作成の手順
1.依存関係のインストール
$pip install tweepy
$pip install APScheduler
$pip install feedparser
$pip freeze > requirements.txt
2.まずTwitter APIと利用する
# infra/twitter.py
import tweepy
# 返り値がtweepyに依存しているから△
def get_client(api_key: str, api_secret: str, access_token: str, access_token_secret: str) -> tweepy.API:
auth = tweepy.OAuthHandler(api_key, api_secret)
auth.set_access_token(access_token, access_token_secret)
return tweepy.API(auth)
3.RSSフィードを読む
# infra/rss.py
import feedparser
# 返り値がfeedparserに依存してるから本当に△
def get_feed(url: str) -> object:
return feedparser.parse(url)
4.RSSを読み込んでツイートする関数でも作る
# tasks/task1_note_tweet.py
from typing import Callable
TWEET_BODY = """
{}
{}
"""
def tweet_note(tweet : Callable[[str], None], title: str, url: str, retry=True):
try:
tweet(TWEET_BODY.format(title, url))
except:
if retry:
tweet_note(tweet, title, url, retry=False)
else:
logger.info("failed to tweet")
5.main.py!!!
import random
import os
from apscheduler.schedulers.blocking import BlockingScheduler
from infra import twitter, rss
from tasks import task1_note_tweet
API_KEY = 'Twitter API KEY'
API_SECRET = 'Twitter API SECRET'
ACCESS_TOKEN = 'Twitter ACCESS TOKEN'
ACCESS_TOKEN_SECRET = 'Twitter ACCESS TOKEN SECRET'
RSS_URL = 'note RSS URL'
scheduler = BlockingScheduler()
@scheduler.scheduled_job('interval', minutes=30)
def job_30_minutes():
twitter_client = twitter.get_client(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
feed = rss.get_feed(RSS_URL).entries
feed_entry = random.choice(feed)
task1_note_tweet.tweet_note(twitter_client.update_status, feed_entry.title, feed_entry.links[0].href)
scheduler.start()
6.Profile を忘れずに!!!✍️
clock: python main.py
まとめ✅
非常に簡単にBotを作成できました。🤖
今回も誰の役にも立たない記事を書いてしました。😂
今後もっといい記事が吐き出せるように精進したいと思います。🙇♂️
また何かを自動化できるネタを思いついたら書こうと思います。
関係ないのですが、次回はGo x DeZeroの続きでも書こうともいます!
ではおやすみ、おはよう、こんにちは