Скрипт экспорта из Unisender - помогите зациклить и сохранить в файл

S
На сайте с 13.11.2012
Offline
72
661

Здравствуйте.

В Unisender имею около миллиона подписчиков, стандартный экспорт в файл не работает, вторые сутки создает файл и пока всего 52% готовности.

Нашел в сети скрипт импорта по api, вроде работает шустро, но экспортирует по 1000 адресов (ограничение Unisender) и не сохраняет в файл.

Скрипт

// Ваш ключ доступа к API (из Личного Кабинета) 

$api_key = "xxxxxxxxxxxx";

// Список для экспорта
$list = "420";

// Создаём POST-запрос
$POST = array (
'api_key' => $api_key,
'list_id' => $list,
);

// Устанавливаем соединение
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL,
'http://api.unisender.com/ru/api/exportContacts?format=json');
$result = curl_exec($ch);

if ($result) {
// Раскодируем ответ API-сервера
$jsonObj = json_decode($result);

if(null===$jsonObj) {
// Ошибка в полученном ответе
echo "Invalid JSON";

}
elseif(!empty($jsonObj->error)) {
// Ошибка получения данных
echo "An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")";

} else {
// Выводим полученные данные
$number_of_fields = count($jsonObj->result->field_names);
echo "<table border='1'>";
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $jsonObj->result->field_names***91;$i***93; . "</td>";
};
echo "</tr>";
foreach ($jsonObj->result->data as $one) {
echo "<tr>";
for ($i=0;$i<$number_of_fields;$i++){
echo "<td> " . $one***91;$i***93; . "</td>";
};
echo "</tr>";
}
echo "</table>";

}
} else {
// Ошибка соединения с API-сервером
echo "API access error";
}

Скрипт выдает лишние поля, мне достаточно вытянуть только email, по возможности имя.

Как зациклить импорт, чтобы все адреса сохранились в один файл .csv?

Email, "Name"

Спасибо!

p.s. возможно есть готовые решения или сервисы, подскажите

https://support.unisender.com/index.php?/Knowledgebase/Article/View/61/0/exportcontacts---ehksport-vsekh-dnnykh-kontktov&_ga=1.173304615.564748106.1478755649

Максимальное количество экспортируемых за один вызов данных ограничено, поэтому при большом количестве контактов необходимо выгружать их по частям (не более 1000 записей за раз), используя аргументы offset и limit.

Не могу придумать листалку страниц с сохранением результатов в файл.

У меня более миллиона контактов, нужно чтобы сервер у них не упал... Там когда 3 вкладки в браузере открываешь, unisender уже жалуется...

Помогите, пожалуйста. Уже год не могу вынуть адреса :(

S
На сайте с 30.09.2016
Offline
469
#1

Слово-то какое нашли - "зациклить"😂 Щас так зациклим, что никогда не выберетесь из цикла.

Уже год не могу вынуть адреса

Ну за год уж можно было изучить кусочек PHP или программера найти на крайний случай. Работы-то - даже на полдня не потянет.

Скрипт выдает лишние поля, мне достаточно вытянуть только email, по возможности имя.
Ну так читайте по Вашей же ссылке:
field_names - Массив названий полей, которые надо экспортировать. Если отсутствует, то экспортируются все возможные поля
А с этим:
чтобы все адреса сохранились в один файл .csv
надо просто вместо echo сохранить в файл.
Не могу придумать листалку страниц
Не надо ничего придумывать, читайте!
offset — номер первого экспортируемого подписчика

И что за тяга такая - на каждый чих искать плагины, модули, приложения, готовые решения?

возможно есть готовые решения или сервисы, подскажите
Если у меня дома лифт не работает, я не вызываю спасателей с подъёмником - просто спускаюсь по лестнице.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий