Wed 11 Nov 2009
Aprende con tu Artista Favorito: Ines Sainz migrates Amarok 1 artwork
Enviado al blog por el pinche cash segun el bajo la categoria Aprende con tu artista favorito, howtos, Linux, Perl for Retarded ppl
[5] Chismes, falta el tuyo, comenta y obten puntos para intercambiarlos por diezmo

Bonita foto del osito bimbo (la botarga de atras malpensados)…
CASH: Gracias por esta participacion Ines
INESITA: A ti, tenia mucho tiempo queriendo participar en tu afamado blog.
CASH: Como esta eso de que ya Amarok no sirve? que no todos los pinches linuxeros decian que era la mata?

Poniendose guapa para la entrevista…
INESITA: Como lo has dicho, mi estimado, simpatico y atractivo Cash,ERA, Amarok era un proyecto que tenia una gran base de usuarios instalada, esto en la version 1.x, pero el proyecto tomo otro rumbo en la 2.x queriendo ampliar su base de usuarios cambiaron de tajo a un proyecto compilable en otras plataformas incluyendo windows con una interface totalmente diferente y quitando muchisimas funcionalidades que se tenian en la 1.x, a pesar del desagrado de la comunidad de usuarios ellos continuan en ese rumbo y lo peor aun dejando sin soporte ni actualizaciones la version anterior, los usuarios mas o menos han arreglado parchando codigo problemas surgidos, como soporte para ipods nano de la 4ta generacion y cambios en busquedas de wikipedia, pero ya son muchas cosas las que han dejado de funcionar y es impractico seguir parchando (sin albur) uno el codigo.
CASH: Pinches linuxeros cuichis

Amarok 1.x era el “Brasil” de los mundiales, el 2.x es el “Mexico”…
INESITA: Entonces, muchos nos quedamos en busca de nuevas alternativas, las cuales hay muchas, la mas recomendable es songbird de la fundacion mozilla, sin embargo existe muchagente con coleciones muy grandes que en Amarok ya la tenian configurada (CD covers, ratings), conozco a un wey que el enfermo tenia la coleccion de 30 gigas toda taggeada y con los covers para cada cancion, Amarok guarda la imagen del cover con un nombre raro que es un “checksum” del nombre del disco y artista en bajas
[cash@influenza ]# echo -n "iron maidenpiece of mind" | md5sum 2616d94042fc7a849a3a4beff51875c6 -
Asi que me aventure a realizar un script en perl para poder migrar los covers de mi amigo y ponerlos en el mismo mp3 pqara que sean leidos por cualquier player
CASH: Saliste mas cabrona que bonita inesita…
INESITA: Tu no eres feo Cashito, si no fueras tan rejego y me pelaras…
CASH: Aguantame un rato, platicanos tu script mejor…

VIVA LA AMAROK!!
INESITA: Bueno, este es solo un inicio, como dicen los gringos “WARNING: TEST YOUR SCRIPT ON A COPY OF YOUR COLLECTION” o como diria Bullwinkle, “es tu pedo si esta madre te echa a perder tus mp3, mejor copialos antes”
Para empezar es necesario crear una lista de reproduccion con TODA la coleccion y guardarla a disco a un arcchivo m3u
cash@cashito:~/amarokfiles$ cat 10000.m3u #EXTINF:393,Holy Wars... The Punishment ../../cash/CarAudio/Thrash/01-Holy Wars, The Punishment Due.mp3 #EXTINF:312,Hanger 18 ../../cash/CarAudio/Thrash/02-Hangar 18.mp3 #EXTINF:207,Take No Prisoners ../../cash/CarAudio/Thrash/03-Take No Prisoners.mp3 #EXTINF:340,Five Magics
INESITA: Las lineas “#EXTINF:393,Holy Wars… The Punishment” no nos interesan asi que con algun script filtramos las lineas que interesen hasta que quede un archivo con las rutas
cash@cashito:~/amarokfiles$ more paths /home/cash/CarAudio/Thrash/01 - March of the SOD.mp3 /home/cash/CarAudio/FavoritasBB/08 - Mask Mask - Elaka Arne.mp3 /home/cash/CarAudio/FavoritasBB/25 - Trampar I Min Mormors Rabatt - Zero Zero.mp3 /home/cash/CarAudio/covers/04Low - Transmission.mp3 /home/cash/CarAudio/covers/05Codeine - Atmosphere.mp3 /home/cash/CarAudio/covers/01 Summer Night City (Therion).mp3 /home/cash/CarAudio/covers/03 Gimme Gimme Gimme (Sinergy).mp3 /home/cash/CarAudio/covers/04 Money Money Money (At Vance).mp3 /home/cash/CarAudio/covers/05 Voulez-vouz (Morgana Lefay).mp3 /home/cash/CarAudio/covers/07 Take A Chance On Me (Rough Silk).mp3 /home/cash/CarAudio/covers/09 Eagle (Sargant Fury).mp3 /home/cash/CarAudio/covers/10 One Of Us (Flowing Tears).mp3 /home/cash/CarAudio/covers/11 Waterloo (Nation).mp3 /home/cash/CarAudio/covers/12 Super Trouper (Custard).mp3 /home/cash/CarAudio/covers/14 Dancing Queen (Glow).mp3 /home/cash/CarAudio/covers/07 Sign - Run to the Hills.mp3
De igual forma ponemos los covers con los nombres raros (estan en el directorio .kde/share/apps/amarok/albumcovers/large/ ) y los copiamod a un directorio, accesable por el script en este caso ( ../covers/ )
Instalamos los modulos perl necesarios
Image::Magick
MP3::Tag
Digest::MD5
Y aqui esta el script:
#!/usr/bin/perl $configfile = "paths"; open(CFG_FILE, $configfile) or die "Can not open file, $!"; while () { push @ips, $_; } close (CFG_FILE) or die "Can not close file correctly"; use Image::Magick; use MP3::Tag; use Digest::MD5 qw(md5_hex); foreach my $raya (@ips) { chomp($raya); #print "$raya\n"; $filename = $raya; $mp3 = MP3::Tag->new($filename); $mp3->config('write_v24',1); #$mp3->config("write_v24"); $mp3->get_tags(); if (exists $mp3->{ID3v1}) { #print "Filename: $filename\n"; $artist=lc($mp3->{ID3v1}->artist); $album=lc($mp3->{ID3v1}->album); #print "-$artist-$album-\n"; } my $imagename = md5_hex( $artist.$album ); # print $imagename; if ( -e "../covers/$imagename") { print "../covers/$imagename\n"; use constant APIC => "APIC"; use constant TYPE => "jpg"; use constant HEADER => ( chr(0x0) , "image/" . TYPE , chr(0x3), "Cover Image"); use constant DEBUG => 1; my $image = new Image::Magick; if (my $x = $image->Read("../covers/$imagename")) { print "Couldn't read the image $imagefile: $x\n"; } #} my $imagedata = $image->ImageToBlob(magick => TYPE ); undef $image; my $id3; my $id3; if (exists $mp3->{ID3v2}) { print "Using old ID3v2 tag\n" if DEBUG; $id3 = $mp3->{ID3v2}; } else { print "Creating new ID3v2 tag\n" if DEBUG; $id3 = $mp3->new_tag("ID3v2"); } my $frames = $id3->supported_frames(); if (!exists $frames->{APIC}) { print "Something is wrong, APIC is not a supported frame!\n"; exit 2; } my $frameids = $id3->get_frame_ids(); if (exists $$frameids{APIC}) { print "Replacing existing APIC entry\n" if DEBUG; $id3->change_frame(APIC, HEADER, $imagedata); } else { print "Creating new APIC entry\n" if DEBUG; $id3->add_frame(APIC,HEADER, $imagedata); } $id3->write_tag(); } $mp3->close(); print "done $raya \n"; #sleep 5; }
CASH: Ches frikis, como se complican, por eso se van a ir al infierno
INESITA: No te enojes cashito de mi vida… aun tenemos la esperanza que salga algun fork de la version anterior…
CASH: Itunes es el futuro, bueno, gracias, saludos a nuncavuelvas
INESITA: No!!!! pegame! pegame pero no me dejes!!! deje una cita con DOMINIC BARONET por venir contigo..
CASH: Sorry mija, tengo pendientes, luego t llamo bye
NOTA: La entravista se hizo via email a iness@hotmail.com, no se puede asegurar que fuera ines realmente
Incoherencias parecidas y calificaciones a este post:





