Arcadespain

Software => Otros programas => Mensaje iniciado por: cubelindo en Diciembre 31, 2016, 01:08:00 pm

Título: Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Diciembre 31, 2016, 01:08:00 pm

Hola! A ver si alguien puede echarme una mano.

Estoy modificando los archivos gamelist.xml de RetroPie. En concreto quiero sacar del .Dat del romset el nombre de la rom, nombre completo, algunos datos como fecha, fabricante, etc... y poner el link a la imagen in-game.

Pues ya tengo "casi" todo utilizando algunos programas como datutil, al final me queda algo como:

Código: [Seleccionar]
<game>
<path>./11beat.zip</path>
<name>Eleven Beat</name>
</game>

lo que necesito es automatizar la búsqueda de la cadena <path>./CADENA_ALFANUMERICA.zip</path>

y una vez la encuentre, pegue a continuación de </path>

Código: [Seleccionar]
<image>./boxart/CADENA_ALFANUMERICA.png</image>
y siga la búsqueda recurrente hasta el final. Cada conjunto <game> debe quedar:

Código: [Seleccionar]
<game>
<path>./11beat.zip</path>
<name>Eleven Beat</name>
                <image>./boxart/11beat.png</image>
</game>

Con editores con búsqueda de expresiones regulares es muy fácil detectar la cadena, pero no sustituirla por algo "variable"

A ver si a alguien se le ocurre algo  :(
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Josepzin en Diciembre 31, 2016, 01:20:05 pm
Con cualquier lenguaje se podría hacer facilmente, por ejemplo PHP que lo uso para web.

Si nadie te da una solución ya veo qué puedo hacer.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Diciembre 31, 2016, 01:54:06 pm

Pues un programita que pueda invocar con línea de comando tipo:

duplicar.exe gamelist.xml gamelist-mod.xml

sería fantástico, después de todo siempre es buscar <path>./CADENA_ALFANUMERICA.zip</path>


En MAME y FB no pasa, pero si te pones que la cadena pueda tener ()[].- y cosas así
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: hechelion en Enero 02, 2017, 08:18:34 am
Asumo que esto es para windows y además no tienes Python instalado. no?

si es para linux o si tienes python (2.7 o 3.4) te puedo pasar un script para eso.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Oberworld en Enero 02, 2017, 11:07:18 am
Código: [Seleccionar]
$doc = [xml] (Get-Content -raw gamelist.xml)

foreach ($gameEl in $doc.DocumentElement.game) {
  # Use -replace to extract the filename without extension from the
  # path contained in the <path> element.
  $gameName = $gameEl.path -replace '^.*/(.*)\..*$', '$1'
  # Append elements 'image', but only if they don't already
  # exist.
  if ($null -eq $gameEl.video) {
    $gameEl.AppendChild($doc.CreateElement('image')).InnerText = "./boxart/${gameName}.png"
  }
}

$writer = [System.IO.StreamWriter] "newFile.xml"
$doc.Save($writer)
$writer.Close()

Renombras la extensión a ps1 y luego le das con el botón derecho del ratón y ejecutar con powershell.

Debe estar en la misma carpeta que el gamelist, te creará un archivo newFile.xml con los cambios.

Creo que es mejor que nada. Es lo que yo uso para añadir los videos en mis gamelist.

Ah, y solo añadirá el tag image si no existe ya.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Enero 02, 2017, 11:20:57 pm

FANTÁSTICO!!!!

Feliz no, lo siguiente!

Con la cantidad de usuarios de RetroPie que hay por ahí y que esto no esté resuelto!  ???
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Oberworld en Enero 02, 2017, 11:54:49 pm
Lo he posteado en el foro de retropie uk, mi nombre allí es nismo, pero aquí ya estaba ocupado.

Me alegro de que te sirva. Y no, no tengo raspberry pí, uso emulationstation para windows.

Un saludo.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Enero 03, 2017, 02:12:36 pm
Lo he posteado en el foro de retropie uk, mi nombre allí es nismo, pero aquí ya estaba ocupado.

Me alegro de que te sirva. Y no, no tengo raspberry pí, uso emulationstation para windows.

Un saludo.

Pues no sabes el tiempo que llevaba dándole vueltas a este asunto. Habré probado, sin exagerar, 27000 scrapers.
El propio MAME te genera un DAT con el nombre completo de todas las roms, con clones y parents, pero parece que eso no lo utiliza nadie ¿? Yo he tenido que partir de eso, utilizar una aplicación (datutil) para convertirlo a un XML estándar ordenado alfabéticamente y sin clones, luego modificarlo para ajustarlo a la sintaxis correcta con NotepadRE, luego el Machimatch para seleccionar las snaps de un pack completo, y luego tu script para poner esa línea de la imagen.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Oberworld en Enero 03, 2017, 02:33:47 pm
Pues nada me alegro que al final hayas logrado lo que buscabas y que te haya sido útil.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Enero 04, 2017, 08:52:41 pm

Bueno el script de Oberworld es estupendo!

Ya me he puesto imágenes en MAME y FBA. He detectado una situación en la que no funciona bien, y es cuando en el campo <name> hay un caracter "&"

Basta con sustituirlo (yo lo hice por !AND! para poder recuperarlo bien luego) pasar el script y volverlo a poner (con el típico search and replace)
 
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Oberworld en Enero 04, 2017, 09:26:33 pm
Me alegro que lo hayas solucionado, siento no haber tenido tiempo de mirartelo antes... soy nuevo en el foro y no me doy cuenta cuando tengo un privado...

El script no lo hice yo, lo hicieron para mí, pero vamos es bastante claro como funciona así que lo adapté para tus imagenes, como ya dije yo lo uso para agregar los videos a los gamelist de emulationstation...
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: cubelindo en Enero 05, 2017, 10:58:11 am
siento no haber tenido tiempo de mirartelo antes... soy nuevo en el foro y no me doy cuenta cuando tengo un privado...


Vamos no te preocupes lo más mínimo, todos tenemos una vida y a estas cosas le podemos dedicar un ratito si acaso. Yo pregunto pero sigo buscando porque soy un cagaprisas  ;)
He puesto el comentario por si alguien más usa tu script, para que tome precauciones.
Título: Re:Buscar cadena en archivo de texto y duplicarla
Publicado por: Oberworld en Febrero 11, 2017, 12:25:31 am
Bueno el script de Oberworld es estupendo!

Ahora está mejor, he editado el post que contiene el script y ahora está solucionado el error que se "comia" los caracteres después del un punto en el nombre del archivo.

Si aún utilizas el script o lo tienes guardado por ahí seguro que querrás actualizarlo.

Un saludo.