luv-t-archive は自分が twitter で favorite/like したツイートを取得、spreadsheet に列挙し、画像・動画を google drive に保存します。
この repository を Fork し必要なToken
をSettings > Secrets
に登録すれば自動で収集する様になっています。
JA | EN
- Google アカウント (GCP アカウント)
- Twitter アカウント
- 開発者申請をする必要がある
- GCP Service Account を作成します (https://console.cloud.google.com/)
Drive API
とSheets API
を有効化し、JSON
タイプのキーを作成し、保存しておきますDrive API
とSheets API
を有効化します (https://console.cloud.google.com/apis/library)- 作成したサービスアカウントを選択肢、
JSON
タイプのキーを作成し、保存しておきます (https://console.cloud.google.com/iam-admin/serviceaccounts)
- ファイルリストを保存する為に、
Google Spreadsheets
に新しいシートを作ります (https://docs.google.com/spreadsheets)- その ID とシートの名前をコピーしておきます
- そのシートに上記で作成したサービスアカウントに共有設定します
- ファイルを保存する為に、
Google Drive
にフォルダを作ります (https://drive.google.com/drive)- その ID をコピーしておきます
- そのフォルダに上記で作成したサービスアカウントに共有設定します
- Twitter Developers ページで、任意のアカウントでログインします (https://developer.twitter.com/en/apps/)
- 新しい App を作成するために開発者申請をします
- 新しい App を作成し、Bearer Token を作成し、それをコピーしておきます
- 利用したい Twitter Account の ID をコピーしておきます
- この repository を Fork します
.github/workflows/schedule.yml
の環境変数 を編集します:- TWITTER_ID: 利用する Twitter の ID
- SHEET_NAME: 利用する Spreadsheets の名前 (Sheet1/シート 1)
- repository の Settings > Secrets へ行きます
- 以下の環境変数を追加します:
- TWITTER_TOKEN: 上記で生成された Twitter の Bearer Token
- SHEET_ID: 利用する Spreadsheets のシート ID:
https://docs.google.com/spreadsheets/d/
xxxxxxxxxxxxxxxxxxxx
/edit
- DRIVE_FOLDER_ID: 利用する Drive のシート ID:
https://drive.google.com/drive/folders/
xxxxxxxxxxxxxxxxxxxx
. - SERVICE_CLIENT_EMAIL: 上記で保存したサービスアカウントの
JSON
鍵のclient_email
部分 - SERVICE_PRIVATE_KEY: 上記で保存したサービスアカウントの
JSON
鍵のprivate_key
部分- 改行コードが含まれていると上手く動かないので除去し、改行する
$ echo "実際のkey"
などすると良い感じ出力される
- ツイートを取得
- 取得したツイートとスプレッドシートを比較
- スプレッドシートにツイートを整形し、保存
- ツイートの画像・動画をドライヴに保存
- ドライヴに保存中、エラーが起きた際のハンドリング
- CI の設定
- CI のエラーハンドリング(何故かエラーでも正常と処理されてる)
- 実行につき最新 200 いいね分遡ります
- 画像・動画があるツイートを抽出し、重複したものを Spreadsheets を参照し省き、Drive に保存します
- GCP の limit により、一回に保存できる件数を 90 件にしています
- 古い順に保存されるので、次回の実行までに 90 ツイート分いいねしなければ漏れはそこまで出ないはず・・・
- Drive に保存したファイルのリストを Spreadsheets に保存します
- 消したりエラーが出ちゃうと Drive に保存するファイルが重複しちゃうので注意が必要です
- 少なくとも実行の間隔を 2 分空けてください
- Deive を参照したいが API の仕様上、ファイルリストを何回もリクエストする必要があるので現実的では無い・・・
- API のリクエスト上限を上げれば良いが自己責任で
- 消したりエラーが出ちゃうと Drive に保存するファイルが重複しちゃうので注意が必要です
MIT ©ivgtr