Mvtr (multi version tag reader)

Contenu du snippet

Vala juste un ptit identifieur qui retourne les id3v2 tags d'un fichier mp3
Si le fichier ne comporte pas de tag v2.0, l'identifieur retournera les valeurs des tags v1.0
Si la valeur retournée est $false, c'est que le fichier n'existe pas
L'identifieur retourne null si le tag demandé n'existe pas
Le readme est inclu dans le code source.

Source / Exemple :


;MVTR (Multi Version Tag Reader ^^;) v1.0 by Seregon

;This snippet is for all those guys using dlls to retrieve id3v2 tags info ;)
;How to use:
;$idtag(path\file.mp3).title -> returns file's title
;$idtag(path\file.mp3).artist -> returns file's artist
;$idtag(path\file.mp3).album -> returns file's album
;$idtag(path\file.mp3).year -> returns file's year
;$idtag(path\file.mp3).genre -> returns file's genre
;$idtag(path\file.mp3).time -> returns file's length
;$idtag(path\file.mp3).kbps -> returns file's sound frequency
;$idtag(path\file.mp3).version -> returns id3tag version
;Documentation:
;www.id3.org -> official website
;www.id3.org/id3v2.3.0.html -> id3v2.3.0 structure

alias idtag {
  if ($exists($1) == $false) { return $false }
  else {
    bread " $+ $1 $+ " 0 10 &idtag_1
    if ($ascii($bvar(&idtag_1,1,3)) == ID3) {
      bread " $+ $1 $+ " 10 $base($base($bvar(&idtag_1,7,1),10,2,7) $+ $base($bvar(&idtag_1,8,1),10,2,7) $+ $base($bvar(&idtag_1,9,1),10,2,7) $+ $base($bvar(&idtag_1,10,1),10,2,7),2,10) &idtag_2
      if ($prop == title) { set -u %tit2 $base($base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TIT2).text + 4), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TIT2).text + 5), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TIT2).text + 6), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TIT2).text + 7), 1),10,16),16,10) | return $iif($bfind(&idtag_2,1,TIT2).text != 0, $ascii($bvar(&idtag_2, $calc($bfind(&idtag_2, 1, TIT2).text + 10), %tit2)), $null) }
      if ($prop == artist) { set -u %tpe1 $base($base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TPE1).text + 4), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TPE1).text + 5), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TPE1).text + 6), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TPE1).text + 7), 1),10,16),16,10) | return $iif($bfind(&idtag_2,1,TPE1).text != 0, $ascii($bvar(&idtag_2, $calc($bfind(&idtag_2, 1, TPE1).text + 10), %tpe1)), $null) }
      if ($prop == album) { set -u %talb $base($base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TALB) + 4), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TALB) + 5), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TALB) + 6), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TALB) + 7), 1),10,16),16,10) | return $iif($bfind(&idtag_2,1,TALB) != 0, $ascii($bvar(&idtag_2, $calc($bfind(&idtag_2, 1, TALB) + 10), %talb)), $null) }
      if ($prop == year) { set -u %tyer $base($base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TYER) + 4), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TYER) + 5), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TYER) + 6), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TYER) + 7), 1),10,16),16,10) | return $iif($bfind(&idtag_2,1,TYER) != 0, $ascii($bvar(&idtag_2, $calc($bfind(&idtag_2, 1, TYER) + 10), %tyer)), $null) }
      if ($prop == genre) { set -u %tcon $base($base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TCON) + 4), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TCON) + 5), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TCON) + 6), 1),10,16) $+ $base($bvar(&idtag_2, $calc($bfind(&idtag_2,1,TCON) + 7), 1),10,16),16,10) | return $iif($bfind(&idtag_2,1,TCON) != 0, $ascii($bvar(&idtag_2, $calc($bfind(&idtag_2, 1, TCON) + 10), %tcon)), $null) }
      if ($prop == time) { return $remove($sound($1).length,$right($sound($1).length,3)) }
      if ($prop == kbps) { return $sound($1).bitrate }
      if ($prop == version) { return $base($bvar(&idtag_1,4,1),10,16) $+ $chr(46) $+ $base($bvar(&idtag_1,5,1),10,16) }
    }
    else {
      if ($prop == title) { return $iif($sound($1).title == $false, $null, $sound($1).title) }
      if ($prop == artist) { return $iif($sound($1).artist == $false, $null, $sound($1).artist) }
      if ($prop == album) { return $iif($sound($1).album == $false, $null, $sound($1).album) }
      if ($prop == year) { return $iif($sound($1).album == $false, $null, $sound($1).year) }
      if ($prop == genre) { return $iif($sound($1).album == $false, $null, $sound($1).genre) }
      if ($prop == time) { return $remove($sound($1).length,$right($sound($1).length,3)) }
      if ($prop == kbps) { return $sound($1).bitrate }
      if ($prop == version) { return 1.0 }
    }
  }
}
;This id is used in the $idtag command. It converts several ascii values into caracters. For example, $ascii(72 101 108 108 111 32 84 104 101 114 101) will returns "Hello There"
alias ascii {
  set -u %ascii.i 1
  if ($prop == $null) {
    while (%ascii.i <= $numtok($1,32)) { set -u %ascii %ascii $+ $iif($gettok($1,%ascii,32) != 32, $chr($gettok($1,%ascii,32)), $eval($chr(32),0)) | inc %ascii.i }
  }
  return $replace(%ascii, $eval($chr(32),0),$chr(32))
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.