Benutzung von NuGet-Paket DiscogsClient zum Herunterladen von CoverArts

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von kafffee.

    Benutzung von NuGet-Paket DiscogsClient zum Herunterladen von CoverArts

    Hallo liebe Community,

    ich versuche gerade mit Hilfe des NuGet-Pakets "DiscogsClient" nach Albumcovers zu suchen und habe folgenden Samplecode zur Authentifizierung und erstellen einer neuer Instanz des DiscogfsClient gefunden:


    VB.NET-Quellcode

    1. Option Strict On
    2. Imports DiscogsClient.Data.Query
    3. Imports RestSharpHelper.OAuth1
    4. Public Class Form1
    5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. Dim oAuthCompleteInformation = New OAuthCompleteInformation("consumerKey", "consumerSecret", "token", "tokenSecret")
    7. Dim discogsClient = New DiscogsClient(oAuthCompleteInformation)
    8. End Sub
    End Class

    Nur in Zeile 9 wird nach dem Gleichheitszeichen das DiscogsClient rot unterstrichen mit der Meldung "Typ erwartet"?

    Weiss jemand was damit anzufangen?
    @kafffee Es sieht so aus, als wäre DiscogsClient ein NameSpace und keine instanziierbare Klasse.
    Mach mal
    Dim discogsClient = New DiscogsClient. Leerzeichen.
    Was wird angeboten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Siehe Sreenshots. Einmal mit Punkt hinten, einmal ohne...

    Edit:
    Habs zum Laufen gebracht. Jetzt muss ich noch rausfinden, wie man in Zeile 30 an die Nummer kommt, das wird so eine Art ID sein... Weisst du wie man dabei vorgehen könnte? Hab bis jetzt keine ausreichende Dokumentation gefunden...

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports DiscogsClient.Data.Query
    3. Imports DiscogsClient.Internal
    4. Imports RestSharpHelper.OAuth1
    5. Public Class Form1
    6. Private MyDiscogsCLient As DiscogsClient.DiscogsClient
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. 'Dim oAuthCompleteInformation = New OAuthCompleteInformation("consumerKey", "consumerSecret", "token", "tokenSecret")
    9. 'Dim discogsClient = New DiscogsClient.DiscogsClient(oAuthCompleteInformation)
    10. Dim tokenInformation = New TokenAuthenticationInformation("token")
    11. MyDiscogsCLient = New DiscogsClient.DiscogsClient(tokenInformation)
    12. End Sub
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Dim discogsSearch = New DiscogsSearch() With {
    15. .artist = txtArtist.Text,
    16. .release_title = txtTitle.Text
    17. }
    18. Dim observable = MyDiscogsCLient.Search(discogsSearch)
    19. GetImageAsync()
    20. End Sub
    21. Private Async Sub GetImageAsync()
    22. Dim res = Await MyDiscogsCLient.GetMasterAsync(47813)
    23. Await MyDiscogsCLient.SaveImageAsync(res.images(0), "F:\Ablage", "Testbild")
    24. End Sub
    25. End Class


    Bilder
    • screenshot_discogsclient3.png

      70,86 kB, 877×507, 65 mal angesehen
    • screenshot_discogsclient2.png

      69,74 kB, 885×467, 63 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „kafffee“ ()

    kafffee schrieb:

    das wird so eine Art ID sein...
    Keine Ahnung.
    Ich würde mal mit der Firma telefonieren, die das Ding rausgebracht hat.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @kafffee Gugst Du hier: docs.microsoft.com/de-de/dotne…observable-1?view=net-6.0
    und spiel mal das Beispiel durch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja, die Microsoft Docs. Das hab ich mir auch schon angeschaut bin jetzt aber dümmer wie vorher...

    Hab mal ein bisschen damit rumgespielt, man kann sich die Daten auch als IEnumerable geben lassen:

    VB.NET-Quellcode

    1. Dim enumerable = MyDiscogsCLient.SearchAsEnumerable(discogsSearch)


    Wenn ich dann enumerable(0). eintippe, wird mir tatsächlich ein Member enumerable(0).id vorgeschlagen.

    Wenn ich mir den aber in der Konsole ausgeben lasse, kommt keine Ausgabe, stattdessen das hier in der Ausgabe nach einigen Sekunden:
    Der Thread 0x78c hat mit Code 0 (0x0) geendet.
    Der Thread 0x2764 hat mit Code 0 (0x0) geendet.
    Der Thread 0x3b04 hat mit Code 0 (0x0) geendet.

    Hat das was damit zu tun, dass ich erst das Interface implementieren muss?

    Hab mir jetzt auch schon mehrere Youtube-Videos angeschaut, aber das ist alles so unkonkret erklärt...

    @RodFromGermany
    Edit:
    So nach viel Rumgehacke und ausprobieren hab ichs endlich hinbekommen. Hier mein lauffähiges Ergebnis (den Token erhält man hier:
    discogs.com/settings/developers):

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Reactive.Linq
    3. Imports DiscogsClient.Data.Query
    4. Imports DiscogsClient.Data.Result
    5. Imports DiscogsClient.Internal
    6. Public Class Form1
    7. Private AlbumID As List(Of Integer) = New List(Of Integer)
    8. Private MyDiscogsCLient As DiscogsClient.DiscogsClient
    9. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    10. 'Dim oAuthCompleteInformation = New OAuthCompleteInformation("consumerKey", "consumerSecret", "token", "tokenSecret")
    11. 'Dim discogsClient = New DiscogsClient.DiscogsClient(oAuthCompleteInformation)
    12. Dim tokenInformation = New TokenAuthenticationInformation("HierMussDeinTokenRein")
    13. MyDiscogsCLient = New DiscogsClient.DiscogsClient(tokenInformation)
    14. End Sub
    15. Private Sub btnSuche_Click(sender As Object, e As EventArgs) Handles btnSuche.Click
    16. SucheAsync()
    17. End Sub
    18. Public Async Function SucheAsync() As Task
    19. AlbumID.Clear()
    20. Dim discogsSearch = New DiscogsSearch() With {
    21. .artist = txtArtist.Text,
    22. .release_title = txtTitle.Text
    23. }
    24. Dim res = Await MyDiscogsCLient.SearchAsync(discogsSearch)
    25. For Each Suchergebnis In res.GetResults
    26. OnResult(Suchergebnis)
    27. Next
    28. GetImageAsync()
    29. End Function
    30. Private Async Sub GetImageAsync()
    31. If AlbumID.Count = 0 Then
    32. MessageBox.Show("Es wurden leider keine passenden CoverArts gefunden.")
    33. End If
    34. For i = 0 To AlbumID.Count - 1
    35. Dim res = Await MyDiscogsCLient.GetReleaseAsync(AlbumID(i))
    36. Try
    37. Await MyDiscogsCLient.SaveImageAsync(res.images(0), "F:\Ausgabeverzeichnis", "Dateiname" & CStr(i))
    38. Catch
    39. Return
    40. End Try
    41. Next
    42. End Sub
    43. Private Sub OnResult(ByVal result As DiscogsSearchResult)
    44. AlbumID.Add(result.id)
    45. End Sub
    46. End Class

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „kafffee“ ()