Ejemplo n.º 1
0
    def get_scores(self, read):
        """
        parses IMDB listing page and fetches relevant information
        :param read: read object
        :return: dict of popularity, best_rating, users, reviews, and external_reviews
        """

        helper = ScrapeHelper(read)
        popularity = self.getPopularity(helper)
        popularity_change = self.meter_change(helper)
        score_div = helper.find_div_by_itemtype(
            'http://schema.org/AggregateRating')
        rating = float(
            helper.find_by_itemprop('span', 'ratingValue',
                                    score_div).text.replace(",", ""))
        best_rating = int(
            helper.find_by_itemprop('span', 'bestRating',
                                    score_div).text.replace(",", ""))
        anchors = helper.find_all_anchors(score_div)
        users, reviews, external_reviews = '', '', ''
        for anchor in anchors:
            href = anchor.get('href').split('?')[0]
            count = long(self.getCount(anchor))
            if href == 'ratings':
                users = count
            elif href == 'reviews':
                reviews = count
            elif href == 'externalreviews':
                external_reviews = count

        return {
            'popularity': popularity,
            'popularity_change': popularity_change,
            'rating': rating,
            'best_rating': best_rating,
            'users': users,
            'reviews': reviews,
            'external_reviews': external_reviews
        }