Skip to content

Instantly share code, notes, and snippets.

@nnsnodnb
Created January 24, 2018 07:37
Show Gist options
  • Save nnsnodnb/4b29545518a625b6c9ff6fd37d01cd69 to your computer and use it in GitHub Desktop.
Save nnsnodnb/4b29545518a625b6c9ff6fd37d01cd69 to your computer and use it in GitHub Desktop.
特定のツイートのRTした人を取得してランダムで抽出するソレ
# coding: utf-8
from requests_oauthlib import OAuth1Session, OAuth1
import requests
import settings
class APIClient(object):
base_url = 'https://api.twitter.com/1.1/'
retweeters_endpoint = base_url + 'statuses/retweeters/ids.json'
user_show_endpoint = base_url + 'users/show.json'
def __init__(self):
self.oauth = OAuth1(
settings.CONSUMER_KEY, settings.CONSUMER_SECRET,
settings.ACCESS_TOKEN, settings.ACCESS_SECRET
)
def get_retweeters(self, status_id):
retweeters = []
cursor = -1
while True:
response = requests.get(
self.retweeters_endpoint + '?id={}&cursor={}&stringify_ids=true'.format(status_id, cursor),
auth=self.oauth
).json()
retweeters.extend(response['ids'])
cursor = response['next_cursor']
if cursor == 0:
break
return retweeters
def request_user_show(self, user_id):
response = requests.get(
self.user_show_endpoint + '?user_id={}'.format(user_id),
auth=self.oauth
).json()
screen_name = response['screen_name']
return 'https://twitter.com/{}'.format(screen_name)
# coding: utf-8
from api_client import APIClient
import random
import settings
if __name__ == '__main__':
api = APIClient()
response = api.get_retweeters(status_id=settings.TWEET_STATUS_ID)
target_index = random.randint(0, len(response) - 1)
twitter_url = api.request_user_show(user_id=response[target_index])
print(twitter_url)
certifi==2018.1.18
chardet==3.0.4
idna==2.6
oauthlib==2.0.6
requests==2.18.4
requests-oauthlib==0.8.0
urllib3==1.22
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_SECRET = ''
TWEET_STATUS_ID = ''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment