1 package com.dotmarketing.servlets; 2 3 import java.io.BufferedReader ; 4 import java.io.FileReader ; 5 import java.io.FileWriter ; 6 import java.io.IOException ; 7 import java.io.PrintWriter ; 8 import java.io.StringWriter ; 9 import java.net.URLEncoder ; 10 import java.util.Date ; 11 import java.util.List ; 12 13 import javax.servlet.ServletException ; 14 import javax.servlet.http.HttpServlet ; 15 import javax.servlet.http.HttpServletRequest ; 16 import javax.servlet.http.HttpServletResponse ; 17 18 import com.dotmarketing.beans.Host; 19 import com.dotmarketing.factories.HostFactory; 20 import com.dotmarketing.factories.InodeFactory; 21 import com.dotmarketing.portlets.files.model.File; 22 import com.dotmarketing.portlets.files.model.MP3File; 23 import com.dotmarketing.portlets.folders.factories.FolderFactory; 24 import com.dotmarketing.portlets.folders.model.Folder; 25 import com.dotmarketing.util.Config; 26 import com.dotmarketing.util.UtilMethods; 27 import com.dotmarketing.util.XMLUtils; 28 29 public class XSPFServlet extends HttpServlet { 30 31 private static final long serialVersionUID = 1L; 32 33 @Override 34 public void init() throws ServletException { 35 java.io.File dir = new java.io.File (Config.CONTEXT.getRealPath("/WEB-INF/velocity/static/xspf/")); 36 dir.mkdirs(); 37 } 38 39 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException , 40 IOException { 41 42 Host host = HostFactory.getCurrentHost(request); 43 String path = request.getParameter("path"); 44 45 if (path == null) { 46 return; 47 } 48 49 path = (path.endsWith("/")) ? path : path + "/"; 50 51 Folder folder = FolderFactory.getFolderByPath(path, host); 52 List <File> mp3Files = InodeFactory.getChildrenClassByConditionAndOrderBy(folder, File.class, 53 "lower(file_name) like '%.mp3'", "sort_order"); 54 69 response.setContentType("text/xml"); 70 PrintWriter out = response.getWriter(); 71 83 StringWriter sw = new StringWriter (); 84 86 try { 87 sw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); 88 89 sw.write("<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\n"); 90 sw.write("<trackList>"); 91 92 for (File file : mp3Files) { 93 if (!file.isLive()) { 95 continue; 96 } 97 MP3File mp3 = new MP3File(file); 98 99 sw.write("<track>\n"); 100 sw.write("<location>http://" + host.getHostname() + folder.getPath() + file.getFileName() 101 + "</location>\n"); 102 103 if (UtilMethods.isSet(mp3.getArtist())) { 104 sw.write("<creator>" + XMLUtils.xmlEscape(mp3.getArtist()) + "</creator>\n"); 105 } 106 if (UtilMethods.isSet(mp3.getAlbum())) { 107 sw.write("<album>" + XMLUtils.xmlEscape(mp3.getAlbum()) + "</album>\n"); 108 } 109 110 if (UtilMethods.isSet(mp3.getTitle())) { 111 sw.write("<title>" + XMLUtils.xmlEscape(mp3.getTitle()) + "</title>\n"); 112 } 113 if (UtilMethods.isSet(mp3.getGenre())) { 114 sw.write("<genre>" + XMLUtils.xmlEscape(mp3.getGenre()) + "</genre>\n"); 115 } 116 117 if (mp3.getDuration() > 0) { 118 sw.write("<duration>" + mp3.getDuration() + "</duration>\n"); 119 } 120 sw.write("<image>http://" + host.getHostname() + "/global/images/mp3logo.jpg</image>\n"); 121 122 sw.write("</track>\n"); 123 124 } 125 126 sw.write("</trackList>\n"); 127 sw.write("</playlist>\n"); 128 } catch (Exception e) { 129 130 e.printStackTrace(); 131 } finally { 132 out.print(sw.toString()); 133 out.close(); 134 135 sw.close(); 138 } 139 } 140 141 } 142 | Popular Tags |