Exemple #1
0
    def on_direct_message(self, dm):

        media = dm.entities.get('media', [])
        photo = media[0] if len(media) > 0 else None

        if photo:
            friend_id = self.store.get_or_create_twitter_friend(
                dm.sender.id)['id']
            self._process_photo(friend_id, get_photo_url(photo))

        self.send_direct_message(dm.sender, compliments.get_compliment())
Exemple #2
0
    def on_timeline(self, tweet, prefix):
        """
        Defines actions to take on a timeline tweet.

        tweet - a tweepy.Status object. You can access the text with
        tweet.text

        prefix - the @-mentions for this reply. No need to include this in the
        reply string; it's provided so you can use it to make sure the value
        you return is within the 140 character limit with this.

        It's up to you to ensure that the prefix and tweet are less than 140
        characters.

        When calling post_tweet, you MUST include reply_to=tweet, or
        Twitter won't count it as a reply.
        """

        photos = get_photos_from_tweet(tweet)

        face_regions = core.flatten(
            [self.face_regions(photo) for photo in photos])

        recognitions = []
        for region in face_regions:
            try:
                recognitions.append(
                    self.face_recognizer.recognize_face(region))
            except cv2.error as e:
                logging.error("Error recognizing face region: " + e.message)

        likely_recognitions = filter(
            lambda (_, margin): margin < self.get_confidence(),
            recognitions)

        recognized_labels = set([label for (label, _) in likely_recognitions])

        for label in recognized_labels:
            recognized = self.store.get_friend(label)
            # it's possible someone is in the model but not in the database,
            # e.g. people that asked to be forgotten
            if recognized and recognized.get('twitter_id', None):
                twitter_friend = self.api.get_user(recognized['twitter_id'])
                self.favorite_tweet(tweet)
                self.post_tweet(
                    prefix +
                    ' ' + compliments.get_compliment() + ' ' +
                    '@' + twitter_friend.screen_name,
                    reply_to=tweet)