Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für CodeGear Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Get Cover Art (Online oder iTunes / WMP)
Ein Thema von arne99.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 Offene Frage von arne99.
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein
Seite 1 von 1   [ 9 Beiträge ]  
 
 Autor 
 Nachricht 
 
arne99 #1|Beitrag #745355Verfasst am: 03.07.2007, 07:18      Titel: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 23
Status: offline
Beiträge: 158
angemeldet: 11.01.2005
Wohnort: Hamburg
Turbo Delphi für Win32

Moin, ich brauche mal eure Hilfe Wink

Ich würde gerne wissen wie ich per API auf existierende Cover Arts von iTunes oder WMP zugreifen kann. Wenn nicht vorhanden, würde ich gern diese per Artist und Title Abfrage aus Amazon greifen.

Gibt es schon Möglichkeiten? bzw. Ansätze? Danke

Edit: Habe soeben ein Python Script gefunden, mag wer Ansätze geben es auf Delphi zu übertragen?[b]

C-Quellcode: zusammenfalten | markieren
#!/Library/Frameworks/Python.framework/Versions/Current/bin/python

import sys, os, urllib, string, xml.dom.minidom, traceback

class AmazonCoverArt(object):
   LICENSE_FILE = "amazonLicense.txt"
   BASE_URLS = {
      "US":"http://webservices.amazon.com/onca/xml?Service=AWSECommerceService",
      "UK":"http://webservices.amazon.co.uk/onca/xml?Service=AWSECommerceService",
      "DE":"http://webservices.amazon.de/onca/xml?Service=AWSECommerceService",
      "JP":"http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService",
      "FR":"http://webservices.amazon.fr/onca/xml?Service=AWSECommerceService",
      "CA":"http://webservices.amazon.ca/onca/xml?Service=AWSECommerceService"}
   FULL_URL = string.Template(
      "${baseURL}&AWSAccessKeyId=${accessKey}&Operation=${operation}&SearchIndex=${searchIndex}&"
      +"Title=${title}&Artist=${artist}&Keywords=${keywords}&ResponseGroup=${responseGroup}")

   licenseKey = ""

   def __init__(self):
      if os.access(self.LICENSE_FILE, os.R_OK):
         f = open(self.LICENSE_FILE)
         self.licenseKey = f.readline().strip()
         f.close()

   def search(self, artist='', album='', keywords=''):
      if self.licenseKey == "": return []
      url = self.getURL(artist, album, keywords)
      covers = []
      c = None
      try:
         c = urllib.urlopen(url)
         xmlStr = c.read()
         covers = self.getCovers(xmlStr)
         c.close()
      except:
         if c: c.close()
      return covers

   def getCovers(self, xmlStr):
      covers = []
      usedURLs = []
      try:
         rootNode = xml.dom.minidom.parseString(xmlStr)
         #print rootNode.toprettyxml().encode('ascii', 'ignore')
         itemNodes = rootNode.getElementsByTagName("Item")
         for itemNode in itemNodes:
            for tagName in ("SmallImage","MediumImage","LargeImage"):
               imageNodes = itemNode.getElementsByTagName(tagName)
               for imageNode in imageNodes:
                  cover = self.getCoverInfo(imageNode)
                  if cover["url"] not in usedURLs:
                     covers.append(cover)
                     usedURLs.append(cover["url"])
      except:
         traceback.print_exc(file=sys.stdout)
         raise
      return covers

   def getCoverInfo(self, imageNode):
      cover = {}
      cover["url"] = imageNode.getElementsByTagName("URL")[0].childNodes[0].data
      cover["w"] = imageNode.getElementsByTagName("Height")[0].childNodes[0].data
      cover["h"] = imageNode.getElementsByTagName("Width")[0].childNodes[0].data
      return cover

   def getURL(self, artist, album, keywords):
      d = {}
      d['baseURL'] = self.BASE_URLS['US']
      d['accessKey'] = self.licenseKey
      d['operation'] = 'ItemSearch'
      d['searchIndex'] = 'Music'
      d['responseGroup'] = 'Images'
      d['keywords'] = urllib.quote_plus(keywords)
      d['artist'] = urllib.quote_plus(artist)
      d['title'] = urllib.quote_plus(album)
      return self.FULL_URL.substitute(d)

def main():
   aca = AmazonCoverArt()
   covers = aca.search('Elvis Costello', 'My Aim Is True')
   for cover in covers:
      print cover["url"]

if __name__ == '__main__':
    main()

// u know? ID Service www.topsta.de

 Zuletzt bearbeitet von arne99 am 03.07.2007, 07:23, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
arne99 #2|Beitrag #745392Verfasst am: 03.07.2007, 08:53      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 23
Status: offline
Beiträge: 158
angemeldet: 11.01.2005
Wohnort: Hamburg
Turbo Delphi für Win32

Hi, also nachdem ich noch weiter gesucht habe bin ich nun hier:

Delphi-Quellcode: zusammenfalten | markieren
procedure TForm1.SpeedButton2Click(Sender: TObject);
var AmazonService : AmazonSearchPort;
    myrequest     : KeywordRequest;
    ret           : ProductInfo;
begin
  myrequest        := KeywordRequest.Create;
  HTTPRio1.WSDLLocation := 'http://soap-eu.amazon.com/schemas3/AmazonWebServices.wsdl';
  try
    myrequest.keyword := 'Borland';
    myrequest.page    := '1';
    myrequest.mode    := 'dvd-de';
    myrequest.sort    := '+salesrank';
    myrequest.tag     :='webservices-20';
    myrequest.type_   :='lite';
    myrequest.devtag  := '<meineID>';
    myrequest.locale  :='de';
    ret:=ProductInfo.Create;
    try
      try
        Amazonservice := HTTPRio1 as AmazonSearchPort;
        ret:=AmazonService.KeywordSearchRequest(myrequest);
      except
        exit;
      end;

  {process Productinfo}
    finally
      ret.free;
    end;
  finally
    myrequest.free;
  end;
end;


Ich bekomme jedoch immer einen BadRequest Exception. Kann mir jemand helfen?

// u know? ID Service www.topsta.de
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
CCRDude #3|Beitrag #745431Verfasst am: 03.07.2007, 10:01      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
ehem. Benutzer


Sieht auch irgendwie merkwürdig aus, finde ich.
Du weißt zweimal ret etwas zu, denke da ist also schon mindestens ein Speicherleck, zumindest aber ein Zeichen von unvollständigem Verständnis.

Vor allem aber sehe ich nirgendwo, daß Du überhaupt spezifieren würdest, was genau Du suchst?
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
arne99 #4|Beitrag #745507Verfasst am: 03.07.2007, 12:14      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 23
Status: offline
Beiträge: 158
angemeldet: 11.01.2005
Wohnort: Hamburg
Turbo Delphi für Win32

Genau hier spezifiziere ich es:

Delphi-Quellcode: markieren
myrequest.keyword := 'Borland';
    myrequest.page    := '1';
    myrequest.mode    := 'dvd-de';
    myrequest.sort    := '+salesrank';
    myrequest.tag     :='webservices-20';
    myrequest.type_   :='lite';
    myrequest.devtag  := '<meineID>';
    myrequest.locale  :='de';


Die doppelte Zuweisung von "ret" ist wichtig. Da ich als erstes ein Create der ProductInfo mache, die ich vorher mit der Spezifikation meiner SUchkriterien erstellt habe.
Danach wird das ganze angestoßen.

// u know? ID Service www.topsta.de

 Zuletzt bearbeitet von arne99 am 03.07.2007, 12:17, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
CCRDude #5|Beitrag #745543Verfasst am: 03.07.2007, 13:25      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
ehem. Benutzer


Nun ja, ich geh mal davon aus daß devtag=devtoken, dann sehe ich trotzdem weder ein AsinSearch, UpcSearch, AuthorSearch, ArtistSearch oder wie sie alle heißen? Wußte nicht, daß Amazon jetzt schon eine Glaskugelsuche hat Wink

Wo bitte hat Dein "Create der ProcutInfo" denn die Spezifikation bekommen? Ich sehe da nur ein "Create;" und keine übergebenen Parameter?
Und wo glaubst Du, wird dieses ProductInfo wohl wieder freigegeben?

Aber da Du's eh besser weißt, geh ich jetzt mal Wink
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
arne99 #6|Beitrag #745564Verfasst am: 03.07.2007, 14:08      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 23
Status: offline
Beiträge: 158
angemeldet: 11.01.2005
Wohnort: Hamburg
Turbo Delphi für Win32

Bist jetz muksch? Ich bin dankbar fuer jede Hilfe. Wenn du damit schonmal gearbeitest hast, wär es nett wenn du mir deine Ansätze weiterformulierst. Danke sehr.

// u know? ID Service www.topsta.de
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
OregonGhost #7|Beitrag #745569Verfasst am: 03.07.2007, 14:28      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 27
Status: offline
Beiträge: 1.219
angemeldet: 08.06.2002
Wohnort: Lübeck
Delphi 3 Professional

CCRDude wollte damit sagen, dass die doppelte Zuweisung an ret nicht sehr sinnvoll zu sein scheint.
Du erzeugst ein Objekt vom Typ ProductInfo, weist die Referenz darauf ret zu, und weist anschließend den Rückgabewert von AmazonService.KeywordSearchRequest ebenfalls ret zu. Das erzeugte Objekt vom Typ ProductInfo geht damit verloren und erzeugt ein Speicherleck. Noch dazu wurde es niemals benutzt. Das sollte alledings nichts mit deinem Fehlerbild zu tun haben.
BadRequest bedeutet, dass die Parameter der Anfrage nicht korrekt sind. Insofern wäre es sinnvoll, die Datenfelder des Requests noch einmal genauer zu untersuchen. Bekommst du keine genaueren Fehlerangaben?

Edit: Laut einem Beispiel, dass ich eben sah, müssen tag und devtag beide identisch sein, halt deine Subscriber-ID.

Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.

 Zuletzt bearbeitet von OregonGhost am 03.07.2007, 14:32, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
CCRDude #8|Beitrag #745571Verfasst am: 03.07.2007, 14:30      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
ehem. Benutzer


Nur damit wir nicht aneinander vorbeireden: suchst Du nach einer "Borland"-DVD, ist also "Borland" Dein Suchbegriff?

Ich kenne als Namen des Suchparameters halt nicht "Keyword", sondern nur AsinSearch (ISBN-10), UpcSearch (ISBN-13), AuthorSearch, ArtistSearch, ActorSearch, DirectorSearch, ManufacturerSearch und SimilaratiesSearch. Dein Block scheint mit "nur" Keyword etwas anders aufgebaut, als ich das gewohnt bin.

Ok, weiter... Dein Ansatz scheint jetzt über SOAP zu gehen, ist ja auch passend für WebServices. Andererseits hast Du nirgendwo geschrieben, woher diese AmazonSearchPort etc. kommen (als Namen für Klassen folgen die schonmal nicht dem Standard (T am Anfang), daher sehe ich die als irgendwie suspekt an Wink ). Und eigentlich ist das ja auch nichts anderes als ein HTTP-GET plus XML, das auszuwerten ist, und "direkter" ist es vielleicht einfacher zu debuggen.

Hier eine Beispiel-URL:

Zitat:
http://xml.amazon.de/onca/xml3?dev-t=XXXXXXXXX&f=xml&mode=music&page=1&locale=de&t=YYYYYYYY&type=lite&v1&ArtistSearch=New%20Model%20Army


Wobei Du XXXXXXXX durch die ID ersetzt, die Du schon im vorigen Beispiel verwendet hast, und YYYYYYYY durch Deine associate id.
(Anstelle von ArtistSearch kannst Du die oben von mir erwähnten Parameter ausprobieren, diverse andere "mode"-Werte wären baby,books,classical,dvd,electronics,garden,kitchen,magazines,music,pc-hardware,photo,software,tools,toys,vhs,videogames, ...)

Diese URL probierst Du einfach im Browser, schon siehst Du, ob die Anfrage funktioniert (gerade mit meinen beiden IDs getestet, die funktioniert Wink ), und musst den Download nur noch in Dein Programm einbauen (Indy, Synapse, WinInet, wie Du magst) und dann per XMLLib, JclSimpleXml auswerten (zur Not sogar noch schlichter, weil es Dir ja eh nur um die ImageUrlLarge-Zeilen gehen wird).
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
made in Germany #9|Beitrag #881156Verfasst am: 03.05.2008, 15:44      Titel: Re: Get Cover Art (Online oder iTunes / WMP) Antworten mit Zitat
Mitglied
Alter: 21
Status: offline
Beiträge: 50
angemeldet: 28.04.2006


gibts noch eine andere möglichkeit um auf die daten zuzugreifen oder muss ich mich da anmelden?
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 9 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2010 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen