ID3v2 - 19/07/03 11:45 PM
I would like to see ID3v2 support.
alias bget { bread $shortfn($$1) $$2 $$3 &bget | if ($prop == text) return $ascii(&bget,1,$bvar(&bget,0)).bvar | else return $bvar(&bget,1,$bvar(&bget,0)) } alias id3v2 { if ($bvar(&return,0)) bunset &return var %file = $$1-,%check = $bget($shortfn(%file),0,10) if (73 68 51 3 0 0* iswm %check) { if ($gettok($gettok(%check,9-10,32),1,32)) var %size2 = $calc((128 * $gettok($gettok(%check,9-10,32),1,32)) + 10 + $gettok($gettok(%check,9-10,32),2,32)) else var %size2 = $calc($gettok($gettok(%check,9-10,32),1,32) + 10) var %x = 10 if (!$hget(id3v2)) || ($hget(id3v2,filename) != %file) { if (!$hget(id3v2)) hmake id3v2 else { hfree id3v2 | hmake id3v2 } hadd id3v2 filename $$1- while (%x <= %size2) { bread $shortfn(%file) %x 8192 &id3v2 if ($bvar(&id3v2,1,4) != 0 0 0 0) { var %x = $calc(%x + (($bvar(&id3v2,6,1) * 255 * 255) + ($bvar(&id3v2,7,1) * 255) + $bvar(&id3v2,8,1)) + 10) bcopy &frame 1 &id3v2 12 $calc(($bvar(&id3v2,6,1) * 255 * 255) + ($bvar(&id3v2,7,1) * 255) + $bvar(&id3v2,8,1)) hadd -b id3v2 $bvar(&id3v2,1,4).text &frame bunset &id3v2 &frame bread $shortfn($$1) %x 8192 &id3v2 } else var %x = $calc(%size2 + 1) } } ;album/track/#/artist if ($prop = album) var %temp = $hget(id3v2,TALB,&return) elseif ($prop = track) var %temp = $hget(id3v2,,&return) elseif ($prop = artist) var %temp = $hget(id3v2,TPE1,&return) elseif ($prop = title) var %temp = $hget(id3v2,TIT2,&return) .timerid3v2unset 1 5 /hfree id3v2 if ($bvar(&return,0) > 1) return $ascii(&return) else return $null } }