AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Get Cover Art (Online oder iTunes / WMP)
Thema durchsuchen
Ansicht
Themen-Optionen

Get Cover Art (Online oder iTunes / WMP)

Offene Frage von "arne99"
Ein Thema von arne99 · begonnen am 3. Jul 2007 · letzter Beitrag vom 3. Mai 2008
 
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#1

Get Cover Art (Online oder iTunes / WMP)

  Alt 3. Jul 2007, 07:18
Moin, ich brauche mal eure Hilfe

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]

Code:
#!/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()
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
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