見出し画像

自分のTweetをNotionに保存したい〜試行錯誤〜

Notionに自分の"ツイート"や"いいね"を保存したい!!!

背景

大学生の頃からEvernoteを使っていた。課金ユーザーだった。
ここ2年くらいで本格的にNotionに移行し
Evernoteを使わなくなってしまった。
Evernoteを使っているときはツイエバというサービスを使って自分のツイートなどを保存していた

見返すような習慣はないがなんとなく保存したいのだ!!!

調べる

・既存のサービスがあるか調べた

同じようなサービスでNotionに保存できないかなーと調べてみた

Twinotionを見つけた!
見てみるとサブスクリプション型のサービス
個人利用で見返す予定もなかったので浪費だと思い断念。

気軽になんとなくで保存しておきたい・・・・

・Zapierで実現!??

さらに調べてみると
Zapierを使うと15minで欲しい機能が実現することを知った!
実際にやってみたらめちゃくちゃ簡単
本当にモノの数分でできる

◉ツイート保存用DB
 ツイートしたら→Notion DBに保存
◉いいね保存用DB
 いいねしたら→Notion DBに保存
上記の2つが簡単に作れた!!

が問題があった。

FreePlanだと制限がある。
月に100Tasksなんてすぐに到達してしまいそう

アップデートを考えたが激高い$20
これならTwi Notionに課金する¥500/mo

・Zapierみたいにどうにかできないか

TwitterAPIとNotionAPIを使えば、自分で作れるかもしれない

全くAPIの知識もなく、何の言語で書けばいいのかもわからない
が、なんか自分で作ってみるかーという気持ちになった

それくらいTwitter→Notion DBに保存したかったのかもしれない。

自作する

自作がいい感じになるまで試行錯誤が多く
ほぼ書き終わってみると80%くらい遠回りした・・・
って思うが全てが財産。これらがなかったら完成してなかったかも。

現状
Twitter→Notionのcodeは書けたがプログラムを走らせるたびに
追加されるので、重複処理のコードを追加しないといけない。
+トリガーも追加して、定期的に取得したい

やることはまだあれど、120-200行くらいあれば
Twitter APIデータをNotion用のパラメータに格納して取得することができる。

他の人ができるように再現性のある清書したnoteを書こうと思っているが
こう思っている時点でおそらく書かないで
これがログとして残るだろう。
だって、数日したらどうやってやったか
覚えていないのだから〜〜〜〜〜〜〜!




それでは自作の試行錯誤を記録しておこう

・プロジェクト:Twitter To Notion(TTN)

これよりプロジェクト名”TTN”としていく
(これ割と中盤過ぎに略せばいいと気がついた。Twitter To Notionってファイル名とかに使ってて長すぎて省略した)

・まず、TwitterAPIとNotion APIについて調べる

・Twitter APIを使えるようにキーを発行する

いつぞやに、自分のブログでTwitter APIを使おうと思った時があって発行はしていた。けど全然わからなくてキーを発行して終わった記憶がある。

・Notion APIを使えるようにキーを発行する

YouTubeを見ながら新しく発行

・TwitterAPIを触ってみる

TwitterのAPIは普通に手書きで使ってみる
エディター:VScode
言語:Python
(OS:macOS)

まずやったことは”ツイートを取得するコードを書く”
〜codeは割愛〜

Twitterのドキュメント(Developer Platform)

ターミナルで実行し、apiで取ってきた"text"情報をprintで出力

こんなことを繰り返してTwitterAPIで何が取れるのか試していた。
一度繋いで仕舞えば簡単。
というかプログラム書いたことのない人でもKey情報書いてauth作ってapiに繋ぐだけだから知識浅くてもやってればいける気がする。

自分はプログラム嫌い&苦手だが初見でいけた。
だってこれは定型文だから〜!!!!!!!
調べて、その通りに書いて自分のキーに書き換えればOK
なんて簡単なんだ。さすがAPI!!!!!!!

・ NotionAPIを触ってみる

Postmanで同じように書きながらやってみたらちゃんとデータベースに追加したり、更新したりできることが確認できた。
データがどんな形で送られているのかも確認できたので良き◎

Notionが提供しているドキュメント?API Referenceをみたら
わかるよなわからないような感じだがちょくちょくみてやってる

↑のReferenceで情報を入れれば、言語に合わせてコードを生成してくれる

これはマジで有能かよって思った

・VScodeからNotion APIを使ってみる

基本的には簡単。ただ0から書いていたから遠回りもした。

header情報など必要なものを用意してまず
データベースの情報をjsonに吐き出すプログラムを書く。

ベタ書きで引数やら動作やらはちゃめちゃだったが
綺麗にしていったら少しはマシになった。

書いたプログラム
◉ReadDatabase: DB情報
◉createPage: DBにページを追加
◉updatePage:DBにあるページを更新

status_codeを出力しながらどれも上手くいった。
パラメータはベタ書き・・・・汚い。
まあ何となく動きはわかったような気がする。


・これ何をどうすればいいんだ????

どちらもふんわり使い方はわかった
これから何をどうすればいいのか線路が途切れた。
道が続いていれば調べたりできるのだが
何をしていいのかわからなくなってしまったので
一旦手をとめて、何をすればいいのか考えた

「Twitterで持ってきた情報を、NotionのDBに入れたい」
「そのためには、、、、???、、、、????」

「Twitterの情報はcsvで出力している」
「Notionはベタ書き文字列」

(後になって気づくのだが、csvで出力する必要はなかった)

〜何やかんや考えたり、やってみたりして〜

TwitterAPIのデータをfor文で回して
その回している中でNotionに追加する処理を書けばいい。
まずは1つのデータだけでやり取りする。
ツイート本文を取得して
→格納して
→for文で1つずつ取り出す
→それをNotionに追加する処理を書く

なんか上手くいった◎
なんか無駄な処理をしていそうな気もするし
コードはぐちゃぐちゃだが上手くいった。

〜〜〜〜

など繰り返して何とかできた。

あとやることは
□ 重複しない処理
□ 定期的に動くようにトリガー設定
□ ”いいね”を取得するプログラム
 →いいねは同じDBにするか、別にするか迷い中

重複しない処理の重要度と優先度が高すぎて
必要な機能が備わっていないので全然終わっていないとも言える。

まあこんなにプログラムを楽しんで書けるのは初めてだった。
仕事で書いているときは、進んでいようがいまいが
3時間でエネルギー切れになり本当に寝落ちをしまくるほどだった。
なのに気づいたら5時間。
気づいたら7時間
ゲームしている時よりも時間が過ぎるのが早かった

気づいていないだけでちゃんと脳は疲れているようで
5時間とか経って作業していると
何をしているかわからなくなる時がくる。
その時にやっと「疲れてるな」って感じる
そして、背中がめちゃくちゃ張っていて痛い。

10月21日(金)の夜から始めて
10月23日(日)までちょこちょこやっていたが、
合計20時間以上はやっているはず。

重複しない処理もどうやってやるのか調べてからやらねば。

重複処理ってこんな感じかな?
①Notion DBに入っている情報を持ってくる
②Twitterからデータを取得する
③①と②の差分をチェックするプログラムを書く
④一致しない差分を格納する
⑤④の差分をすでに書いているforで回し追加していく

どのタイミングでどうやって比較すればいいんだろうか
まあやり方は複数あるのだろうが。

次の日、なんやかんやで完成しました!↓

重複処理完成してみると簡単すぎて禿げる


MEMO↓

取得してくる他に
RTしたものだったら”RT”のタグをつけたり、user_idをオリジナルのidに書き換えたり、久しぶりに正規表現を触ったら完全に沼った。
どうにかこうにかいい感じにできた。

Twitterに
・”MEMO:〜〜〜〜” 例)MEMO:光の速度について。OOがXXXとなり〜
・”TODO〜〜〜〜〜” 例)TODO:部屋掃除
・”【読了】〜〜〜〜〜” 例)【読了】坊ちゃん
とかつけてツイートすることがあるのでこれらをタグにして
Notionでフィルターをかけて表示させてみると
めちゃくちゃ良すぎて震えた。
このタグは増やしてめちゃくちゃよかった

サポートいただいた分は、他のクリエイターさんのサポートに使わせていただこうと考えています。よろしければサポートお願いいたします◎