Beispiel #1
0
def latest_reviews(code, region, buffer_size):
    lang = REGIONS[region]['lang']
    url = 'https://play.google.com/store/getreviews?hl={}'.format(lang)
    headers = {
        'User-Agent': user_agent(),
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
    payload = {
        'reviewType': 0,
        'pageNum': 0,
        'id': code,
        'reviewSortOrder': 0,
        'xhr': 1
    }
    body = yield from request(url, headers=headers, payload=payload)
    raw_reviews = remove_emoji(json.loads(body.decode('utf-8').replace(")]}'", "").strip())[0][2])
    tree = lxml.html.fromstring(raw_reviews)
    reviews = list()
    for raw_review in tree.xpath('//div[@class="single-review"]')[:buffer_size]:
        reviews.append({
            'id': raw_review.xpath('./div[@class="review-header"]')[0].attrib['data-reviewid'],
            'title': raw_review.xpath('./div[@class="review-body with-review-wrapper"]/span[@class="review-title"]')[0].text,
            'content': raw_review.xpath('./div[@class="review-body with-review-wrapper"]')[0].text_content().replace(raw_review.xpath('./div/div[@class="review-link"]')[0].getchildren()[0].text, '').strip(),
            'name': raw_review.xpath('./div[@class="review-header"]/div[@class="review-info"]/span')[0].text_content(),
            'score': int(raw_review.xpath('./div/div/div/div/div[@class="current-rating"]')[0].attrib['style'].replace('width:', '').replace('%', '').replace(';', '').strip()),
            'date': date(region, raw_review.xpath('./div/div/span[@class="review-date"]')[0].text),
            'version': '',
            'lang': lang,
            'region': region
        })
    return reviews
Beispiel #2
0
def latest_reviews(code, region, buffer_size):
    url = "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id={}&pageNumber={}&sortOrdering=4&onlyLatestVersion=false&type=Purple+Software".format(code, 0)
    headers = {
        'X-Apple-Store-Front': REGIONS[region]['app_store_id'],
        'User-Agent': 'iTunes/9.2 (Macintosh; U; Mac OS X 10.6)'
    }
    body = yield from request(url, headers=headers)
    reviews = list()
    for raw_review in etree.XML(body).xpath('//ns:VBoxView[@leftInset="10"]', namespaces=NAMESPACE)[1:][:buffer_size]:
        review_info = raw_review.xpath('./ns:HBoxView', namespaces=NAMESPACE)[1].xpath(
            './ns:TextView[@topInset="0"]/ns:SetFontStyle/ns:GotoURL', namespaces=NAMESPACE)[0].tail.split('-')
        title = raw_review.xpath('./ns:HBoxView[@bottomInset="3"]/ns:TextView/ns:SetFontStyle/ns:b', namespaces=NAMESPACE)[0].text
        content = raw_review.xpath('./ns:TextView[@topInset="2"]/ns:SetFontStyle', namespaces=NAMESPACE)[0].text
        reviews.append({
            'id': raw_review.xpath('./ns:HBoxView[@bottomInset="3"]/ns:HBoxView[@stretchiness="1"]/ns:HBoxView[@rightInset="0"]/ns:VBoxView/ns:GotoURL', namespaces=NAMESPACE)[0].get('url').split('userReviewId=')[1],
            'title': title,
            'content': content,
            'name': raw_review.xpath('./ns:HBoxView', namespaces=NAMESPACE)[1].xpath('./ns:TextView[@topInset="0"]/ns:SetFontStyle/ns:GotoURL/ns:b', namespaces=NAMESPACE)[0].text.strip(),
            'score': score(raw_review),
            'created_at': created_at(review_info),
            'version': version(review_info),
            'reviewer_id': raw_review.xpath('./ns:HBoxView', namespaces=NAMESPACE)[1].xpath('./ns:TextView[@topInset="0"]/ns:SetFontStyle/ns:GotoURL', namespaces=NAMESPACE)[0].get('url').split('userProfileId=')[1],
            'lang': find_out_language(REGIONS[region]['langs'], content, title),
            'region': region
        })
    return reviews