FJOM On The Run
Mis Bookmarks
Textpattern Forums
Textpattern
Bloglines
Ask Metafilter
Metafilter
El sístema 4.5 de BB permite playlists y cuando analicé el archivo que genera ví que es simplemente una lista con los nombres de los archivos, el detalle es que las generadas por la BB tienen antes la dirección local, por lo que no se puede usar la misma playlist cuando está conectada a la compu. Simplemente fue cuestion de quitarle la informacion de file:// y hacer una playlist con direcciones relativas. No hay problema.
Después llegué al siguiente issue: Tengo varios podcasts en mi blackberry que se tienen que escuchar en orden. El detalle es que para el sistema operativo el del “Archivo 10.mp3” sigue el “Archivo 100.mp3”. La solución está en generar la playlist ordenando de acuerdo al número; y no al código ASCII. Ya entrado en gastos en el proceso puede ser útil renombrar los archivos en masa, así que de una vez agregué esa función aquí va mi programita. (Este es un excelente candidato para agregarle una GUI con shoes, así que ya tengo dos)
#Clases para generador de playlists y renombrar archivos
class M3u
def initialize(dir,selector,lista_archivos=nil,real=false,verbose=true)
if lista_archivos
@archivos=lista_archivos
else
@dir=dir
@selector=selector
genera_lista_archivos
end
@real=real
@verbose=verbose
end
def genera_lista_archivos
Dir.chdir(@dir)
@archivos=Dir.glob(@selector)
end
def renombra(original,reemplazo)
@archivos.map! do |filename|
newfilename=filename.gsub(original,reemplazo)
puts "#{filename}->#{newfilename}" if @verbose
File.rename(filename,newfilename) if @real
newfilename
end
end
def ordena(regex)
lista={}
@archivos.each do |filename|
filename.match(regex)
lista[Regexp.last_match(1).to_i] = filename # después de cualquier uso de regexp,
#los grupos guardados entre parentesis quedan en last_match
end
@archivos=lista.sort.map {|a| a[1]} #como el hash quedó con el numero y luego
#el nombre de archivo, queremos el segundo elemento. Lista sort genera un array
puts "Ordenada", @archivos if @verbose
end
def genera_playlist(name)
if File.exist?(name)
puts "Ya existe" #Y??? dales opcion para reemplazarla
else
f = File.new(name,"w")
@archivos.each {|a| f<<a.gsub("\ ","%20")+"\n"} #la playlist no puede tener espacios en el nombre los cambiamos por %20 como en la web
f.close
end
end
end
if __FILE__==$0
RENAME=false
REAL=false
VERBOSE=true
directorio='H:\BlackBerry\music\podcasts\ '#el espacio final es para
#que no tome \' como escape y así evitamos usar " y tener que escapar todos los espacios y \
directorio='H:\Blackberry\music\podcasts\Chinese '
selector_archivos="*.mp3"
original=Regexp.new("Starting Out in Chinese ")
replacement="chinese "
#~ orden=Regexp.new("([0-9]{2})") #exactamente 2 dígitos
#~ orden=Regexp.new(/e(\d)/) #una e seguida de un dígito y solo tomamos el dígito para ordenar
orden=Regexp.new("([0-9]{2,3})") #entre 2 y 3 dígitos
a=M3u.new(directorio,selector_archivos,nil,REAL,VERBOSE)
a.renombra(original,replacement) if RENAME
a.ordena(orden)
a.genera_playlist(replacement.chop+".m3u") #este chop es un horror, mejorar
end
Newer: | Home | Older: Status 2 / "Batch"
En línea desde hace 4 años, 7 meses, 7 dÃas, 11 horas y 24 minutos.