📄 media.jsp
字号:
<%@page contentType="text/html;charset=ISO-8859-15" pageEncoding="UTF-8"%>
<%@page import="org.homeplayer.data.*"%>
<%@page import="org.homeplayer.util.*"%>
<%@page import="org.homeplayer.util.collections.*"%>
<%@page import="org.homeplayer.util.java.*"%>
<%@page import="org.homeplayer.database.*"%>
<%@page import="org.homeplayer.web.*"%>
<%@page import="org.homeplayer.playlist.*"%>
<%@page import="org.homeplayer.ihm.tree.*"%>
<%@page import="java.util.*"%>
<jsp:useBean id="hppc" class="org.homeplayer.web.HPPageContext" scope="request">
<jsp:setProperty name="hppc" property="request" value="<%=request%>" />
</jsp:useBean>
<%
if (WebUtil.getParam(request, "WAIT", false)) {
%>
<jsp:forward page="/WEB-INF/jsp/wait.jsp" />
<%
return;}
String tfilter = WebUtil.getParam(request, "FILTER", "");
String fvalue = WebUtil.getParam(request, "FILTERVALUE", "");
String sorter = WebUtil.getParam(request, "SORTER", "");
/*
* On commence par recuperer le type du media. Par defaut, c'est Film
*/
String mediaType = request.getParameter("MediaType");
if( mediaType.equals("WEBVIDEO") ) {
hppc.setRefresh("/videotv/vodmodule.jsp?MODULE="+WebUtil.urlEncode("CatchUP TV")) ;
%>
<jsp:include page="/WEB-INF/jsp/empty.jsp" />
<%
return ;
}
if(mediaType==null) {
mediaType = Film.nomType;
}
int navLevel = 1 ;
if(mediaType.equals("PODCAST") || mediaType.equals("RSS") || mediaType.equals("WEBTV") || mediaType.equals("FBTV")) {
navLevel = tfilter.equals("") ? 2 : 3;
}
/*
* On recupere l'indice de la page courante. Cet indice concerne la partie gauche de
* la page.
*/
int start = WebUtil.getParam(request, "start", -1) ;
if(start<0) {
start = 0;
//nous venons de la page principale, donc, si nous avions deja une arborescence, nous la supprimons
HPSession.set(Arborescence.ARBO_IN_SESSION, null);
}
hppc.setServiceName(mediaType);
hppc.setChannelPage("/media/media.jsp?MediaType="+mediaType+"&FILTER="+tfilter+"&FILTERVALUE="+fvalue+"&page=%d" ) ;
//On initialise le mediamanager courant qui permettra de recuperer les mediaitems
MediaManager mgr = MultiMediaManager.shareInstance().getMediaManagerFor(mediaType) ;
MediaManager.setCurrentMediaManager(mgr) ;
/*
* DEFINITION DE L'ARBORESCENCE
*/
//on recupere la definition de l'arborescence. Par exemple, ARTISTE/ALBUM
ArrayList<MediaItemFilterCollection> arborescences = (ArrayList<MediaItemFilterCollection>) HPSession.get(Arborescence.ARBO_IN_SESSION);
int indexFilter = WebUtil.getParam(request, "INDEXFILTER", 0);
int indexArbo = WebUtil.getParam(request, "INDEXARBO", -1);
String tagValue = WebUtil.getParam(request, "TAGVALUE", null);
//l'arborescence courante
MediaItemFilterCollection arbo = null;
if(arborescences==null) {
//Si nous ne l'avons pas, nous la recuperons.
arborescences = Arborescence.getArborescence(mgr);
HPSession.set(Arborescence.ARBO_IN_SESSION, arborescences);
}
if(indexArbo!=-1) {
//nous sommes en train de parcourir une arborescence
arbo = arborescences.get(indexArbo);
tagValue = WebUtil.urlDecode(tagValue);
/*
* Si l'on a une valeur a filtrer, c'est que l'on est au moins profondeur n,
* avec n>0.
* Donc, cette valeur s'applique sur la profondeur n-1.
*/
if(indexFilter>0) {
MediaItemFilter mif = arbo.get(indexFilter-1);
mif.setFilterValue(tagValue);
}
/*
* Dans le cas ou l'on remonte d'un niveau inferieur dans l'arborescence, on doit
* retirer les valeurs des filtres qui ne doivent plus etre appliquees.
*/
for(int i=indexFilter; i<arbo.size(); i++) {
MediaItemFilter mif = arbo.get(i);
mif.setFilterValue(null);
}
}
boolean inLeaf = true;
if(arbo!=null) {
int maxArboSize = 1 ; /*arbo.size()*/
for(int i=0; i<maxArboSize; i++) {
MediaItemFilter mif = arbo.get(i);
if(mif.getFilterValue()==null) {
inLeaf = false;
break;
}
}
} else {
inLeaf = false;
}
/*
* Nous recuperons les valeurs a afficher pour l'arborescence
*/
MediaItemCollection mediaItems = null;
ArrayList<HPMenuLink> tagsToDisplay = null;
HPSession.set( "MEDIALISTSORTER", Boolean.TRUE ) ;
if(arbo!=null) {
if(inLeaf) {
mediaItems = HPDB.getFilteredMediaItems(arbo);
}
/*
* Le Vector tags va contenir l'ensemble des valeurs possibles pour le prochain
* filtrage, s'il y en a.
* Dans l'exemple precedent, ce seront les noms des albums de Brian May.
* Mais nous ne le recuperons que si nous sommes dans l'affichage de l'arborescence
*/
if(tfilter.equals("")) {
tagsToDisplay = new ArrayList<HPMenuLink>();
StringList tags = new StringList();
if(indexFilter<arbo.size()) {
tags = HPDB.getMediaItemFilterTag(arbo);
}
int up = indexFilter+1;
for(String tag : tags) {
tagsToDisplay.add(new HPMenuLink(tag, "/media/media.jsp?MediaType="+mediaType+"&INDEXFILTER="+up+"&TAGVALUE="+WebUtil.urlEncode(tag)+"&start=0&INDEXARBO="+indexArbo, hppc ));
}
//+1 car il y a le premier niveau avec les noms des arbos
hppc.setNavLevel(navLevel+indexFilter+1);
}
} else if(tfilter.equals("MS")) {
tagsToDisplay = new ArrayList<HPMenuLink>();
for( int i=0 ; i<mgr.getPlayListManager().getPlaylists().size() ; i++ ) {
MediaPlayList playlist = (MediaPlayList)mgr.getPlayListManager().getPlaylists().get(i) ;
if( playlist.isAutomatic() == false ) {
tagsToDisplay.add(new HPMenuLink(playlist.getName(), "/media/media.jsp?MediaType="+mediaType+"&FILTER=MS&FILTERVALUE="+WebUtil.urlEncode(playlist.getName())+"&start=0", hppc));
}
}
if(!fvalue.equals("")) {
MediaPlayList playlist = mgr.getPlayListManager().getMediaPlayList( fvalue );
mediaItems = playlist==null? null : mgr.getMediaItemCollection( playlist );
HPSession.set( "MEDIALISTSORTER", playlist==null||playlist.isAutomatic()==true?Boolean.FALSE:Boolean.TRUE );
hppc.setNavLevel(navLevel+2);
} else {
hppc.setNavLevel(navLevel+1);
}
} else if(tfilter.equals("MSD") ) {
tagsToDisplay = new ArrayList<HPMenuLink>();
Vector playlists = mgr.getDynamicPlaylistManager().getPlaylists() ;
for( int i=0; i<playlists.size(); i++ ) {
DynamicPlaylist playlist = (DynamicPlaylist)playlists.get(i);
tagsToDisplay.add(new HPMenuLink(playlist.getId(), "/media/media.jsp?MediaType="+mediaType+"&FILTER=MSD&FILTERVALUE="+playlist.getId()+"&start=0", hppc));
}
if(!fvalue.equals("")) {
DynamicPlaylist playlist = mgr.getDynamicPlaylistManager().getMediaPlayList(fvalue);
mediaItems = playlist.getMediaItems();
HPSession.set( "MEDIALISTSORTER", Boolean.FALSE );
hppc.setNavLevel(navLevel+2);
} else {
hppc.setNavLevel(navLevel+1);
}
} else if(tfilter.equals("SEARCH") ) {
if(!fvalue.equals("")) {
mediaItems = mgr.search(fvalue) ;
hppc.setNavLevel(navLevel+2);
} else {
hppc.setNavLevel(navLevel+1);
}
} else if(tfilter.equals("YOUTUBE") ) {
tagsToDisplay = new ArrayList<HPMenuLink>();
Vector playlists = YoutubeModule.shareInstance().getPlaylists() ;
for( int i=0; i<playlists.size(); i++ ) {
VideoWebModule.CachePlaylist playlist = (VideoWebModule.CachePlaylist)playlists.get(i);
tagsToDisplay.add(new HPMenuLink(playlist.getName(), "/media/media.jsp?MediaType="+mediaType+"&FILTER=YOUTUBE&FILTERVALUE="+WebUtil.urlEncode(playlist.getName())+"&start=0"+(playlist.isCacheValid()==false?"&WAIT=true":""), hppc));
}
tagsToDisplay.add(new HPMenuLink("Rechercher dans YouTube", "/media/media.jsp?MediaType="+mediaType+"&FILTER=YOUTUBE&FILTERVALUE=SEARCH", hppc));
if(!fvalue.equals("")&&!fvalue.equals("SEARCH")) {
MediaPlayList playlist = YoutubeModule.shareInstance().getMediaPlayList( fvalue );
if( playlist==null ) {
mediaItems = new MediaItemCollection() ;
mediaItems.fromVector(YoutubeModule.shareInstance().search(fvalue)) ;
} else {
mediaItems = new MediaItemCollection() ;
mediaItems.fromVector(playlist.getFullMediaItems(mgr)) ;
}
HPSession.set( "MEDIALISTSORTER", playlist==null||playlist.isAutomatic()==true?Boolean.FALSE:Boolean.TRUE );
hppc.setNavLevel(navLevel+2);
} else {
hppc.setNavLevel(navLevel+1);
}
} else if(tfilter.equals("DAILYMOTION") ) {
tagsToDisplay = new ArrayList<HPMenuLink>();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -