Как я паблик ВКонтакте контентом наполнял

kyoshee
2 min readMay 14, 2022

Как-то мне в голову пришла идея адаптировать контент с одного сабреддита в паблик ВКонтакте. Мне стало лень вручную сохранять/переписывать контент, и я решил оптимизировать это дело с помощью простого скрипта Python, который запускался раз в сутки и создавал отложенные записи в паблике на день вперед.

Photo by Manja Vitolic on Unsplash

Получение контента с Reddit

Используя Reddit API, я собирал получал ссылки на топ посты за последние сутки, из них выбирал 8, сохраняя ссылки на изображения и записывая заголовки

Для выполнения запросов необходимо импортировать библиотеку requests Также импортируем requests.auth для авторизации. Определяем User Agent и получаем токен для работы с сабреддитами

Получение токена для работы с Reddit API

Далее, пользуясь полученным токеном, определяем заголовки для получения ТОП постов из сабреддита за последние сутки

Получение списка ТОП постов из сабреддита за последние сутки

Далее вытаскиваем из полученных данных необходимое: заголовки и ссылки на контент (изображения, которые хранятся в jpg) — до 8 записей

Экспорт (до) 8 записей из полученных данных

Чтобы понять, что вытаскивать из ответа, пришлось досконально изучить ответ из метода get_reddit_posts()

Перевод заголовков

Для перевода заголовков с английского на русский сначала использовалось бесплатное API Google переводчика — со временем оно стало платным. Далее я пользовался API переводчика от Яндкеса, который со временем тоже стал платным. Платить за 8 запросов в сутки (240–248 запросов в месяц) я не наблюдал разумным, поэтому отправился искать бесплатные альтернативы

В итоге я нашел инструмент, который справлялся с переводом, на удивление, лучше, чем переводчики Google и Яндекса. На Rapidapi мне удалось отыскать замечательный API переводчика (который, к слову, обходит переводчик Google) — NLP Translation API. Мои требования укладывались в бесплатный план (300 запросов в месяц), поэтому я с радостью воспользовался инструментом

Итак, отправим заголовки на перевод

Carbon snippet

Постим контент в паблик ВКонтакте

Определим необходимые переменные для работы с API Вконтакте, а также импортируем дополнительные библиотеки, которые помогут нам с обработкой данных

Стоит отметить, что фотографии я загружал в альбом, находящийся в моем профиле (он был приватным, так что с моей страницы ВКонтакте никто не мог увидеть его)

Для загрузки файлов, необходимо получить URL сервера, куда будем загружать данные (он действителен ограниченное время, поэтому каждый раз необходимо получать новую ссылку)

Определим функцию, которая будет загружать файлы по ссылке в альбом

Carbon snippet

Осталось написать функцию, которая будет создавать отложенные записи в паблике с полученным изображением и переведенным заголовком

Carbon snippet

Время от времени отправляем скрипт в сон, чтобы нам не заблокировали доступ к API (на момент написания скрипта это было 3 запроса в секунду)

Итог

Итогом всего этого стал альбом на ~9000 изображений и примерно столько же постов в паблике
Паблик
Альбом

Спасибо за прочтение!

--

--