나나자와 미아씨의 이미지로 치유되고 싶다 그런 때는 Twitter API를 두드리자♪

11385 단어 파이썬TwitterAPI

소개



이번에는 WebAPI의 트위터 API를 다룹니다.
Twiiter API를 이용하면 다음의 2점 작업을 자동으로 할 수 있게 됩니다.

① 특정 조건을 충족하는 게시물 취득
② 내 계정으로 자동으로 게시

이번에는 ①을 실행해 보겠습니다.

AV 여배우로서 활약되어 자신이 제일 신세를지고 있는 나나자와 미아씨의 Twitter 중에서, 투고된 화상을 자동으로 취득해 갑니다.

Twitter Keys & Tokens 얻기


#API key
consumer_key = "???"
#API secret key
consumer_secret = "???"
#Access token
access_token = "???"
#Access token secret
access_token_secret = "???"
#各々取得して???に代入してください。
#「pip install tweepy」を実行して下さい
import tweepy

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

나나자와 미아 님의 트위터 계정 및 팔로워 수



아래 코드에 대한 자세한 내용은
htps : // 흔들림. 기주 b. 이오 / ぇえ py / 제대로 g_s r d. html # 헤이와 파이
에 쓰여져 있습니다.
def show_user_profile():
  user = api.get_user('mia_nanasawa')
  print(user.screen_name) #アカウント名取得
  print(user.followers_count) #フォロワー数取得



아래의 트위터 이미지에서 올바르게 계정 이름, 팔로워 수를 얻을 수 있음을 알 수 있습니다.



나나자와 미아 님의 트윗 정보 취득 (복수의 이미지)



user_timeline의 사용법은
htps : // 흔들림. 기주 b. 이오/토에 py/아피. HTML
에 쓰여져 있습니다.
import json

user_id = "mia_nanasawa"
statuses = api.user_timeline(id=user_id, count=4)
for status in statuses:
    #jsonを見やすくするためのワザ
    print(json.dumps(status._json, indent=2))

entities와 extended_entities 안에 url이 들어 있는 것을 알 수 있다.
하나의 투고에 복수의 사진이 포함되어 있는 경우는, extended_entities에만 복수의 사진이 포함되는 것을 조사해 보면, 알았다.

def show_media_url():
  user_id = "mia_nanasawa"
  statuses = api.user_timeline(id=user_id, count=4)

  for status in statuses:
    for entity in status.extended_entities["media"]:
      img_url = entity["media_url"]
      print(img_url)
    break

이미지 다운로드


def download_image(url, file_path):
  r = requests.get(url, stream=True)

  if r.status_code == 200:
    with open(file_path, "wb") as f:
      f.write(r.content)

실행



Cursor의 사용법은
htps : // 흔들림. 기주 b. 이오 / 트에 py / 쿠 r 소 r_ 쓰리 아 l. HTML
에 쓰여져 있습니다.
import requests
import tweepy

def main():
  user_id = "mia_nanasawa"
  for page in tweepy.Cursor(api.user_timeline, id=user_id).pages(20):
    for status in page:
      try:
        for media in status.extended_entities["media"]:
          media_id = media["id"]
          img_url = media["media_url"]
          print(media_id)
          print(img_url)

          #カレントディレクトリに"imagesフォルダ”を作成しときます。
          download_image(url=img_url, file_path="./images/{}.jpg".format(media_id))

      #tryの中でエラーが発生したら、例外が出力されループを回す
      except Exception as e:
        print(e)
        #動画を含むツイートの際にエラーが起きてる可能性がある。

if __name__ == "__main__":
    main()



위의 출력에서 ​​몇 가지 오류 처리가 발생했음을 알 수 있습니다.
아마도 이미지 파일이 아니라 동영상이 트윗에 포함될 것으로 예상됩니다.
(덧붙여서, 트윗된 이미지는 제대로 얻어졌습니다.)

결과





올바르게 이미지 파일에 저장되어 있는지 확인할 수 있습니다.

이것으로 눈의 보양이 생겼어요.

좋은 웹페이지 즐겨찾기