파이톤으로 인스타그램 계정 운영을 자동화해 봤습니다.

16175 단어 Python3PythonInstagram

사과(2020년 4월 12일 현재)


현재 인스타그램의 안전성에 변화가 있어 이 내용이 통용되지 않을 가능성이 높다.미안합니다.최근 기사 삭제.

개시하다


며칠 전
파이썬 자동화 결과, 뉴욕에서 무료 식사를 먹을 수 있는 엔지니어의 이야기
이 기사를 읽고 충격을 받았다고 나는 생각한다.
"이건 해야지.."
글 요약은'인스타그램의 계정 운영이 파이토존으로 작성된 프로그램을 완전히 자동화해 경제적인 대가를 받는다'는 것이다.영어로 아래 링크에서 원 기사를 읽을 수 있기를 바랍니다.
How I Eat For Free in NYC Using Python, Automation, Artificial Intelligence, and Instagram
글에서 인용한 자동 운영 계정은

이렇게 말하면 솔직히'이런 거 자꾸 보지 마'라는 인상이 있지만 언뜻 보면 자동화되는 게 아니다.

https://www.instagram.com/p/BwiHTjel7IJ/
기본적으로 뉴욕의 예쁜 사진이 투고되었지만, #sponsored와 라벨이 붙은 투고가 자주 있는데, 이것은 공짜 식사죠.
그럼 하루에 이 프로젝트를 하고 싶어요.

방침.


기본적으로 이럴 때는 작은 과제로 분해해 하나하나 분쇄하는 방법이 좋다.너무 많이 생각하지 않고 한꺼번에 하려고 하지만 문제가 너무 복잡해지면 한꺼번에 다 못해서 후회할 때가 많다.문제를 풀면서 하면 확실히 진전이 있을 것 같아서 좋아해요.
그럼 과제를 대충 정리해 봅시다.
  • 주제 선정 제작
  • 계정 만들기
  • 로고 생성
  • 절차를 거쳐 인스타그램에 투고
  • 이미지 선택
  • 리뷰 해시 태그
  • 정기 집행
  • 일곱 개 정도 돼요.
    여기서 나는 쓰면서 쓴 이 보도를 거절하고 싶다.솔직히 로고 제작은 끝났어요.이거 기록으로 공개하면 재밌을까요?솔직히 로고 만들기에 맞춰 썼어요.
    파이톤으로 언어를 배우고 싶습니다.
    그러면 저희는 계정을 설치하는 운영 자동화를 진행할 것입니다!

    1. 주제 선정을 위한 제작


    솔직히 공짜로 밥을 먹기는 힘들기 때문에 단순히 지금은 인스타그램에 비칠 수 있는 주제만 있으면 된다.개인적으로 선호하는 위스키, 일본주, 와인 세 종류가 후보로 꼽혔으나 깊은 이유 없이 와인을 주제로 하기로 했다.
    이름은'WineMania@winemania2019'입니다.
    https://www.instagram.com/winemania2019/
    일본인들이 포도주를 좋아한다는 주제로 해보자.시장이 너무 작나봐요.

    2. 계정 생성


    여기에는 해킹 요소가 없기 때문에 보통 인스타그램의 웹 버전부터 만들죠.

    3. 표지의 제작


    요즈음
    나는 이 launchao라는 무료 로고 Gener를 매우 좋아한다.좋아하는 글씨체와 아이콘에 파치만 하면 로고를 무한히 제시할 수 있다.

    잘한 게 이거야.3분이면 돼요.

    4. 프로그램을 통해 인스타그램에 투고


    나는 마침내 프로그램을 쓰는 곳으로 들어갔다.

    라이브러리 선택


    유감스럽게도 공식 API를 사용하는 것은 규칙상 어렵기 때문에 잘 제기할 필요가 있다.다행히 인스타그램계에는 제3자 비공식 API를 활용한 인스타그램 조작 프로그램이 많다.그 속에서
    ・Python
    /투고 가능
    • 간편하게 사용 가능
    • 스타가 많다
    /이미 유지 보수 진행
    /(공교롭게도) 문서 충실
    이 점에서 선택하다.
    그래서......동!
    instagram_private_api
    https://github.com/ping/instagram_private_api
    이걸로 하기로 했어요.스타도 700여개가 있고, 최신 업데이트도 몇 달 안에 이뤄진다.조금 불만족스러웠지만 15분 정도 불평하는 게 좋을 것 같아서 이걸로 계속 전진하기로 했어요.

    설치하다.


    설치를 시작합니다.전제는 파이톤과 pip 등 환경이 있다는 것이다.제 개인python 버전은anaconda3-4.1.1을 사용합니다.
    pip install instagram_private_api
    

    Hello world


    Hello World 일을 하다.다음 ID와 비밀번호를 위에서 만든 계정으로 바꾸십시오.
    from instagram_private_api import Client, ClientCompatPatch
    
    user_name = '<インスタグラムアカウントのID>'
    password = '<パスワード>'
    
    api = Client(user_name, password)
    results = api.feed_timeline()
    
    그리고 나서
    python bot.py
    
    나는 잘못되지 않을 것 같아, 움직일 거야.

    테스트 투고

    from instagram_private_api import Client, ClientCompatPatch
    from PIL import Image
    import io
    import urllib.request
    
    user_name = '<インスタグラムアカウントのID>'
    password = '<パスワード>'
    api = Client(user_name, password)
    
    # 画像のURL
    url = "https://user-images.githubusercontent.com/5179467/57978324-23e4b000-7a46-11e9-8b04-4d16e97a702c.jpg"
    
    # 画像データを取得する
    img_in = urllib.request.urlopen(url).read()
    img_bin = io.BytesIO(img_in)
    img = Image.open(img_bin)
    
    # 画像を投稿する
    api.post_photo(img_bin.getvalue(), (img.width, img.height))
    
    그림은 직접 사용할 수 있습니다.jpg 아니면 안 될 것 같은데.
    그리하여

    투고
    간단하네.

    5. 이미지 선택


    여기에도 도덕적인 문제가 있어서 어떻게 될 것 같았는데 원래 기사에서는 애초 유명한 계정을 선정해 저작권을 보호하기 위해 인용한 내용이 잘 돼 있었다.다만, 이 기사로 저걸 하면 대박이 날 것 같아서 조금만 참아 무료 이미지 사이트 언스플래시에서 이용하기로 했어요!
    ※ 주의해야 할 것은 Unsplash 이미지를 사용해서 정식으로 사용하고 싶지 않으니 언게 생각하지 마세요!결국 실장 테스트에서만 사용된 셈이다.
    Unsplash
    https://unsplash.com
    API 키를 가져오십시오.
    대략적인 감각의 함수를 만들었다.
    from unsplash.api import Api
    from unsplash.auth import Auth
    
    def fetch_image_url():
      client_id = "<UnsplashのClientID>"
      client_secret = "<UnsplashのClientSecret>"
      auth = Auth(client_id, client_secret, '', code='')
      api = Api(auth)
    
      check_count = 0
    
      # 画像の縦横比が一定以下じゃないと(極端な縦長は駄目)いけないので、チェックする
      while True:
        check_count += 1
        # wineの箇所をお好みのキーワードに変更してください
        random_photo = api.photo.random(query='wine') 
        image_url = random_photo[0].urls.raw + "?fit=crop&w=500"
        img_in = urllib.request.urlopen(image_url).read()
        img_bin = io.BytesIO(img_in)
        img = Image.open(img_bin)
        width = img.width
        height = img.height
        ratio = height / width
        if ratio <= 1.2:
          break
        elif check_count >= 10:
          image_url = None
          break
    
      return image_url
    
    Unsplash의 API를 사용하여 이미지 URL의 함수를 무작위로 가져옵니다.
    'wine'을 바꾸는 곳은 좋아하는 범주의 이미지가 됩니다.

    6. 댓글 태그


    이번에는 라벨을 3개 정도만 선택한다.평론은 좀 더 신경 쓰는 게 좋지만 시간이 걸리기 때문에 장래의 과제로 삼아야 한다.나는 이런 세부 사항에 얽매이지 않고 한 번에 관철하는 것이 시종 매우 중요하다고 생각한다.
    와인을 주제로 해서.#wine #ワイン #ワイン好き그래?
    투고에 관해서도 이미 함수화되어 다음과 같다
    from instagram_private_api import Client, ClientCompatPatch
    from PIL import Image
    import io
    import urllib.request
    
    def post_image(image_url, comment=''):
      user_name = '<インスタグラムアカウントのID>'
      password = '<パスワード>'
      api = Client(user_name, password)
    
      # 画像のURL
      url = image_url
    
      # 画像データを取得する
      img_in = urllib.request.urlopen(url).read()
      img_bin = io.BytesIO(img_in)
      img = Image.open(img_bin)
    
      # 画像を投稿する
      aapi.post_photo(img_bin.getvalue(), (img.width, img.height), caption=caption)
    
    그러면 그림을 가져오는 것부터 발표 내용까지 우리가 시험해 보겠습니다.
    tags = '#wine #ワイン #ワイン好き'
    image_url = fetch_image_url()
    
    if image_url == None:
      print('Sorry, good image not found!')
    else:
      post_image(image_url, tags)
    
    이런 걸 수행하면...

    나는 투고한 느낌이 매우 좋다.
    https://www.instagram.com/p/Bxoqo50FJcA/
    여기서 확인해 보셔도 될 것 같습니다.

    7. 정기 집행


    그럼, 마지막 정기 집행... 미안하지만 개인적으로는 시간이 없어서 숙제를 하고 싶어요!
    선택 항목으로
    • 스스로 서버를 만들고 크론에서 정기적으로 실행
    • AWS Lambda와 같은 서버 없는 환경에서 정기적으로 수행
    · 로컬에서 정기적으로 수동으로 실행
    개인적으로 AWS 람바다 등 서버 없는 환경을 잘 활용하는 것이 좋다고 생각한다.이후 정기적으로 시행하면 인스타그램의 자동운용 계정 단속이다.

    총결산


    그럼 어때요?제 생각에는 상당히 잽싸게 (정기적으로 집행할 수는 없지만...) 했을 것 같아요.여러분도 꼭 해보세요.

    좋은 웹페이지 즐겨찾기