Estrarre informazioni e TAG da un file OggVorbis con le sole funzioni di Gambas

Da Gambas-it.org - Wikipedia.

E' possibile estrarre informazioni generali e TAG da un file OggVorbis con le sole funzioni di Gambas.

Un possibile codice è il seguente:

Public Sub Main()  
 
 Dim ogg, s As String
 Dim i, n, c As Integer
 
 ogg = "/percorso/del/file.ogg"  
 
 s = File.Load(ogg)
' Verifica se effettivamente è un file .ogg:
 If Left(s, 4) <> "OggS" Then Error.Raise("Attenzione ! Il file caricato non è un file OGG !")  
    
 Print "File ogg:   "; ogg
 Print "\nDimensione: "; Len(s); " byte"
 Print "Canali:     "; Asc(s, 40)
' Estrae la frequenza di campionamento:
 Print "Frequenza:  "; Val("&" & Estrazione(s, 44)); " hertz"
' Estrae il bitrate nominale:
 Print "Bitrate     "; Val("&" & Estrazione(s, 52)) \ 1000; " Kbps"
 
' Individua il secondo testo "vorbis" nel file:
 i = InStr(s, "vorbis", InStr(s, "vorbis") + 5)
 
' Individua il byte che indica il numero di caratteri che compongono la stringa del "Vendor":
 n = Asc(s, i + 6)
 
' Avanza con l'indicatore:
 i += 10
 
' Legge la stringa del "Vendor":
 Print "Vendor:     "; Mid(s, i, n)
 Print "\nCommenti:"
 
' Avanza con l'indicatore:
 i += n
 
' Individua il byte che indica la quantità di "commenti" presenti nel file ogg:
 n = Asc(s, i)
 If n = 0 Then Quit
 
' Avanza con l'indicatore:
 i += 4
' Individua il byte che indica il numero di caratteri che compongono la stringa del 1° "Commento":
 c = Asc(s, i)
 
' Legge i "commenti":
 Repeat
' Avanza con l'indicatore:
   i += 4
' Legge la stringa di caratteri del "Commento":
   Print Mid(s, i, c)
' Avanza con l'indicatore:
   i += c
' Individua il byte che indica il numero di caratteri che compongono la stringa del "Commento":
   c = Asc(s, i)
   Dec n
 Until n = 0
  
End


Private Function Estrazione(t As String, byte As Integer) As String
 
 Dim rit As String
 Dim n As Integer
  
 For n = byte To byte - 3 Step -1
   rit &= Hex(Asc(t, n), 2)
 Next
   
 Return rit
 
End



Riferimenti