Créez des tweets ordinaires comme une flotte avec AWS Lambda et Python

Qu'est-ce qu'une flotte?

Fleet offre la possibilité de profiter de Twitter et de communiquer sur Twitter d'une manière sans précédent. Le contenu partagé sur Fleet disparaît au bout de 24 heures, vous pouvez donc partager vos pensées et vos sentiments de dépression. Vous pouvez partager vos pensées personnelles temporaires avec vos abonnés sans aucune réaction des autres utilisateurs généraux. Les créateurs de flotte peuvent cliquer sur leur flotte et appuyer sur le texte lu en bas pour voir qui a consulté leur flotte, y compris les comptes qui gardent les tweets privés.

--Il disparaît après 24 heures

Inconvénients de la flotte

--Il n'y a pas de fonction de commentaire et vous serez averti par DM

Comment flotter les tweets?

--Clarifier "les tweets à quitter" et "les tweets à disparaître" --Conditions pour que les tweets soient laissés --Il y a un Fav --Il y a RT --Il y a une réponse --Conditions pour effacer les tweets

Conditions préalables

Construire

Structure des dossiers

DeleteNoRtFavReplyTweets
|   lambda.yml
|   README.md
|
\---code
        DeleteNoRtFavReplyTweets.py

Cloudformation

AAWSTemplateFormatVersion: '2010-09-09'
# Twitter API Key
Parameters:
  ConsumerKey:
    Type: String
    NoEcho: true
  ConsumerSecret:
    Type: String
    NoEcho: true
  AccessKey:
    Type: String
    NoEcho: true
  AccessSecret:
    Type: String
    NoEcho: true
Resources:
# Lambda
  Lambda:
    Type: 'AWS::Lambda::Function'
    Properties:
      Code: code
      Environment: 
        Variables:
          ConsumerKeyVar: !Ref ConsumerKey
          ConsumerSecretVar: !Ref ConsumerSecret
          AccessKeyVar: !Ref AccessKey
          AccessSecretVar: !Ref AccessSecret
      Description: NoRtFavReplyTweetDelete
      FunctionName: NoRtFavReplyTweetDelete
      Handler: noRtFavTweetDelete.lambda_handler
      MemorySize: 128
      Role: !Sub 
        - arn:aws:iam::${AWS::AccountId}:role/${Domain}
        -  { Domain: !Ref LambdaRole }
      Runtime: python3.8
      Timeout: 180
  # CloudWatchEvents Rule
  Rule:
    Type: 'AWS::Events::Rule'
    Properties:
      Description: NoRtFavReplyTweetDeleteRule
      Name: NoRtFavReplyTweetDeleteRule
      ScheduleExpression: 'cron(0 17 * * ? *)' #2 heures du soir
      State: ENABLED
      Targets:
        - Arn: !GetAtt Lambda.Arn
          Id: lambda
  # Lambda IAM Role
  LambdaRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: deleteTweetRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
  # CloudWatchEvents Lambda excute enable
  LambdaEvent:
    Type: 'AWS::Lambda::Permission'
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName: !Ref Lambda
      Principal: 'events.amazonaws.com'
      SourceArn: !GetAtt Rule.Arn

Python

import tweepy
import os

# API Key
consumer_key = os.environ['ConsumerKeyVar']
consumer_secret = os.environ['ConsumerSecretVar']
access_key = os.environ['AccessKeyVar']
access_secret = os.environ['AccessSecretVar']

# Tweepy Auth
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth, wait_on_rate_limit = True)

noFavRtTweet = []
mentionTweet = []
noDeleteTweet = []

def lambda_handler(event, context):
    # No Favorite No RT Tweet
    print("==========No Favorite No RT Tweet==========")
    for tweet in tweepy.Cursor(api.user_timeline,exclude_replies = True).items():
        if tweet.favorite_count == 0 and tweet.retweet_count == 0: #Changer en fonction du nombre de favs
            print(tweet.id,tweet.created_at,tweet.text.replace('\n',''))
            noFavRtTweet.append(tweet.id)

    # Reply Tweet
    print("==========Reply Tweet==========")
    for mentions in tweepy.Cursor(api.mentions_timeline).items():
        print(mentions.id,mentions.created_at,mentions.text.replace('\n',''))
        mentionTweet.append(mentions.in_reply_to_status_id)

    print("==========No Favorite No RT Reply Tweet==========")
    # No Favorite No RT Reply Tweet
    for tweet in noFavRtTweet:
        for reptw in mentionTweet:
            if tweet == reptw:
                print(api.get_status(tweet).id,api.get_status(tweet).created_at,api.get_status(tweet).text.replace('\n',''))
                noDeleteTweet.append(tweet)

    # Extraction Delete Tweet
    print("==========Extraction Delete tweet==========")
    perfectList = set(noFavRtTweet) ^ set(noDeleteTweet)
    print(list(perfectList))

    # Delete Tweet
    print("==========delete tweet==========")
    for deltw in perfectList:
        print(api.get_status(deltw).id,api.get_status(deltw).created_at,api.get_status(deltw).text)
        api.destroy_status(deltw)

Déployer sur AWS

--Tweepy est un module externe, il est donc inclus.

pip install tweepy --target ./code

--Emballage et transfert vers S3

aws cloudformation package --s3-bucket $YourBucketName `
--template-file lambda.yml `
--output-template-file lambda-packaged.yml
aws cloudformation deploy `
--template-file lambda-packaged.yml `
--stack-name $YourStackName `
--parameter-overrides AccessSecret=$YourAccessSecret `
ConsumerKey=$YourConsumerKey ` 
ConsumerSecret=$YourConsumerSecret ` 
AccessKey=$YourAccessKey `
--capabilities CAPABILITY_NAMED_IAM

--Vérifier depuis le mannequin

Version complète sur GitHub

https://github.com/trysaildaisuki/DeleteNoReactionReply

vérité

Recommended Posts

Créez des tweets ordinaires comme une flotte avec AWS Lambda et Python
Pages HTML dynamiques créées avec AWS Lambda et Python
Notifier HipChat avec AWS Lambda (Python)
Surveillance du site et notification d'alerte avec AWS Lambda + Python + Slack
[AWS] Utilisation de fichiers ini avec Lambda [Python]
[AWS] Associez Lambda et S3 à boto3
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Connectez-vous à s3 avec AWS Lambda Python
Touchez AWS avec Serverless Framework et Python
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Essayez de créer foldl et foldr avec Python: lambda. Aussi mesure du temps
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
LINE BOT avec Python + AWS Lambda + API Gateway
Application sans serveur avec AWS SAM! (APIGATEWAY + Lambda (Python))
Version Amazon API Gateway et AWS Lambda Python
[# 1] Créez Minecraft avec Python. ~ Recherche préliminaire et conception ~
Créer des couches Lambda avec Lambda
Collecter des tweets avec Python
Publier des tweets avec python
[# 2] Créez Minecraft avec Python. ~ Dessin du modèle et implémentation du lecteur ~
Essayez de créer un jeu simple avec Python 3 et iPhone
Résolvez des équations différentielles normales simultanées avec Python et SymPy.
[AWS] Faites-vous des amis avec l'entrée JSON de Lambda (version Python)
Déployer la fonction Python 3 avec Serverless Framework sur AWS Lambda
Créer une couche pour AWS Lambda Python dans Docker
Je veux AWS Lambda avec Python sur Mac!
Chiffrement et déchiffrement avec Python
Exploitez TwitterBot avec Lambda, Python
Python et matériel - Utilisation de RS232C avec Python -
[Python] Scraping dans AWS Lambda
Créez Puyopuyo AI avec Python
Faites une loterie avec Python
PyTorch avec AWS Lambda [importation Lambda]
python avec pyenv et venv
Rechercher des tweets Twitter avec Python
Fonctionne avec Python et R
Associez Python Enum à une fonction pour la rendre appelable
[Python] Transformez les ressources AWS simulées avec Moto en appareils Pytest
Créez rapidement une API avec Python, lambda et API Gateway à l'aide d'AWS SAM
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Créez facilement une infrastructure réseau et EC2 avec AWS CDK Python
Briller la vie avec Python et OpenCV
Créez un bot LINE avec Python + heroku
Robot fonctionnant avec Arduino et python
AWS Lambda + Twilio permet aux rappels de Google Agenda d'appeler avec notification vocale
Réseau neuronal avec OpenCV 3 et Python 3
Récapitulatif si vous utilisez AWS Lambda (Python)
Modulation et démodulation AM avec python
Créer Apache Log CSV avec Python
Scraping avec Node, Ruby et Python
[AWS] Créer une API avec API Gateway + Lambda
Faisons une interface graphique avec python.
Grattage avec Python, Selenium et Chromedriver
[Apprentissage automatique] Essayez d'exécuter Spark MLlib avec Python et faites des recommandations
Extraction de texte avec AWS Textract (Python3.6)
Grattage avec Python et belle soupe