def create_account(request): if request.method == 'POST': name = request.POST['username'] try: account = TwitterAccount.objects.get(username=name) except TwitterAccount.DoesNotExist: try: corpus = twitter.getTweetsFromUser(TWITTER_API, name) if corpus: account = TwitterAccount(username=name, text_corpus=corpus, num_queries=0) account.save() else: return render( request, 'tweetlikeme.html', { 'error': "@" + name + " hasn't tweeted anything yet. Try again with another account", }) except TweepError, e: # the error code for a non-existent username is 34 if "34" in str(e): error = 'Username "' + name + '" does not exist. Try again with another username.' elif "88" in str(e): error = "We can't download any data from Twitter right now because of their rate limits. Try again with an account from the autocomplete dropdown." else: error = str(e) return render(request, 'tweetlikeme.html', { 'error': error, }) return redirect('/account/' + name + '/')
def twitter_callback(request): if request.GET.get('denied'): print "denied" return HttpResponseRedirect('/feed/') print "not denied" verifier = request.GET.get('oauth_verifier') token_info = twitter_api.twitter_authenticate(verifier, request.session['request_token'], request.session['request_secret']) user = request.user if user: twitter_account = TwitterAccount(user_id=user, access_token=token_info[0], access_secret=token_info[1]) twitter_account.save() return HttpResponseRedirect('/feed/')
def twitter_request(request): one_user = TwitterAccount.get_account(request_id=request.user.id) return_dict = {'success': False} if one_user is not None: request_json = request.POST if request_json.get('type') == 'upload': message = request_json.get('message') if len(message) <= 140: twitter_api.twitter_post( one_user.access_token, one_user.access_secret, message ) return_dict['success'] = True elif request_json.get('type') == 'feedRequest': twitter_post = twitter_api.twitter_home_timeline( one_user.access_token, one_user.access_secret, 30 ) return_dict['tweets'] = twitter_post return_dict['success'] = True elif request_json.get('type') == 'retweet': postId = request_json.get('postId') success = twitter_api.twitter_retweet( one_user.access_token, one_user.access_secret, postId ) return_dict['success'] = success return_json = json.dumps(return_dict) return HttpResponse(return_json, mimetype="application/json")
def twitter_callback(request): if request.GET.get('denied'): print "denied" return HttpResponseRedirect('/feed/') print "not denied" verifier = request.GET.get('oauth_verifier') token_info = twitter_api.twitter_authenticate( verifier, request.session['request_token'], request.session['request_secret']) user = request.user if user: twitter_account = TwitterAccount(user_id=user, access_token=token_info[0], access_secret=token_info[1]) twitter_account.save() return HttpResponseRedirect('/feed/')
def create_account(request): if request.method == 'POST': name = request.POST['username'] try: account = TwitterAccount.objects.get(username=name) except TwitterAccount.DoesNotExist: try: corpus = twitter.getTweetsFromUser(TWITTER_API, name) if corpus: account = TwitterAccount(username=name, text_corpus=corpus, num_queries=0) account.save() else: return render(request, 'tweetlikeme.html', {'error' : "@" + name + " hasn't tweeted anything yet. Try again with another account",}) except TweepError, e: # the error code for a non-existent username is 34 if "34" in str(e): error = 'Username "' + name + '" does not exist. Try again with another username.' elif "88" in str(e): error = "We can't download any data from Twitter right now because of their rate limits. Try again with an account from the autocomplete dropdown." else: error = str(e) return render(request, 'tweetlikeme.html', {'error' : error,}) return redirect('/account/' + name + '/')
def get(self, path): if path == '/people': at = int(self.request.get('at') or 0) by = int(self.request.get('by') or 10) if at: query = TwitterAccount.all().order('screen_name') query = query.filter('__key__ >', at) else: query = TwitterAccount.all().order('screen_name') query = query.fetch(by) values = { 'people': [p for p in query], 'title': 'List of people' } self.response.out.write(render('list-people.html', values)) else: values = { 'error': '<strong>Warning:</strong> page unavailable.', 'message': 'This list page is not yet implemented.' } self.response.out.write(render('error.html', values))
def getTweets(criteria): refreshCursor = '' results = [] resultsAux = [] cookieJar = cookielib.CookieJar() active = True while active: json = TweetManager.getJsonReponse(criteria, refreshCursor, cookieJar) if len(json['items_html'].strip()) == 0: break refreshCursor = json['min_position'] scrapedTweets = PyQuery(json['items_html']) #Remove incomplete tweets withheld by Twitter Guidelines scrapedTweets.remove('div.withheld-tweet') tweets = scrapedTweets('div.js-stream-tweet') if len(tweets) == 0: break for tweetHTML in tweets: tweetPQ = PyQuery(tweetHTML) accountId = int(tweetPQ.attr("data-user-id")) accountFullname = tweetPQ.attr("data-name") accountHref = "/" + tweetPQ.attr("data-screen-name") account = TwitterAccount(accountId, accountFullname, accountHref) epoch = int(tweetPQ("small.time span.js-short-timestamp").attr("data-time")) date = time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime(epoch)) likes = int(tweetPQ("span.ProfileTweet-action--favorite span.ProfileTweet-actionCount").attr("data-tweet-stat-count").replace(",", "")) replies = int(tweetPQ("span.ProfileTweet-action--reply span.ProfileTweet-actionCount").attr("data-tweet-stat-count").replace(",", "")) retweets = int(tweetPQ("span.ProfileTweet-action--retweet span.ProfileTweet-actionCount").attr("data-tweet-stat-count").replace(",", "")) txt = re.sub(r"\s+", " ", tweetPQ("p.js-tweet-text").text().replace('# ', '#').replace('@ ', '@')) tweet = Tweet(account, date, likes, replies, retweets, txt) results.append(tweet) if criteria['limit'] > 0 and len(results) >= criteria['limit']: active = False break return results
def login_done(request): app = TwitterApp.objects.get_current() client = OAuthTwitter(request, app.consumer_key, app.consumer_secret, app.request_token_url) user_info = client.get_user_info() try: account = TwitterAccount.objects.get(social_id=user_info['id']) except TwitterAccount.DoesNotExist: account = TwitterAccount(social_id=user_info['id']) account.profile_image_url = user_info['profile_image_url'] account.username = user_info['screen_name'] if account.pk: account.save() data = dict(twitter_user_info=user_info, username=account.username) return complete_social_login(request, data, account)
def login_done(request): app = TwitterApp.objects.get_current() client = OAuthTwitter( request, app.consumer_key, app.consumer_secret, app.request_token_url) user_info = client.get_user_info() access_token = client._get_at_from_session() try: account = TwitterAccount.objects.get(social_id=user_info['id']) except TwitterAccount.DoesNotExist: account = TwitterAccount(social_id=user_info['id']) account.profile_image_url = user_info['profile_image_url'] account.username = user_info['screen_name'] account.access_token = access_token['oauth_token'] account.access_token_secret = access_token['oauth_token_secret'] if account.pk: account.save() data = dict(twitter_user_info=user_info,username=account.username) return complete_social_login(request, data, account)
def signin(request): if request.method == 'POST': email = request.POST['email'] password = request.POST['password'] user = authenticate(email=email, password=password) if (user is not None) and (user.is_active): login(request, user) facebook_account = FacebookAccount.get_account(request_id=request.user.id) twitter_account = TwitterAccount.get_account(request_id=request.user.id) if facebook_account is None and twitter_account is None: return redirect('/feed/', {'username': email}) else: return redirect('/feed/', {'username': email}) else: form = EmailAuthenticationForm() form.non_field_errors = 'Your email and password were incorrect.' return render(request, 'index.html', {'form': form}) else: form = EmailAuthenticationForm() return render(request, 'index.html', {'form': form})
def signin(request): if request.method == 'POST': email = request.POST['email'] password = request.POST['password'] user = authenticate(email=email, password=password) if (user is not None) and (user.is_active): login(request, user) facebook_account = FacebookAccount.get_account( request_id=request.user.id) twitter_account = TwitterAccount.get_account( request_id=request.user.id) if facebook_account is None and twitter_account is None: return redirect('/feed/', {'username': email}) else: return redirect('/feed/', {'username': email}) else: form = EmailAuthenticationForm() form.non_field_errors = 'Your email and password were incorrect.' return render(request, 'index.html', {'form': form}) else: form = EmailAuthenticationForm() return render(request, 'index.html', {'form': form})
def twitter_request(request): one_user = TwitterAccount.get_account(request_id=request.user.id) return_dict = {'success': False} if one_user is not None: request_json = request.POST if request_json.get('type') == 'upload': message = request_json.get('message') if len(message) <= 140: twitter_api.twitter_post(one_user.access_token, one_user.access_secret, message) return_dict['success'] = True elif request_json.get('type') == 'feedRequest': twitter_post = twitter_api.twitter_home_timeline( one_user.access_token, one_user.access_secret, 30) return_dict['tweets'] = twitter_post return_dict['success'] = True elif request_json.get('type') == 'retweet': postId = request_json.get('postId') success = twitter_api.twitter_retweet(one_user.access_token, one_user.access_secret, postId) return_dict['success'] = success return_json = json.dumps(return_dict) return HttpResponse(return_json, mimetype="application/json")
from utils import OAuthTwitter def login_done(request): app = TwitterApp.objects.get_current() client = OAuthTwitter( request, app.consumer_key, app.consumer_secret, app.request_token_url) try: user_info = client.get_user_info() except OAuthError, e: return render_authentication_error(request) try: account = TwitterAccount.objects.get(social_id=user_info['id']) except TwitterAccount.DoesNotExist: account = TwitterAccount(social_id=user_info['id']) account.profile_image_url = user_info['profile_image_url'] account.username = user_info['screen_name'] if account.pk: account.save() data = dict(twitter_user_info=user_info, username=account.username) return complete_social_login(request, data, account) def oauth_redirect(request, consumer_key=None, secret_key=None, request_token_url=None, access_token_url=None, authorization_url=None, callback_url=None, parameters=None): """ View to handle the OAuth based authentication redirect to the service provider """
from utils import OAuthTwitter def login_done(request): app = TwitterApp.objects.get_current() client = OAuthTwitter( request, app.consumer_key, app.consumer_secret, app.request_token_url) try: user_info = client.get_user_info() except OAuthError, e: return render_authentication_error(request) try: account = TwitterAccount.objects.get(social_id=user_info['id']) except TwitterAccount.DoesNotExist: account = TwitterAccount(social_id=user_info['id']) account.profile_image_url = user_info['profile_image_url'] account.username = user_info['screen_name'] if account.pk: account.save() data = dict(twitter_user_info=user_info, username=account.username) return complete_social_login(request, data, account) def oauth_redirect(request, consumer_key=None, secret_key=None, request_token_url=None, access_token_url=None, authorization_url=None, callback_url=None, parameters=None): """ View to handle the OAuth based authentication redirect to the service provider """