package pnews.servlet;
import java.io.IOException;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
-import org.xml.sax.InputSource;
import com.rometools.rome.feed.synd.SyndEnclosure;
import com.rometools.rome.feed.synd.SyndEntry;
import com.rometools.rome.feed.synd.SyndFeed;
import com.rometools.rome.io.FeedException;
import com.rometools.rome.io.SyndFeedInput;
+import com.rometools.rome.io.XmlReader;
import pnews.Article;
import pnews.Category;
}
private static SyndFeed getSyndFeed(String u) throws IllegalArgumentException, FeedException, MalformedURLException, IOException {
- InputStream is = new URL(u).openConnection().getInputStream();
- InputSource source = new InputSource(is);
-
- return new SyndFeedInput().build(source);
+ XmlReader r;
+
+ r = new XmlReader(new URL(u));
+ XmlReader.setDefaultEncoding("UTF-8");
+ return new SyndFeedInput().build(r);
}
private static Map<Category, String[]> getFeeds() {
result.put(Category.TOP,
new String[] {
"http://www.francetvinfo.fr/titres.rss",
- "http://www.france24.com/fr/actualites/rss",
"http://www.rfi.fr/general/rss",
"http://www.cnews.fr/rss/une",
"http://www.ladepeche.fr/rss/a-la-une.rss",
result.put(Category.EUROPE,
new String[] { "http://www.france24.com/fr/europe/rss" });
+
+ result.put(Category.MONDE,
+ new String[] { "http://www.france24.com/fr/actualites/rss" });
+
result.put(Category.ECO,
new String[] { "http://www.france24.com/fr/economie/rss",
result.put(Category.ESSONNE,
new String[] { "http://www.tourisme-essonne.com/rss/actus/",
- "http://www.ville-palaiseau.fr/rss/actualites.htm"
- /*"https://www.essonneinfo.fr/feed/"*/ });
+ "http://www.ville-palaiseau.fr/rss/actualites.htm" });
result.put(Category.PEOPLE,
new String[] { "http://www.premiere.fr/rss/actu-live",
private void addArticles(Category cat, SyndFeed feed) {
String thumbnail;
- String desc, link, title, feedTitle;
+ String desc, link, title, feedTitle, feedImage;
Date date;
List<Article> articles;
boolean exist;
feedTitle = feed.getTitle().trim();
+ if (feed.getImage() != null)
+ feedImage = feed.getImage().getUrl();
+ else
+ feedImage = null;
+
LOG.info("addArticles " + cat.getId() + " " + feedTitle + " number of articles: " + feed.getEntries().size());
for (SyndEntry entry: feed.getEntries()) {
thumbnail = e.getUrl();
break;
}
-
+ if (thumbnail == null)
+ thumbnail = feedImage;
+
title = entry.getTitle().trim();
if (entry.getDescription() != null) {
} else {
for (Article a: articles)
if (a.link.equals(link)) {
- LOG.info("addArticles " + link + " already present");
+ LOG.fine("addArticles " + link + " is already present");
exist = true;
}
}
LOG.severe("No feed for category " + cat);
}
+ /**
+ * Returns a copy.
+ */
public List<Article> getArticles(Category cat)
throws IllegalArgumentException, MalformedURLException, FeedException, IOException {
synchronized (articlesByCategory) {
- return articlesByCategory.get(cat);
+ return new ArrayList<>(articlesByCategory.get(cat));
}
}