Extractor de metadatos personalizados de Alfresco
Frecuentes
Visto 1,375 equipos
0
Desarrollé un extractor de metadatos personalizado para extraer metadatos detallados para archivos de audio y video. El extractor amplía AbstractMappingMetadataExtracter y necesita asignar los campos extraídos a un tipo personalizado. La clase extractora se llama AudioMetadataExtractor y un archivo de propiedades correspondiente contiene las asignaciones. A continuación se muestra el código de la clase.
public class AudioMetadataExtractor extends AbstractBaseMetadataExtractor {
public static ArrayList<String> SUPPORTED_MIMETYPES = addMimeTypes(new String[] { MimeTypes.MIMETYPE_MP3, MimeTypes.MIMETYPE_WMA });
public AudioMetadataExtractor() {
this(SUPPORTED_MIMETYPES);
}
public AudioMetadataExtractor(ArrayList<String> supportedMimeTypes) {
super(supportedMimeTypes);
}
@Override
protected Map<String, Serializable> extractRaw(ContentReader reader) throws Throwable {
Map<String, Serializable> rawProperties = newRawMap();
File file = TempFileProvider.createTempFile("DCM", "MINFO");
reader.getContent(file);
MediaInfoJNA mediaInfoLib = new MediaInfoJNA();
mediaInfoLib.Open(file.getAbsolutePath());
String album = mediaInfoLib.Get(StreamKind.General, 0, "Album", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
System.out.println("Album1 " + album);
String title = mediaInfoLib.Get(StreamKind.General, 0, "Title", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
System.out.println("Title " + title);
String duration = mediaInfoLib.Get(StreamKind.General, 0, "Duration", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
System.out.println("Duration " + duration);
putRawValue("album", album, rawProperties);
mediaInfoLib.Close();
return rawProperties;
}
}
La configuración para el extractor es la siguiente
<bean id="metadata.extractor.AudioAsset" class="com.diipl.moviebeam.dcm.alfresco.metadata.AudioMetadataExtractor" parent="baseMetadataExtracter">
<property name="inheritDefaultMapping">
<value>true</value>
</property>
</bean>
Problema: al cargar un archivo nuevo, se llama al extractor y puedo ver todos los sysouts con los valores correctos. Sin embargo, las propiedades no se rellenan con ningún valor. Pero si ejecuto la acción "Extraer metadatos comunes" en el archivo, se llama al extractor y los campos obtienen los valores correctos.
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas alfresco or haz tu propia pregunta.
En el espacio donde está cargando, ¿tiene una regla configurada para extraer metadatos comunes? - Matjaz Muhic
No, no tengo una configuración de regla en el espacio. ¿Se requiere la regla? Alfresco parece estar invocando mi extractor personalizado en el momento de cargar el archivo, pero después de eso parece que no está escribiendo las propiedades extraídas. - aniruddhc
Creo que sí. Pero no estoy totalmente seguro... - Matjaz Muhic
¿Está cargando una nueva versión de un archivo existente o un archivo nuevo? (Puede hacer una gran diferencia) - Gagravarr
Bastante seguro de que la regla es necesaria. He notado que incluso la extracción EXIF integrada para imágenes no se activará sin esa regla si está colocando archivos en el repositorio utilizando cualquier método que no sea Compartir carga/arrastrar y soltar. - Jeff Potts