Set automatically detected codec on new derivatives.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / page / admin / AddTrackDerivativePage.java
index 2a80f78..620d302 100644 (file)
@@ -29,6 +29,8 @@ import net.pterodactylus.demoscenemusic.core.Core;
 import net.pterodactylus.demoscenemusic.data.Track;
 import net.pterodactylus.demoscenemusic.data.TrackDerivative;
 import net.pterodactylus.demoscenemusic.page.ServletRequest;
+import net.pterodactylus.demoscenemusic.utils.AudioCodecs;
+import net.pterodactylus.demoscenemusic.utils.AudioCodecs.AudioCodecDescription;
 import net.pterodactylus.util.database.DatabaseException;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.io.StreamCopier;
@@ -119,6 +121,14 @@ public class AddTrackDerivativePage extends AdminBasePage {
                                        /* okay, we’re here, so everything’s fine, probably. */
                                        TrackDerivative derivative = getCore().getDataManager().createTrackDerivative(track);
                                        derivative.getProperties().set("file/original-name", filename);
+                                       if (filename.indexOf('.') > filename.lastIndexOf('/')) {
+                                               derivative.getProperties().set("file/extension", filename.substring(filename.lastIndexOf('.') + 1));
+                                       }
+                                       AudioCodecDescription audioCodecDescription = AudioCodecs.detect(filename);
+                                       if (audioCodecDescription != null) {
+                                               derivative.getProperties().set("audio/codec", audioCodecDescription.code);
+                                       }
+                                       /* TODO - identify file type and media information */
                                        getCore().getDataManager().saveTrackDerivate(derivative);
 
                                        /* copy the file again. */