Вы когда-нибудь хотели сделать карьеру в области веб-разработки, машинного обучения, интеллектуального анализа данных или просто приложений и сценариев? Тогда Python — это правильный язык для изучения! В последние годы Python стал одним из самых популярных языков программирования в мире благодаря своей гибкости и легкому для изучения синтаксису. В этой статье мы разработаем простой скрипт Python, который позволит нам публиковать и получать данные Reddit.

Потребность в ИТ-специалистах постоянно растет, будь то разработка программного обеспечения, веб-разработка, кибербезопасность, сетевое администрирование — список практически бесконечен. Откройте для себя материалы от Vinsloev Academy, которые соответствуют вашим личным целям обучения в области ИТ. — https://vinsloev.com/#/discoveryCenter

Код, написанный в этой статье, можно использовать в качестве первого компонента бота Reddit, однако полноценный бот Reddit выходит за рамки этой статьи. Если у вас возникли проблемы при написании этого кода, я сделал видеоверсию, охватывающую представленный здесь контент: https://youtu.be/JsWlJeeEdzY

Если вы новичок в Python или хотите глубже понять синтаксис и код, представленные в этой статье, я подготовил полный курс по Python, который находится в свободном доступе на YouTube:

Итак, без дальнейших вступлений, давайте начнем. Чтобы следующий код работал, вам необходимо установить/импортировать пакет Praw, так как мы будем использовать его в качестве основы для интеграции с Reddit.

Чтобы узнать больше историй от Vinsloev Academy, зарегистрируйтесь в качестве члена и поддержите нашу работу: https://vinsloev.medium.com/membership

Затем нам нужно создать личное приложение на Reddit, используя нашу собственную учетную запись Reddit, чтобы получить действительный секретный ключ клиента. Личное приложение можно создать на Reddit по следующей ссылке:

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

При создании приложения вы выбираете Веб-приложение с URL-адресом перенаправления, установленным на http://localhosy:8080, как показано на изображении ниже.

Подключение Reddit

После этого вы получите клиентский ключ, который сможете использовать для интеграции с Reddit в свой скрипт Python. Мы создадим метод redditConnect(), используя следующий код Python. Помните, что если вы хотите опубликовать сообщение на Reddit, вам необходимо указать имя пользователя и пароль. Используя client_id и client_secrect, вы можете читать только с Reddit.

def redditConnect():
    reddit = praw.Reddit(
        client_id="Your client id",
        client_secret="Your client secured",
        user_agent="my user agent",
        username="",
        password="",
    )
    print(reddit.read_only)
    return reddit

Если вы не укажете имя пользователя и пароль, redditConnect() должен вывести True в консоли, используя print(reddit.read_only).

Читать из субреддита

Далее мы создадим метод, используемый для печати сообщения из данного субреддита.

def printPostFromSubreddit(redditCon, subreddit):
    for submission in redditCon.subreddit(subreddit).hot(limit=10):
        print(submission.title)

Приведенный выше метод printPostFromSubreddit() принимает два входа: соединение с Reddit, предоставляемое нашим методом redditConnection(), и субреддит, предоставляемый в виде строки.

При вызове он напечатает Title первых 10 сообщений в категории «Горячие» субреддита.

Опубликовать в субреддите

Последний метод, который мы создадим, — это тот, который позволяет нам публиковать сообщения в субреддите. Этот метод называется postToReddit и принимает 4 входных параметра. Требуется подключение к Reddit (вывод redditConnection()), действительный субреддит для публикации, заголовок публикации и URL-адрес.

def postToReddit(redditCon, subreddit, title, url):
    redditCon.validate_on_submit = 1
    subreddit = redditCon.subreddit(subreddit)
    subreddit.submit(title, url=url)
    print("Post submitted")

При правильном вводе метод создаст публикацию и выведет сообщение отправлено на консоль. При разработке этого скрипта вы можете использовать сабреддит r/test, так как в этом субреддите нет правил отправки и вы можете протестировать свой скрипт без блокировки или удаления ваших сообщений.