RustでInoreaderの「後で読む」一覧をCSV出力してみた
Inoreaderを利用し続けて、1年過ぎたのですが、とある問題と遭遇しました。
「後で読む」記事が貯まりまくっている
毎日気になっているサイトの記事の情報を楽に収集できるから、「これ、後で読もー🎶」などと軽い気持ちで後で読むリストに追加してしまっていました。
その結果、「後で読む」リストは800件を超えています…。
更に「読んだ記事は別サービスで管理しよー」と考えたまま放置してしまっていたので、リストには実際に後で読んだものと読んでいない記事が混在してしまっています😇
とりあえずCSV出力しよう
Inoreaderでは、後で読むリストのCSV出力は対応していないっぽいので、Inoreader APIを利用することにしました。
利用する言語はRustです。
必要な手順について
Inoreader APIを利用するにあたって、必要な手順は以下の通りです。
- Inoreaderにてアプリケーション登録をする
- Inoreaderのアプリケーション認証の同意ページにアクセスし、トークンを取得する
- 「Stream contents」APIを実行して、特定のフィードからコンテンツの一覧を取得する
ざっくりと書きましたが、こんな感じです。
1.Inoreaderにてアプリケーション登録をする
以下のページに書いている通りです。
App IDとApp Keyをメモしておきましょう。
2. Inoreaderのアプリケーション認証の同意ページにアクセスし、トークンを取得する
CLIツールとして作成したかったので、Rustでは認証ページのURLを生成するだけにしました。
認証操作はブラウザを利用して認証ページへアクセスし、認証後のURLからcode
(AUTHORIZATION_CODE)をコピーしてもらうようにしています。
3. 「Stream contents」APIを実行して、特定のフィードからコンテンツの一覧を取得する
「Stream contents」APIを利用して、「後で読む」リストを取得してきます。
APIの仕様は以下の通りです。
- 一度に最大100までしか取得できないので、100件を超える場合はループさせる必要がある。
- 記事を取得し切れなかった場合は、レスポンス内に
continuation
フィールドがあるので、APIを再度実行する時にパラメータとして渡す必要がある。
また、1日に可能なAPIの実行回数は100回なので、テキトーにデバッグをしていると制限に引っかかる可能性があります。
コードについて
年明け直後にノリと勢いで書いたコードです。
(READMEなど更新中です…)
実行してみた
実際に実行してみました。
# アプリケーション認証とか済ませる(初回だけ実行すればOK)
cargo run setup
# Inoreaderからデータを取得してくる
cargo run fetch_stream
結果を確認すると、「後で読む」リストに登録されている件数分のデータが出力されていました。
以下はデータの一部を抜粋したものです。
title,url
"Rust(imageproc)で図形を描画する","https://zenn.dev/collabostyle/articles/a508784bd4b2cf"
CSVデータをNotionにインポートしてみた
一旦、後で読むリストをクリアしたかったので、Notionへ退避させました。
インポート手順は、以下の記事の通りです。
ChatGPTに分析してもらった
CSVデータをアップロードし、「このリストの中から読むべき記事を10個ピックアップして!」と聞いてみた例です。
(データ量が多かったのが原因なのか、細かな分析をしてもらおうとすると失敗してしまったので、工夫が必要そうです)
さいごに
後回しにし過ぎると碌なことがないので、さっさとやるようにしましょう…🤢
記事が積まれないようにする仕組みも考えていきます!
また、Inoreaderの活用記事を書いているので、読んでみてください!
Discussion