Script para renombrar ficheros (PHP)

11 November 2008

Pues bueno, yo bajo bastante anime, series, etc… y no me gusta tener nombres asquerosos en los ficheros. Debido a esto he tenido que idear un scriptillo para renombrar ficheros en PHP.

Se basa en una expresión regular para encontrar el número del capítulo en cuestión, y a partir de ahí generar un nombre nuevo, limpio y bonito :)

En este ejemplo, se han usado las dos temporadas de Code Geass, donde los ficheros se llamaban “Code_Geass_.1.by_anime_(x-264).mp4″ (vamos, feo de narices) xD

<?php
header(”Content-type: text/plain”);

/**
* Parametros a definir:
*
* $dir       (Ruta de los ficheros)
* $ereg      (Expresion regular para obtener el número del capítulo del nombre del archivo original)
* $finalname (Nombre del archivo final, donde %EREG#X% es el resultado de la expresion regular)
* $extension (Extension de los archivos a renombrar)
* $numzeros  (Número de ceros a la izquierda para el número de capítulo (003 = 2))
* $rename    (Si realmente queremos renombrarlos o solo hacer una simulacion)
* $extra     (Array con por ejemplo los titulos de los capitulos para incluir con %EXTRA%)
**/

# Init
$dir       = “/media/Almacen/Movies/Code Geass Lelouch of the Rebellion/”;
$ereg      = “(R2)*\.([0-9]*)”; // (Ejemplo: nombre_del_capitulo_13.avi)
$finalname = “Code Geass %EREG#1% %EREG#2% - %EXTRA%”;
$extension = “mp4″;
$numzeros  = 1;
$rename    = false;
$extra     =
array(
“El dia en que el diablo nacio”, “El despertar del caballero blanco”, “El falso compañero de clase”,
“Mi nombre es Zero”, “La princesa y la bruja”, “La mascara robada”, “El ataque a cornelia”,
“La orden de los caballeros negros”, “Refrain”, “La danza de Guren”, “La batalla de Narita”,
“El mesaje de Kyoto”, “Shirley y el peligro inminente”, “Geass vs Geass”, “Los aplausos de Mao”,
“Nanally capturada”, “Caballero”, “Una orden para Kururugi Suzaku”, “La isla de Dios”,
“Guerra en Kyuushuu”, “El anuncio del festival escolar”, “Euphie manchada de sangre”,
“Al menos con pena”, “La frase del colapso”, “Zero”,
“El dia que el demonio desperto”, “El plan para liberar Japon”, “La prision en la academia”,
“El contraataque del patibulo”, “Caballero de la Mesa Redonda”, “Ataque sorpresa en el Oceano Pacifico”,
“La mascara abandonada”, “El milagro de millones”, “La novia del Zhu Jin Cheng”,
“Cuando el Shen Hum resplandece”, “El poder de los sentimientos”, “Ataque de amor”,
“Un asesino del pasado”, “La caceria de Geass”, “El mundo de C”,
“La primera revolucion de la Unidad de Naciones”, “El sabor de la tierra”,
“La segunda batalla decisiva de Tokio”, “Traicion”, “Inadecuado para ser emperador”,
“La conexion Ragnarok”, “El emperador Lelouch”, “La mascara de Schneizel”,
“Sky of Damocles”, “Re”
);

# Comienza el renombrado
if ($gestor = opendir($dir))
{
# Obtenemos los ficheros y los metemos en un array
while (false !== ($archivo = readdir($gestor)))
{
$allfiles[] = $archivo;
}

closedir($gestor);
}

# Init de contador de ficheros
$numFiles = 0;

# Ordenamos el array de forma natural
natsort($allfiles);

# Recorremos los ficheros
foreach ($allfiles as $archivo)
{
if ($archivo != “.” && $archivo != “..” && $archivo != “renamer.php”)
{
# Init
$farchivo = null;

# Obtenemos la extension
$ext = strtolower(substr($archivo, strrpos($archivo, “.”)));

if ($extension && substr($ext, 1) != $extension) continue;

# Obtenemos la Expresion regular
if (eregi($ereg, $archivo, $regs))
{
$farchivo = $finalname;

# Obtenemos el nombre del fichero a cambiar
for ($i = 1; $i < count($regs); $i++)
{
if ($regs[$i])
{
if (is_numeric($regs[$i])) {
$remplace = str_pad($regs[$i], $numzeros + 1, “0″, STR_PAD_LEFT);
}
else {
$remplace = $regs[$i];
}

$farchivo = str_replace(”%EREG#{$i}%”, $remplace, $farchivo);
}
}

# Remplazamos el extra
if (count($extra) && $extra[$numFiles])
{
$farchivo = str_replace(”%EXTRA%”, $extra[$numFiles], $farchivo);
}
else
{
$farchivo = str_replace(”%EXTRA%”, “”, $farchivo);
}

# Eliminamos los %EREG#x% que quedan
$farchivo = preg_replace(”/%EREG#[0-9]*%/i”, “”, $farchivo);

# Eliminamos dobles espacios
$farchivo = preg_replace(”/[ ]{2,99}/i”, ” “, $farchivo);

# Añadimos la extension
$farchivo .= $ext;

# Salida
if ($farchivo)
{
echo “>> \”{$archivo}\” <<##>> \”{$farchivo}\”\n”;

if ($rename)
{
rename(”{$dir}{$archivo}”, “{$dir}{$farchivo}”);
}
}
else
{
echo “** No se pudo cambiar el nombre de {$archivo}\n”;
}

$numFiles++;
}
}
}

?>

Espero que os sirva.

.


Covers - Carátulas - Galletas para maletín / estuche

10 November 2008

¿Quien no tiene maletines/estuches llenos de DVD’s para los juegos de nuestra consola o películas? Pues bien, aquí mi nueva idea para evitar abrir el nuestro (llenito llenito de DVD’s de distintas marcas) y simplemente aparece el título a rotulador (siempre de distintos colores).

Por el momento, tengo unas pocas de mis juegos de Wii. Quizá me ponga a hacerlo también para las películas, ya veremos :)

Super Smash Bros Brawl
Super Smash Bros Brawl

The Legend of Zelda Twilight Princess
The Legend of Zelda Twilight Princess

Mario Kart
Mario Kart

Littlest Pet Shop
Littlest Pet Shop

Espero que le gusten a alguien. A mi los maletines con todas las portadas de los juegos me quedan cojonudos :)

Ale!


Un día de lluvia, disfrutemoslo

28 October 2008

Si llueve a mares, en vez de ponernos a llorar por la crisis y el mal tiempo… ¿mejor disfrutemos no?

dscn0483.jpg - 1.20 Mb

dscn0484.jpg - 1.21 Mb

Chao!


Mis primeras Killmarks del AirRivals

19 October 2008

Bueno, aquí estamos otra vez.

Os presento mis primeras Killmarks, un level 42-51 y un level 82-91 (esta última más bien es potra) pero ahí esta :)

atm00001.JPG  atm00003.JPGPara conseguir esta estuve un buen rato dandole caña hasta que al final hizo BoOOom!! Para la segunda, más bien fue potra de la buena (habian como 10 naves más disparando), pero bueno al final me la lleve yo por darle digamos, el toque de gracia xD

Para el que no lo sepa, una Killmark es cuando vas a las zonas neutrales o enemigas del universo AirRivals y te encuentras con tu facción enemiga. Por consiguiente, una lucha comienza y cuando matas a un rival obtienes una Killmark según su nivel. Algo así como una medalla y puedes guardarlas para el recuerdo o puedes usarlas para obtener experiencia.

Eso es todo por hoy, otro día más :)


AirRivals - Mi primera batalla entre naciones

14 October 2008

Pues mi primera experiencia en la guerra de naciones del AirRivals no ha podido ir mejor. Con un total de 200 “war points” conseguidos me estreno en las Wars.

atm00002.JPG

atm00003.JPG

atm00005.JPG

atm00009.JPGAl principio no tenia ni idea de que pasaba… solamente ha salido un mensaje en la pantalla que una nave nodriza de los “ANI” (Anti-nacionalistas) habia invadido “Tylent Jungle”. Así que hemos ido hacia allá a ver que pasaba, y cual a sido mi sorpresa al encontrarme coneste pedazo porta-aviones.

atm00011.JPGCasi nada, pero algo falla… no hay enemigos y “Anubis” (nombre en clave de la nave nodriza) no recibe daño alguno. Así que decido ir al portal del mapa y leches, me encuentro a todos nuestros tanques (jugadores) apostados en la entrada/salida cubriendo la invasión.

atm00012.JPGPero no hemos podido pararla, Anubis se “activo o algo así” y comenzaron a salir los “ANI”s hasta que entre una nube de misiles y disparos conseguimos neutralizar el ataque.

Una experiencia muy muy buena. En algunos momentos se paraba debido a la cantidad de naves, disparos, etc… que habia en pantalla pero han sido muy puntuales.

Resumiendo, me han derribado 1 vez y he estado repartido leña a troche y moche, con lo que en total he conseguido 200 “war points”.

¿Si pienso repetir? Desde luego, que no te quepa duda :)

.


Cifrado con Rijndael (AES) simétrico en PHP

22 September 2008

A continuación, un ejemplo funcional de un cifrado de datos simétrico usando Rijndael en su modo de 256bits.

<?php
header(”Content-Type: text/plain; charset=utf-8″);

# Creamos una clave de 256bits o 32 caracteres
$key = md5(”Clave para el cifrado de datos `12345`!·$%&/()=”);

# Cadena a encriptar
$data = “Estamos aquí reunidos para ver el funcionamiento de un cifrado simétrico. ALE!”;

/**
* PROCESO DE CIFRADO
**/
# Inicializa el mudulo de cifrado
$td = mcrypt_module_open(’rijndael-256′, ”, ‘ofb’, ”);

# Crea el vector de inicializacion y establece el tamaño de la clave (aleatorio)
$vi = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);

# Inicializa el cifrado
mcrypt_generic_init($td, $key, $vi);

# Cifra los datos
$encryptedData = mcrypt_generic($td, $data);

# Termina el manejador de cifrado y cierra el modulo
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

# Muestra el cifrado
echo “Cifrado:\n{$encryptedData}\n\n”;

/**
* PROCESO DE DESCIFRADO
**/
# Inicializa el mudulo de cifrado
$td = mcrypt_module_open(’rijndael-256′, ”, ‘ofb’, ”);

# Inicializa el cifrado
mcrypt_generic_init($td, $key, $vi);

# Crea el vector de inicializacion y establece el tamaño de la clave (aleatorio)
$vi = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);

# Descifra los datos
$decryptedData = mdecrypt_generic($td, $encryptedData);

# Termina el manejador de descifrado y cierra el modulo
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

# Muestra el descifrado
echo “Descifrado:\n{$decryptedData}\n\n”;
?>

Aquí se ha utilizado una clave de longitud fija de 32 caracteres, pero hay muchas más variantes y posibilidades. Desde utilizar una longitud aleatoria hasta tener 2 claves y un sin fin de opciones más. Podemos complicarlo lo que queramos, contra más complicado más difícil será reventarlo (aunque todavía no se conoce el método).

Ale!!


Controlar el MediaPortal con un Wiimote

4 September 2008

Hola que tal.

Hace tiempo hice un video de demostración donde controlo el software mediacenter MediaPortal con un Wiimote. Lo he subido a YouTube para que se vea su utilización. La configuración de los botones se puede cambiar y hacer cosas interesantes, como la “Pausa” y el “Play” activarla mediante un golpe al Wiimote y chorradas varias. Eso ya va a gusto del consumidor.


Papermodel - Stitch facilito

31 August 2008

Buenas, aquí les traigo un modelo facilito para los pequeños. Una sola hoja y fácil de montar.

stitch_thumb.jpg

Descarga / Download: Stitch.pdf (27KB)


Black Pearl - Perla Negra

30 August 2008

Muy buenas,

Después de construir el F-16 Thunderbird y el Mitsubishi Zero (ambos de Fiddlers Green) he decidido cambiar de chip y construir un barco. Comenzaremos con uno de dificultad media/alta antes de intentar uno de dificultad alta o muy alta, además de que me encanta el modelo y que leches, lo voy a intentar.

Este es el modelo en cuestión:

blackpearl.jpg
Descarga /Download:

Black Pearl - Perla Negra (Zip 65MB)

Conforme tenga piezas o algo para enseñar, haré una página con la construcción.
Saludos!


Mi Ranking de juegos GBA

1 July 2008

Muy buenas. Hace poco he adquirido una GameBoy Micro por 39€ + 1 Juego y sin pensarlo me compre un eLink en DealExtreme de 1Gb.

En fín, que buscando juegos y rankings por ahí he descubierto joyas del entretenimiento como son:

0051 - Rayman Advance
Release Lister V2

F-Zero Maximum velocity

Super Street Fighter 2 X Revival


Next Page »