Делаем форк репозитория и клонируем его себе на компьютер
Прочитайте документацию к этому процессу или воспользуйтесь примером ниже
python3 -m venv /path/to/new/virtual/environment
source /path/to/new/virtual/environment/bin/activate # если у вас линуксы
C:\path\to\new\virtual\environment\Scrpits\activate.bat # если шиндовсpip install -r requirements.txtВ проекте используем библиотеку praw . С документацией можно ознакомиться тут, нам понадобится всего две-три команды.
Нужно иметь аккаунт на reddit.com, в настройках приложений своего профиля создать новое приложение, записать:
- название приложения
user_agent - секретный ключ
client_secret - ID приложения
client_id
Или попросить существующие у @Timur M
Все полученные ключи надо записать в файл praw.ini. Мы знаем, что хранить ключи в репозитории — в высшей степени плохо, поэтому особо ретивые могут запихать их в переменные окружения, если ознакомятся с документацией.
Сделать себе API ключ, пользуясь инструкцией, но лучше попросить готовые (проще). Настройки задаются в том же praw.ini или в переменных окружения, тут проще.
Написать функцию, которая:
- отправляет сетевой запрос на чтение бинарного кода изображения по ссылке из поста
- вынимает из ссылки имя файла
- возвращает бинарник и имя файла. предлагаем использовать оператор
yield, о котором можно почитать тут и тут (на русском)
Основной код до момента деплоя на сервер предлагаем писать под конструкцией
if __name__ == "__main__":
# here comes the codeтут хорошее объяснение, почему.
Для наших скромных нужд требуется:
- получить доступ к сабреддиту на ваш вкус (мы любим /r/ProgrammerHumor)
- выгрузить список самых горячих постов (или самых последних)
- перемешать список или взять случайный его элемент
- убедиться, что в этом посте есть ссылка на изображение (используйте регулярные выражения)
- если звезды совпали — создаем словарь в которм ключ - имя файла, а значение - бинарное содержимое
- загружаем изображение в вк, используя функцию
photos = vk.Photo.upload_wall_photos_for_groups(group_id, attachments.items())(сами в шоке от названия функции) - создаем пост на стене функцией
wall_post()
Когда вручную все работает, наступает время автоматизации!
Для этого воспользуемся библиотекой APScheduler. Перенеси код из секции if __name__ == __main__ в функцию post_to_vk(), лишнее удали. Разкомментируй декоратор, определяющий запуск по таймеру типа cron. Настрой время, в которое ты бы хотел делать новые посты.
Для запуска приложения на Heroku понадобится несколько файлов:
requirements.txt— зависимости проекта (уже входят в комплект)Procfile— описание запускаемых процессовruntime.txt— задает версию Python на сервере
Версию Python будем использовать самую свежую, python-3.6.3. В Procfile пишем:
clock: python main.py
Это создает процесс clock который будет выполнять команду python main.py
Заливаем наш код в репозиторий, должна начаться автоматическая сборка проекта