Reddit est une agrégation de nouvelles sociales, une classification de contenu Web et un site Web de discussion. C’est une cible populaire pour les bots en raison de sa large base d’utilisateurs et de sa nature ouverte. Les robots sont utilisés à diverses fins, notamment pour répondre automatiquement à des questions simples.

Dans ce blog, je vais vous montrer comment créer un bot Reddit en python. Ce bot Reddit extraira tous les commentaires d’un subreddit et y répondra avec quelque chose que nous définirons. Ceci est un bot Reddit très simple et est juste pour vous aider à créer un bot Reddit en utilisant python. Je vais également vous apprendre à utiliser PRAW – Python Reddit API wrapper dans votre code pour vous faciliter la vie.

Pré-configuration :

Droits:

Praw est une bibliothèque de code open source pour Python. Il fournit une API pour permettre aux utilisateurs d’interagir avec Reddit dans leurs applications Python. Il est conçu pour être utilisé avec le système d’autorisation OAuth de Reddit et vise à faciliter l’utilisation d’OAuth. Praw est conçu pour fonctionner de manière transparente avec d’autres applications afin qu’elles puissent partager des informations et des fonctionnalités.

Pour installer Praw, utilisez la commande suivante dans votre termianl d’invite de commande.

pip install praw

Configuration de l’API Reddit :

pour créer un bot Reddit, nous allons utiliser l’API Reddit et il a un wrapper construit pour python dans cette API

Étape 1:

Allez sur ce lien suivant et appuyez sur

https://www.reddit.com/prefs/apps

Vous êtes développeur? créer une application…

Étape 2:

Vous devrez remplir le formulaire suivant puis appuyer sur créer une application

Étape 3:

Vous pouvez maintenant voir que votre application est créée et vous devrez copier deux choses à partir d’ici pour les utiliser dans notre code. Il est unique pour tout le monde, vous devez donc utiliser le vôtre :

  1. Identité du client
  2. Client_secret

Code:

Créez une instance Reddit :

Dépendance à l’importation

import praw
reddit = praw.Reddit(
    client_id="Q3dfveBJYo_4FTwIdlKKmQ",
    client_secret="jUAAzmmqe9uVxOBqlJTUoZRxsAvAow",
    user_agent="<1st_bot>",
)
print(reddit.read_only)

Ici, nous avons fourni trois informations :

  1. Identifiant client que nous avons obtenu plus tôt de l’API Reddit
  2. Et dans le dernier, nous avons l’agent utilisateur, ici vous devez utiliser quelque chose d’unique que personne n’a utilisé auparavant.

Et après cela, vous pouvez vérifier, votre API Reddit est connectée au fonctionnement correctement ou non

Sortir:

Prenons maintenant un subreddit de Reddit, pour cela nous appelons la variable subreddit

# get subreddit
subreddit = reddit.subreddit("anime")
print(subreddit.display_name)

Sortir:

Obtenons le message récent du subreddit :

# you can get whatever amount of the post you want
for post in subreddit.hot(limit=10):
    print(post.title)

Sortir:

Obtenons les commentaires sur les messages :

import praw

reddit = praw.Reddit(
    client_id="Q3dfveBJYo_4FTwIdlKKmQ",
    client_secret="jUAAzmmqe9uVxOBqlJTUoZRxsAvAow",
    user_agent="<1st_bot>",
)

# get subreddit
subreddit = reddit.subreddit("anime")
print(subreddit.display_name)

# you can get whatever amount of the post you want
for submission in subreddit.hot(limit=10):
    print(submission.title)

    # getting the comment of the post
    for comment in submission.comments:
        print(comment)

Sortir:

Comme vous pouvez le voir en ce moment, il saisit un tas de choses aléatoires que nous ne comprenons pas parce que nous imprimons des données d’objet de commentaire.

# you can get whatever amount of the post you want
for submission in subreddit.hot(limit=10):
    print(submission.title)

    # getting the comment of the post
    for comment in submission.comments:
        # here we are defining that if the comment had a body then only print the comment
        if hasattr(comment, "body"):
            print(comment.body)

Sortir:

Maintenant, il nous donne des commentaires sur le post. Et maintenant, passons au commentaire qui contient le mot triste.

# you can get whatever amount of the post you want
for submission in subreddit.hot(limit=10):

    # getting the comment of the post
    for comment in submission.comments:
        # here we are defining that if the comment had a body then only print the comment
        if hasattr(comment, "body"):
            # converting the comment is lower case
            comment_lower = comment.body.lower()
            if " sad " in comment_lower:
                print("-----------")
                print(comment.body)

Ici, nous convertissons tous les mots d’un commentaire en minuscules afin qu’il récupère également tous les commentaires contenant des majuscules tristes. Ensuite, utilisez l’instruction if pour nous donner un commentaire qui n’avait qu’un mot triste dans la phrase.

Sortir:

Vous pouvez voir que chaque commentaire a un mot triste.

créer un bot :

import praw
import random
import time
reddit = praw.Reddit(
    client_id="Q3dfveBJYo_4FTwIdlKKmQ",
    client_secret="jUAAzmmqe9uVxOBqlJTUoZRxsAvAow",
    user_agent="<1st_bot>",
    username='pythonsample',
    password='Python@123'
)

# get subreddit
subreddit = reddit.subreddit("anime")

sad_quotes = [
"Every one of us must do what is in our powers! If we are going to die anyway, then it is better to die fighting than to do nothing!- Sakura Haruno",
"A real ninja is one who endures no matter what gets thrown at him ... All you do need is the guts to never give up. Jiraiya",
"Never underestimate your opponent, no matter how small they may seem.- Shino Aburame"
"Hard work is worthless for those that do not believe in themselves.- Naruto Uzumaki"
"Power is not will, it is the phenomenon of physically making things happen.- Madara Uchiha"
""
]


# you can get whatever amount of the post you want
for submission in subreddit.hot(limit=10):
    # print(submission.title)

    # getting the comment of the post
    for comment in submission.comments:
        # here we are defining that if the comment had a body then only print the comment
        if hasattr(comment, "body"):
            # converting the comment is lower case
            comment_lower = comment.body.lower()
            if " sad " in comment_lower:
                print("-----------")
                print(comment.body)
                # choosing random quote in the list
                random_index = random.randint(0, len(sad_quotes) - 1)
                comment.reply(sad_quotes[random_index])
                # this allows your bot to sleep for 700 seconds
                time.sleep(700)

Ici, nous avons ajouté deux nouvelles bibliothèques, la première est aléatoire pour choisir la citation aléatoire de notre liste et la seconde est le temps car nous devons répondre au commentaire est un temps car Reddit ne nous permet pas de publier un tas de commentaires à la en même temps. Ensuite, nous avons ajouté l’identifiant et le mot de passe du compte Reddit. Et c’est tout.

Remarque : si vous essayez de faire quelque chose qui n’est pas dans la politique Reddit, cela bannira votre bot ou même votre compte Reddit

Sortir:

Conclusion:

Dans cet article de blog, nous avons appris comment créer un bot Reddit à l’aide du framework Python populaire appelé PRAW. Nous avons appris comment accéder à un compte utilisateur Reddit, comment trouver leurs meilleurs messages et leurs commentaires à partir d’un Subreddit, et aussi comment répondre à tous les commentaires avec un processus automatisé. Ce n’est pas considéré comme un robot de haut niveau, mais vous devez commencer quelque part, n’est-ce pas ? Si vous avez des questions sur cet article de blog, veuillez laisser un commentaire ci-dessous ou contactez-nous à tout moment.