Makag

Adult webmaster in Social Media - Tips & Tricks

Скрипт - загрузка фотографий в альбом группы вКонтакте через api

Использование:
— загружаем скрипт на хостинг,
— в папку со скриптом рядышком загружаем фотографию;
— ставим на cron и радуемся.


Собственно сам скрипт:

<?php

$access_token = "ТОКЕН";
$group_id = "АЙДИ_ГРУППЫ";
$album_id = 'АЙДИ ФОТОАЛЬБОМА';
$image_path = dirname(__FILE__) . '/имя_фото.jpg';

$vk = new Model_Vk($access_token);

//Загружаем изображение
$upload_img = $vk->uploadImage($image_path,$group_id,$album_id);

class Model_Vk {

    private $access_token;
    private $url = "https://api.vk.com/method/";

    /**
     * Конструктор
     */
    public function __construct($access_token) {

        $this->access_token = $access_token;
    }

    /**
     * Делает запрос к Api VK
     * @param $method
     * @param $params
     */
    public function method($method, $params = null) {

        $p = "";
        if( $params && is_array($params) ) {
            foreach($params as $key => $param) {
                $p .= ($p == "" ? "" : "&") . $key . "=" . urlencode($param);
            }
        }
        $response = file_get_contents($this->url . $method . "?" . ($p ? $p . "&" : "") . "access_token=" . $this->access_token);

        if( $response ) {
            return json_decode($response);
        }
        return false;
    }

  public function uploadImage($file, $group_id = null, $album_id = null) {

    $params = array();
    if( $group_id ) {
      $params['group_id'] = $group_id;
    }
    if( $album_id ) {
      $params['album_id'] = $album_id;
    }

    //Получаем сервер для загрузки изображения
    $response = $this->method("photos.getUploadServer", $params);


    if( isset($response) == false ) {
      print_r($response);
      exit;
    }
    
    $server = $response->response->upload_url;

    $postparam=array("file1"=>"@".$file);
    //Отправляем файл на сервер
    $ch = curl_init($server);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postparam);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; charset=UTF-8'));
    $json = json_decode(curl_exec($ch));
    curl_close($ch);


    

    
    //Сохраняем файл в альбом
    $photo = $this->method("photos.save", array(
      "server" => $json->server,
      "photos_list" => $json->photos_list,
      "album_id" => $album_id,
      "hash" => $json->hash,
      'gid' => $group_id
    ));
    

    if( isset($photo->response[0]->id) ) {
      return $photo->response[0]->id;
    } else {
      return false;
    }
  }
}
?>


P.S.

Хостинг: всем советую хостинг beget.ru. Платный. 135 рублей в месяц. Первый месяц бесплатно.
Токен: получить по этой ссылке.
Айди группы и айди фотоальбома: заходим в нужный фотоальбом и смотрим в адресной строке, как пример — vk.com/album-81964411_213473422, тут 81964411 это айди группы, а 213473422 это айди фотоальбома.

3 комментария

denia80
Makag а в чем фишка то, этого скрипта, какая от него польза, легче что ли, фотки заливать в группу, чем обычным способом?
makag
в чужую группу. во много чужих групп. по расписанию, каждые 2 дня, например ))
настроил и забыл)
denia80
Ясно, спасибо.