From a2a75c33791cdfe6aa1f02fdf02d68f11f9bef7f Mon Sep 17 00:00:00 2001 From: yuki Date: Sat, 5 Jan 2008 13:12:22 +0000 Subject: [PATCH] =?utf8?q?=E5=8F=96=E5=BE=97=E3=81=97=E3=81=9F=E6=83=85?= =?utf8?q?=E5=A0=B1=E3=82=92NicoContent=E3=81=AB=E8=A9=B0=E3=82=81?= =?utf8?q?=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://192.168.11.7/svn/repository/NicoBrowser@17 bdf3b611-c98c-6041-8292-703d9c9adbe7 --- src/nicobrowser/NicoContent.java | 44 +++++++++++++++++++++++ src/nicobrowser/NicoHttpClient.java | 72 +++++++++++++++++++++++++++++++++++-- 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 src/nicobrowser/NicoContent.java diff --git a/src/nicobrowser/NicoContent.java b/src/nicobrowser/NicoContent.java new file mode 100644 index 0000000..404ba11 --- /dev/null +++ b/src/nicobrowser/NicoContent.java @@ -0,0 +1,44 @@ +/*$Id$*/ +package nicobrowser; + +import java.util.Date; + +public class NicoContent { + + private String pageLink; + private String imageLink; + private String title; + private Date publishedDate; + + public String getPageLink() { + return pageLink; + } + + public void setPageLink(String pageLink) { + this.pageLink = pageLink; + } + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + void setPublishedDate(Date publishedDate) { + this.publishedDate = publishedDate; + } + + public Date getPublishedDate() { + return publishedDate; + } +} diff --git a/src/nicobrowser/NicoHttpClient.java b/src/nicobrowser/NicoHttpClient.java index af604b2..f009f34 100644 --- a/src/nicobrowser/NicoHttpClient.java +++ b/src/nicobrowser/NicoHttpClient.java @@ -1,6 +1,7 @@ /*$Id$*/ package nicobrowser; +import com.sun.syndication.feed.synd.SyndContentImpl; import com.sun.syndication.feed.synd.SyndEntryImpl; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.io.FeedException; @@ -9,9 +10,16 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.text.MutableAttributeSet; +import javax.swing.text.html.HTML; +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.parser.ParserDelegator; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.cookie.CookiePolicy; @@ -101,7 +109,7 @@ public class NicoHttpClient extends HttpClient { * @param listNo マイリストNo. * @return 動画一覧. */ - public List loadMyList(String listNo) { + public List loadMyList(String listNo) { List list = null; String url = new String(MY_LIST_PAGE_HEADER + listNo + "?rss=atom"); Logger.getLogger(NicoHttpClient.class.getName()). @@ -126,6 +134,66 @@ public class NicoHttpClient extends HttpClient { } finally { get.releaseConnection(); } - return list; + List contList; + if (list == null) { + contList = new ArrayList(); + } else { + contList = createContentsList(list); + } + return contList; + } + + private List createContentsList(List list) { + class CallBack extends HTMLEditorKit.ParserCallback { + + private String imageLink; + + @Override + public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) { +// System.out.println("--------<" + t.toString() + ">--------"); +// printAttributes(a); + if (HTML.Tag.IMG.equals(t)) { + imageLink = a.getAttribute(HTML.Attribute.SRC).toString(); + } + } + + // 属性を表示 +// private void printAttributes(MutableAttributeSet a) { +// Enumeration e = a.getAttributeNames(); +// while (e.hasMoreElements()) { +// Object key = e.nextElement(); +// System.out.println("---- " + key.toString() + " : " + a.getAttribute(key)); +// } +// } + public String getImageLink() { + return imageLink; + } + } + + List contList = new ArrayList(); + + for (SyndEntryImpl entry : list) { + NicoContent content = new NicoContent(); + + content.setTitle(entry.getTitle()); + content.setPageLink(entry.getLink()); + content.setPublishedDate(entry.getPublishedDate()); + + // サムネイル画像リンクの取得 + CallBack callBack = new CallBack(); + for (SyndContentImpl sc : (List) entry.getContents()) { + try { + Reader reader = new StringReader(sc.getValue()); + new ParserDelegator().parse(reader, callBack, true); + } catch (IOException ex) { + Logger.getLogger(NicoHttpClient.class.getName()).log(Level.SEVERE, null, ex); + } + } + content.setImageLink(callBack.getImageLink()); + + // リストへ追加. + contList.add(content); + } + return contList; } } -- 2.11.0