📄 rss.jsp
字号:
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.sun.syndication.feed.synd.*"%>
<%@page import="org.homeplayer.util.*"%>
<%@page import="org.homeplayer.data.*"%>
<%@page import="org.homeplayer.web.*"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<jsp:useBean id="hppc" class="org.homeplayer.web.HPPageContext"
scope="request">
<jsp:setProperty name="hppc" property="request" value="<%=request%>" />
<jsp:setProperty name="hppc" property="navLevel" value="5" />
</jsp:useBean>
<%
int maxInPage = 8;
int start = 0;
if (request.getParameter("start") != null) {
start = Integer.parseInt(request.getParameter("start"));
}
String media = "";
if (request.getParameter("Media") != null) {
media = request.getParameter("Media");
}
XMLChannel rssch = (XMLChannel) MediaManager.getCurrentMediaManager().getMediaItem(GUIDGenerator.makeGUID(media));
hppc.setServiceName( rssch instanceof RSSChannel ? "RSS" : "PODCAST" ) ;
int pos;
if (request.getParameter("pos") != null) {
pos = Integer.parseInt(request.getParameter("pos"));
} else {
rssch.load();
pos = -1;
}
RSSEntity parsedFeed = rssch.getRSSEntity(); //get the parsed feed
if( parsedFeed.isValid() == false ) {
hppc.setRefresh(1, hppc.getUpUrl());
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>"/>
<jsp:include page="../body.jsp"/>
<table width="95%" style="text-align:center">
<tr><td style="height:30px"> </td></tr>
<tr>
<td style="text-align:center">
<table style="width:300px;heigth:20px"><tr><td style="text-align:center">Flux invalide.</td></tr></table>
</td>
</tr>
</table>
<jsp:include page="<%= hppc.getSkin().getFooter() %>"/>
<%
return ;
}
List entries = parsedFeed.getEntries(); //get the entries
boolean prec = (start - maxInPage) >= 0;
boolean next = start + maxInPage < entries.size();
if (prec) {
hppc.addMenuItem(new HPMenuPrevious(
"rss.jsp?Media=" + WebUtil.urlEncode(media) + "&start=" + (start - maxInPage) + "&pos="
+ (start - maxInPage)));
}
RSSHistoryManager rssHistManager = RSSHistoryManager.getInstance();
RSSHistory rssHist = rssHistManager.getRssHistory(rssch.getPath());
//open the content of an entry
SyndEntry thenews = null;
if (request.getParameter("open") != null) {
thenews = (SyndEntry) entries.get(pos);
rssHist.setAsVisited(thenews.getTitle(), thenews.getPublishedDate());
}
//Date utility
Date oldestDate = null;
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -30);
Date nextMonth = c.getTime();
Date lastpubdate = null ;
for (int i = 0; i < entries.size(); i++) {
SyndEntry n = (SyndEntry) entries.get(i);
Date d = n.getPublishedDate();
if (oldestDate == null) {
oldestDate = d;
continue;
}
if (lastpubdate == null) {
lastpubdate = d;
} else {
lastpubdate = d==null ? lastpubdate : d.after(lastpubdate) ? d : lastpubdate ;
}
if (d == null) {
d = nextMonth;
}
if (d.before(oldestDate)) {
oldestDate = d;
}
}
if (oldestDate == null) {
oldestDate = nextMonth;
} else {
c = Calendar.getInstance();
c.setTime(oldestDate);
c.add(Calendar.DAY_OF_YEAR, -1);
oldestDate = c.getTime();
}
rssHist.clear(oldestDate);
//display left block titles
for (int i = start; i < entries.size() && (i - start) < maxInPage; i++ ) {
SyndEntry n = (SyndEntry) entries.get(i);
String label = StringUtil.encodeHTML(n.getTitle());
if (rssHist.hasBeenVisited(n.getTitle())) {
label = "-<em>" + label + "</em>-";
}
hppc.addMenuItem(new HPMenuLink(label, "rss.jsp?Media=" + WebUtil.urlEncode(media) + "&start=" + start + "&pos="+ i + "&open=true", pos==i));
}
if (next) {
hppc.addMenuItem(new org.homeplayer.web.HPMenuNext(
"rss.jsp?Media=" + WebUtil.urlEncode(media) + "&start="
+ (start + maxInPage) + "&pos="
+ (start + maxInPage)));
}
hppc.setHeaderTitle(rssch.getTitle() + " (" + (pos + 1) + "/" + entries.size() + ")");
//add to favorite
hppc.setFavorite(hppc.getServiceName(), rssch.getTitle(), StringUtil.gsub(hppc.getLocalURL(), "pos=", "dummy="));
if( request.getParameter("open") != null && rssch instanceof PodcastChannel ) {
PodcastChannel podcast = (PodcastChannel)rssch ;
int mediatype = podcast.getMediaType( thenews ) ;
if( mediatype != PodcastChannel.MEDIATYPE_UNKNOW ) {
String mediaurl = podcast.getMediaURL( thenews ) ;
hppc.topCommandAppend( "<li><img src=\"/images/novaweb/playpodcast.gif\" alt=\"Jouer Podcast\" class=\"img-fav\" />" ) ;
hppc.topCommandAppend( "<a href=\"playweburl.jsp?MediaType=PODCAST&Media="+media+"&MediaURL="+WebUtil.urlEncode(mediaurl)+"&MediaTitle="+WebUtil.urlEncode(thenews.getTitle())+(mediatype==PodcastChannel.MEDIATYPE_AUDIO?("&next="+WebUtil.urlEncode(hppc.getLocalURL())):"")+"\" title=\""+(mediatype==PodcastChannel.MEDIATYPE_AUDIO?"Ecouter":"Voir")+"\" class=\"link-menu\">");
hppc.topCommandAppend( mediatype==PodcastChannel.MEDIATYPE_AUDIO?"Ecouter":"Voir" ) ;
hppc.topCommandAppend( "</a></li>" ) ;
hppc.topCommandAppend( "<li><img src=\"/images/novaweb/download.gif\" alt=\"télécharger\" class=\"img-fav\" />" ) ;
hppc.topCommandAppend( "<a href=\"download.jsp?MediaURL="+WebUtil.urlEncode(mediaurl)+"&MediaTitle="+WebUtil.urlEncode(thenews.getTitle())+ "&MediaType="+mediatype+"&RSSName="+WebUtil.urlEncode(rssch.getTitle())+"&next="+WebUtil.urlEncode(hppc.getLocalURL())+"\" title=\"Télécharger\" class=\"link-menu\">");
hppc.topCommandAppend( "Télécharger" ) ;
hppc.topCommandAppend( "</a></li>" ) ;
}
}else{
hppc.topCommandAppend( "<li><img src=\"/images/novaweb/playpodcast.gif\" alt=\"Jouer Podcast\" class=\"img-fav\" /></li>");
}
SimpleDateFormat datef = new SimpleDateFormat( "dd/MM/yyyy HH:mm" ) ;
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>"/>
<jsp:include page="../body.jsp"/>
<table width="406px">
<tr>
<td><%if (request.getParameter("open") != null) {%>
<table>
<tr>
<td><%=thenews.getTitle()%><%=thenews.getPublishedDate()==null?"":(" - <em>"+datef.format(thenews.getPublishedDate())+"</em>")%></td>
</tr>
<tr>
<td style="width:300px"><%String desc = thenews.getContents().size()>0 ? ((SyndContent) thenews.getContents().get(0)).getValue() : thenews.getDescription().getValue() ;
if (desc == null) {
desc = "";
} else {
// suppression des liens
desc = desc.replaceAll("<(a|A)\\b[^>]*>", "");
desc = desc.replaceAll("</(a|A)[^>]*>", "");
desc = desc.replaceAll("<img\\b[^>]*>", "");
desc = desc.replaceAll("<object classid\\b[^>]*>", "");
desc = desc.replaceAll("<param name\\b[^>]*>", "");
desc = desc.replaceAll("<embed\\b[^>]*>", "");
//desc = desc.length() > 600 ? desc.substring(0, 600) + "..." : desc;
}
%> <p class="resume"><%=desc%></p>
</td>
</tr>
</table>
<%} else {%>
<table>
<tr>
<td style="height:80px;width:80px;vertical-align:center;text-align:center">
<%
try {
ImageUtil.ImageInfo img = ImageUtil.getCachedResizedImageInfo(ImageUtil.toUrl(rssch.getIcon()), 80, 80 ) ;
System.out.println("source de l'image, path : "+img.getPath()+" url: "+img.getUrl());
%>
<img src="<%= img.getPath() %>" style="width:<%=img.getWidth() %>px;height:<%=img.getHeight() %>px" alt="image flux" class="img-fav" />
<% } catch (ImageUtil.ImageException e) { %>
<img src="/images/novaweb/photos.gif" style="width:32px;height:32px" alt="photos" class="img-fav" />
<% } %>
</td>
<td style="vertical-align:top"><%=rssch.getTitle() %><br /><em>Dernière mise à jour : <%=lastpubdate==null?"Inconnu":(datef.format(lastpubdate)) %></em>
</td>
</tr>
<tr>
<td colspan="2"><%String desc = rssch.getRSSEntity()!=null ? rssch.getRSSEntity().getDescription() : "" ;
if (desc == null) {
desc = "";
} else {
// suppression des liens
desc = desc.replaceAll("<(a|A)\\b[^>]*>", "");
desc = desc.replaceAll("</(a|A)[^>]*>", "");
desc = desc.replaceAll("<img\\b[^>]*>", "");
desc = desc.replaceAll("<object classid\\b[^>]*>", "");
desc = desc.replaceAll("<param name\\b[^>]*>", "");
desc = desc.replaceAll("<embed\\b[^>]*>", "");
//desc = desc.length() > 600 ? desc.substring(0, 600) + "..." : desc;
}
%> <p class="resume"><%=desc%></p>
</td>
</tr>
</table>
<%} %>
</td>
</tr>
</table>
<jsp:include page="<%= hppc.getSkin().getFooter() %>"/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -