Бесплатный автопостинг ВКонтакте на Python

Я, как любитель создавать говнопаблики, раньше использовал Sociate для бесплатного автопостинга во вконтакте. Там была (и есть на момент написания этой статьи) возможность массово загружать фотографии: Одна картинка = один пост. Довольно удобно.

Но, не так давно на сайте появилась такая штука:

Естественно, платить за наполнение своих говнопабликов — не комильфо.

Хотелось бы отметить: я не против платить за автопостинг хорошего контента. Для вконтакте (и не только для него) есть такая крутая штука — smmbox — позволяет найти качественный контент и публиковать его в нужное время. Ну и редакторов можно и нужно нанимать если у вас качественный проект.

Но, если вас интересуют только посты в виде картинок, то, возможно, Вам пригодится мой скрипт автопостинга фотографий во вконтакте: скачать.

Принцип работы:

  1. Покупаете VPS-сервер
  2. Подключаетесь к нему через SSH
  3. Закидываете скрипт и фотки в папку Например: /home/vkposter/
  4. Настраиваете «расписание» с помощью cron
  5. В указанное время скрипт постит случайную фотографию, после чего удаляет её
  6. ???
  7. PROFIT

Ответы на вопросы

Ты же говорил про бесплатный автопостинг? Надо же VPS покупать!

Верно, VPS лучше купить. Причем, я советую покупать VPS расположенный в РФ. Если для Вас 90р/месяц — это деньги, то можете использовать и бесплатный VPS от Amazon (на год). Но если его забанит РосКомПозор (а РКН уже банил амазоновские сервера), то надо будет снова искать впс, настраивать и т.д. Купить проще.

Где взять сервер и какой именно брать?

Подойдет самый дешевый ВПС с Линуксом (CentOS, Debian, Ubuntu). У firstvds есть тариф за 90р./месяц. Его должно хватить. Вот по этой ссылке вам еще и скидка 25% на первый месяц будет. На всякий случай — промокод для firstvds.ru: 648642634

Как подключиться к серверу?

Подключаемся к серверу с помощью Putty или другого ssh-клиента. IP-адрес и логин/пароль я надеюсь вы догадаетесь где взять.

Как настроить скрипт?

  1. Авторизуемся на сайте вконтакте
  2. Идем на vkhost.github.io — нажимаем на Snapster для iPhone (например)
  3. Из адресной строки берем токен (выделен жирным): https://api.vk.com/blank.html#access_token=3lhe7abfb1671ba3f3e4333814eabee7a39e4dbbca90e71f6595433dda99a926a88a76e181ea0032d50c&expires_in=0&user_id=777
  4. В переменную vk_key вписываем полученный токен. Кавычки не забываем оставить.
  5. В переменную group_id вставляем цифровой id своего сообщества.

Куда запихать скрипт?

Если Вы не знакомы с unix-подобными операционными системами, то поясню:  ниже будут указаны команды, которые надо вводить. Одна команда на одну строку. После каждой строки жмем Enter. Если не после ввода команды ничего не появилось на экране, то это не значит что ничего не произошло. Все ок.

Создаем папку в домашней директории:

cd /home/
mkdir vkposting

Создаем в этой папке файл script.py:

cd /home/vkposting/
touch script.py

Открываем этот файл для редактирования:

nano script.py

Наш пустой файл откроется в текстовом редакторе nano. Осталось только вставить содержимое скрипта и сохраниться. Ctrl+X -> Y -> Enter.

Выставляем права на запуск:

chmod +x script.py

Как и куда заливать фотографии

Как делал я:

  1. Все фотографии запаковал в zip-архив
  2. Архив залил к себе на хостинг (на котором этот блог)
  3. С помощью wget скачал архив на свой VPS с хостинга. Распаковал в папку со скриптом.

Как проверить работоспособность скрипта

Просто запускаем скрипт:

python3 /home/vkposting/script.py

Если пост появился в нашем сообществе, то все ок.

Как настроить расписание?

Будем использовать встроенный планировщик заданий — крон. Лучше вам загуглить «как настроить cron», чтобы понять принцип его работы.

Для начала мы спасем нервы и мозг от текстового редактора vim. Не имею ничего против него, но для наших целей nano подойдет лучше:

export EDITOR=nano
crontab -e

Пример моего содержимого:

17 6 * * * sudo python3 /home/vkposting/script.py > /home/vkposting/log.txt
21 10 * * * sudo python3 /home/vkposting/script.py > /home/vkposting/log.txt
33 14 * * * sudo python3 /home/vkposting/script.py > /home/vkposting/log.txt
15 18 * * * sudo python3 /home/vkposting/script.py > /home/vkposting/log.txt
50 21 * * * sudo python3 /home/vkposting/script.py > /home/vkposting/log.txt

Каждая строчка отвечает за каждый отдельный  запуск (опубликованный пост).

  • Первое число: минута запуска
  • Второе число: час запуска.
  • Звездочки значат что скрипт запускается каждый день, каждый день недели, каждый месяц.

Будут еще вопросы — пишите в комментариях.

12 комментариев к “Бесплатный автопостинг ВКонтакте на Python”

  1. Я так понимаю можно использовать свой домашний ПК на убунте, Тоже ведь должно работать?
    Можно ли добавить свой текст к картинке, например хештег?
    Если бы еще было такое решение для телеграмм, вообще было бы идеально

    1. Для добавления текста нужно будет дополнить строку запроса (строчка №38) параметром message:
      https://api.vk.com/method/wall.post?owner_id=АЙДИПАБЛИКА&from_group=1&message=ТЕКСТ&attachments=ФОТО&v=5.28&access_token=ТОКЕН

      Подробнее тут: https://vk.com/dev/wall.post

      Хештеги у меня добавить не получилось (видимо надо тщательней гуглить) — проблема в символе решетки. Но мне это не особо нужно было, поэтому забил.

      Работать скрипт должен на всех ОС (в т.ч. MacOS и Windows).
      У меня на Debian пашет — следовательно и на Ubuntu должно.

      С телеграмом я вообще не заморачивался — есть библиотека telebot — с ее помощью отправка сообщения в канал реализуется в пару строк
      (для начала надо создать своего телеграм-бота с помощью бота @BotFather, сделать своего бота администратором):
      import telebot
      TOKEN = ‘тут токен полученный у @BotFather’
      bot = telebot.TeleBot(«TOKEN»)
      photo = open(filename, ‘rb’)
      bot.send_photo(CHANNEL, photo)
      photo.close()

      P.S.: да, я в курсе что лучше использовать with, но пусть будет так.

    1. Дополнительно нужно ставить только библиотеку requests:
      sudo pip3 install requests
      или же так:
      sudo pip install requests

  2. Уважаемый создатель данной статьи, пожалуйста, напиши мне на почту. Есть несколько вопросов.

  3. А можно ли сделать так, что бы в лог файл события дозаписывались, а не перезаписывались?

    1. Можно. Для этого нужно немного подправить cron-задания.
      Вместо символа > использовать символ >>
      Пример:
      17 6 * * * sudo python3 /home/vkposting/script.py >> /home/vkposting/log.txt
      21 10 * * * sudo python3 /home/vkposting/script.py >> /home/vkposting/log.txt
      33 14 * * * sudo python3 /home/vkposting/script.py >> /home/vkposting/log.txt
      15 18 * * * sudo python3 /home/vkposting/script.py >> /home/vkposting/log.txt
      50 21 * * * sudo python3 /home/vkposting/script.py >> /home/vkposting/log.txt

  4. Уважаемый автор статьи, можешь пояснить что за ошибка?

    C:\Users\Admin\Desktop\VK_autoposting>script.py
    Traceback (most recent call last):
    File «C:\Users\Admin\Desktop\VK_autoposting\script.py», line 40, in
    resp = requests.get(url).json()[‘response’]
    KeyError: ‘response’

  5. Сергей

    Traceback (most recent call last):
    File «script.py», line 21, in
    resp = requests.get(url).json()[‘response’]
    KeyError: ‘response’

    Помогите!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *