Автоматический постинг на стену VK (с фото)

У меня есть своя группа вконтакте, и в тот момент когда информации для публикации стало много, а времени на это дело мало, я решил как то оптимизировать и автоматизировать процесс.
У vk есть отличное api, изучив которое я понял что можно будет сделать абсолютно все, и недолго думая, я приступил к написанию автоматической публикации постов.


Для начала я решил сделать удобный класс для работы с api

Для особо нетерпеливых – github

Тут, думаю, не требуются какие либо описания – все предельно просто и ясно

 

class vk {
    private $token;
    private $count = -1;
    private static $class = null;

    public static function create($token){
        if(!self::$class){
            self::$class = new vk($token);
        }
        return self::$class;
    }

// синглтон
    private function __clone(){}
    private function __construct($token){
        $this->token = $token;
    }

    function get($method, array $data){
// ограничение контакта - не больше 3х запросов в секунду
        $this->count ++;
        if($this->count >= 3){
            $this->count = 0;
            sleep(1);
        }
        $params = array();
        foreach($data as $name => $val){
            $params[$name] = $val;
        }  
        $params['access_token'] = $this->token;
        $params['v'] = '3.0';
        $json = file_get_contents('https://api.vk.com/method/' . $method . '?' . http_build_query($params));
        return json_decode($json);
    }
}

Так как контакт разрешает не больше 3х запросов к api в секунду я сделал в методе get проверку, а для того чтобы во всех частях кода был один экземпляр класса я сделал класс vk синглтоном (самый простой паттерн)

Следующий класс я не буду выкладывать здесь – он слишком большой, но с ним можно ознакомиться на github

Он определяет куда именно нужно постить и последовательно вызывает следующие методы.

  1. photos.getWallUploadServer – определяет сервер для загрузки фотографий
  2. photos.saveWallPhoto – загружает фотографии. После этого у нас есть ссылки на них вида “photo_([0-9]+)”
  3. wall.post – собственно сам постинг на стену.

Пример использования лежит в файле index.php, и думаю по нему вы сможете сами написать необходимые вам циклы для автоматического постинга.

Теперь немного рекомендаций по работе, и пара инструкций.

Получение токена.

Для того чтобы получить долгоиграющий токен с возможностью редактирования стены, вам нужно создать Standalone-приложение

Создание приложения

С другими работать НЕ БУДЕТ!

И еще пара советов

  • Максимально можно для одной группы / пользователя 50 постов в сутки.
  • Чаще чем раз в 5 минут постить не рекомендуется – может последовать бан.
  • Фотографии в скрипте указывайте абсолютными ссылками (http://…..)

Ну вот пожалуй и все то, чем я хотел с вами поделиться.
Спасибо за внимание.

И напоследок еще раз ссылка на github

[Всего голосов: 0    Средний: 0/5]

Автоматический постинг на стену VK (с фото): 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.