예제 #1
0
파일: netflix.py 프로젝트: dsims/fongae
    def _parse_reviews_response(self, user, reverse, data):
        #logging.info('%s Reviews' % data['reviews']['number_of_results'] )

        if data is None or 'reviews' not in data or 'review' not in data['reviews']:
            return 0

        reviewdata = data['reviews']['review']
        if int(data['reviews']['number_of_results']) == 1:
			reviewdata = [reviewdata] #add single item to a list so for loop is consistent
        numdone = 0
        itr = iter(reviewdata)
        if reverse:
            itr = reversed(reviewdata)
        for item in itr:
            if(item == ''  or (int(item.get('updated', 0)) > 0 and int(item.get('updated', 0)) <= user.last_netflix_review)):
                continue
            numdone = numdone+1
            title_id = None
            for link in item['link']:
                if link['rel'] == 'http://schemas.netflix.com/catalog/title':
                    title_id = link['href']
            title = NetflixTitle.get_by_key_name(title_id);
            #logging.info('Movie %s' % item.get('title').get('regular'))
            if not title:
                addTask(url='/workeraddtitle', params={'title_id':title_id, 'item':simplejson.dumps(item)})
				#self._create_title(title_id, item, user)
            addTask(url='/workeraddreview', params={'user_key':user.key().name(), 'title_key':title_id, 'rating':item.get('user_rating','0.0'), 'review':item.get('write-up'), 'submitted':item.get('updated')})
        if numdone > 0:
            addTask(url='/workersharerating', params={'user_key':user.key().name(), 'title_key':title_id})
            logging.info('%d Reviews Done' % numdone)
        return numdone
예제 #2
0
파일: netflix.py 프로젝트: dsims/fongae
    def _parse_ratings_response(self, user, reverse, data):
        if data is None or 'ratings_item' not in data['ratings']:
            if user.rating_count > 0:
                logging.warning('No ratings for user: %s' % user.key().name )
            return 0
        #logging.info('%d Ratings' % len(data['ratings']['ratings_item']) )

        ratingsdata = data['ratings']['ratings_item']
        item = None
        try:
            itr = iter(ratingsdata)
            for item in itr:
				if item:
					testvar = item.get('release_year');
        except:            
            ratingsdata = [ratingsdata] #add single item to a list so for loop is consistent
        
        numdone = 0
        itr = iter(ratingsdata)
        if reverse:
            itr = reversed(ratingsdata)
        for item in itr:
            try:
                if(item == '' or item.get('user_rating') is None or item.get('average_rating','0.0') == '0.0' or (int(item.get('updated', 0)) > 0 and int(item.get('updated', 0)) < user.last_netflix_rating)):
                    continue
            except:
                logging.info('item.get error, was %s' % item)
                continue

            title_id = None
            for link in item['link']:
                if link['rel'] == 'http://schemas.netflix.com/catalog/title':
                    title_id = link['href']
            title = NetflixTitle.get_by_key_name(title_id);
            if not title:
                addTask(url='/workeraddtitle', params={'title_id':title_id, 'item':simplejson.dumps(item)})
            else: #check if we already did this rating (its possible for a new rating to have the same updated date as a rating weve already seen)
                if (int(item.get('updated', 0)) > 0 and int(item.get('updated', 0)) == user.last_netflix_rating):
                    existingrating = NetflixRating(title=title, user=user).all().filter('user ='******'title =', title).get()
                    if existingrating is not None:
                        continue
            numdone = numdone+1
            #task - add rating
            addTask(url='/workeraddrating', params={'user_key':user.key().name(), 'title_key':title_id, 'rating':item.get('user_rating'), 'submitted':item.get('updated')})
        if numdone > 0:
            addTask(url='/workersharerating', params={'user_key':user.key().name(), 'title_key':title_id})
            logging.info('%d Ratings Done' % numdone)
        return numdone