Вконтакте API VK загрузка нескольких фотографий в альбом

Тема в разделе "SMM и работа с социальными сетями", создана пользователем sonya2003, 31 окт 2016.

  1. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    25
    Симпатии:
    2
    У меня вопрос по загрузке фото в альбом: API Vkontakte предусматривает загрузку не более 5 фотографий за один раз, при этом при сохранении фотографий в альбоме, вызовом метода photos.save предусмотрено один текстовой параметр caption, т.е. комментарий у всех пяти фото будет один и тот же.
    Можно ли как-то передавать пять разных caption?
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.589
    Симпатии:
    1.497
    Загрузка и сохранение - это разные вещи.
    Вам надо вызвать photos.save для каждой загруженной.

    Для экономии лимитов и ускорения обработки можно попробовать объединить запросы в один через https://vk.com/dev/execute
     
    sonya2003 и Q_BASIC нравится это.
  3. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    25
    Симпатии:
    2
    Столкнулась с проблемой при выгрузке в контакт фотографий из каталога. По какой-то причине часть фотографий не сохраняется. При выгрузке на сервер в контакте получаю ответ:
    Код:
    Array
    (
        [server] => 638819
        [photos_list] => [{"photo":"fe0f4a4682:w","sizes":[["s","638819746","b57a","qxwzlvwGSmg",56,75],["m","638819746","b57b","PATwD_niuUM",97,130],["x","638819746","b57c","jxVeU0SLH6I",453,604],["y","638819746","b57d","nvpTMD4qgOQ",605,807],["z","638819746","b57e","bP5SsUTcwuc",810,1080],["w","638819746","b57f","XX9jFzb_y0Y",900,1200],["o","638819746","b580","Ob6onuUREpI",130,173],["p","638819746","b581","EdcoeN4JfR0",200,267],["q","638819746","b582","YpsE7a65V7g",320,427],["r","638819746","b583","Y7B-7yBibu0",510,680]],"kid":"98fbf90466a296a446f7156a3693def7","debug":"xswmwxwywzwwwowpwqwrw"}]
        [aid] => 235078544
        [hash] => a04973efcac15b4ef8a2a988a83e6993
        [gid] => 125769423
    )
    Вроде бы все верно. Далее пытаюсь сохранить фото методом photos.save:
    PHP:
    $params = [
    'group_id'=>$group_id,
    'album_id'=>$album_id,
    'server'=> $response['server'],
    'photos_list'=>$response['photos_list'],
    'hash'=>$response['hash'],
    'caption'=>$product['url'].$product['title'].'Цена: '.$product['price'].' руб.'.PHP_EOL.$product['description'].$product['size'].$product['material'].$product['brand'].$product['code'],
    'access_token'=>$access_token,
    'v'=>$v,
    ];
    $vk_method 'photos.save';
    $url $vk_url.$vk_method.'?'.http_build_query($params);

    $response json_decode(file_get_contents($url),true);
    выводит предупреждение:

    Код:
    Warning: file_get_contents(https://api.vk.com/method/photos.save?group_id=125769423&album_id=235078544&server=638819&photos_list=%5B%7B%22photo%22%3A%22fe0f4a4682%3Aw%22%2C%22sizes%22%3A%5B%5B%22s%22%2C%22638819746%22%2C%22b57a%22%2C%22qxwzlvwGSmg%22%2C56%2C75%5D%2C%5B%22m%22%2C%22638819746%22%2C%22b57b%22%2C%22PATwD_niuUM%22%2C97%2C130%5D%2C%5B%22x%22%2C%22638819746%22%2C%22b57c%22%2C%22jxVeU0SLH6I%22%2C453%2C604%5D%2C%5B%22y%22%2C%22638819746%22%2C%22b57d%22%2C%22nvpTMD4qgOQ%22%2C605%2C807%5D%2C%5B%22z%22%2C%22638819746%22%2C%22b57e%22%2C%22bP5SsUTcwuc%22%2C810%2C1080%5D%2C%5B%22w%22%2C%22638819746%22%2C%22b57f%22%2C%22XX9jFzb_y0Y%22%2C900%2C1200%5D%2C%5B%22o%22%2C%22638819746%22%2C%22b580%22%2C%22Ob6onuUREpI%22%2C130%2C173%5D%2C%5B%22p%22%2C%22638819746%22%2C%22b581%22%2C%22EdcoeN4JfR0%22%2C200%2C267%5D%2C%5B%22q%22%2C%22638819746%22%2C%22b582%22%2C%22YpsE7a65V7g%22%2C320%2C427%5D%2C%5B%22r%22%2C%22638819746%22%2C%22b583%22%2C%22Y7B-7yBibu0%22%2C510%2C680%5D%5D%2C%22kid%22%3A%2298fbf90466a296a446f7156a3 in D:\OpenServer\domains\localhost\savephotos2.php on line 75
    При этом возвращает пустой результат и фото не сохраняются. Вместо file_get_contents пробовала передавать курлом, ошибок не выводит, но также ничего не сохраняет.
    Так как выгружаемый каталог небольшой, то проанализировав выгрузку увидела, что не сохраняются одни и те же фото (из 344 не сохраняются 99). Вот для примера file19.jpg не сохраняется, а file25.jpg сохраняется. Фото с одного сайта, по размеру идентичны, что не так c фото file19.jpg, почему не сохраняется, при этом как я понимаю на сервера в контакте file19.jpg ушло успешно?
     

    Вложения:

    • file19.jpg
      file19.jpg
      Размер файла:
      334,1 КБ
      Просмотров:
      3
    • file25.jpg
      file25.jpg
      Размер файла:
      414,6 КБ
      Просмотров:
      1
    Последнее редактирование: 1 ноя 2016
  4. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    25
    Симпатии:
    2
    Не получается загрузить сразу пять, не возвращает никакого ответа:
    PHP:
       $file1 $_SERVER['DOCUMENT_ROOT'].'/file1.jpg';
         
    $file1 curl_file_create($file1mime_content_type($file1), pathinfo($file1)['basename']);
        
         
    $file2 $_SERVER['DOCUMENT_ROOT'].'/file2.jpg';
         
    $file2 curl_file_create($file2mime_content_type($file2), pathinfo($file2)['basename']);
        
         
    $file3 $_SERVER['DOCUMENT_ROOT'].'/file3.jpg';
         
    $file3 curl_file_create($file3mime_content_type($file3), pathinfo($file3)['basename']);
        
         
    $file4 $_SERVER['DOCUMENT_ROOT'].'/file4.jpg';
         
    $file4 curl_file_create($file4mime_content_type($file4), pathinfo($file4)['basename']);
        
         
    $file5 $_SERVER['DOCUMENT_ROOT'].'/file5.jpg';
         
    $file5 curl_file_create($file5mime_content_type($file5), pathinfo($file5)['basename']);
        
         
    $post_params=[
         
    'file1'=>$file1,
         
    'file2'=>$file2,
         
    'file3'=>$file3,
         
    'file4'=>$file4,
          
    'file5'=>$file5,
         ];
      
         
    //первый этап - получаем адрес для выгрузки фотографий
         
    $params = [
         
    'group_id'=>$group_id,
         
    'album_id'=>$album_id,
         
    'access_token'=>$access_token,
         
    'v'=>$v,
         ];
         
    $vk_method 'photos.getUploadServer';
         
    $url $vk_url.$vk_method.'?'.http_build_query($params);  
         
    $response json_decode(file_get_contents($url),true);

      
         
    //второй этап - передача фотографий на сервера вконтакте
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$response['response']['upload_url']);
        
    curl_setopt($chCURLOPT_POSTtrue);
        
    curl_setopt($chCURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data; charset=UTF-8']);
        
    curl_setopt($chCURLOPT_POSTFIELDS$post_params);
        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
        
    curl_setopt($chCURLOPT_TIMEOUT10);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
        
    $response json_decode(curl_exec($ch), true);
        
    curl_close($ch);
    Массив $response на втором этапе возвращается пустой, что не так?