INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (2,'unknown','application/octet-stream','Generic','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (3,'jpg','image/gif','ImagesGif','Images',NULL);
-INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (4,'mp3','audio/mp3','Audio','UploadedMedia',NULL);
+INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (4,'mp3','audio/mp3','Mp3','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (5,'jpg','image/jpeg','ImagesJpeg','Images',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (6,'pdf','application/pdf','Generic','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (7,'mpg','video/mpeg','Video','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (10,'ra','audio/vnd.rn-realaudio','RealAudio','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (11,'rm','video/vnd.rn-realvideo','RealVideo','UploadedMedia',NULL);
INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (12,'ra','audio/x-pn-realaudio','RealAudio','UploadedMedia',NULL);
-INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (13,'mp3','audio/x-mp3','Audio','UploadedMedia',NULL);
-INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (14,'mp3','audio/x-mpeg','Audio','UploadedMedia',NULL);
+INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (13,'mp3','audio/x-mp3','Mp3','UploadedMedia',NULL);
+INSERT INTO "media_type" ("id","name","mime_type","classname","tablename","dcname") VALUES (14,'mp3','audio/x-mpeg','Mp3','UploadedMedia',NULL);
-- Enable triggers
public class MediaHandlerGeneric implements MirMedia
{
- private String imageHost = MirConfig.getProp("Producer.Image.Host");
- private static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
- private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
+ protected String imageHost = MirConfig.getProp("Producer.Image.Host");
+ protected String imageRoot = MirConfig.getProp("Producer.ImageRoot");
+ protected Logfile theLog = Logfile.getInstance(this.getClass().getName());
public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) {
String ext = mediaTypeEnt.getValue("name");
String dir = MirConfig.getProp("Producer.Media.Path");
public String getURL(Entity ent, Entity mediaTypeEnt)
{
- int size = Integer.parseInt(ent.getValue("size"), 10)/1024;
+ String stringSize = ent.getValue("size");
+ if (stringSize == null)
+ return null;
+ int size = Integer.parseInt(stringSize, 10)/1024;
String title = ent.getValue("title")+
" - "+mediaTypeEnt.getValue("name")+" "+
size+" KB";
protected final String WEBDB_GIF="1";
protected String imageType="0";
- private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
+ private Logfile theLog = Logfile.getInstance(this.getClass().getName());
public byte[] get(Entity ent, Entity mediaTypeEnt)
{
--- /dev/null
+/*
+ * put your module comment here
+ */
+
+
+package mir.media;
+
+import java.util.*;
+
+import mir.entity.*;
+import mir.misc.*;
+import mir.storage.*;
+
+
+/**
+ * Please note: this media handler produces
+ * 3 media files, the raw .mp3, a .m3u which is
+ * contains the URL for the mp3 and a .pls which
+ * contains the URL to the mp3 in shoutcast playlist
+ * format. What's important is that the web server (of
+ * the media host) must recognize the .m3u and .pls file
+ * extensions and send the proper "audio/x-mpegurl"
+ * and "audio/x-scpls" mime-types respectively.
+ * If the web server is apache, it's easy, just
+ * add:
+ *
+ * audio/x-mpegurl m3u
+ * audio/x-scpl pls
+ *
+ * to the file pointed to by the "TypesConfig"
+ * command in your apache config file. Or add
+ * and equivalent AddType command to your httpd.conf.
+ * Of course this assumes that the mod_mime is loaded.
+ *
+ * If the web server is not apache, then your on your own.
+ *
+ * @see mir.media.MirMedia
+ * @author mh <heckmann@hbe.ca>
+ * @version 01.12.2001
+ */
+
+public class MediaHandlerMp3 extends MediaHandlerAudio implements MirMedia
+{
+
+ public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) {
+ String ext = mediaTypeEnt.getValue("name");
+ String dir = MirConfig.getProp("Producer.Media.Path");
+ String mediaHost = MirConfig.getProp("Producer.Media.Host");
+ String date = ent.getValue("date");
+ String datePath = StringUtil.webdbDate2path(date);
+ String baseName = ent.getId();
+ String mediaFname = baseName+"."+ext;
+ String mp3Pointer = mediaHost+datePath+mediaFname;
+ String mpegURLFile = baseName+".m3u";
+ String playlistFile = baseName+".pls";
+ Integer size = new Integer(uploadedData.length);
+ if(FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData)) {
+ //if(FileUtil.write(dir+"/"+mediaFname, uploadedData)) {
+ //were done with the data, dereference.
+ uploadedData=null;
+
+ try {
+ //write the "meta" files
+ //first the .m3u since it only contains one line
+ FileUtil.write(dir+"/"+datePath+"/"+mpegURLFile,mp3Pointer.getBytes());
+ //now the .pls file
+ FileUtil.write(dir+"/"+datePath+"/"+playlistFile,mp3Pointer.getBytes());
+ ent.setValueForProperty("is_produced", "1");
+ ent.setValueForProperty("icon_is_produced", "1");
+ ent.setValueForProperty("publish_path",datePath+"/"+mediaFname);
+ //ent.setValueForProperty("publish_path", mediaFname);
+ ent.setValueForProperty("publish_server", mediaHost);
+ ent.setValueForProperty("size", size.toString());
+ ent.update();
+ } catch (StorageObjectException e) {
+ theLog.printError("StorageObjectException: "+e.toString());
+ return false;
+ }
+ } else {
+ theLog.printError("could not write FILE!");
+ return false;
+ }
+
+ return true;
+ }
+
+ public String getURL(Entity ent, Entity mediaTypeEnt)
+ {
+ String stringSize = ent.getValue("size");
+ if (stringSize == null)
+ return null;
+ int size = Integer.parseInt(stringSize, 10)/1024;
+ String rawTitle = ent.getValue("title")+
+ " - "+mediaTypeEnt.getValue("name")+" "+
+ size+" KB "+"download";
+ String m3uTitle = ent.getValue("title")+
+ " - "+mediaTypeEnt.getValue("name")+" "+
+ "streaming URL";
+ String plsTitle = ent.getValue("title")+
+ " - "+mediaTypeEnt.getValue("name")+" "+
+ "playlist URL";
+
+ String basePath=StringUtil.regexpReplace(ent.getValue("publish_path"), ".mp3$","");
+
+ String m3uURL = StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+basePath+".m3u", m3uTitle, imageRoot, getBigIcon());
+ String plsURL = StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+basePath+".pls", plsTitle, imageRoot, getBigIcon());
+ String rawURL = StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+ent.getValue("publish_path"), rawTitle, imageRoot, getBigIcon());
+
+ return m3uURL+"\n<p>"+plsURL+"\n<p>"+rawURL;
+
+ }
+
+}
+
+
+
*/
-public class MediaHandlerRealAudio extends MediaHandlerGeneric implements MirMedia
+public class MediaHandlerRealAudio extends MediaHandlerAudio implements MirMedia
{
- private String imageHost = MirConfig.getProp("Producer.Image.Host");
- private static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
- private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) {
String ext = mediaTypeEnt.getValue("name");
String dir = MirConfig.getProp("Producer.Media.Path");
String mediaHost = MirConfig.getProp("Producer.Media.Host");
String rtspMediaHost = MirConfig.getProp("Producer.RealMedia.Host");
- String mediaFname = ent.getId()+"."+ext;
- String RealMediaPointer = rtspMediaHost+mediaFname;
- String RealMediaFile = ent.getId()+".ram";
String date = ent.getValue("date");
String datePath = StringUtil.webdbDate2path(date);
+ String mediaFname = ent.getId()+"."+ext;
+ String realMediaPointer = rtspMediaHost+datePath+mediaFname;
+ String realMediaFile = ent.getId()+".ram";
Integer size = new Integer(uploadedData.length);
if(FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData)) {
//if(FileUtil.write(rtspDir+"/"+mediaFname, uploadedData)) {
uploadedData=null;
try {
-//write an ram file
-FileUtil.write(dir+"/"+RealMediaFile,RealMediaPointer.getBytes());
-
+ //write a ram file
+ FileUtil.write(dir+"/"+datePath+"/"+realMediaFile,realMediaPointer.getBytes());
ent.setValueForProperty("is_produced", "1");
ent.setValueForProperty("icon_is_produced", "1");
- ent.setValueForProperty("publish_path",datePath+"/"+mediaFname);
- //ent.setValueForProperty("publish_path", RealMediaFile);
+ ent.setValueForProperty("publish_path",datePath+"/"+realMediaFile);
+ //ent.setValueForProperty("publish_path", realMediaFile);
ent.setValueForProperty("publish_server", mediaHost);
ent.setValueForProperty("size", size.toString());
ent.update();
return true;
}
-
-
-
-
- public String getPublishHost()
- {
- return MirConfig.getProp("Producer.Media.Host");
- }
-
-
-
- public String getURL(Entity ent, Entity mediaTypeEnt)
- {
- int size = Integer.parseInt(ent.getValue("size"), 10)/1024;
- String title = ent.getValue("title")+
- " - "+mediaTypeEnt.getValue("name")+" "+
- size+" KB";
- return StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+
- ent.getValue("publish_path"), title, imageRoot, getBigIcon());
- }
-
-
- private static String tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio");
- private static String bigIcon = MirConfig.getProp("Producer.Icon.BigAudio");
-
- public String getTinyIcon()
- {
- return tinyIcon;
- }
-
- public String getBigIcon()
- {
- return bigIcon;
- }
-
- public String getIconAlt()
- {
- return "Audio";
- }
-
- public boolean isAudio()
- {
- return true;
- }
-
}
private String imageHost = MirConfig.getProp("Producer.Image.Host");
private static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
- private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
+ private Logfile theLog = Logfile.getInstance(this.getClass().getName());
public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) {
String ext = mediaTypeEnt.getValue("name");
String dir = MirConfig.getProp("Producer.Media.Path");