Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Cover von Amazon? (https://www.delphipraxis.net/140629-cover-von-amazon.html)

mlspider 22. Sep 2009 14:55


Cover von Amazon?
 
Ich suche eine Möglichkeit diverse Cover von Amazon zu beziehen. Hat vielleicht irgend wer einen Lösungsansatz?

Larsi 22. Sep 2009 14:59

Re: Cover von Amazon?
 
Du brauchst einen Api Key von Amazon dafür. Such mal hier in der Dp nach Amazon.

Mithrandir 22. Sep 2009 15:00

Re: Cover von Amazon?
 
Amazon hat dafür eine eigene API.

mlspider 22. Sep 2009 15:03

Re: Cover von Amazon?
 
Hmm. Nur leider lässt sich diese API nicht finden. Werde nochmals meine Brille putzen.

Larsi 22. Sep 2009 15:07

Re: Cover von Amazon?
 
Erstell dir einen Account und die werden dir eine geben. (Vermute ich)

mlspider 22. Sep 2009 15:16

Re: Cover von Amazon?
 
@Larsi, leider ist dem nicht so. Ich habe jetzt zwar eine Access Key ID und einen Secret Access Key, nur irgendwie hilft mir das nun auch nicht weiter.

Codewalker 22. Sep 2009 16:57

Re: Cover von Amazon?
 
Bis vor dem 1. August war das recht unkompliziert. Amazon bietet einen Webservice an, über den das relativ einfach ging. Benötigt wird der Access Key ID und der Secret Access Key und die WSDL-Definition des Webdienstes (etwas versteckt war die auch zum Download bei Amazon erhältlich). Diese kann man in Delphi dann importieren und bekommt eine Unit (AWSECommerceService.pas) erstellt mit einer Klasse die den Zugriff auf Amazon kapselt. Der Zugriff lief ungefähr so (SmallImage, MediumImage und LargeImage sind Images auf der Form, Util eine kleine Hilfsunit von mir ):

Delphi-Quellcode:
var
  AmazonPort: AWSECommerceServicePortType;
  body: ItemLookup;
  aRequest: ItemLookUpRequest;
  aResponse: ItemLookupResponse;
  Id: Array_Of_string;
  groups: Array_Of_string;
  Item: Item4
  memstr: TMemoryStream;
begin
 AmazonPort := GetAWSECommerceServicePortType(true, '', HTTPrio); // Verbindung aufbauen. HTTPrio wird gebraucht, um Umlaut per UTF8InHeader zu verarbeiten
 body := ItemLookup.Create;
 body.AWSAccessKeyId := 'DEIN ACCESSKEY';
 body.SubscriptionId := 'Dein Amazon Associate Benutzername';
 body.AssociateTag := 'Dein Amazon Associate Benutzername';

 aRequest := ItemLookupRequest.Create;
 { Abfrage per ASIN-ID - der Amazon-Produktschlüssel}
 SetLength(Id, 1);
 Id[0] := 'Die ASIN zum Suchen';
 aRequest.ItemId := Id;

 { Abfrage Gruppen (s. Dokumentation von Amazon) }
 SetLength(groups, 4);
 groups[0] := 'EditorialReview';
 groups[1] := 'Images';
 groups[2] := 'ItemAttributes';
 groups[3] := 'Medium';
 aRequest.ResponseGroup := groups;

 { Abfrage mit Body verbinden }
 SetLength(arr_request, 1);
 arr_request[0] := aRequest;
 body.Request := arr_request;

 aResponse := AmazonPort.ItemLookup(body); // Abfrage durchführen
 item := aResponse.Items[0].Item[0]; // Rückgabewert verarbeiten (Quick & Dirty fürs kurze zeigen)


    { Laden der Coverbilder }
    memstr := TMemoryStream.Create;
    Util.DownloadFromToStream(aResponse.Items[0].Item[0].SmallImage.URL,
      memstr);
    memstr.Seek(0, 0);
    SmallImage.LoadFromStream(memstr);

    memstr.Clear;
    Util.DownloadFromToStream(aResponse.Items[0].Item[0].MediumImage.URL,
      memstr);
    memstr.Seek(0, 0);
    MediumImage.LoadFromStream(memstr);

    memstr.Clear;
    Util.DownloadFromToStream(aResponse.Items[0].Item[0].LargeImage.URL,
      memstr);
    memstr.Seek(0, 0);
    LargeImage.LoadFromStream(memstr);
    memStr.Free;
end;
Problem ist: Seit August muss jede Anfrage auf eine bestimmte Weise signiert sein. Damit habe ich mich nur am Rande beschäftigt. Im Prinzip bleibt es so wie oben gezeigt, aber ein passender Hashwert muss dazu - falls das jemand mit Delphi hinbekommt wäre ich sehr interessiert (in der DP gibt es eine unschöne Lösung mit einer 3rd-Party-Komponente).

Mithrandir 22. Sep 2009 17:00

Re: Cover von Amazon?
 
Zitat:

Zitat von Codewalker
Im Prinzip bleibt es so wie oben gezeigt, aber ein passender Hashwert muss dazu

Und wie kommt man an den Algorithmus dafür?

Codewalker 22. Sep 2009 18:55

Re: Cover von Amazon?
 
Ich habs nicht mehr im Kopf, aber es der Name war angegeben - ist kein Algorithmus von Amazon

Edit: Es ist ein HMAC Hash mit dem SHA256 Algorithmus gemäß RFC 2104
Ein Demo für C# gibt's wohl hier: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2481&categoryID=14

Cylence 23. Sep 2009 08:43

Re: Cover von Amazon?
 
Hi,

was ist das für eine unschöne variante mit ner 3rd Party Komponente? Würde mich interessieren. Ich find dazu nichts.


Gruß

tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz