SergeyBocharov
Premium Lite
- Регистрация
- 18 Янв 2021
- Сообщения
- 1
- Реакции
- 0
- Тема Автор Вы автор данного материала? |
- #1
Всем привет)
У меня есть сайт, на котором я реализовал работу нескольких скриптов php. Они выполняют разные функции, которые облегчают мою жизнь и работу. Одна из которых является планировщиком постов в инстаграме. Реализована она с помощью api телеграмма и инстаграма. Я в телеграмм своему боту отправляю текст поста, потом фото к этому посту и дату со временем, когда это все опубликовать. Потом эти данные сохраняются в базу данных на моем сервере (дата и время, текст поста и айди картинки).
Так же у меня стоит крон задача, которая каждую минуту запускает скрипт. В нем выполняется функция, которая сравнивает текущее время и дату с записями времен и дат в базе данных и если находит совпадение выполняет следущее: по айди картинки получает расположение этой картинки на серверах телеграмма и скачивает ее на мой сервер. Потом запускается скрипт, который постит в инстограм текст из базы данных и картинку с моего сервера.
Вот этот скрипт для постинга в инстаграм писал не я (не смог до конца разобраться с api инстаграма), взял его от сюда tioffs/InstaLite. Он отлично работает, но с его помощью в одной публикации можно отправить только одно фото, а мне хотелось бы в одной публикации отправлять до 10 фоток. Я в принципе понимаю, что за это отвечает вот эта часть кода:
Понимаю что скорее всего нужно создавать массив данных и отправлять как то так:
заменив "media_type":1 скорее всего на "media_type":3
Но у меня у самого пока что ничего не получается, т.к я не профессионал в этом деле, а просто гуглитель.
Прошу вашей помощи господа)
У меня есть сайт, на котором я реализовал работу нескольких скриптов php. Они выполняют разные функции, которые облегчают мою жизнь и работу. Одна из которых является планировщиком постов в инстаграме. Реализована она с помощью api телеграмма и инстаграма. Я в телеграмм своему боту отправляю текст поста, потом фото к этому посту и дату со временем, когда это все опубликовать. Потом эти данные сохраняются в базу данных на моем сервере (дата и время, текст поста и айди картинки).
Так же у меня стоит крон задача, которая каждую минуту запускает скрипт. В нем выполняется функция, которая сравнивает текущее время и дату с записями времен и дат в базе данных и если находит совпадение выполняет следущее: по айди картинки получает расположение этой картинки на серверах телеграмма и скачивает ее на мой сервер. Потом запускается скрипт, который постит в инстограм текст из базы данных и картинку с моего сервера.
Вот этот скрипт для постинга в инстаграм писал не я (не смог до конца разобраться с api инстаграма), взял его от сюда tioffs/InstaLite. Он отлично работает, но с его помощью в одной публикации можно отправить только одно фото, а мне хотелось бы в одной публикации отправлять до 10 фоток. Я в принципе понимаю, что за это отвечает вот эта часть кода:
Код:
public function uploadPhoto(string $photo, string $message): ?string
{
if (!file_exists($photo)) {
throw new Exception("File [$photo] not found");
}
$photo_id = round(microtime(true) * 1000);
$file_temp = DIR . '/' . $this->uuid4();
list($width, $height, $image_type) = getimagesize(realpath($photo));
$srcImage = ImageCreateFromJPEG($photo);
$resImage = ImageCreateTrueColor($width, $height);
ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $width, $height, $width, $height);
ImageJPEG($srcImage, $file_temp, 100);
ImageDestroy($srcImage);
$response = Request::post($this->web . 'rupload_igphoto/fb_uploader_' . $photo_id)
->addHead('content-type', 'image/jpg')
->addHead('x-entity-name', 'fb_uploader_' . $photo_id)
->addHead('offset', 0)
->addHead('user-agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; ru-RU) AppleWebKit/537.36 (KHTML, like Gecko) Version/11.4.1 Mobile/15G77 Safari/537.36 Puffin/5.2.2IP')
->addHead('x-entity-length', filesize($file_temp))
->addHead('x-instagram-rupload-params', '{"media_type":1,"upload_id":"' . $photo_id . '","upload_media_height":' . $height . ',"upload_media_width":' . $width . '}')
->addFile($file_temp)
->json(true);
unlink($file_temp);
if (!isset($response['upload_id'], $response['status']) && $response['status'] != 'ok') {
throw new Exception("Error upload file: " . \json_encode($response));
}
$this->__log('upload file success: ' . \json_encode($response));
$response = Request::post($this->web . 'create/configure/')
->addHead('content-type', 'application/x-www-form-urlencoded')
->addHead('user-agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; ru-RU) AppleWebKit/537.36 (KHTML, like Gecko) Version/11.4.1 Mobile/15G77 Safari/537.36 Puffin/5.2.2IP')
->addParam('upload_id', $response['upload_id'])
->addParam('caption', $message)
->addParam('usertags', '')
->addParam('custom_accessibility_caption', '')
->addParam('retry_timeout', '')
->json(true);
if (!isset($response['media']['id']) && $response['status'] != 'ok') {
throw new Exception("Error save post: " . \json_encode($response));
}
$this->__log('save post success: ' . \json_encode($response));
return $response['media']['id'];
}
Понимаю что скорее всего нужно создавать массив данных и отправлять как то так:
Код:
->addHead('x-instagram-rupload-para
ms', '{"media_type":1,"upload_id":"' . $photo_id . '","upload_media_height":' . $height . ',"upload_media_width":' . $width . '}')
Но у меня у самого пока что ничего не получается, т.к я не профессионал в этом деле, а просто гуглитель.
Прошу вашей помощи господа)