Всем привет, нужна помощь в решении проблемы со скриптом для ВК: скрипт берет посты с одной группы и отправляет в другую. Проблема заключается в том, что посты, в которых присутствуют картинки, скрипт репостит не полностью (отправляется, к примеру, только текст, аудиофайлы и т.д.), а посты, состоящие только из картинок, не репостит вообще и выдаёт ошибку №100
<?php
/*
CREATE TABLE IF NOT EXISTS `by133312` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
*/
// ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ
$mysqli = new mysqli("localhost", "root", "пароль", "имя БД") or die("Error");
$mysqli->query("SET NAMES 'utf8'");
define("токен");
// ID ГРУППЫ КУДА ПОСТИТЬ ПОСТЫ БЕЗ МИНУСА
define("owner_id", "id группы");
// ID ГРУППЫ ОТКУДА ПОСТЫ БЕЗ МИНУСА
define("owner", "id группы");
/*
===============================
ТУТ НЕЧЕГО НЕ ТРОГАТЬ!!!
СКРИПТ НАЧИНАЕТ РАБОТАТЬ
===============================
*/
$wallGet = by("wall.get", array("owner_id" => -owner, "filter" => "owner"));
if($wallGet[1]["is_pinned"] == 1) {
$id = 2;
} else {
$id = 1;
}
$SELECT = $mysqli->query("SELECT * FROM `by133312` WHERE `post_id`='".$wallGet[$id]["id"]."'")->fetch_assoc();
if($SELECT["post_id"] != $wallGet[$id]["id"]) {
for($i = 0; $i < 10; $i++) {
if($wallGet[$id]["post_type"] != "copy") {
if($wallGet[$id]["attachments"][$i]["type"] == "photo") {
if($wallGet[$id]["attachments"][$i]["photo"]["src_xxxbig"]) {
$photo = $wallGet[$id]["attachments"][$i]["photo"]["src_xxxbig"];
} elseif($wallGet[$id]["attachments"][$i]["photo"]["src_xxbig"]) {
$photo = $wallGet[$id]["attachments"][$i]["photo"]["src_xxbig"];
} elseif($wallGet[$id]["attachments"][$i]["photo"]["src_xbig"]) {
$photo = $wallGet[$id]["attachments"][$i]["photo"]["src_xbig"];
} elseif($wallGet[$id]["attachments"][$i]["photo"]["src_big"]) {
$photo = $wallGet[$id]["attachments"][$i]["photo"]["src_big"];
}
if($photo) {
$attachments .= download($photo, owner_id).",";
}
} elseif($wallGet[$id]["attachments"][$i]["type"] == "audio") {
$attachments .= "audio".$wallGet[$id]["attachments"][$i]["audio"]["owner_id"]."_".$wallGet[$id]["attachments"][$i]["audio"]["aid"].",";
} elseif($wallGet[$id]["attachments"][$i]["type"] == "video") {
$attachments .= "video".$wallGet[$id]["attachments"][$i]["video"]["owner_id"]."_".$wallGet[$id]["attachments"][$i]["video"]["vid"].",";
} elseif($wallGet[$id]["attachments"][$i]["type"] == "doc") {
$attachments .= "doc".$wallGet[$id]["attachments"][$i]["doc"]["owner_id"]."_".$wallGet[$id]["attachments"][$i]["doc"]["did"].",";
} elseif($wallGet[$id]["attachments"][$i]["type"] == "poll") {
$attachments .= "poll"."220353117_".$wallGet[$id]["attachments"][$i]["poll"]["poll_id"].",";
}
}
}
if($attachments)
$post = by("wall.post", array("from_group" => 1, "message" => $wallGet[$id]["text"], "owner_id" => -owner_id, "attachments" => $attachments, "access_token" => access_token));
if($post["post_id"]) {
Echo "<a href=\"https://vk.com/wall-".owner_id."_".$post["post_id"]."\">wall-".owner_id."_".$post["post_id"]."</a>";
$mysqli->query("
INSERT INTO
`by133312`(
`post_id`
)
VALUES(
'".$wallGet[$id]["id"]."'
);
");
} elseif($post["error_code"]) {
Echo "Ошибка №".$post["error_code"];
}
} else {
Echo "Данная запись ранее была опубликована.";
}
function by($method, $array = false) {
$response = curl("https://api.vk.com/method/".$method, $array);
$json = json_decode($response, true);
if($json["error"]["error_msg"]) {
return $json["error"];
} else {
return $json["response"];
}
}
function download($picture = null, $group_id = null) {
$pic = curl_init($picture);
$file = fopen("image.jpg", "wb");
curl_setopt($pic, CURLOPT_FILE, $file);
curl_setopt($pic, CURLOPT_HEADER, 0);
curl_exec($pic);
curl_close($pic);
fclose($file);
$getWallUploadServer = by("photos.getWallUploadServer", array("group_id" => $group_id, "access_token" => access_token));
$upload = curl($getWallUploadServer["upload_url"], array("file1" => "@".dirname(__FILE__)."/image.jpg"));
$json = json_decode($upload, true);
$saveWallPhoto = by("photos.saveWallPhoto", array("group_id" => $group_id, "photo" => $json["photo"], "hash" => $json["hash"], "server" => $json["server"], "access_token" => access_token));
return $saveWallPhoto[0]["id"];
}
function curl($url, $post = false) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4 AlexaToolbar/alxg-3.1');
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Если в функцию, принимающую int&, передать *p, где p - указатель на int, то функция будет работать с исходными данными, находящимися по этому адресу,...
Какая константа в STD определяет максимальное значение для типа std::uint64_t и для других подобных типов? Или использовать хедер <climits> ?
Есть код, который выявляет, является ли фраза или слово палиндромом, есть такой код