1

Does AppHub let us see reviews of our apps from all marketplaces at once? As I didn't find any, o took some time writing some code to print them all in a file, so i won't waste my time looking for them in every single language.

I'd appreciate any better solution. In the worst case, I'm glad to share the code with anyone who finds it usefull.

It uses BeautifulSoup. The only parametter is the id of the app, like this:

wp7reviews.py 62289160-6970-4674-85a0-aef3dbe3f93d

Here is the code

import sys
import getopt
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2
from BeautifulSoup import BeautifulStoneSoup

opts, extraparams = getopt.getopt(sys.argv[1:], '') 
# starts at the second element of argv since the first one is the script name
# extraparms are extra arguments passed after all option/keywords are assigned
# opts is a list containing the pair "option"/"value"
#print 'Opts:',opts
#print 'Extra parameters:',extraparams

try:
    appid = extraparams[0]
except:
    #Awsome Linkit appid as default appid
    appid="62289160-6970-4674-85a0-aef3dbe3f93d"

allreviewsFILE = open("allreviews.txt", "w")

def output(text):
    allreviewsFILE.write(text)
    #print text,

def outputln(text):
    allreviewsFILE.write(text+'\n')
    #print text


def geturl(lang):
    return "http://catalog.zune.net/v3.2/"+lang+"/apps/"+appid
try:

    request = urllib2.Request(geturl("en-us")) 
    fd = urllib2.urlopen(request)
    content = fd.read()
    fd.close()

    soup = BeautifulStoneSoup(content)

    try:
        outputln("App title: "+soup.findAll("a:title")[0].string)
        outputln("");
    except:
        print "Failed to get App Title"

    langs = ["en-us", "en-gb", "de-de",
             "fr-fr", "es-es", "it-it",
             "en-au", "de-at", "fr-be",
             "fr-ca", "en-ca", "en-hk",
             "en-in", "en-ie", "es-mx",
             "en-nz", "en-sg", "de-ch",
             "fr-ch", "zh-hk", "zh-cn",
             "en-hk"]

    outputln("Here we got reviews from each marketplace")
    for lang in langs:
        request = urllib2.Request(geturl(lang)+"/reviews")    
        fd = urllib2.urlopen(request)

        print "Fetching "+lang+"...",
        content = fd.read()
        fd.close()
        print "OK"

        soup = BeautifulStoneSoup(content)
        #print soup.prettify()

        contents = soup.findAll("a:content")
        ratings = soup.findAll("userrating")

        l = len(contents)
        if l > 0:
            outputln("-----------   "+lang+"   ---------------------------------------------------")
            outputln("")
        for i in range(0, l):
            output(ratings[i].string+"/10 - ")
            if len(contents[i].contents) > 0:
                try:
                    outputln(contents[i].contents[0])
                except:
                    outputln("*** Unknown chars ***")
            else:
                outputln("Rating only")
            outputln("")

except HTTPError, e:
    print("Error during request!\n")
    print("Cod.: ", e.code)

except URLError, e:
    print("Invalid URL!\n")
    print("Message: ", e.reason)

2 Answers2

1

There already is a site that gives you this information. Take a look at http://wp7reviews.tomverhoeff.com/

Dante
  • 3,833
  • 4
  • 38
  • 55
1

There is also a free WP7 app called AppTracker which allows you to track reviews from different regions, as well as translate them into your native language

Vitalij
  • 4,587
  • 9
  • 42
  • 65