きっかけ
デスクトップ用にRSSを作ってみたくなって調べた。
全然作り込めてないけど、まずは、ライブラリを使えることまで確認できたので、とりあえず、まとめる。
個人的には、QuiteRSSで十分な気がしているけど、何かが足りてない。
プルリク送れよって気もするが、なかなか踏み込めない現状がある。
使ったライブラリ
ROME
GitHub - rometools/rome: Java library for RSS and Atom feeds
実際に使う
ライブラリを追加
mavenで下記を追加すれば行けるはず。
<dependency> <groupId>com.rometools</groupId> <artifactId>rome</artifactId> <version>1.7.1</version> </dependency>
もしかしたら、HTTP client追加しなければ行けないかもしれない。
自分は、SpringBootで試したが、描かなくても動いてたらか、大丈夫なんでしょう。
実装
とりあえず、こんな感じのクラスを作った。
public class RssUtil { public static SyndFeed getFeed(String url) throws IllegalArgumentException, MalformedURLException, FeedException, IOException { return new SyndFeedInput().build(new XmlReader(new URL(url))); } }
URLから、Feedオブジェクト生成するだけのクラス。
結果
そんでもって、適当にサービスクラスを作って、呼び出してみる。
@RestController public class HelloWorldController { @RequestMapping(name = "/") public String helloWorld() { try { SyndFeed feed = RssUtil.getFeed("https://stackoverflow.com/feeds/tag?tagnames=rome"); feed.getEntries().stream().map(entry -> entry.getTitle()).forEach(System.out::println); } catch (IllegalArgumentException | FeedException | IOException e) { e.printStackTrace(); } return "Hello world"; } }
すると、以下の結果が。。。。
2018-02-12 21:07:16.398 INFO 6812 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 11 ms Java ROME RSS library and HTML code in RSS description field Does RSS push or pull updates? Need to extend ROME's default RSS feed schema/generator Using Rome RSS in OSGI/ Adobe AEM Converting SyndFeed to SyndEntry with Rome Getting XML String value of SyndEntry with ROME MalformedByteSequenceException parsing RSS feed with ROME Parse custom rss tags using Rome API How to read "gd:image" element from an Atom feed using ROME Cannot get RSS feed content with Rome ROME tools Android placement of rome.properties How to limit number of downloaded (parsed) entries (items) in ROME Fetcher SyndFeedInput.build() gives error "Configure build path" Atom:link in RSS using Rome We can't download the rss lib `Rome` for Java now? creating Atom feeds with ROME and publishing them Distinguish between HTML/XHTML and plain text in a RSS description-element How do I create an Atom representation with Restlet? writing multiple rssfeeds to single xmlfile ROME custom user agent/reading Reddit RSS RSS pubDate parsing with ROME How to make rss feed into the java webapp on GAE? Get image from RSS feed Can not receive Data from RSS Feed in Java Spring Valid RSS 2.0 Using Rome How to write an RSS feed with Java? Parsing a feed with rss version="2" get image url of rss with rome library How to use ROME in Intellij? RSS Rome not working due to JDOM dependency
たしかに、それっぽい結果が返ってきている。
今後
今後は、機械学習できたらいいな~くらいの考えでいる。
アイディアはあるんだけど、やっぱり、実行するって難しい。
スラスラやれればいいのだけれど、手を動かしていると、分かってない箇所がハッキリ問題として目の前にあらわれるので、折れちゃうことが多いんだよね。。。
少しづつ進めるのが長生きするのかもしれない。
参考サイト
JavaでRSSをパースするためにRomeを使ってみた | Apitore blog
JavaFXでRSSを作成・読込・表示(ROMEライブラリ)|軽Lab
Spring Boot 入門 | ホームページ制作のサカエン(墨田区)
久々にSpring Boot使ったから、基本的なことを忘れてた。。。