elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Obtener y ordenar texto CMD y MediaInfo Cli
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener y ordenar texto CMD y MediaInfo Cli  (Leído 3,721 veces)
betitogc2

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Obtener y ordenar texto CMD y MediaInfo Cli
« en: 30 Marzo 2015, 22:09 pm »

Hola a todos.

Me gustaría ver si pueden ayudarme. Les cuento rapidamente el asunto:

1.- Escenario: Tengo un carpeta con 400 archivos de video con extensíon mxf.
2.- Problema: Necesito saber la duración y fecha de creación de los archivos.
3.- Posible solución: Con MediaInfo CLI, puedo extraer la información del video, pero solo necesito lo antes mencionado.

Con el siguiente comando extraigo la información del video, esto lo hago en Windows a través del CMD

Código:
c:\mediainfo\MediaInfo.exe d:\archivo.mxf

General
Complete name                            : d:\archivo.mxf
Format                                   : MXF
Format profile                           : OP-1a
Format settings                          : Open / Incomplete
File size                                : 10.9 GiB
Duration                                 : 34mn 21s
Overall bit rate                         : 45.5 Mbps
Encoded date                             : 2014-12-04 15:11:55.212
Writing application                      : J2K MXF Wrapper Based on MXFLib 1.0.1(13)-Beta
Writing library                          : J2K MXF Wrapper Based on MXFLib 1.0.1(13)-Beta

Y demás información acerca del archivo de video, (es bastante)  :-\

Lo que yo necesito es solamente extraer 3 datos y mandarlos a un txt que quede así:
Complete name | Duration | Encoded Date, (solo la fecha YYYY-MM-DD) Y eso meterlo en un FOR para que me de la información de los 400 archivos.  ;-)

Ejemplo de la salida

Código:
d:\archivo.mxf | 32mn 21s | 2014-12-04
d:\archivo2.mxf | 31mn 32s | 2014-11-05
d:\archivo3.mxf | 35mn 56s | 2014-19-09

¿Podrían ayudarme a estructurarlo?  :-(

Saludos.


« Última modificación: 31 Marzo 2015, 20:20 pm por Eleкtro » En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: Obtener y ordenar texto CMD y MediaInfo Cli
« Respuesta #1 en: 31 Marzo 2015, 00:03 am »

Se puede realizar en una sola línea:
Código
  1. perl -E '$del = qr/\s*:\s*/; foreach (<*.mxf>) { ($name,$duration,$encoded) = qx(c:/mediainfo/MediaInfo.exe $_) =~ /Complete name$del(.*?)\n.+?Duration$del(.*?)\n.+?Encoded date$del(\d{4}-\d{2}-\d{2}).+?\n/ms; say join " | ", $name, $duration, $encoded; }'
Este código lee los nombres de todos los archivos *.mxf del directorio actual.
Por cada uno de ellos (foreach), llamamos a MediaInfo.
De todo lo que devuelve, nos quedamos con lo que queremos.
Y finalmente, lo formateamos y sacamos a pantalla.
Para guardarlo a un archivo, vale con agregar '> resumen.txt' al final.

En forma de programa:
Código
  1. #!/usr/bin/perl
  2.  
  3. $DEL = qr/\s*:\s*/; # definimos un delimitador que se repite varias veces
  4.  
  5. foreach $mxf (<*.mxf>) { # para todos los archivos .mxf del dir. actual
  6.  
  7. # llamamos a MediaInfo
  8.    my $resultado = qx(c:/mediainfo/MediaInfo.exe $mxf);
  9.  
  10. # extraemos lo que queremos desde el $resultado
  11.    ($name,$duration,$encoded) =
  12.        $resultado =~ /Complete name$DEL(.*?)\n.+?Duration$DEL(.*?)\n.+?Encoded date$DEL(\d{4}-\d{2}-\d{2}).+?\n/ms;
  13.  
  14. # formateamos los valores y los sacamos
  15.    say join ' | ', $name, $duration, $encoded;
  16. }
Ejemplo de salida:
d:\archivo1.mxf | 34mn 21s | 2014-12-04
d:\archivo2.mxf | 3mn 21s | 2014-12-04
d:\archivo3.mxf | 4mn 21s | 2014-12-04
d:\archivo4.mxf | 5mn 21s | 2014-12-04


« Última modificación: 31 Marzo 2015, 00:04 am por explorer » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Obtener y ordenar texto CMD y MediaInfo Cli
« Respuesta #2 en: 31 Marzo 2015, 09:19 am »

La solución del compañero @Explorer es funcional y útil,
pero, en lo que se refiere a rendimiento, solicitar el informe completo y despues parsearlo/partirlo/unirlo resulta inneceasario por un motivo muy importante que razonablemente quien no esté familiarizado con MediaInfo puede desconocerlo:

· La aplicación MediaInfo permite obtener datos específicos en lugar de obtener el informe completo.

Por ende, al solicitarle a MediaInfo menos información del archivo solicitando los campos específicos para esta tarea se aumenta el rendimiento, y al mismo tiempo se puede construir el formato deseado del string al pasarle los argumentos al MediaInfo, el mismo formato será devuelto por la salida de la aplicación.

Un ejemplo, en Batch:

Código:
@Echo OFF

(For %%# In ("*.mxf") DO (
      MediaInfo.exe "%%~f#" "--Inform=General;%%CompleteName%% | %%Duration/String3%% | %%Encoded_Date%%"
))> ".\MediaInfo.txt"

Pause&Exit /B 0

Lee la ayuda de la aplicación para conocer el resto de parámetros:
Código:
MediaInfo.exe --help

Saludos
« Última modificación: 31 Marzo 2015, 09:42 am por Eleкtro » En línea



betitogc2

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Obtener y ordenar texto CMD y MediaInfo Cli
« Respuesta #3 en: 31 Marzo 2015, 19:36 pm »

Muchisimas gracias  ;-)

Ambas respuestas me funcionaron perfecto.

Como bien dice Elektro, la respuesta de Explorer es buena, de hecho ya lo estaba haciendo así, pero es un poco más rápido utilizando el batch que extrae solamente la infiormación necesaria del MediaInfo.

Muchisímas gracias a los dos.  ::)

Estoy en deuda.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
obtener texto.
Programación Visual Basic
astaroth_15 3 2,255 Último mensaje 29 Diciembre 2007, 21:17 pm
por demoniox12
Obtener texto de un JTextPane
Java
soser 2 8,125 Último mensaje 18 Octubre 2010, 03:33 am
por soser
(SOLUCIONADO)¿Con que software puedo ordenar frases de un texto?
Software
SuperDraco 7 5,122 Último mensaje 3 Mayo 2011, 13:41 pm
por Shadow
Ayuda ordenar y eliminar palabras texto
Programación C/C++
Fire_Hugo12 9 7,871 Último mensaje 18 Diciembre 2012, 03:01 am
por rir3760
Obtener texto de una web
Programación Visual Basic
broña 1 2,548 Último mensaje 12 Enero 2014, 08:12 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines