RSSフィードのすべての古いアイテムを取得するにはどうすればよいですか?


117

私は自分のRSSリーダーを書く実験をしてきました。「解析XML」ビットを処理できます。私が行き詰まっているのは、「古い投稿を取得するにはどうすればよいですか?」

ほとんどのRSSフィードは、XMLファイル内の最新の10〜25個のアイテムのみをリストします。最新のものだけでなく、フィード内のすべてのアイテムを取得するにはどうすればよいですか?

私が見つけた唯一の解決策は、「非公式」のGoogleリーダーAPIを使用することでした。

http://www.google.com/reader/atom/feed/http://fskrealityguide.blogspot.com/feeds/posts/default?n=1000

アプリケーションをGoogleリーダーに依存させたくありません。

もっと良い方法はありますか?Bloggerでは「?start-index = 1&max-results = 1000」を実行でき、WordPressでは「?paged = 5」を実行できることに気付きました。最新のアイテムだけでなく、RSSフィードを取得してすべてを取得する一般的な方法はありますか?


1
興味のある方は、Unofficial Reader API docs:code.google.com/p/google-reader-api/w/list
Nate Parsons

3
Feedly線量のような約6年前の質問以来、新しい方法はありますか
shareef '12

私はこの質問に対する更新された答えを見たいです。8年間で何も変更されていない場合は、非常に残念です。これは私が見ているだけで、新たな展開です:app.pub.centerの stackoverflow.com/questions/5761954/...
ジェスリーデル

回答:


65

RSS / Atomフィードでは、履歴情報を取得できません。上で与えたブロガーやワードプレスの例のように、彼らが望むならそれを提供するのはフィードの発行者次第です。

グーグルリーダーがより多くの情報を持っている唯一の理由は、それが最初に出てきたときからそれがそれを覚えていたことです。

このような何かについてATOMプロトコルの拡張として話されたいくつかの情報がありますが、それが実際にどこに実装されているかはわかりません。


10

ここで述べた他の返信のように、フィードはアーカイブデータを提供しない場合がありますが、履歴アイテムは別のソースから入手できます。

Archive.orgのWayback Machineには、RSSフィード(ボットがダウンロードした場合)を含む過去のコンテンツにアクセスするためのAPIがあります。このAPIを使用して、連結された履歴アイテムを含むフィードを再生成するWebツールバックフィードを作成しました。実装について詳しく説明したい場合は、ご連絡ください。


3
おっと!それを見つけた。このリンクはws-dl.blogspot.fr/2013/07/の詳細を示しています。具体的には、このweb.archive.org/web/timemap/link/$urlのようなものを使用していただきありがとうございます。
The1nk 2016

8

RSSの私の経験では、フィードは最後のX項目によってコンパイルされます。Xは変数です。特定のフィードには完全なリストがある場合がありますが、帯域幅を確保するために、ほとんどの場所で最後の数項目のみに制限されている可能性があります。

古い情報を持っているグーグルリーダーのおそらくの答えは、それを後でユーザーのために横に保存することです。


8

デビッド・ディーンが言ったことに加えて、RSS / Atomフィードには、フィードの発行者がその時点で持っているものだけが含まれ、誰かが履歴情報を取得するには、この情報を積極的に収集する必要があります。基本的に、Googleリーダーはこれを無料で行っており、これを操作すると、Googleデータベースサーバーからこの保存された情報を取得できます。

彼らがサービスを引退したので、私の知る限り、2つの選択肢があります。関心のあるフィードからこの情報の収集を開始し、XMLなどを使用してデータを保存する必要があります。または、このタイプのアーカイブされたフィード情報を販売する会社の1つからこのデータの代金を支払うことができます。

この情報が誰かのお役に立てば幸いです。

セーン


6

質問が最初に行われたときに利用できなかった可能性があり、特定のサービスを必要としない別の解決策。

  1. 必要なRSSフィードのURLを見つけ、waybackpackを使用して、そのフィードのアーカイブされたURLを取得します。
  2. FeedReaderまたは同様のライブラリを使用して、アーカイブされたRSSフィードをプルダウンします。
  3. 各フィードからURLを取得し、必要に応じてそれらをスクレイピングします。あなたがずっと昔に戻っているなら、いくつかのデッドリンクがあるかもしれません。

これは素晴らしい提案です。Wayback Machineは実際にRSSフィードもアーカイブします。GUIフィードリーダーでは機能しませんが、プログラムリーダーでは、Webリクエストをオーバーライドして、キャッシュされたRSS / Atomファイルにフィードするのはそれほど難しくありません。
Cerin

@アレックス、例で詳しく説明してもらえますか?あなたの提案は非常に興味深く感じます。
SanMelkote

2
@SanMelkote私はこれについて長い間考えていませんでした。私は自分のコードを掘り起こすことを忘れないようにし、それが見つかればgithub gistとして投稿します。
Alex Klibisz

2

RSS / Atom標準には、古いRSS記事をクエリする方法がありません。

私はRSSリーダーにも取り組んでおり、独自のRSSアーカイブサービス( https://app.pub.center)。REST APIの使用は無料です。プッシュ通知は有料です。

このサービスは、RSSフィードのカタログを毎日ポーリングし、記事をキャッシュします。その後、これらの記事を時系列に戻すことができます。例えば:

大西洋のページ1 https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

大西洋のページ2 https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2


面白そうですが、リンクは切れています。
bluenote10

2

以前のすべての回答は、古いアイテムを動的に提供できるようにするために、そのフィードまたはフィードエンジンのコピーを保持するために、多かれ少なかれ既存のサービスに依存していました。

確かに積極的で理論的には別の方法があります。フィードリーダーがRSSフィードやAtomフィードを意味的に理解し、設定した数のアイテムまでアイテムごとにキャッシュするキャッシュプロキシを使用できるようにします。

フィードリーダーが定期的にフィードをポーリングしない場合、プロキシはそれ自体に基づいて既知のフィードをフェッチし、アイテムが1つだけで毎日変更される(または少なくとも以前はそうしていました)。したがって、feedreadere.g。数日間外出中にネットワーク接続がクラッシュまたは失われた場合、フィードリーダーのキャッシュ内のアイテムが失われる可能性があります。プロキシを定期的に(たとえば、自宅からではなくデータセンターから、またはラップトップではなくサーバーから)フェッチすることで、フィードリーダーがフィードをフェッチした後に投稿されたアイテムを失うことなく、簡単にフィードリーダーを実行できます。前回、しかし次にフェッチする前に再度ローテーションアウトしました。

私はその概念をセマンティックフィードプロキシ呼び、sfpと呼ばれる概念実証実装を実装しました。それは概念の証明にすぎませんが、私はそれをさらに開発していません。(したがって、同様のアイデアや目的を持つプロジェクトのヒントについては喜んでいます。:-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.