どのように私はAWS上でTwitterのボットを構築し、再びAzure😲🤖


このボットはミゲルガルシアによってこれの助けを借りて準備されました.

必要条件⚙

  • Azure VM
  • Twitterの開発者アカウント
  • Twitterアプリ認証資格証明
  • すべてのこれらの要件のミゲルによってチェックしてください!

    Tweepyは何ですか🐣?


    Tweepyは、PythonでTwitter APIにアクセスする非常に便利な方法を提供するオープンソースのPythonパッケージです.Tweepyは、TwitterのモデルとAPIエンドポイントを表すクラスとメソッドのセットを含みます.
    データ符号化と復号化
    HTTPリクエスト
    結果ページ
    認証認証
    制限速度
    ストリーム
    あなたがTweepyを使用していなかったならば、あなたはHTTP要求、データ直列化、認証と料金制限をしなければならない低レベル詳細に対処しなければなりません.これは時間がかかるかもしれないし、エラーがちです.代わりに、Tweepyのおかげで、ビルドする機能に集中することができます.

    竜骨Azrecrectifiedボットで進む🤖


    以下はconfigモジュールのソースコードです.この関数は、環境変数から認証資格情報を読み込み、Tweepy APIオブジェクトを作成する関数です.
    # tweepy-bots/bots/config.py
    import tweepy
    import logging
    import os
    
    logger = logging.getLogger()
    
    def create_api():
        consumer_key = os.getenv("CONSUMER_KEY")
        consumer_secret = os.getenv("CONSUMER_SECRET")
        access_token = os.getenv("ACCESS_TOKEN")
        access_token_secret = os.getenv("ACCESS_TOKEN_SECRET")
    
        auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
        auth.set_access_token(access_token, access_token_secret)
        api = tweepy.API(auth, wait_on_rate_limit=True, 
            wait_on_rate_limit_notify=True)
        try:
            api.verify_credentials()
        except Exception as e:
            logger.error("Error creating API", exc_info=True)
            raise e
        logger.info("API created")
        return api
    
    このボットは、アクティブに積極的に特定のキーワードを含むつぶやきを見て、以前導入されたtweepyストリームを使用します.あなたがつぶやき著者ではない場合、各つぶやきの場合は、それは好きなようにつぶやきをマークし、それをretweetされます.
    あなたの興味に関連するコンテンツを使用してアカウントをフィードするには、このボットを使用することができます.
    ボットソースコード
    下に、このボットの完全なソースコードを見ることができます.これは、ストリーム“を使用してつぶやきをフィルタリングするために使用されています.ストリームからの各つぶやきが好まれ、retweetedとしてマークされます
    #!/usr/bin/env python
    # tweepy-bots/bots/favretweet.py
    
    import tweepy
    import logging
    from config import create_api
    import json
    
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger()
    
    class FavRetweetListener(tweepy.StreamListener):
        def __init__(self, api):
            self.api = api
            self.me = api.me()
    
        def on_status(self, tweet):
            logger.info(f"Processing tweet id {tweet.id}")
            if tweet.in_reply_to_status_id is not None or \
                tweet.user.id == self.me.id:
                # This tweet is a reply or I'm its author so, ignore it
                return
            if not tweet.favorited:
                # Mark it as Liked, since we have not done it yet
                try:
                    tweet.favorite()
                except Exception as e:
                    logger.error("Error on fav", exc_info=True)
            if not tweet.retweeted:
                # Retweet, since we have not retweeted it yet
                try:
                    tweet.retweet()
                except Exception as e:
                    logger.error("Error on fav and retweet", exc_info=True)
    
        def on_error(self, status):
            logger.error(status)
    
    def main(keywords):
        api = create_api()
        tweets_listener = FavRetweetListener(api)
        stream = tweepy.Stream(api.auth, tweets_listener)
        stream.filter(track=keywords, languages=["en"])
    
    if __name__ == "__main__":
        main(["#AzureCertified"])
    

    Dockerイメージの作成🐳


    ボットまたはアプリケーションをパッケージ化するには、プロジェクトのルートディレクトリにDockerFileを作成する必要があります.このファイルには、あなたのアプリケーションを含むDockerイメージを作成するために使用される一連の命令が含まれます.
    これはプロジェクト構造がどのように見えるかです.
    tweepy-bots/
    │
    ├── bots/
    │   ├── config.py
    │   └── favretweet.py
    │
    ├── requirements.txt
    └── Dockerfile
    
    次のdockerfileを使用して、fav & retweet botのイメージを作成できます.Pythonイメージをベースイメージとして使用します.私たちはこのイメージを非常に小さくて、python 3を含んでいるので、ベースとして選びました.7とピップ.このdockerfileはボットコードと要件をコピーします.画像にtxtファイル.最後に、PIP 3を使用してイメージ内に依存関係をインストールします.
    FROM python:3.7-alpine
    
    COPY bots/config.py /bots/
    COPY bots/favretweet.py /bots/
    COPY requirements.txt /tmp
    RUN pip3 install -r /tmp/requirements.txt
    
    WORKDIR /bots
    CMD ["python3", "favretweet.py"]
    
    最終的な行は、このイメージが使用されるとき、どんなコマンドを実行しなければならないかについて言います.
    さて、このコマンドを使ってイメージを構築できます.$ docker build . -t fav-retweet-bot最後に、docker runコマンドを使用してイメージをテストし、認証資格を保持している環境変数を渡します.
    $ docker run -it -e CONSUMER_KEY="nMRNy54oWfdfssdfsV9AoNavy0I" \
     -e CONSUMER_SECRET="olAL5VAgZLWNspsdajff757kmsPEwuxpvLCLSR08DMa4O" \
     -e ACCESS_TOKEN="792518593-j7gWSqzQO31ju7Bfdsf7NlZeSENsuADGU9B90r" \
     -e ACCESS_TOKEN_SECRET="fusFsxvP5IglRckJ1I1why6017xMNkzxqBID48Azw0IoT" \
     fav-retweet-bot
    

    Azure VMへの展開


    ステップ1 :エクスポートする


    Dockerイメージを作成したコンピューターから、これらのコマンドを実行してファイルにエクスポートします.後でこのファイルを使用して、Azure VMに画像をアップロードします.$ docker image save fav-retweet-bot:latest -o fav-retweet-bot.tar

    ステップ2:あなたのazure VMにDockerをインストールします


    接続したら、以下のコマンドを実行して、dockerをVMにインストールします.
    AzureUser@TwitterBot:~$ sudo apt-get update
    AzureUser@TwitterBot:~$ sudo apt install docker.io
    AzureUser@TwitterBot:~$ sudo adduser ubuntu docker
    

    ステップ3:あなたのボットのDockerイメージをアップロードしてください


    ローカルコンピュータから、あなたのVMにSCPを使用してボットDockerイメージをアップロードします.これはあなたのインターネット接続に応じていくつかの時間がかかることができますscp fav-retweet-bot.tar [email protected]:/Azure VMに接続し、DockerイメージをロードしますAzureUser@TwitterBot:~$ docker image load -i fav-retweet-bot.tar

    ステップ4:あなたのボットのDockerイメージを実行してください


    ボットを展開する最終段階は、あなたのAzure VMでDockerイメージを実行することです.
    Dockerコマンドを使用してこれを行うことができます.フラグ- dと-- RESTATEを渡すと、常に、あなたがsshセッションから切断するか、VMが再開されるならば、ボットが走るのを続けることを保証します:
    AzureUser@TwitterBot:~$ docker run -d --restart always \
    -e CONSUMER_KEY="nMRNy54oWfdfssdfsV9AoNavy0I" \
     -e CONSUMER_SECRET="olAL5VAgZLWNspsdajff757kmsPEwuxpvLCLSR08DMa4O" \
     -e ACCESS_TOKEN="792518593-j7gWSqzQO31ju7Bfdsf7NlZeSENsuADGU9B90r" \
     -e ACCESS_TOKEN_SECRET="fusFsxvP5IglRckJ1I1why6017xMNkzxqBID48Azw0IoT" \
     fav-retweet-bot
    
    Docker psを使用すると、ボットが動作していることを確認でき、そのコンテナIDを見つけることができます.
    AzureUser@TwitterBot:~$ docker logs f4aefe89a890
    INFO:root:API created
    INFO:root:Processing tweet id 1218244916562785538
    INFO:root:Processing tweet id 1418486946762214918
    
    
    今、あなたがSSHのセッションから切断したり、コンピュータをオフにしても、ボットはあなたのAzure VMで実行し続けます.

    Rishabkumar 7 / アボット


    ツイッターボットは、retweettified tweetsをretweetsと好き好き!


    アボット


    Pythonで書かれて、Azure VMに配備されて、好きで、retweetsしてください.
    ミゲルガルシアによるソースコード.
    View on GitHub