Differenze tra le versioni di "Scaricare una immagine dal sito "Cover Art Archive" mediante le funzioni esterne della libreria libcoverart"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
'''Cover Art Archive''' <SUP>&#091;[[#Note|Nota 1]]&#093;</sup> è un progetto congiunto tra "''Internet Archive''" e "''MusicBrainz''", il cui obiettivo è rendere le immagini di copertina disponibili per tutti su Internet in modo organizzato e conveniente. <SUP>&#091;[[#Note|Nota 2]]&#093;</sup>
+
'''Cover Art Archive''' <SUP>&#091;[[#Note|nota 1]]&#093;</sup> è un progetto congiunto tra "''Internet Archive'' " e "''MusicBrainz'' ", il cui obiettivo è rendere le immagini di copertina disponibili per tutti su Internet in modo organizzato e conveniente. <SUP>&#091;[[#Note|nota 2]]&#093;</sup>
  
E' possibile scaricare tali immagini attraverso un programma utilizzando le risorse del API di ''Coverart''. A tal fine è necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libcoverart.so.1.0.0''"
+
E' possibile scaricare tali immagini attraverso un programma utilizzando le risorse del API di ''Coverart''. A tal fine è necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa "''libcoverart.so.1.0.0''".
  
 
Mostriamo un semplice esempio pratico.
 
Mostriamo un semplice esempio pratico.
Riga 14: Riga 14:
 
  ' ''Request the front image for a release.''</font>
 
  ' ''Request the front image for a release.''</font>
 
  Private Extern caa_coverart_fetch_front(CoverArt As Pointer, ReleaseID As String) As Pointer
 
  Private Extern caa_coverart_fetch_front(CoverArt As Pointer, ReleaseID As String) As Pointer
 
<FONT Color=gray>' ''void caa_imagedata_delete(CaaImageData ImageData)
 
' ''Delete a #CaaImageData object.''</font>
 
Private Extern caa_imagedata_delete(ImageData As Pointer)
 
 
   
 
   
 
  <FONT Color=gray>' ''int caa_imagedata_size(CaaImageData ImageData)
 
  <FONT Color=gray>' ''int caa_imagedata_size(CaaImageData ImageData)
Riga 26: Riga 22:
 
  ' ''Return the data in a #CaaImageData object.''</font>
 
  ' ''Return the data in a #CaaImageData object.''</font>
 
  Private Extern caa_imagedata_data(ImageData As Pointer) As Pointer
 
  Private Extern caa_imagedata_data(ImageData As Pointer) As Pointer
 +
 +
<FONT Color=gray>' ''void caa_imagedata_delete(CaaImageData ImageData)
 +
' ''Delete a #CaaImageData object.''</font>
 +
Private Extern caa_imagedata_delete(ImageData As Pointer)
 
   
 
   
 
  <FONT Color=gray>' ''void caa_coverart_delete(CaaCoverArt CoverArt)
 
  <FONT Color=gray>' ''void caa_coverart_delete(CaaCoverArt CoverArt)
Riga 32: Riga 32:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim ca, ci As Pointer
 
   Dim ca, ci As Pointer
Riga 41: Riga 41:
 
    
 
    
 
  <FONT Color=gray>' ''Si imposta la stringa identificatrice del rilascio dell'immagine, prescelta, nel sito di "Cover Art Archive":''</font>
 
  <FONT Color=gray>' ''Si imposta la stringa identificatrice del rilascio dell'immagine, prescelta, nel sito di "Cover Art Archive":''</font>
   id = "<FONT Color=#B22222>2da72cb7-16d4-4dca-8818-a355b074a977</font>"
+
   id = "<FONT Color=red>2da72cb7-16d4-4dca-8818-a355b074a977</font>"
 
    
 
    
 
   ca = caa_coverart_new("esempio")
 
   ca = caa_coverart_new("esempio")
Riga 66: Riga 66:
 
   caa_coverart_delete(ca)
 
   caa_coverart_delete(ca)
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 14:52, 3 lug 2024

Cover Art Archive [nota 1] è un progetto congiunto tra "Internet Archive " e "MusicBrainz ", il cui obiettivo è rendere le immagini di copertina disponibili per tutti su Internet in modo organizzato e conveniente. [nota 2]

E' possibile scaricare tali immagini attraverso un programma utilizzando le risorse del API di Coverart. A tal fine è necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa "libcoverart.so.1.0.0".

Mostriamo un semplice esempio pratico.
E' opportuno ricordare che al programma bisognerà passare la stringa identificatrice della foto da scaricare. Così se l'indirizzo dell'immagine è https://archive.org/details/mbid-2da72cb7-16d4-4dca-8818-a355b074a977, va precisato che la stringa identificatrice del rilascio nel sito di Cover Art Archive è quella successiva a "mbid-", ossia nel nostro esempio: 2da72cb7-16d4-4dca-8818-a355b074a977 .

Library "libcoverart"

' CaaCoverArt caa_coverart_new(const char *UserAgent)
' Create a new instance of #CaaCoverArt.
Private Extern caa_coverart_new(UserAgent As String) As Pointer

' CaaImageData caa_coverart_fetch_front(CaaCoverArt CoverArt, const char *ReleaseID)
' Request the front image for a release.
Private Extern caa_coverart_fetch_front(CoverArt As Pointer, ReleaseID As String) As Pointer

' int caa_imagedata_size(CaaImageData ImageData)
' Return the number of bytes in a #CaaImageData object.
Private Extern caa_imagedata_size(ImageData As Pointer) As Integer

' unsigned char *caa_imagedata_data(CaaImageData ImageData)
' Return the data in a #CaaImageData object.
Private Extern caa_imagedata_data(ImageData As Pointer) As Pointer

' void caa_imagedata_delete(CaaImageData ImageData)
' Delete a #CaaImageData object.
Private Extern caa_imagedata_delete(ImageData As Pointer)

' void caa_coverart_delete(CaaCoverArt CoverArt)
' Delete a #CaaCoverArt object.
Private Extern caa_coverart_delete(CoverArt As Pointer)


Public Sub Main()
 
 Dim ca, ci As Pointer
 Dim id As String
 Dim qd As Integer
 Dim st As Stream
 Dim bb As Byte[]
 
' Si imposta la stringa identificatrice del rilascio dell'immagine, prescelta, nel sito di "Cover Art Archive":
 id = "2da72cb7-16d4-4dca-8818-a355b074a977"
 
 ca = caa_coverart_new("esempio")
 If ca = 0 Then Error.Raise("Errore !")
 
 ci = caa_coverart_fetch_front(ca, id)
 If ci = 0 Then Error.Raise("Errore !")
 
 qd = caa_imagedata_size(ci)
 If qd = 0 Then Error.Raise("Errore !")
 Print "Dimensione dell'immagine: "; qd; " byte"
 
 st = Memory caa_imagedata_data(ci) For Read
 bb = New Byte[qd]
' Con il Metodo ".Read()" il vettore legge e memorizza i dati presenti nell'area di memoria puntata dal Puntatore sopra restituito:
 bb.Read(st, 0, bb.Count)
 
' Salva nella cartella /tmp l'immagine scaricata:
 File.Save("/tmp" &/ id & ".jpg", bb.ToString(0, bb.Count))
 
' Libera la memoria precedentemente occupata:
 st.Close
 caa_imagedata_delete(ci)
 caa_coverart_delete(ca)
  
End


Note

[1] http://coverartarchive.org/

[2] https://archive.org/details/coverartarchive


Riferimenti