class TwitterAdapter(MessageProvider, ImageProvider):
    id = 'twitter'
    name = 'TwitterAdapter'

    def __init__(self, user, *args, **kwargs):
        self.user = user
        self.social_token = SocialToken.objects.filter(app__provider='twitter',
                                                       account__provider='twitter',
                                                       account__user=user)
        self.social_app = SocialApp.objects.filter(id=self.social_token.get().app.id)
        self.twitter = Twython(self.social_app.get().client_id, self.social_app.get().secret,
                               self.social_token.get().token,
                               self.social_token.get().token_secret)
        self.twitter.verify_credentials()

    def publish_image(self, image, message='', **kwargs):
        img = open(image.path).read()
        try:
            logger.info('try to update twitter status with an image, for user: %s ' % self.user)
            result = self.twitter.update_status_with_media(status=message, media=StringIO(img))
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e

    def publish_message(self, message, **kwargs):
        try:
            logger.info('try to update twitter status, for user: %s ' % self.user)
            result = self.twitter.update_status(status=message)
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e
def get_tokens(screen_name):
    app_key = dal.get_token("twitter app key " + screen_name)
    app_secret = dal.get_token("twitter app secret " + screen_name)

    final_key = dal.get_token("twitter final key " + screen_name)
    final_secret = dal.get_token("twitter final secret " + screen_name)

    if not final_key or not final_secret:
        twitter = Twython(app_key, app_secret)
        auth = twitter.get_authentication_tokens()
        oauth_token = auth["oauth_token"]
        oauth_token_secret = auth["oauth_token_secret"]
        url = auth["auth_url"]

        logger.info(url)
        if myhardware.is_andrew_desktop or myhardware.is_andrew_macbook:
            webbrowser.open(url)
        oauth_verifier = input("Please enter your pin:")

        twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
        final_step = twitter.get_authorized_tokens(oauth_verifier)
        final_key = final_step["oauth_token"]
        final_secret = final_step["oauth_token_secret"]

        dal.set_token("twitter final key " + screen_name, final_key)
        dal.set_token("twitter final secret " + screen_name, final_secret)

    tokens = [app_key, app_secret, final_key, final_secret]

    return tokens
Esempio n. 3
0
 def __init__(self):
     if settings.DEBUG:
         self.twitter = TwitterDebugLogger()
     else:
         self.twitter = Twython(settings.CONSUMER_KEY,
                                settings.CONSUMER_SECRET,
                                settings.OAUTH_TOKEN,
                                settings.OAUTH_TOKEN_SECRET)
def postTwitter(tweet):
    try:
        twitter = Twython(CUSTOMER_KEY, CUSTOMER_SECRET, ACCESS_TOKEN,
                          ACCESS_TOKEN_SECRET)
        twitter.update_status(status=tweet)
        return 'Tweet posted!'
    except Exception as e:
        print e
        return 'Check your internet connection.'
Esempio n. 5
0
    def generate_access_token(self):
        auth = self.t.get_authentication_tokens()

        print("Please go to {auth_url} for a verification code.".format(**auth))
        verifier = input("Verification code: ")

        twitter = Twython(self.consumer_token, self.consumer_secret, auth['oauth_token'], auth['oauth_token_secret'])
        tokens = twitter.get_authorized_tokens(oauth_verifier=verifier)
        return tokens['oauth_token'], tokens['oauth_token_secret']
Esempio n. 6
0
def twitter_connect(request, apk):
    
    # Twython Library https://github.com/ryanmcgrath/twython  
    twitter = Twython(settings.TWITTER_API_KEY, settings.TWITTER_API_SECRET)
    auth = twitter.get_authentication_tokens(callback_url=request.build_absolute_uri(reverse('twitter_callback', args=[apk])))
    
    request.session['TEMP_OAUTH_TOKEN'] = auth['oauth_token']
    request.session['TEMP_OAUTH_TOKEN_SECRET'] = auth['oauth_token_secret']
    
    return HttpResponseRedirect(auth['auth_url'])
Esempio n. 7
0
 def __init__(self):
     if settings.DEBUG:
         self.twitter = TwitterDebugLogger()
     else:
         self.twitter = Twython(
             settings.CONSUMER_KEY,
             settings.CONSUMER_SECRET,
             settings.OAUTH_TOKEN,
             settings.OAUTH_TOKEN_SECRET
         )
def authenticate():
    token_dir = "temp" + os.sep + "tokens" + os.sep

    if not os.path.exists(token_dir):
        os.makedirs(token_dir)

    app_key_path = token_dir + "APP_KEY.pkl"
    app_secret_path = token_dir + "APP_SECRET.pkl"
    final_oauth_token_path = token_dir + "FINAL_OAUTH_TOKEN.pkl"
    final_oauth_token_secret_path = token_dir + "FINAL_OAUTH_TOKEN_SECRET.pkl"

    exists = os.path.isfile(app_key_path) and os.path.isfile(app_secret_path)

    if exists:
        app_key = pickle.load(open(app_key_path, "rb"))
        app_secret = pickle.load(open(app_secret_path, "rb"))
    else:
        app_key = raw_input("Enter your APP_KEY:")
        app_secret = raw_input("Enter your APP_SECRET:")

        pickle.dump(app_key, open(app_key_path, "wb"))
        pickle.dump(app_secret, open(app_secret_path, "wb"))

    exists = os.path.isfile(final_oauth_token_path) and os.path.isfile(final_oauth_token_secret_path)

    if exists:

        final_oauth_token = pickle.load(open(final_oauth_token_path, "rb"))
        final_oauth_token_secret = pickle.load(open(final_oauth_token_secret_path, "rb"))

    else:

        t = Twython(app_key, app_secret)

        auth = t.get_authentication_tokens()

        oauth_token = auth["oauth_token"]
        oauth_token_secret = auth["oauth_token_secret"]

        url = auth["auth_url"]
        webbrowser.open(url)

        oauth_verifier = raw_input("Enter your pin:")

        t = Twython(app_key, app_secret, oauth_token, oauth_token_secret)

        final_step = t.get_authorized_tokens(oauth_verifier)

        final_oauth_token = final_step["oauth_token"]
        final_oauth_token_secret = final_step["oauth_token_secret"]

        pickle.dump(final_oauth_token, open(final_oauth_token_path, "wb"))
        pickle.dump(final_oauth_token_secret, open(final_oauth_token_secret_path, "wb"))

    return [app_key, app_secret, final_oauth_token, final_oauth_token_secret]
Esempio n. 9
0
 def __init__(self, user, *args, **kwargs):
     self.user = user
     self.social_token = SocialToken.objects.filter(
         app__provider='twitter',
         account__provider='twitter',
         account__user=user)
     self.social_app = SocialApp.objects.filter(
         id=self.social_token.get().app.id)
     self.twitter = Twython(self.social_app.get().client_id,
                            self.social_app.get().secret,
                            self.social_token.get().token,
                            self.social_token.get().token_secret)
     self.twitter.verify_credentials()
Esempio n. 10
0
class TwitterSingleton(metaclass=Singleton):
    twitter = None

    def __init__(self):
        if settings.DEBUG:
            self.twitter = TwitterDebugLogger()
        else:
            self.twitter = Twython(settings.CONSUMER_KEY,
                                   settings.CONSUMER_SECRET,
                                   settings.OAUTH_TOKEN,
                                   settings.OAUTH_TOKEN_SECRET)

    def status_update_hooks(self):
        pass

    def tweet(self, status, *args, **kwargs):
        try:
            self.twitter.update_status(status=status, *args, **kwargs)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, tweeting: {0}".format(e))

    def reply_to(self, tweet_data, status, *args, **kwargs):
        status = '@{0} {1}'.format(tweet_data['user']['screen_name'], status)
        self.tweet(status=status,
                   in_reply_to_status_id=tweet_data['id_str'],
                   *args,
                   **kwargs)

    def update_status_with_media(self, status, media, in_reply_to_status_id):
        '''

        :param status:
        :param media: is simply the un-uploaded media
        :param in_reply_to:
        :return:
        '''

        try:
            log('blah blaaeouaoeuh')
            response = self.twitter.upload_media(media=media)
            log('blah blah')
            self.twitter.update_status(
                status=status,
                media_ids=[response['media_id']],
                in_reply_to_status_id=in_reply_to_status_id)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, updating status with media: {0}".format(e))

    def send_direct_message(self, text, user_id=None, screen_name=None):
        if user_id:
            self.twitter.send_direct_message(text=text, user_id=user_id)
        elif screen_name:
            self.twitter.send_direct_message(text=text,
                                             screen_name=screen_name)
Esempio n. 11
0
def twitter_callback(request, apk):
    if('oauth_verifier' in request.GET):
        oauth_verifier = request.GET['oauth_verifier']
        twitter = Twython(settings.TWITTER_API_KEY, settings.TWITTER_API_SECRET, 
                          request.session['TEMP_OAUTH_TOKEN'], request.session['TEMP_OAUTH_TOKEN_SECRET'])
        
        final_auth = twitter.get_authorized_tokens(oauth_verifier)
        
        request.session['OAUTH_TOKEN'] = final_auth['oauth_token']
        request.session['OAUTH_TOKEN_SECRET'] = final_auth['oauth_token_secret']

    activity = Activity.objects.get(pk=apk)
    sendDefinitiveMessage(request, apk)
    return redirect(reverse('mg_edit', args=[activity.meetupGroup.id]))
Esempio n. 12
0
def del_jobpost_tw(user, post):
    user = User.objects.filter(id=user).first()
    if user:
        user_twitter = Twitter.objects.filter(user=user).first()
        twitter = Twython(settings.TW_APP_KEY, settings.TW_APP_SECRET,
                          user_twitter.oauth_token, user_twitter.oauth_secret)
        try:
            twitter.destroy_status(id=post.post_id)
            post = TwitterPost.objects.filter(id=post)
            post.delete()
        except:
            print("not deleted")
    else:
        return "connect to twitter"
Esempio n. 13
0
def sendDefinitiveMessage(request, apk):
    
    if 'OAUTH_TOKEN' not in request.session or 'OAUTH_TOKEN_SECRET' not in request.session:
        return twitter_connect(request, apk)

    twitter = Twython(settings.TWITTER_API_KEY, settings.TWITTER_API_SECRET,
                      request.session['OAUTH_TOKEN'], request.session['OAUTH_TOKEN_SECRET'])

    logger.error(twitter);

    activity = Activity.objects.get(pk=apk )        
    
    twitter.update_status( status=  'Activity  ' + activity.name + ' is now definitive '
             ', activity starts at ' + activity.startDate.strftime("%d.%m.%Y")  + ' in ' + activity.location )
    
    return None
Esempio n. 14
0
class Twitter:
    """
    Encapsulates the Twython lib for
    isolation and maintainability
    """
    
    TWITTER_APP_KEY = '???'
    TWITTER_APP_KEY_SECRET = '???' 
    TWITTER_ACCESS_TOKEN = '???'
    TWITTER_ACCESS_TOKEN_SECRET = '???'
    
    tweets = None
    api = None
    
    def __init__(self):
        self.api = Twython(app_key=self.TWITTER_APP_KEY,
                           app_secret=self.TWITTER_APP_KEY_SECRET,
                           oauth_token=self.TWITTER_ACCESS_TOKEN,
                           oauth_token_secret=self.TWITTER_ACCESS_TOKEN_SECRET)
        
    def search(self, word):
        """ Looks up the word as Twitter hashtag"""
        
        search = self.api.search(q='#' + word, count=5)
        return search['statuses']
Esempio n. 15
0
class TwitterSingleton(metaclass=Singleton):
    twitter = None

    def __init__(self):
        if settings.DEBUG:
            self.twitter = TwitterDebugLogger()
        else:
            self.twitter = Twython(
                settings.CONSUMER_KEY,
                settings.CONSUMER_SECRET,
                settings.OAUTH_TOKEN,
                settings.OAUTH_TOKEN_SECRET
            )

    def status_update_hooks(self):
        pass

    def tweet(self, status, *args, **kwargs):
        try:
            self.twitter.update_status(status=status, *args, **kwargs)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, tweeting: {0}".format(e))

    def reply_to(self, tweet_data, status, *args, **kwargs):
        status = '@{0} {1}'.format(tweet_data['user']['screen_name'], status)
        self.tweet(status=status, in_reply_to_status_id=tweet_data['id_str'], *args, **kwargs)

    def update_status_with_media(self, status, media, in_reply_to_status_id):
        '''

        :param status:
        :param media: is simply the un-uploaded media
        :param in_reply_to:
        :return:
        '''

        try:
            log('blah blaaeouaoeuh')
            response = self.twitter.upload_media(media=media)
            log('blah blah')
            self.twitter.update_status(status=status, media_ids=[response['media_id']],
                                       in_reply_to_status_id=in_reply_to_status_id)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, updating status with media: {0}".format(e))

    def send_direct_message(self, text, user_id=None, screen_name=None):
        if user_id:
            self.twitter.send_direct_message(text=text, user_id=user_id)
        elif screen_name:
            self.twitter.send_direct_message(text=text, screen_name=screen_name)
Esempio n. 16
0
 def run(self, args):
     # configure the server port for the callback
     serverPort = 8000
     
     # initiate OAuth workflow
     twitter = Twython(args.twitter_app_key, args.twitter_app_secret)
     # step 1
     self._log.info("Initiating Twitter OAuth workflow.")
     oAuth = twitter.get_authentication_tokens(callback_url="http://localhost:%d/callback" % (serverPort))
     oAuthToken = oAuth['oauth_token']
     oAuthTokenSecret = oAuth['oauth_token_secret']
     # step 2
     webbrowser.open_new(oAuth['auth_url'])
     # step 3
     self._log.info("Starting OAuth HTTP callback handler.")
     httpd = OAuthCallbackServer(('', serverPort), self._log, Twython(args.twitter_app_key, args.twitter_app_secret, oAuthToken, oAuthTokenSecret))
     httpd.handle_request()
Esempio n. 17
0
 def __init__(self, user, *args, **kwargs):
     self.user = user
     self.social_token = SocialToken.objects.filter(app__provider='twitter',
                                                    account__provider='twitter',
                                                    account__user=user)
     self.social_app = SocialApp.objects.filter(id=self.social_token.get().app.id)
     self.twitter = Twython(self.social_app.get().client_id, self.social_app.get().secret,
                            self.social_token.get().token,
                            self.social_token.get().token_secret)
     self.twitter.verify_credentials()
Esempio n. 18
0
class AuthorizedTwitter:
    def __init__(self, consumer_token, consumer_secret, access_token, secret):
        self.t = Twython(consumer_token, consumer_secret, access_token, secret)

    def get_list(self, name):
        lists = self.t.show_owned_lists()
        l = next((l for l in lists['lists'] if l['name'] == name), None)
        if not l:
            l = self.t.create_list(name=name, mode='private')

        return l

    def add_missing_members(self, tw_list, members):
        list_id = tw_list['id']
        current_members = self.t.get_list_members(list_id=list_id)
        current_member_names = set([u['screen_name'].lower() for u in current_members['users']])
        missing_members = members - current_member_names
        self.t.create_list_members(list_id=list_id, screen_name=",".join(missing_members))
        return missing_members
def authenticate():
    token_dir = "temp" + os.sep + "tokens" + os.sep

    if not os.path.exists(token_dir):
        os.makedirs(token_dir)

    app_key_path = token_dir + "APP_KEY.pkl"
    app_secret_path = token_dir + "APP_SECRET.pkl"
    final_oauth_token_path = token_dir + "FINAL_OAUTH_TOKEN.pkl"
    final_oauth_token_secret_path = token_dir + "FINAL_OAUTH_TOKEN_SECRET.pkl"

    exists = os.path.isfile(app_key_path) and os.path.isfile(app_secret_path)

    if exists:
        app_key = pickle.load(open(app_key_path, "rb"))
        app_secret = pickle.load(open(app_secret_path, "rb"))
    else:
        app_key = raw_input("Enter your APP_KEY:")
        app_secret = raw_input("Enter your APP_SECRET:")

        pickle.dump(app_key, open(app_key_path, "wb"))
        pickle.dump(app_secret, open(app_secret_path, "wb"))

    exists = os.path.isfile(final_oauth_token_path) and os.path.isfile(
        final_oauth_token_secret_path)

    if exists:

        final_oauth_token = pickle.load(open(final_oauth_token_path, "rb"))
        final_oauth_token_secret = pickle.load(
            open(final_oauth_token_secret_path, "rb"))

    else:

        t = Twython(app_key, app_secret)

        auth = t.get_authentication_tokens()

        oauth_token = auth["oauth_token"]
        oauth_token_secret = auth["oauth_token_secret"]

        url = auth["auth_url"]
        webbrowser.open(url)

        oauth_verifier = raw_input("Enter your pin:")

        t = Twython(app_key, app_secret, oauth_token, oauth_token_secret)

        final_step = t.get_authorized_tokens(oauth_verifier)

        final_oauth_token = final_step["oauth_token"]
        final_oauth_token_secret = final_step["oauth_token_secret"]

        pickle.dump(final_oauth_token, open(final_oauth_token_path, "wb"))
        pickle.dump(final_oauth_token_secret,
                    open(final_oauth_token_secret_path, "wb"))

    return [app_key, app_secret, final_oauth_token, final_oauth_token_secret]
Esempio n. 20
0
class Twitter:
    def __init__(self, consumer_token, consumer_secret):
        self.t = Twython(consumer_token, consumer_secret)
        self.consumer_token = consumer_token
        self.consumer_secret = consumer_secret

    def generate_access_token(self):
        auth = self.t.get_authentication_tokens()

        print("Please go to {auth_url} for a verification code.".format(**auth))
        verifier = input("Verification code: ")

        twitter = Twython(self.consumer_token, self.consumer_secret, auth['oauth_token'], auth['oauth_token_secret'])
        tokens = twitter.get_authorized_tokens(oauth_verifier=verifier)
        return tokens['oauth_token'], tokens['oauth_token_secret']

    def authenticate(self, access_token, secret):
        return AuthorizedTwitter(self.consumer_token, self.consumer_secret, access_token, secret)
Esempio n. 21
0
class TwitterSingleton(metaclass=Singleton):
    twitter = None

    def __init__(self):
        if settings.DEBUG:
            self.twitter = TwitterDebugLogger()
        else:
            self.twitter = Twython(
                settings.CONSUMER_KEY,
                settings.CONSUMER_SECRET,
                settings.OAUTH_TOKEN,
                settings.OAUTH_TOKEN_SECRET
            )

    def status_update_hooks(self):
        pass

    def tweet(self, status, *args, **kwargs):
        try:
            self.twitter.update_status(status=status, *args, **kwargs)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, tweeting: {0}".format(e))

    def reply_to(self, tweet_data, status, *args, **kwargs):
        status = '@{0} {1}'.format(tweet_data['user']['screen_name'], status)
        self.tweet(status=status, in_reply_to_status_id=tweet_data['id_str'], *args, **kwargs)

    def update_status_with_media(self, *args, **kwargs):
        try:
            self.twitter.update_status_with_media(*args, **kwargs)
            self.status_update_hooks()
        except TwythonError as e:
            log("Twython error, updating status with media: {0}".format(e))

    def send_direct_message(self, text, user_id=None, screen_name=None):
        if user_id:
            self.twitter.send_direct_message(text=text, user_id=user_id)
        elif screen_name:
            self.twitter.send_direct_message(text=text, screen_name=screen_name)
Esempio n. 22
0
def twitter_login(request):

    if "oauth_verifier" in request.GET:
        oauth_verifier = request.GET["oauth_verifier"]
        twitter = Twython(
            settings.PJ_TW_APP_KEY,
            settings.PJ_TW_APP_SECRET,
            request.session["OAUTH_TOKEN"],
            request.session["OAUTH_TOKEN_SECRET"],
        )
        final_step = twitter.get_authorized_tokens(oauth_verifier)
        if not final_step.get("oauth_token_secret"):
            return render(
                request,
                "404.html",
                {
                    "message": "Sorry, Your session has been expired",
                    "reason": "Please kindly try again to update your profile",
                    "email": settings.DEFAULT_FROM_EMAIL,
                    "number": settings.CONTACT_NUMBER,
                },
                status=404,
            )
        twitter = Twython(
            settings.PJ_TW_APP_KEY,
            settings.PJ_TW_APP_SECRET,
            final_step["oauth_token"],
            final_step["oauth_token_secret"],
        )
        followers = twitter.get_followers_list(
            screen_name=final_step["screen_name"])
        friends = twitter.get_friends_list(
            screen_name=final_step["screen_name"])

        if not request.user.is_tw_connected and request.user.is_authenticated:
            Twitter.objects.create(
                user=request.user,
                twitter_id=final_step.get("user_id", ""),
                screen_name=final_step.get("screen_name", ""),
                oauth_token=final_step.get("oauth_token", ""),
                oauth_secret=final_step.get("oauth_token_secret", ""),
            )

        add_twitter_friends_followers.delay(request.user.id, friends,
                                            followers)

        if request.is_mobile == "mobile":
            return HttpResponseRedirect("/jobs/")
        if request.session.get("job_id"):
            log_apply = login_and_apply(request)
            if log_apply:
                return HttpResponseRedirect(log_apply[0].slug + "?job_apply=" +
                                            log_apply[1])
        return HttpResponseRedirect(reverse("my:profile"))
    else:
        twitter = Twython(settings.PJ_TW_APP_KEY, settings.PJ_TW_APP_SECRET)
        url = (request.scheme + "://" + request.META["HTTP_HOST"] +
               reverse("social:twitter_login"))
        auth = twitter.get_authentication_tokens(callback_url=url)
        request.session["OAUTH_TOKEN"] = auth["oauth_token"]
        request.session["OAUTH_TOKEN_SECRET"] = auth["oauth_token_secret"]
        return HttpResponseRedirect(auth["auth_url"])
Esempio n. 23
0
class TwitterAdapter(MessageProvider, ImageProvider, ActionMessageProvider):
    id = 'twitter'
    name = 'TwitterAdapter'

    def __init__(self, user, *args, **kwargs):
        self.user = user
        self.social_token = SocialToken.objects.filter(
            app__provider='twitter',
            account__provider='twitter',
            account__user=user)
        self.social_app = SocialApp.objects.filter(
            id=self.social_token.get().app.id)
        self.twitter = Twython(self.social_app.get().client_id,
                               self.social_app.get().secret,
                               self.social_token.get().token,
                               self.social_token.get().token_secret)
        self.twitter.verify_credentials()

    def publish_image(self, image, message='', **kwargs):
        img = open(image.path).read()
        try:
            logger.info(
                'try to update twitter status with an image, for user: %s ' %
                self.user)
            result = self.twitter.update_status_with_media(status=message,
                                                           media=StringIO(img))
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e

    def publish_message(self, message, **kwargs):
        """
            Attachment:
            {"name": "Link name"
             "link": "http://www.example.com/",
             "caption": "{*actor*} posted a new review",
             "description": "This is a longer description of the attachment",
             "picture": picture}
        """
        try:
            logger.info('try to update twitter status, for user: %s ' %
                        self.user)
            attachment = kwargs.pop('attachment', {})
            message = message or attachment.get(
                'caption', attachment.get('description', ''))
            full_message = "%s (%s)" % (message, attachment.get('link')
                                        ) if 'link' in attachment else message
            if 'picture' in attachment:
                img = open(attachment.get('picture').path).read()
                result = self.twitter.update_status_with_media(
                    status=full_message, media=StringIO(img))
            else:
                result = self.twitter.update_status(status=full_message)
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e

    def publish_action_message(self, message, action_info, **kwargs):
        """
            action_info: dictionary with information about the corresponding app activity/action
            {
                 "link": the url for the app activity/action to point to,
                 "actor": the actor,
                 "action": the action performed by 'actor',
                 "verb": the verbal form to show for the action performed by 'actor',
                 "target": the target of the action,
                 "app": the application name,
                 "domain": the application domain
                 "picture": the picture to show
             }
        """
        try:
            logger.info('try to update twitter status, for user: %s ' %
                        self.user)
            from django.utils.translation import ugettext as _

            message = message or "%s (%s) %s %s" % (
                action_info.get('action', ''), action_info.get('target', ''),
                _(u'using'), action_info.get('app', _(u'application'))),
            full_message = "%s (%s)" % (message, action_info.get('link')
                                        ) if 'link' in action_info else message
            if 'picture' in action_info:
                img = open(action_info.get('picture').path).read()
                result = self.twitter.update_status_with_media(
                    status=full_message, media=StringIO(img))
            else:
                result = self.twitter.update_status(status=full_message)
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e
Esempio n. 24
0
 def __init__(self, consumer_token, consumer_secret, access_token, secret):
     self.t = Twython(consumer_token, consumer_secret, access_token, secret)
Esempio n. 25
0
class TwitterAdapter(MessageProvider, ImageProvider, ActionMessageProvider):
    id = 'twitter'
    name = 'TwitterAdapter'

    def __init__(self, user, *args, **kwargs):
        self.user = user
        self.social_token = SocialToken.objects.filter(app__provider='twitter',
                                                       account__provider='twitter',
                                                       account__user=user)
        self.social_app = SocialApp.objects.filter(id=self.social_token.get().app.id)
        self.twitter = Twython(self.social_app.get().client_id, self.social_app.get().secret,
                               self.social_token.get().token,
                               self.social_token.get().token_secret)
        self.twitter.verify_credentials()

    def publish_image(self, image, message='', **kwargs):
        img = open(image.path).read()
        try:
            logger.info('try to update twitter status with an image, for user: %s ' % self.user)
            result = self.twitter.update_status_with_media(status=message, media=StringIO(img))
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e

    def publish_message(self, message, **kwargs):
        """
            Attachment:
            {"name": "Link name"
             "link": "http://www.example.com/",
             "caption": "{*actor*} posted a new review",
             "description": "This is a longer description of the attachment",
             "picture": picture}
        """
        try:
            logger.info('try to update twitter status, for user: %s ' % self.user)
            attachment = kwargs.pop('attachment', {})
            message = message or attachment.get('caption', attachment.get('description', ''))
            full_message = "%s (%s)" % (message, attachment.get('link')) if 'link' in attachment else message
            if 'picture' in attachment:
                img = open(attachment.get('picture').path).read()
                result = self.twitter.update_status_with_media(status=full_message, media=StringIO(img))
            else:
                result = self.twitter.update_status(status=full_message)
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e

    def publish_action_message(self, message, action_info, **kwargs):
        """
            action_info: dictionary with information about the corresponding app activity/action
            {
                 "link": the url for the app activity/action to point to,
                 "actor": the actor,
                 "action": the action performed by 'actor',
                 "verb": the verbal form to show for the action performed by 'actor',
                 "target": the target of the action,
                 "app": the application name,
                 "domain": the application domain
                 "picture": the picture to show
             }
        """
        try:
            logger.info('try to update twitter status, for user: %s ' % self.user)
            from django.utils.translation import ugettext as _

            message = message or "%s (%s) %s %s" % (
                action_info.get('action', ''),
                action_info.get('target', ''),
                _(u'using'),
                action_info.get('app', _(u'application'))
            ),
            full_message = "%s (%s)" % (message, action_info.get('link')) if 'link' in action_info else message
            if 'picture' in action_info:
                img = open(action_info.get('picture').path).read()
                result = self.twitter.update_status_with_media(status=full_message, media=StringIO(img))
            else:
                result = self.twitter.update_status(status=full_message)
            logger.debug(str(result))
            return result
        except Exception as e:
            logger.error(e)
            raise e
Esempio n. 26
0
 def __init__(self, consumer_token, consumer_secret):
     self.t = Twython(consumer_token, consumer_secret)
     self.consumer_token = consumer_token
     self.consumer_secret = consumer_secret
Esempio n. 27
0
 def __init__(self):
     self.api = Twython(app_key=self.TWITTER_APP_KEY,
                        app_secret=self.TWITTER_APP_KEY_SECRET,
                        oauth_token=self.TWITTER_ACCESS_TOKEN,
                        oauth_token_secret=self.TWITTER_ACCESS_TOKEN_SECRET)
        if f:
            f.close()


def tweet(text=None, media_id=None, in_reply_to_status_id=None):
    media_ids = None
    if media_id:
        media_ids = [media_id]
    twitter.update_status(status=text,
                          media_ids=media_ids,
                          in_reply_to_status_id=in_reply_to_status_id)


tokens = authenticate()
twitter = Twython(app_key=tokens[0],
                  app_secret=tokens[1],
                  oauth_token=tokens[2],
                  oauth_token_secret=tokens[3])
stream = MyStreamer(app_key=tokens[0],
                    app_secret=tokens[1],
                    oauth_token=tokens[2],
                    oauth_token_secret=tokens[3])

camera = cv2.VideoCapture(0)

take_photo()


def start():
    start_schedule()
    start_stream()