예제 #1
0
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 + '/')
예제 #2
0
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/')
예제 #3
0
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")
예제 #4
0
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/')
예제 #5
0
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 + '/')
예제 #6
0
    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))
예제 #7
0
    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
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
파일: views.py 프로젝트: hamptont/403-kamal
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})
예제 #11
0
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})
예제 #12
0
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")
예제 #13
0
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
    """
예제 #14
0
파일: views.py 프로젝트: ppp0/openbroadcast
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
    """