Mas cosas raras e interesantes para hacer con Squeak

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Mas cosas raras e interesantes para hacer con Squeak

Edgar J. De Cleene
Intento hacer una base de datos de intercambio de musica desde hace años,
nunca he tenido mucho tiempo.
Ahora que estoy afuera de todo, me dedico a divertirme.
Asi que tengo este editor de id3 tags en proceso.
La información técnica está aqui

http://www.id3.org

Lo primero que vemos es que hay id3v2-00 e id3v2.3.0

La version la identifico sin error
El drama es el tamaño (size) ya que como se ve es recursivo la busqueda de
tags

version2: aFile
    | size flags id3 r |
    id3 := Dictionary new.
    flags := aFile next.
    size := (aFile next: 4) asHex.
    self halt.
    size := 4
                * (Number readFrom: size base: 16).
    [aFile position < size]
        whileTrue: [r := self nexTag: aFile.
            id3 at: r first put: r last].
    ^ id3

La version preliminar de nexTag
nexTag: aFile
    | tag fsize title artist year unknow album |
    | tag fsize title artist year unknow album|
    tag := aFile next: 3.
    tag caseOf: {
        ['TAL'] ->
    tag caseOf: {['TAL'] ->
            [fsize := (aFile next: 3) asHex.
            fsize := Number readFrom: fsize base: 16.
            album := aFile next: fsize].
        ['TT2'] ->
            [fsize := (aFile next: 3) asHex.
            fsize := Number readFrom: fsize base: 16.
            title := aFile next: fsize].
        ['TP1'] ->
            [fsize := (aFile next: 3) asHex.
            fsize := Number readFrom: fsize base: 16.
            artist := aFile next: fsize].
        ['TYE'] ->
            [fsize := (aFile next: 3) asHex.
            fsize := Number readFrom: fsize base: 16.
            year := aFile next: fsize]}
         otherwise:
            [fsize := (aFile next: 3) asHex.
            fsize := Number readFrom: fsize base: 16.
            unknow := aFile next: fsize].
   
    self halt.
    self nexTag: aFile

La version depurada de lo mismo

nexTag: aFile
    | tag fsize unknow |
    tag := aFile next: 3.
    fsize := (aFile next: 3) asHex.
    fsize := Number readFrom: fsize base: 16.
    unknow := aFile next: fsize.
    ^ Array with: tag with: unknow

Pregunta: porque no funciona siempre ?
En los 13129 mp3 que tengo hay version2 y version3.
Pensaba ³normalizar² a version 3, pero me encuentro con ese error.

Feedback ?
Y a ver si coincidimos en algo , que tanto hablar al gas ya da olor :=)

Edgar
Al gas = al pedo = hablar sin sentido y sin llegar a ninguna conclusión
Del diccionario Rosarino ­ Español (ji ji ji)