def do_report(request_token, oauth_verifier, accounts, block=False): logger = logging.getLogger(__name__) if not logger.hasHandlers(): logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.INFO) output = '' try: twitter_auth = OAuthHandler(settings.CONSUMER_KEY, settings.CONSUMER_SECRET) twitter_auth.request_token = { 'oauth_token': request_token, 'oauth_token_secret': oauth_verifier } twitter_auth.get_access_token(oauth_verifier) twitter_api = API(twitter_auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True, retry_count=0, timeout=5) for account_name, account_type in accounts.items(): output += 'Reporting: ' + account_name + '\n' try: if account_type == 'user_id': user = twitter_api.report_spam(user_id=account_name, perform_block=block) else: user = twitter_api.report_spam(screen_name=account_name, perform_block=block) output += 'Reported: https://twitter.com/' + user.screen_name + '\n' logger.info('Reported: https://twitter.com/' + user.screen_name) except TweepError as e: if e.api_code == 34: # Account does not exist, skip output += e.reason + '\n' else: raise e except TweepError as e: output += e.reason + '\n' output += 'Done(' + str(datetime.now()) + ')' return escape(output)
def twitter_callback(request): """ Twitterからのコールバック時に呼び出される。 :param request: リクエストオブジェクト :type request: django.http.HttpRequest :return: 遷移先を示すレスポンスオブジェクト :rtype: django.http.HttpResponse """ # セッションからリクエストトークンを取得する request_token = request.session.get('request_token') if not request_token: request.session.clear() return HttpResponse('Unauthorized', status=401) # Twitterからの返却値を取得する oauth_token = request.GET.get('oauth_token') oauth_verifier = request.GET.get('oauth_verifier') # セッションの値とTwitterからの返却値が一致しない場合は処理を中断する if request_token.get('oauth_token') != oauth_token: request.session.clear() return HttpResponse('Unauthorized', status=401) # アクセストークンを取得する oauth_handler = OAuthHandler(settings.CONSUMER_KEY, settings.CONSUMER_SECRET) oauth_handler.request_token = request_token access_token = oauth_handler.get_access_token(oauth_verifier) # 認証処理を実行する authenticated_user = authenticate(access_token=access_token) if authenticated_user: login(request, authenticated_user) else: request.session.clear() return HttpResponse('Unauthorized', status=401) # ログイン後に遷移すべき画面にリダイレクトする url = request.session.get('next', getattr(settings, 'AFTER_LOGIN_URL', '/')) return HttpResponseRedirect(url)
def login1(request): try: request_token1 = session['request_token'] del session['request_token'] auth = OAuthHandler(ak, aks) auth.request_token = request_token1 verifier = request.GET.get('oauth_verifier') if verifier is None: return render(request, 'invalid.html', {}) auth.get_access_token(verifier) key, secret = auth.access_token, auth.access_token_secret auth.set_access_token(key, secret) twitter_client = API(auth, wait_on_rate_limit=True) tweets_id = [] tweets_user = {} tweets_url_count = {} now = datetime.now() for tweet in twitter_client.home_timeline(): if now < (tweet.created_at - timedelta(hours=(24 * 7))): break if tweet.entities['urls'] != []: #*************** entering into database********** try: obj = TweetsDetails() obj.created_at = str(tweet.created_at)[:19] obj.tweet_id = tweet.id obj.tweet_by = tweet.user.screen_name obj.user_twitter_id = myself.screen_name unique_str = myself.screen_name + str(tweet.id) obj.unique = unique_str obj.save() except: l = 0 l = len(tweet.entities['urls']) if str(tweet.user.screen_name) in tweets_user: tweets_user[str(tweet.user.screen_name)] += l else: tweets_user[str(tweet.user.screen_name)] = l for i in range(l): if tweet.entities['urls'][i]['url'] in tweets_url_count: tweets_url_count[tweet.entities['urls'][i]['url']] += 1 else: tweets_url_count[tweet.entities['urls'][i]['url']] = 1 tweets_id.append(int(tweet.id)) top_url_counts, top_active_users, embed_links = [], [], [] for x in tweets_url_count.keys(): top_url_counts.append([tweets_url_count[x], x]) for x in tweets_user: top_active_users.append([tweets_user[x], x]) for id in tweets_id: embReqUrl = 'https://publish.twitter.com/oembed?url=https%3A%2F%2Ftwitter.com%2FInterior%2Fstatus%2F' + str( id) embResp = requests.get(embReqUrl).json() embed_links.append(embResp['html']) top_active_users.sort(reverse=True) top_url_counts.sort(reverse=True) if len(top_active_users) > 3: top_active_users = top_active_users[:3] if len(top_url_counts) > 3: top_url_counts = top_url_counts[:3] if len(top_active_users) == 0: top_active_users.append(['-', '-']) if len(top_url_counts) == 0: top_url_counts.append(['-', '-']) x = [] #Modifying tweet embed link as a string s = ' tw-align-center' for i in range(len(embed_links)): embed_links[i] = embed_links[i][:len(embed_links[i]) - 86] embed_links[i] = embed_links[i][:32] + s + embed_links[i][32:] x.append(embed_links[i]) finaldict = {} finaldict['embedlink'] = x finaldict['urlcount'] = top_url_counts finaldict['topuser'] = top_active_users return render(request, 'second page.html', finaldict) except Exception as e: print(e) return render(request, 'invalid.html', {})