Reddit Data Stream

過去の一ページをローカルJSONLファイルへ変換する

apacheairflowの三ページ目を上限付きGETで要求します。過去アーカイブの応答をJSONLへ変換し、呼び出し、書き込み、ETLのロード結果を別々に記録します。

APIキーを取得

リクエスト例

cURL

curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3"

過去のページでありライブ配信ではない

Reddit Data Streamは独立した過去のRedditアーカイブで、公式サービスや提携先ではありません。ライブストリーム、変更フィード、SSE、WebSocket、OAuth、投稿、投票、メッセージ機能はありません。ETLは必要なページごとにGETを送ります。定期実行しても新しいRedditイベントが即座に届くわけではなく、アーカイブの更新日程を示すものでもありません。ローカルファイルの作成は自分のパイプラインの仕事で、APIが完成済みJSONLや持続接続を提供するという意味ではありません。

要求例はGET https://api.redditdatastream.com/v1/posts?subreddit=apacheairflow&limit=3&page=3です。subredditはコミュニティ、limitは最大件数、pageは三ページ目を指定します。三ページ目や三件の投稿は保証されません。番号は次の時間帯や永続的な再開カーソルではありません。Authorization: Bearer YOUR_API_KEYとX-API-Key: YOUR_API_KEYは両方有効で、このドメインのアーカイブキーを使います。Reddit OAuthトークンではありません。実値はサーバーで設定し、ファイル、公開コード、ログへ入れないでください。

取得、変換、ロードを分ける

成功したJSON応答を確認し、返された各レコードのオブジェクトを自分のコードでJSONへ符号化できます。一つのオブジェクトを一行に書き、その後に改行を付ければローカルJSONLになります。本文内の改行はJSONエンコーダーに処理させ、応答全体のラッパーを各レコードとして書き出さないでください。実際に返った項目だけを保持します。一時ファイルへ書いて読めることを確認してからロード段階へ渡すのはクライアントの設計です。APIがこのファイルを作成したり書き込み完了を検査したりするわけではありません。

スレッド構造に関する制限も考慮する必要があります。APIのレスポンスはフラットなレコードであり、サーバー側でスレッドツリーが構築されて返ってくるわけではありません。parent_idやlink_idフィールドが存在する場合、クライアント側でローカルにグループ化することは可能ですが、完全な会話履歴や祖先情報まで保証されるわけではありません。必要なデータ構造をどう構築するかがポイントです。 閲覧や集計にツリーは不要で、関係分析が必要な場合だけ任意でまとめられます。欠けた親は復元できません。文書順は日時、関連度、スコア順ではなくmin_scoreは最低スコア条件です。一要求100件、一クエリ100ページが上限で、反復、期間分割、重複除去は網羅性や一意性を証明しません。eqは正確な総数、gteは下限、unknownまたはnullは信頼できる総数が不明な状態です。正確な数でも全件保存は証明しません。

仕事の状態と費用

各要求の条件、ページ、時刻、HTTP結果、ローカル書き込み、ロード結果を別々に記録できます。これはクライアントの進捗であり、欠落のない再開、固定スナップショット、一度だけの配送の保証ではありません。コミュニティ集計も正確な全体在庫ではありません。成功した取得は空でも一クレジット、1,000成功で$1、最低$50の追加は有料50,000クレジットです。月額契約はなく有料分は失効しません。試用100クレジットはネットワーク全体の不正利用防止条件に従い、アカウント、キー、残高はドメイン専用です。

無効な要求は差し引かれず上流失敗では予約分が戻ります。サーバー成功後に応答が失われると成功した再試行は追加費用です。400は引数、401はキー、402は残高、429は頻度を調べます。読み取り専用でも同一応答や無料再試行は保証されません。公開非課金の/v1/statusは静的範囲とHTTP応答だけで検索、記録、キー、残高は検査しません。完全性、不変性、永久保存、性能、継続的な可用性は保証されません。パネルのSecure HttpOnlyセッションCookieも取得ヘッダーと別で、ログイン状態は保存成功の証明ではありません。