
Why are some albums more popular in the U.K.
than in the U.S.? This hack can't answer that question, but it can
point out what the differences are. It uses two features of AWS
requests, sort and locale, to
generate parallel lists of bestsellers by artist.
The CodeThis ASP code makes two ArtistSearch requests.
Both are sorted by sales rank, and the only difference between the
two is the setting for the locale. In the first
query, locale is left blank, for the default
Amazon.com store. The other query sets the locale
to uk, searching Amazon.co.uk. Create a file
called
us_vs_uk.asp
with the following
code: <html>
<head>
<title>International Sales</title>
</head>
<body>
<%
Dim arUSResults(10,4)
Dim arUKResults(10,4)
Sub AmazonTopArtist(artist,locale)
' Set Associate ID and Developer Token
AssociatesID = "insert associate tag"
DeveloperToken = "insert developer token"
' Form the request URL
XMLURL = "http://xml.amazon.com/onca/xml3" & _
"?t=" & AssociateID & _
"&dev-t=" & DeveloperToken & _
"&page=1" & _
"&f=xml" & _
"&mode=music" & _
"&type=lite" & _
"&sort=+salesrank" & _
"&ArtistSearch=" & Server.URLEncode(artist)
If locale = "uk" Then
XMLURL = XMLURL & "&locale=uk"
End If
Set xmlhttp = Server.CreateObject("Msxml2.SERVERXMLHTTP")
xmlhttp.Open "GET", XMLURL, false
xmlhttp.Send(Now)
' Issue the request and wait for the response
Set ProductInfo = xmlhttp.ResponseXML
Set Details = ProductInfo.SelectNodes("//Details")
For x = 0 to (Details.length-1)
If locale = "uk" Then
arUKResults(x,1) = Details(x).selectSingleNode("ProductName").text
arUKResults(x,2) = Details(x).selectSingleNode("Asin").text
arUKResults(x,3) = Details(x).selectSingleNode("ImageUrlSmall").text
arUKResults(x,4) = Details(x).getAttribute("url")
Else
arUSResults(x,1) = Details(x).selectSingleNode("ProductName").text
arUSResults(x,2) = Details(x).selectSingleNode("Asin").text
arUSResults(x,3) = Details(x).selectSingleNode("ImageUrlSmall").text
arUSResults(x,4) = Details(x).getAttribute("url")
End If
Next
Set Details = Nothing
Set ProductInfo = Nothing
Set xmlhttp = Nothing
End Sub
strArtist = request("artist")
Call AmazonTopArtist(strArtist,"us")
Call AmazonTopArtist(strArtist,"uk")
response.write "<table border=""1"" cellpadding=""5"">"
response.write "<tr><th>UK Top Sales</th><th>US Top Sales</th></tr>"
response.write "<tr>"
For y = 0 To 9
response.write "<tr>"
response.write "<td align=""center"" valign=""top"">"
response.write "<a href=""" & arUKResults(y,4) & """>"
response.write arUKResults(y,1)
response.write "</a><br><br>"
response.write "<img border=""0"" src=""" & arUKResults(y,3) & """>"
response.write "</td>" & vbCrLf
response.write "<td align=""center"" valign=""top"">"
response.write "<a href=""" & arUSResults(y,4) & """>"
response.write arUSResults(y,1)
response.write "</a><br><br>"
response.write "<img border=""0"" src=""" & arUSResults(y,3) & """>"
response.write "</td>" & vbCrLf
response.write "</tr>"
Next
response.write "</table>"
%>
</body>
</html>
The results are saved in arrays, arUKResults and
arUSResults. Once both queries are set, they're
used to print out a table with the results. TIPThough you can use your associate tag to make alternate locale
requests, you'll need to be a member of the specific locale's
associates program to get affiliate fees from the links. For example,
if you're a U.S. Amazon associate pointing to Amazon.co.uk, you won't
receive affiliate fees from those sales. To do so, you would need to
create a separate affiliate tag with the U.K. associates program.
Running the Hack
To run this code, put us_vs_uk.asp on a server
and request it from your browser, passing the
artist variable in the querystring, like so:
http://example.com/us_vs_uk.asp?artist=Dylan
shows the differing results for
Bob Dylan's sales.
Figure 1. International sales differences of Bob Dylan CDs
This code is also using the SmallImageURL value to
display an image. The images come from their respective servers, so
half are from the images-eu.amazon.com server,
while the rest are from
images.amazon.com.
The CodeThis ASP code makes two ArtistSearch requests.
Both are sorted by sales rank, and the only difference between the
two is the setting for the locale. In the first
query, locale is left blank, for the default
Amazon.com store. The other query sets the locale
to uk, searching Amazon.co.uk. Create a file
called
us_vs_uk.asp
with the following
code: <html>
<head>
<title>International Sales</title>
</head>
<body>
<%
Dim arUSResults(10,4)
Dim arUKResults(10,4)
Sub AmazonTopArtist(artist,locale)
' Set Associate ID and Developer Token
AssociatesID = "insert associate tag"
DeveloperToken = "insert developer token"
' Form the request URL
XMLURL = "http://xml.amazon.com/onca/xml3" & _
"?t=" & AssociateID & _
"&dev-t=" & DeveloperToken & _
"&page=1" & _
"&f=xml" & _
"&mode=music" & _
"&type=lite" & _
"&sort=+salesrank" & _
"&ArtistSearch=" & Server.URLEncode(artist)
If locale = "uk" Then
XMLURL = XMLURL & "&locale=uk"
End If
Set xmlhttp = Server.CreateObject("Msxml2.SERVERXMLHTTP")
xmlhttp.Open "GET", XMLURL, false
xmlhttp.Send(Now)
' Issue the request and wait for the response
Set ProductInfo = xmlhttp.ResponseXML
Set Details = ProductInfo.SelectNodes("//Details")
For x = 0 to (Details.length-1)
If locale = "uk" Then
arUKResults(x,1) = Details(x).selectSingleNode("ProductName").text
arUKResults(x,2) = Details(x).selectSingleNode("Asin").text
arUKResults(x,3) = Details(x).selectSingleNode("ImageUrlSmall").text
arUKResults(x,4) = Details(x).getAttribute("url")
Else
arUSResults(x,1) = Details(x).selectSingleNode("ProductName").text
arUSResults(x,2) = Details(x).selectSingleNode("Asin").text
arUSResults(x,3) = Details(x).selectSingleNode("ImageUrlSmall").text
arUSResults(x,4) = Details(x).getAttribute("url")
End If
Next
Set Details = Nothing
Set ProductInfo = Nothing
Set xmlhttp = Nothing
End Sub
strArtist = request("artist")
Call AmazonTopArtist(strArtist,"us")
Call AmazonTopArtist(strArtist,"uk")
response.write "<table border=""1"" cellpadding=""5"">"
response.write "<tr><th>UK Top Sales</th><th>US Top Sales</th></tr>"
response.write "<tr>"
For y = 0 To 9
response.write "<tr>"
response.write "<td align=""center"" valign=""top"">"
response.write "<a href=""" & arUKResults(y,4) & """>"
response.write arUKResults(y,1)
response.write "</a><br><br>"
response.write "<img border=""0"" src=""" & arUKResults(y,3) & """>"
response.write "</td>" & vbCrLf
response.write "<td align=""center"" valign=""top"">"
response.write "<a href=""" & arUSResults(y,4) & """>"
response.write arUSResults(y,1)
response.write "</a><br><br>"
response.write "<img border=""0"" src=""" & arUSResults(y,3) & """>"
response.write "</td>" & vbCrLf
response.write "</tr>"
Next
response.write "</table>"
%>
</body>
</html>
|
O'Reilly Home | Privacy Policy

© 2007 O'Reilly Media, Inc.
Website:
| Customer Service:
| Book issues:
All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.
|
|