Мы рассмотрим документацию API и посмотрим, что мы можем с ней сделать и как создать бота Reddit. Python предоставляет модуль синтаксического анализатора для работы с API Reddit под названием Praw. Во-первых, установите последнюю версию Python, если у вас ее нет, вам понадобится Reddit API. Перейдите по этому URL-адресу https://www.reddit.com/prefs/apps/ и выберите Создать приложение.
Дайте ему имя. Вы должны выбрать URI перенаправления (по какой-то глупой причине, глупой, потому что я создаю бота, а не веб-приложение, но что угодно). Я выбрал http://127.0.0.1
Теперь вы получите client_id (красное поле внизу) и секрет (синее поле внизу). Запишите это, но держите в секрете. Наконец, установите приведенный ниже модуль в python, просто скопируйте приведенную ниже команду и вставьте ее в командную строку, модуль python Pip загрузит и установит его для вас.
pip install praw
Кодирование
Создайте py-файл с любым именем и откройте его в редакторе кода. На первом этапе мы инициализируем данные аутентификации моей учетной записи Reddit.
В строке 2 я импортирую модуль Praw, а в строках с 5 по 9 мы добавим информацию о нашем пользователе и API. client_id
будет идентификатором, который мы получим во время создания API, а client_secret
— это ключ API, который вы получили при создании своего приложения API. Имя пользователя и пароль — это данные для входа в вашу учетную запись Reddit. Строка 12 показывает, что мы передаем эти данные в качестве параметра в класс praw.Reddit()
, из которого он войдет в вашу учетную запись Reddit и получит доступ к своей базе данных. Мы успешно настроили нашу аутентификацию, наша следующая цель — посмотреть, что мы можем сделать с API.
Доступ к сабреддиту:
В Reddit есть несколько сообществ, известных как сабреддиты. Мы можем получить экземпляр субреддита, используя метод subreddit
. Чтобы найти самую верхнюю отправку в сабреддите с помощью API, мы можем использовать subreddit.top()
метод. В сабреддите есть несколько отправленных сообщений, и мы можем перебирать каждую отправку, чтобы использовать этот метод. Reddit API предоставляет нам следующую команду для доступа к отправке.
1: растет
2: новый
3: горячий
4: позолоченный
5:спорный
6: вверху
В строке 2 кода мы определили имя сабреддита, а в строке 21 нам пришлось использовать python for loop
для перебора представлений, в условиях цикла мы использовали submission.top()
, передав параметр limit, это сообщит API, сколько лучшие материалы, которые нам нужны. Я вручную добавил 1, но вы можете добавить любое число, это может быть 3, 5 или обычно 10. В следующих строках мы использовали submission.title
, submission.url
, submission.Id
, чтобы получить детали каждой отправки в цикле, который мы получили, также будет отображаться submission.score
плюсы за подачу.
Комментарии:
В этом разделе мы рассмотрим документацию по API, чтобы узнать, как мы получаем доступ к комментариям к сообщению, имени их автора и т. д.
В строке 17 мы использовали get_subreddit(), передав имя сабреддита, а в следующей строке с помощью get_comment() удаляем все комментарии к сообщению сабреддита. В строках с 19 по 21 мы используем цикл for для повторения наших комментариев и отображения содержимого и его идентификатора. если вы хотите удалить определенное количество комментариев, просто добавьте limit=10 или любое другое число в get_comment().
Со строки 19 по 20 мы использовали функцию submission
, передав URL сообщения Reddit в качестве параметра, а в следующей строке мы вызываем reply()
функцию, которая принимает текстовый параметр, это может быть комментарий, который вы хотите опубликовать в Пост на Реддите. Если вы выполните код и проверите URL-адрес публикации, вы увидите, что комментарий был успешно опубликован.
Теперь мы получим информацию о конкретном комментарии с помощью API. Первое, что нам нужно сделать, это получить идентификатор комментария. Если вы видели код, я получил идентификатор комментария сообщения, который равен fvib7aw
Inline 22, мы использовали reddit.comment()
by передавая comment_id в качестве параметра в функции класса praw
, а затем в строках с 25 по 28 мы получаем информацию о комментарии, например comment.body
для получения текста комментария, comment.permalink
— это URL-адрес комментария, comment.score
получит общее количество голосов комментария, включая голоса за и против, comment.author
будет отображать имя автора комментария.
Голосование за и против:
Голосование против конкретного комментария можно сделать, получив comment_id и передав его в reddit.comment()
, а затем вызовите comment.downvote()
функцию, которая понизит оценку комментария, проверьте вывод, чтобы увидеть, как это работает, и то же самое в случае голосования, мы используем comment.upvote()
.
Вывод:
Score before downvoting: 25 Score after downvoting: 24
Представление на Reddit:
Хорошо Итак, мы увидели, как мы получаем самую верхнюю и последнюю публикацию в сабреддите и получаем комментарии, отвечаем на комментарий, голосуем за и против комментария в сабреддите, теперь мы узнаем, как отправить заявку на Reddit с помощью их API.
Как вы видели в коде, мы предоставили наш логин и данные API модулю Praw, затем в строках с 17 по 19 мы определяем переменные post_title и pos_body, содержащие заголовок и содержимое сообщения, а в следующей строке мы выбираем субреддит и используя функцию submit(), передав заголовок и тело в качестве параметра. Это отправит нашу публикацию в выбранный нами сабреддит.
Вывод:
Что ж, мы рассмотрели большинство основных вещей, которые может сделать Reddit, но вы можете найти гораздо больше в документации, как начать комментарий и как найти текст в комментарии и т. д., вы можете узнать больше об API, посещение этого documentation URL
. Вы изучили все основы, необходимые для создания бота. Я надеюсь, что эта статья поможет вам в будущем, и не стесняйтесь поделиться своим ответом.