PDA

View Full Version : سوال: ساختن فید ریدر



ravand
دوشنبه 29 آبان 1391, 10:37 صبح
سلام. من قصد دارم یه برنامه مثل feed reader که آدرس rss سایت ها رو میخونه بنویسم.
تا اینجا پیش رفتم:

package testi;
import java.net.URL;
import java.util.Iterator;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
URL url = new URL("http://rayane.blogsky.com/rss");
XmlReader reader = null;
try {
reader = new XmlReader(url);
SyndFeed feed = new SyndFeedInput().build(reader);
for (Iterator i = feed.getEntries().iterator(); i.hasNext();) {
SyndEntry entry = (SyndEntry) i.next();
System.out.println(entry.getTitle());
System.out.println(entry.getLink());
System.out.println(entry.getDescription());
List entries = feed.getEntries();
System.out.println(entries.size());
System.out.println("Pub date: " + entry.getPublishedDate());
}
} finally {
if (reader != null)
reader.close();
}
}
}
این برنامه عنوان ،حجم فایل xml ، توضیحات و لینک و تاریخ هر مطلب رو می خونه و چاپ میکنه. البته اگه تاریخ سایت به فارسی باشه نمایش نمیده. و مقدار null رو بر میگردونه.
قبلا میخواستم به برنامه بگم اگر تاریخ مطلب با تاریخی که از قبل ثبت شده یکی نباشد مقادیر رو از سایت دریافت کن و در جایی ذخیره کن. خواستم حجم سایت رو هم بررسی کنم که گفتم حجم هم ممکنه اتفاقی یکی در بیاد . یعنی حجم فایلی که روی سایت هست با فایلی که قبلا از سایت گرفته شده باشه ممکنه یکی باشه. حالا موندم چیکار کنم؟
اگه کسی منظور منو درست نگرفته بگه تا بیشتر توضیح بدم.
متشکرم.

spiderman200700
دوشنبه 29 آبان 1391, 12:18 عصر
سلام.
اگه فید تاریخش درست نباشه یا اصلا تاریخ نداشته باشه چی؟

ravand
دوشنبه 29 آبان 1391, 12:35 عصر
خب منم برای همین این سوال رو اینجا مطرح کردم. من گفتم با گرفتن تاریخ نمیتونم مشکلم رو حل کنم با حجم فایل هم همینطور. برای همین خواستم تا یه پیشنهاد بهتر بهم بدید.

spiderman200700
دوشنبه 29 آبان 1391, 15:32 عصر
به نظر من بهترین راه اینه که تاریخ آخرین دریافت رو ذخیره کنی و در فواصل زمانی معین دریافت رو انجام بدی.

ravand
دوشنبه 29 آبان 1391, 16:30 عصر
به نظر من بهترین راه اینه که تاریخ آخرین دریافت رو ذخیره کنی و در فواصل زمانی معین دریافت رو انجام بدی.

خب من از همون اول گفتم که برخی مواقع تاریخ برخی صفحات حالا به دلیل فارسی بودن یا دلایل دیگه ثبت نمیشه. درواقع اصلا دریافت نمیشه که بخوام ثبت کنم و بعدا با تاریخ جدید بررسی کنم.
برای همین از شما خواستم یه پیشنهاد جدید بدید.

p_ooya
سه شنبه 30 آبان 1391, 11:53 صبح
من مطمئن نیستم متوجه سوال شده باشم اما آیا نمیشه از http headers استفاده کرد. به صورت خاص Last-Modified؟

ravand
سه شنبه 30 آبان 1391, 19:38 عصر
من از این اصطلاحاتی که شما به کار بردید چیزی نفهمیدم میشه بیشتر توضیح بدید؟

spiderman200700
سه شنبه 30 آبان 1391, 20:19 عصر
منظورم این بود که تاریخ سیستم رو ذخیره کنید و هر دفعه کار بر خواست یا هر مثلا هر 6 ساعت یک بار اخبار رو به روز کنید.

ravand
سه شنبه 30 آبان 1391, 20:25 عصر
ثبت تاریخ سیستم خود فرد کار درستی نیست و کلا کار ما رو بی ارزش می کنه. rss feeds کارش اینه که بدون رفتن به سایت از به روز شدن سایت مطلع بشیم. ما میخوایم اگه سایت به روز شده باشه بهمون پیام بده.

همایون افشاری
پنج شنبه 02 آذر 1391, 19:22 عصر
می تویند hash شی entry رو ذخیره و با hash شی entry جدید مقایسه کنید. اگه مقادیر متفاوت باشند معلوم میشه که به هرحال مقدار شی تغییر کرده ...

entry.hashCode();