Update of /cvsroot/freevo/freevo/src/util
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14635

Modified Files:
        amazon.py 
Log Message:
Updated from upstream (http://www.josephson.org/projects/pyamazon/)

Also, modified to account for recent Amazon XML changes. Works again.


Index: amazon.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/util/amazon.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** amazon.py   25 Jan 2004 14:52:22 -0000      1.2
--- amazon.py   21 Apr 2004 15:22:51 -0000      1.3
***************
*** 1,4 ****
- # WARNING: small changes made for Freevo. Look for 'FREEVO' in the code
- 
  """Python wrapper
  
--- 1,2 ----
***************
*** 57,61 ****
  
  __author__ = "Mark Pilgrim ([EMAIL PROTECTED])"
! __version__ = "0.61"
  __cvsversion__ = "$Revision$"[11:-2]
  __date__ = "$Date$"[7:-2]
--- 55,59 ----
  
  __author__ = "Mark Pilgrim ([EMAIL PROTECTED])"
! __version__ = "0.62"
  __cvsversion__ = "$Revision$"[11:-2]
  __date__ = "$Date$"[7:-2]
***************
*** 63,69 ****
  __license__ = "Python"
  # Powersearch and return object type fix by Joseph Reagle <[EMAIL PROTECTED]>
  
  from xml.dom import minidom
! import os, sys, getopt, cgi, urllib
  try:
      import timeoutsocket # http://www.timo-tasi.org/python/timeoutsocket.py
--- 61,68 ----
  __license__ = "Python"
  # Powersearch and return object type fix by Joseph Reagle <[EMAIL PROTECTED]>
+ # Locale support by Michael Josephson <[EMAIL PROTECTED]>
  
  from xml.dom import minidom
! import os, sys, getopt, cgi, urllib, string
  try:
      import timeoutsocket # http://www.timo-tasi.org/python/timeoutsocket.py
***************
*** 74,77 ****
--- 73,77 ----
  LICENSE_KEY = None
  HTTP_PROXY = None
+ LOCALE = "us"
  
  # don't touch the rest of these constants
***************
*** 91,94 ****
--- 91,100 ----
      (lambda key: _contentsOf(_getScriptDir(), _amazonfile2), '%s in the amazon.py 
directory' % _amazonfile2)
      )
+ _supportedLocales = {
+         "us" : (None, "xml.amazon.com"),   
+         "uk" : ("uk", "xml-eu.amazon.com"),
+         "de" : ("de", "xml-eu.amazon.com"),
+         "jp" : ("jp", "xml.amazon.com")
+     }
  
  ## administrative functions
***************
*** 100,103 ****
--- 106,123 ----
  
  ## utility functions
+ 
+ def setLocale(locale):
+     """set locale"""
+     global LOCALE
+     if _supportedLocales.has_key(locale):
+         LOCALE = locale
+     else:
+         raise AmazonError, ("Unsupported locale. Locale must be one of: %s" %
+             string.join(_supportedLocales, ", "))
+         
+ def getLocale():
+     """get locale"""
+     return LOCALE
+ 
  def setLicense(license_key):
      """set license key"""
***************
*** 173,188 ****
          rc = "".join([e.data for e in element.childNodes if isinstance(e, 
minidom.Text)])
          if element.tagName == 'SalesRank':
!             # FREEVO CHANGES: add '.' as replacement
!             rc = int(rc.replace(',', '').replace('.', ''))
      return rc
  
! def buildURL(search_type, keyword, product_line, type, page, license_key, lang='us'):
!     if lang=='us':
!         url = "http://xml.amazon.com/onca/xml?v=1.0&f=xml&t=webservices-20";
!     else:
!         url = "http://xml-eu.amazon.com/onca/xml?v=1.0&f=xml&t=webservices-20";
!         url += "&locale=%s" % lang
      url += "&dev-t=%s" % license_key.strip()
      url += "&type=%s" % type
      if page:
          url += "&page=%s" % page
--- 193,205 ----
          rc = "".join([e.data for e in element.childNodes if isinstance(e, 
minidom.Text)])
          if element.tagName == 'SalesRank':
!             rc = int(rc.replace(',', ''))
      return rc
  
! def buildURL(search_type, keyword, product_line, type, page, license_key):
!     url = "http://"; + _supportedLocales[LOCALE][1] + 
"/onca/xml2?v=1.0&f=xml&t=webservices-20"
      url += "&dev-t=%s" % license_key.strip()
      url += "&type=%s" % type
+     if _supportedLocales[LOCALE][0]:
+         url += "&locale=%s" % _supportedLocales[LOCALE][0]
      if page:
          url += "&page=%s" % page
***************
*** 197,201 ****
  
  def search(search_type, keyword, product_line, type="heavy", page=None,
!            license_key = None, http_proxy = None, lang='us'):
      """search Amazon
  
--- 214,218 ----
  
  def search(search_type, keyword, product_line, type="heavy", page=None,
!            license_key = None, http_proxy = None):
      """search Amazon
  
***************
*** 243,266 ****
      """
      license_key = getLicense(license_key)
!     url = buildURL(search_type, keyword, product_line, type, page, license_key, 
lang=lang)
      proxies = getProxies(http_proxy)
      u = urllib.FancyURLopener(proxies)
      usock = u.open(url)
!     try:
!         xmldoc = minidom.parse(usock)
!         data   = unmarshal(xmldoc).ProductInfo
!     except ExpatError, e:
!         # FREEVO CHANGES: catch error and go on
!         data   = Bag()
!         data.ErrorMsg = e
  
      usock.close()
      if hasattr(data, 'ErrorMsg'):
-         # FREEVO CHANGES: try other lang
-         # TODO: find more urls
-         if lang == 'us':
-             return search(search_type, keyword, product_line, type, page, 
license_key, http_proxy, 'uk')
-         if lang == 'uk':
-             return search(search_type, keyword, product_line, type, page, 
license_key, http_proxy, 'de')
          raise AmazonError, data.ErrorMsg
      else:
--- 260,275 ----
      """
      license_key = getLicense(license_key)
!     url = buildURL(search_type, keyword, product_line, type, page, license_key)
      proxies = getProxies(http_proxy)
      u = urllib.FancyURLopener(proxies)
      usock = u.open(url)
!     xmldoc = minidom.parse(usock)
! 
! #     from xml.dom.ext import PrettyPrint
! #     PrettyPrint(xmldoc)
  
      usock.close()
+     data = unmarshal(xmldoc).ProductInfo
      if hasattr(data, 'ErrorMsg'):
          raise AmazonError, data.ErrorMsg
      else:



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to