tincho   23-08-2020, 19:33
#1
Vuott: Estoy usando tu ejemplo de Extern con la librería TagLib y funciona bien y rápido para extraer metadatos de los archivos de música.
https://www.gambas-it.org/wiki/index.php...i_Libtag_c
Me interesa acceder a algunos datos mas pero luego de intentar un tiempo desistí.
Estos usando la información del sitio
https://taglib.org/
pero no logro implementar nada.
Deseo saber el codec del archivo, el artista del album, y el tipo de id3 y la versión.
En todos los intentos que hice, el código da error y dice que esa función no esta en libtag_c......
El código modificado es este:
Código:
Export
Library "libtag_c:0.0.0"

Public Struct TagLib_File
  dummy As Integer
End Struct

Public Struct TagLib_Tag
  dummy As Integer
End Struct

Public Struct TagLib_AudioProperties
  dummy As Integer
End Struct

' void taglib_set_strings_unicode(BOOL unicode)
' By default all strings coming into or out of TagLib's C API are in UTF8.
' However, it may be desirable For TagLib To operate On Latin1(ISO - 8859 - 1) strings In which Case this should be set To FALSE.
Private Extern taglib_set_strings_unicode(unicode As Boolean)

' TagLib_File *taglib_file_new_type(const char *filename)
' Creates a TagLib file based on \a filename.
Private Extern taglib_file_new(filename As String) As TagLib_File

' TagLib_Tag *taglib_file_tag(const TagLib_File *file)
' Returns a pointer to the tag associated with this file.
Private Extern taglib_file_tag(_file As TagLib_File) As TagLib_Tag

' char *taglib_tag_title(const TagLib_Tag *tag)
' Returns a string with this tag's title.
Private Extern taglib_tag_title(tag As TagLib_Tag) As String

' char *taglib_tag_artist(const TagLib_Tag *tag)
' Returns a string with this tag's artist.
Private Extern taglib_tag_artist(tag As TagLib_Tag) As String

' char *taglib_tag_album(const TagLib_Tag *tag)
' Returns a string with this tag's album name.
Private Extern taglib_tag_album(tag As TagLib_Tag) As String

' unsigned int taglib_tag_year(const TagLib_Tag *tag)
' Returns the tag's year or 0 if year is not set.
Private Extern taglib_tag_year(tag As TagLib_Tag) As Integer

' char *taglib_tag_comment(const TagLib_Tag *tag)
' Returns a string with this tag's comment.
Private Extern taglib_tag_comment(tag As TagLib_Tag) As String

' unsigned int taglib_tag_track(const TagLib_Tag *tag)
' Returns the tag's track number or 0 if track number is not set.
Private Extern taglib_tag_track(tag As TagLib_Tag) As Integer

'Private Extern taglib_tag_encoder(tag As TagLib_Tag) As String
'Private Extern taglib_tag_volume_number(tag As TagLib_Tag) As Integer

' char *taglib_tag_genre(const TagLib_Tag *tag)
' Returns a string with this tag's genre.
Private Extern taglib_tag_genre(tag As TagLib_Tag) As String

' const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file)
' Returns a pointer to the the audio properties associated with this file.
Private Extern taglib_file_audioproperties(_file As TagLib_File) As TagLib_AudioProperties

' int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties)
' Returns the length of the file in seconds.
Private Extern taglib_audioproperties_length(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties)
' Returns the bitrate of the file in kb/s.
Private Extern taglib_audioproperties_bitrate(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties)
' Returns the sample rate of the file in Hz.
Private Extern taglib_audioproperties_samplerate(audioProperties As TagLib_AudioProperties) As Integer

' int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties)
' Returns the number of channels in the audio stream.
Private Extern taglib_audioproperties_channels(audioProperties As TagLib_AudioProperties) As Integer

' void taglib_tag_free_strings(void)
' Frees all of the strings that have been created by the tag.
Private Extern taglib_tag_free_strings()
' void taglib_file_free(TagLib_File *file)
' Frees and closes the file.
Private Extern taglib_file_free(_file As TagLib_File)
Public Function Info(fileaudio As String) As Collection
  Dim fl As TagLib_File
  Dim autag As TagLib_Tag
  Dim auprop As TagLib_AudioProperties
  Dim secondi, minuti As Integer
  Dim inf As New Collection
  'taglib_set_strings_unicode(False)
  taglib_set_strings_unicode(True)
  fl = taglib_file_new(fileaudio)
  If IsNull(fl) Then Error.Raise("Impossibile caricare il file audio: " & fileaudio)
  autag = taglib_file_tag(fl)
  If IsNull(autag) Then Error.Raise("Impossibile ottenere i tag dal file audio: " & fileaudio)
  inf.Add(taglib_tag_album(autag), "Album")
  inf.Add(taglib_tag_artist(autag), "Artist")
  inf.Add(taglib_tag_track(autag), "Track")
  inf.Add(taglib_tag_title(autag), "Title")
  inf.Add(taglib_tag_year(autag), "Year")
  inf.Add(taglib_tag_genre(autag), "Genre")
  inf.Add(taglib_tag_comment(autag), "Comment")
  ' Mostra le proprietà del file audio:
  auprop = taglib_file_audioproperties(fl)
  If IsNull(auprop) Then
    inf.Add(True, "AudioError")
  Else
    inf.Add(taglib_audioproperties_length(auprop), "Length")
    inf.Add(taglib_audioproperties_bitrate(auprop), "Bitrate")
    inf.Add(taglib_audioproperties_samplerate(auprop), "Frequency")
    inf.Add(taglib_audioproperties_channels(auprop), "Channels")
  Endif
  ' Va in chiusura:
  taglib_tag_free_strings()
  taglib_file_free(fl)
  Return inf
End
Saludos.

1 Saludo.
vuott   24-08-2020, 02:24
#2
Hola tincho,
probé tu codigo: a mi funciona normalmente.
Descargaste la libreria con el Gestor de paquetes ?
Mi codigo a ti funciona ?

...forse il nuovo "Gesù Cristo" sceso sulla terra potrebbe dare una benedizione.
Última modificación: 24-08-2020, 02:26 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   24-08-2020, 02:29
#3
(24-08-2020, 02:24)vuott escribió: Hola tincho,
probé tu codigo: a mi funciona normalmente.
Descargaste la libreria con el Gestor de paquetes ?
...forse il nuovo "Gesù Cristo" sceso sulla terra potrebbe fare un miracolo.
Hola Vuott,
El código funciona bien y es muy veloz, lo que deseo hacer es ampliar en tres parámetros la información extraída del archivo.
  • Codec
  • Artista del album
  • Tipo de id3 y la versión.
Saludos

1 Saludo.
vuott   24-08-2020, 03:37
#4
(23-08-2020, 19:33)tincho escribió: ...dice que esa función no esta en libtag_c......

Cual función ?

Non sono l'Onnipotente che sa tutto, tincho !

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   24-08-2020, 04:07
#5
(24-08-2020, 03:37)vuott escribió:
(23-08-2020, 19:33)tincho escribió: ...dice que esa función no esta en libtag_c......
Cual función ?
Non sono l'Onnipotente che sa tutto, tincho !
Por ejemplo intento poner esta funcióntaglib_tag_album_artist
Ninguna funciona, pero.... donde puedo ver que funciones hay disponibles.
Por ejemplo en esta lista de funciones para haskell no figura lo que busco ¿eso quiere decir que no esta? asi que dejo de busscar, por ejemplo, "album_artist" verdad?
https://hackage.haskell.org/package/tagl...agLib.html
Saludos.
Última modificación: 24-08-2020, 04:10 por tincho.

1 Saludo.
vuott   24-08-2020, 04:17
#6
(24-08-2020, 04:07)tincho escribió: Por ejemplo intento poner esta función taglib_tag_album_artist
Ninguna funciona, pero.... donde puedo ver que funciones hay disponibles.

Las funciones en C de esta libreria puedes verle en este archivo header:

     /usr/include/taglib/tag_c.h

la función taglib_tag_album_artist( ) no existe !

Solo l'Onnipotente può crearla, tincho !
Última modificación: 24-08-2020, 04:20 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.