Extractor de metadatos personalizados de Alfresco

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.

preguntado el 31 de julio de 12 a las 12:07

En el espacio donde está cargando, ¿tiene una regla configurada para extraer metadatos comunes? -

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. -

Creo que sí. Pero no estoy totalmente seguro... -

¿Está cargando una nueva versión de un archivo existente o un archivo nuevo? (Puede hacer una gran diferencia) -

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. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.