Twitter のほうにも note の記事が自動で連携されるようにしてみた話。
以前、「Twitter の API を使ってみたいと思ったけど何故か SMS が受信できなくて困った!」という記事を書きました。
要約すると、このような感じでした。
この記事を書いた時は、もう諦めて適当に SNS の話をして誤魔化してみたんですが、先日ふと思い出したように、夜中「ちょっとまた電話番号を追加してみるか。どうせダメなんだろうけれど」と思ってやってみた。
すると、普通に SMS が届いた。
えっ?
今まで何度やってもダメだったので諦めていたけれど、ある時ひょっこり出来るようになってました。
ちなみに、Twitter アカウントや手持ちのデバイスの設定を変えたりしていない。本当に、突然、出来るようになった。いったい何が起こったの・・?
まぁそういうわけで何はともあれこれで実装ができそう。で、コツコツ時間を見つけて、現在、とりあえずは形になる感じのものは作れました。あとでちょっとコードも載せます。
ちなみに、巷に溢れていた情報では、API を使うための申請が結構めんどくさいとのことだったが、私が体験したものだと、ちょっとそれとは異なっていたように思う。現在は、大分フローが変わっているのかもしれない。
いきなり英語の申請文は書かされることはなく、どうやらデフォルトでは、限定的な機能でよければそのまま API は使えるようだった。ただ、その機能を広げるためには、結局は、英文で長々と書く必要があった。なので、フォーム上で、拙い中学レベルの英語でダラダラと申請理由を記載して送信してみた。「申請から承認までには数日かかることも・・」みたいなことも聞いたことがあったが、実際は、フォーム送信した後、即座に「認証したよ!」というリアクションがあって、もう API は使えるようになっていた。はっや・・。
本題
とにかく、無事に(無事か?)アカウントも認証されて API が使えるようになったので、こんな感じの設計で作りました。
処理概要
例のごとく、依然として全く慣れない Pythonで。前回作った note からはてなブログに同期させるスクリプトに対して、処理を追加する形にしてます。
(1. ~ 4-2. は既に実装済み。※下記の記事参照。なので、今回は、5. 以降の太字部分を実装)
せっかく Twitter やるなら遊んでみたくて、Wikipedia からも「今日は何の日」情報を引っ張ってきた。なんか bot 的なものを作ろうと思っていたので、ツイートにリアルタイム性があったほうが良いかなと思って。ただ、後述するが、微妙に苦戦する部分もあった。主に「誰の誕生日?」という情報を取得する部分。
コード説明
まず、上記処理概要の 1.~4-2. までのコードは割愛。前回から微妙に修正している部分もありますが、今回の記事はあくまで Twitter(あとWikipedia)の API を使う内容が主なので。
「今日は何の日」情報を取得する関数
def get_today_event():
# Wikipedia API で本日の日付の出来事などを取得
d = datetime.now()
dt = d.strftime("%Y-%m-%d %H:%M:%S")
wiki_wiki = wikipediaapi.Wikipedia('ja')
page_py = wiki_wiki.page(str(d.month) + "月" + str(d.day) +"日")
# ランダムで出来事や誕生日を抽出
l_idx = [0, 1]
x = random.choice(l_idx)
if x == 0:
txt_event = page_py.sections[x].text
msg_event = "という出来事があった日"
elif x == 1:
txt_event = page_py.sections[x].sections[0].text
msg_event = "という方の誕生日"
else:
txt_event = None
msg_event = None
if txt_event != None:
l_event = txt_event.split('\n')
y = random.randint(0,len(l_event)-1)
event = l_event[y]
uri = urllib.parse.quote('https://ja.wikipedia.org/wiki/{}月{}日'.format(d.month, d.day), safe='/:')
msg = "現在の時刻は「" + str(dt) +"」です。"
if msg_event != None:
msg += "\n\nそして本日は「" + event + "」" + msg_event + "です。\n" + uri
return (msg)
ツイートする関数
def post_tweet(consumer_key, consumer_secret, access_token, access_token_secret, msg):
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# ツイートを投稿
api.update_status(msg)
※これらのソースコードにより生じた如何なる損害についても、一切の責任は負いかねますので、あらかじめご了承ください。
感想
と、上記のような形で、一応自力で、note ⇒ Excel、はてな ⇒ Twitter といった形で自動的に連動させる仕組みは構築できた。
具体的なケースとしては、まずは、note で何かしら記事を書く。その後、このスクリプトが実行された時点で、一度全ての記事データがExcelファイルとしてバックアップ保存され、最新記事は、はてなブログにも同期される。それから最新記事を Twitter 上で宣伝する。もし最新記事が無くても、現在時刻と、その日あった歴史上の出来事か有名人の誕生日だけでもツイートする。といった流れ。
こう見ると、本当に誰にとっても何の役にも立たないような機能。自分の自分による自分のための機能ですみません。
ちなみに、今回のこのスクリプトは、bat ファイル化して、私が趣味用に使っている Windows PC上のタスクスケジューラに組み込んでみた。トリガーは、このPCが起動されて私のアカウントでサインインしたタイミングにしている。したがって、Twitter がつぶやかれているということは、恐らくその時点では私は生きていたということになります・・。
そんな生存確認 Twitter アカウントはこちら。
https://twitter.com/asaburosan
この記事が気に入ったらサポートをしてみませんか?