RSS Beslemesindeki Tüm Eski Öğeleri Nasıl Getirebilirim?


117

Kendi RSS okuyucumu yazmayı deniyorum. "XML ayrıştırma" bitini işleyebilirim. Takılıp kaldığım şey "Daha eski yayınları nasıl getirebilirim?"

Çoğu RSS beslemesi, XML dosyalarında yalnızca en son 10-25 öğeyi listeler. Yalnızca en yenileri değil, feed'deki TÜM öğeleri nasıl edinirim?

Bulabildiğim tek çözüm, "resmi olmayan" Google Reader API'sini kullanmaktı.

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

Uygulamamı Google Reader’a bağımlı yapmak istemiyorum.

Daha iyi bir yol var mı? Blogger'da "? Start-index = 1 & max-results = 1000", WordPress'te "? Paged = 5" yapabildiğimi fark ettim. Bir RSS beslemesini getirmenin genel bir yolu var mı, böylece bana sadece en yeni öğeleri değil her şeyi de veriyor mu?


1
İlgilenenler için Resmi Olmayan Reader API dokümanları: code.google.com/p/google-reader-api/w/list
Nate Parsons

3
Yeni Feedly doz gibi soru 6 hakkında yıllar önce istendi beri yolu var mı
shareef

Bu soruya güncellenmiş bir cevap görmek isterim. 8 yılda hiçbir şey değişmediyse çok hayal kırıklığı! Bu gördüğüm tek yeni geliştirme: app.pub.center stackoverflow.com/questions/5761954/…
Jess Riedel

Yanıtlar:


65

RSS / Atom beslemeleri, geçmiş bilgilerin alınmasına izin vermez. Yukarıda verdiğiniz blogger veya wordpress örneklerinde olduğu gibi, isterse beslemenin yayıncısına bağlıdır.

Google Reader’ın daha fazla bilgiye sahip olmasının tek nedeni, onu ilk çıktığı andan itibaren hatırlamasıdır.

ATOM protokolünün bir uzantısı olarak bahsedildiği gibi bir şey hakkında bazı bilgiler var , ancak gerçekten herhangi bir yerde uygulanıp uygulanmadığını bilmiyorum.


10

Buradaki diğer yanıtlarda belirtildiği gibi, bir feed arşiv verilerini sağlamayabilir, ancak geçmiş öğeler başka bir kaynaktan elde edilebilir.

Archive.org'un Wayback Makinesi, RSS beslemeleri de dahil olmak üzere tarihsel içeriğe erişmek için bir API'ye sahiptir (botları indirdiyse). Birleştirilmiş geçmiş öğeleri içeren bir feed'i yeniden oluşturmak için bu API'yi kullanan Backfeed web aracını oluşturdum . Uygulamayı ayrıntılı olarak tartışmak isterseniz lütfen iletişime geçin.


3
Tüh! Buldum. Bu bağlantı ayrıntılarını ws-dl.blogspot.fr/2013/07/… Özellikle, böyle bir şey yaparsınız web.archive.org/web/timemap/link/$url Teşekkürler!
The1nk

8

RSS deneyimime göre, besleme, X'in bir değişken olduğu son X öğe tarafından derlenmiştir. Bazı Yayınlar tam listeye sahip olabilir, ancak bant genişliği uğruna çoğu yer muhtemelen yalnızca son birkaç öğeyle sınırlıdır.

Google okuyucunun eski bilgilere sahip olması muhtemel cevabı, daha sonra kullanıcılar için kendi tarafında depolamasıdır.


8

David Dean'in söylediği gibi, RSS / Atom beslemeleri yalnızca yayının yayıncısının o anda sahip olduklarını içerecektir ve herhangi bir tarihsel bilgiye sahip olmak için birisinin bu bilgileri aktif olarak toplaması gerekir. Temel olarak Google Reader bunu ücretsiz yapıyordu ve onunla etkileşim kurduğunuzda bu depolanmış bilgileri google veritabanı sunucularından alabilirsiniz.

Artık hizmeti emekli ettiklerine göre, bildiğim kadarıyla iki seçeneğiniz var. Bu bilgileri ilgilendiğiniz akışlarınızdan toplamaya başlamalı ve verileri XML veya benzeri bir şekilde depolamalısınız ya da bu tür arşivlenmiş besleme bilgilerini satan şirketlerden birinden bu veriler için ödeme yapabilirsiniz.

Umarım bu bilgi birine yardımcı olur.

Seán


6

Soru ilk sorulduğunda mevcut olmayabilecek ve herhangi bir özel hizmet gerektirmeyen başka bir olası çözüm.

  1. İstediğiniz RSS beslemesinin URL'sini bulun ve o beslemenin arşivlenmiş URL'lerini almak için waybackpack'i kullanın.
  2. Kullanım FeedReader veya benzer kütüphane arşivlenmiş RSS beslemesi aşağıya çekin.
  3. Her beslemeden URL'leri alın ve istediğiniz gibi kazıyın. Zamanda geriye gidiyorsanız, bazı ölü bağlantılar olabilir.

Bu harika bir öneri. Wayback Machine, RSS beslemelerini de arşivler. GUI besleme okuyucularla çalışmaz, ancak programlı okuyucular için web isteğini geçersiz kılmak ve bunun yerine önbelleğe alınmış RSS / Atom dosyası ile beslemek çok fazla sorun değildir.
Cerin

@Alex, bir örnekle detaylandırır mısınız? Önerinizi çok ilgi çekici buluyorum.
SanMelkote

2
@SanMelkote Bunu uzun zamandır düşünmemiştim. Kodumu bulmayı hatırlamaya çalışacağım ve eğer bulabilirsem onu ​​bir github gist olarak göndereceğim.
Alex Klibisz

2

RSS / Atom standartlarının daha eski RSS makalelerini sorgulama yolları yoktur.

Ayrıca bir RSS okuyucu üzerinde çalışıyorum ve kendi RSS arşiv hizmetimi ( https://app.pub.center ) oluşturmaya karar verdim . REST API'yi kullanmak ücretsizdir. Push bildirimleri için ücret alıyoruz.

Hizmet, RSS beslemeleri kataloğunu günlük olarak araştırır ve makaleleri önbelleğe alır. Ardından, bu makaleleri kronolojik bir sıraya göre geri alabilirsiniz. Örneğin:

Sayfa 1 of The Atlantic https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

Sayfa 2 of The Atlantic https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2


İlginç görünüyor ama bağlantı kesildi.
bluenote10

2

Önceki tüm yanıtlar, daha eski öğeleri dinamik olarak sağlayabilmek için söz konusu feed'in veya feed motorunun bir kopyasına sahip olmak için az çok mevcut hizmetlere dayanıyordu.

Bunu yapmanın kuşkusuz proaktif ve daha ziyade teorik bir yolu daha var: Besleme okuyucunuzun RSS ve / veya Atom beslemelerini anlamsal olarak anlayan bir önbellek proxy kullanmasına izin verin ve bunları yapılandırdığınız kadar öğe başına önbellekleyin.

Feedreader, beslemeleri düzenli olarak yoklamazsa, proxy, her gün yalnızca bir öğeye sahip olan ve değişen (veya en azından Kullanıcı Dostu’dan gelen) gibi oldukça değişken akışlardaki bir öğeyi kaçırmamak için bilinen beslemeleri kendi başına zamana göre alabilir eskiden bunu yapardı). Bu nedenle feedreadere.g. Birkaç gün uzaktayken çöktü veya ağ bağlantınız kesildi, besleyicinizin önbelleğindeki öğeleri kaybedebilirsiniz. Bu beslemeleri düzenli olarak getirmek için proxy'ye sahip olmak (örneğin, evdeki yerine bir veri merkezinden veya dizüstü bilgisayar yerine bir sunucudan), besleyiciyi yalnızca o zaman ve besleyiciniz beslemeleri getirdikten sonra gönderilen öğeleri kaybetmeden kolayca çalıştırmanıza olanak tanır. son kez, ancak bir dahaki sefere getirmeden önce tekrar döndürüldü.

Bu kavrama Anlamsal Besleme Proxy'si diyorum ve sfp adında bir kavram uygulama kanıtı uyguladım . Bu bir kavram kanıtından çok daha fazlası değil ve ben onu daha fazla geliştirmedim. (Bu nedenle, benzer fikirlere veya amaçlara sahip projeler için ipuçları almaktan memnun olurum. :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.