Кэширование json-ответа из Instagram
Есть туристический сайт. На странице со страной должны выводиться фотографии из Instagram с определённым хэш-тегом. Вывод я настроил, всё выводится. Но страница долго грузится, да и количество запросов ограничено. Само собой лучше закешировать получаемые данные, а затем выводить уже их. Только я не могу разобраться с этим делом. И так: у нас есть tag , у нас есть client_id и есть количество фото: 12.
Так вот всё это дело работает долго, как закешировать полученный json, а затем получать данные из этого файла?
Отслеживать
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 8 фев 2016 в 7:43
98 1 1 серебряный знак 8 8 бронзовых знаков
Сохранять в файл, проверять наличие такого файла и его дату.
8 фев 2016 в 8:02
Зачем усложнение с ф-ей objectToArray() , когда в json_decode() можно вторым параметром передать TRUE ?
8 фев 2016 в 8:05
Долго это сколько? instafeed.js, например, довольно шустро отдает данные. А на php можно столкнуться с проблемой, как инста попросту начнет запрашивать каптчу (но может вы это обошли уже)
13 дек 2017 в 10:19
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно кэшировать весь HTML с картинками. Проще всего – в файле на сервере. Чуть быстрее – в оперативной памяти, если есть Memcached, Redis, APC или подобное.
Смотрим, есть ли файл, и свеж ли он. Если есть и свеж — отдаём его содержание. Иначе получаем данные из Instagram, разбираем ответ, формируем HTML, записываем его в файл и вставляем в документ.
Отдельно стоит рассмотреть ошибки – вдруг «что-то пошло не так» и ответ от Instagram не содержит ожидаемых данных? Кэшировать ли такой ответ, или каждый раз снова и снова пытаться получить данные от API – решайте сами.
$insta_tag = 'visitCyprus'; // тег, свой для каждой страны $key = md5($insta_tag); // ключ для key-value или имя файла $cache_path = "/tmp"; // папка с кэш-файлами на сервере $cache_file = sprintf('%s/%s', $cache_path, $key); $cache_ttl = 900; // время жизни кэша в секундах $html = ''; // HTML код для вставки на страницу if( file_exists( $cache_file) && (time() - filemtime($cache_file)) < $cache_ttl) < // берём кэшированные данные $html = file_get_contents( $cache_file); >else < // надо заново получить данные из Instagram $client_id = 'xxxxx'; //client_id instagram api $img_count = 12; $url = sprintf( "https://api.instagram.com/v1/tags/%s/media/recent/?%s", $insta_tag, http_build_query(array( "client_id" =>$client_id, "count" => $img_count, )) ); $response = file_get_contents($url); // запрос к API $data = json_decode($response, TRUE); // как ассоц. массив if( is_null( $data) || !isset( $data['data'])) < // плохой ответ от Instagram $html = "Невозможно получить картинки из Instagram
"; > else < $tmpl = EOFHTML; foreach($data['data'] as $img) < $html .= sprintf( $tmpl, $img['link'], $img['images']['low_resolution']['url'] ); >file_put_contents( $cache_file, $html); > > echo $html;
Как скачать свои данные (фотографии и посты) из Инстаграма*
В Инстаграме есть специальный инструмент «Скачивание данных». С его помощью можно скачать все свои фотографии, комментарии, описание профиля. Для скачивания данных нужно сначала войти в Инстаграм со своим логином и паролем с компьютера, через браузер.
Как заказать архив данных в Инстаграме
Открыть «Скачивание данных» можно по ссылке www.instagram.com/download/request/ или последовательно выполняя действия:
- Нажми на значок своего профиля справа вверху.
- Выбери Настройки в выпадающем меню.
- Выбери Конфиденциальность и безопасность в левой колонке.
- Прокрути до пункта «Скачивание данных» в правой колонке.
- Нажми на ссылку Запросить файл.
Теперь, когда открыта страница «Скачивание копии вашей информации», остается еще пара действий:
- Инстаграм спросит, какой формат данных использовать — HTML или JSON. Если тебе это ни о чем не говорит, выбирай HTML (этот вариант выбран по умолчанию).
- Введи свой пароль для подтверждения действия и нажми Запросить файл.
Если доступ к Инстаграму с компьютера есть, но ты не помнишь пароль, придется сначала восстановить доступ и задать новый пароль:

Появится сообщение «Запрос на файл отправлен. Мы приступили к сбору данных для создания копии вашей информации в Instagram. Это может занять до 48 часов. Мы отправим ссылку для скачивания файла на [адрес email, который ты указал]».
Ссылка на скачивание придет на электронную почту в течение 2 суток. Возможно, к этому моменту получить доступ к Инстаграму в твоем регионе можно будет только с помощью VPN: будь к этому готов.
Если письмо со ссылкой долго не приходит, обязательно проверь в своей почте папку «Спам» или «Нежелательные» — оно может по ошибке попасть туда.
Как скачать и посмотреть архив данных
В письме будет ссылка, ведущая на страницу, где можно скачать подготовленный архив. Инстаграм еще раз попросит ввести пароль, чтобы убедиться, что ты — владелец аккаунта.
Скачается zip-архив. Его нужно распаковать (разархивировать файлы). В архиве находятся папки с различными типами данных, а в корне — файл index.html (если были заказаны данные в формате HTML). Его можно открыть в браузере, чтобы посмотреть, какие данные выгрузились.
Все фотографии находятся в папке media. Переписка в директе — в папке messages.
* Соцсети Инстаграм и Фейсбук принадлежат компании Мета, которая признана в России экстремистской организацией, а ее деятельность запрещена.
Смотри также
- Как защитить аккаунт в Инстаграме от взлома
- Как ограничить доступ к моей странице человеку в Инстаграме
- Как удалить Инстаграм
Как скачать контент из аккаунта на случай блокировки Instagram*
Пользователи из России уже сталкивались с перебоями в работе социальных сетей Facebook* и Instagram*. В какие-то дни страницы вовсе не загружались, в другие были проблемы с загрузкой медиафайлов. Мы советуем перестраховаться на случай полного отключения некоторых соцсетей и сохранить данные из аккаунта.
UPD: Meta*, которой принадлежат Facebook* и Instagram*, признали экстремистской организацией, но граждане и организации могут пользоваться платформой, если не будут нарушать закон РФ и оплачивать что-либо в приложении. Чтобы приложения открывались, можно использовать VPN. Подборка VPN для РФ.
Многие владельцы личных аккаунтов хранят фотографии только в профиле. На всякий случай скачайте архив, чтобы не потерять фотовоспоминания.
Бизнес-аккаунтам имеет смысл выгрузить:
- контент — на его создание которого уже потрачены ресурсы, а так его можно будет оставить на будущее для переупаковки под другие соцсети;
- переписки с пользователями — в переписках могут быть контакты клиентов и информация о заказах. Вы сможете использовать контакты для связи через другие каналы и делать рассылки.
В статье:
- Как скачать архив со всеми данными
- Как выгрузить пользователей и переписки
- Как скачать отдельные фото и видео из Инстаграма
Как скачать архив со всеми данными из Instagram*
Instagram позволяет скачать все данные своего аккаунта одним пакетом. В него войдут опубликованные фото, видео, сторис из архива с декабря 2017 года, список подписчиков, комментарии, переписка и список лайков.
Запросить такой пакет у Instagram* можно из приложения или веб-версии социальной сети. Достаточно отправить одну заявку, вторую платформа все равно не примет.
После запроса придется подождать, пока система соберет информацию и вышлет ссылку на скачивание архива на почту. Раньше ссылка приходила в течение 48 часов, но сейчас скорее всего придется ждать дольше. Ссылка активна несколько дней, поторопитесь со скачиванием.
Как запросить архив через веб-версию Instagram с десктопа

- ОткройтеИнстаграм* в браузере и залогиньтесь в нужном аккаунте.
- Перейдите по ссылке www.instagram.com/download/request/, должна открыться страница «Скачивание копии вашей информации».
3. Если возникли проблемы, откройте страницу не по прямой ссылке. Нажмите на миниатюру аватарки, перейдите в «Настройки», выберите «Конфиденциальность и безопасность» и внизу в блоке «Скачивание данных», нажмите на ссылку «Запросить файл».
4. В открывшееся поле введите электронный адрес, на который система пришлет вам ссылку на скачивание архива. Если пользуетесь облачным хранилищем, советуем ввести связанный с ним e-mail, так вы сможете сохранить архив на диске без скачивания.
5. Выберите формат данных.
HTML позволит просмотреть архив с любых современных устройств.
JSON можно открыть с десктопа:
- на Windows в Блокноте, Notepad, Notepad++;
- на MacOS в Apple TextEdit, MacVim;
- в браузере, например, в Google Chrome нажать Ctrl-O и выбрать путь до файла;
- через онлайн-сервисы просмотра, например, этот или другой.
6. Нажмите «Далее». Если все успешно, появится фраза «Запрос на файл отправлен». Останется подождать ссылку на скачивание архива.
Если вам удобнее подать заявку со смартфона, вы можете использовать приложение, принцип тот же.
Как запросить архив через приложение Instagram* на смартфоне
- Откройте приложение, войдите в нужный аккаунт.
- Откройте меню, нажав на три полоски в правом верхнем углу.
- Выберите пункт «Ваша активность».
- В меню активности выберите последний из списка пункт «Скачать информацию».
- Введите почту, на которую система должна прислать ссылку на скачивание архива.
- Выберите формат данных.
- Проверьте правильность e-mail и запустите отправку

Как еще можно выгрузить пользователей и переписки из Instagram*
Спарсить базу аккаунтов пользователей
Многие советуют парсеры, которые формируют файлы со списками Instagram*-аккаунтов подписчиков. Например, Instaplus.Pro, Instaways, SocialKit, Pepper.Ninja, Bridgit. Можно скачать базу на случай, если понадобится работать с нуля и пригласить лояльную аудиторию подписаться на новый аккаунт.
Если мы предположим, что Инстаграм перестанет работать, нет смысла парсить список пользовательских аккаунтов. Пригодиться могут переписки, в которых есть информация о заказах и другие контакты клиентов.
В архиве, который можно запросить у Instagram*, должны сохраниться и переписки. Но есть еще способы обработать direct.
Собрать контакты вручную из переписок
Советуем всегда вести базу клиентов, не оставлять данные только в соцсети. Если у вас нет такой базы и вы маленький бизнес, который обрабатывает заявки вручную, пройдитесь по перепискам, пока можете открыть соцсеть. Соберите нужную информацию, не забудьте про раздел с запросами на переписку.
Выгрузить переписку с помощью парсера
Есть парсеры, которые позволяют связать аккаунты с CRM и выгрузить переписки туда. Мы нашли i2crm.ru, который позволяет скачать из Instagram* сообщения за последние 24 часа или запросить у техподдержки выгрузку более поздних переписок.
Если вы знаете еще такие сервисы, поделитесь рекомендацией в комментариях.
Как скачать опубликованные фото, видео и сторис из Instagram*-аккаунта
Если вам не нужен архив со всеми данными аккаунта, или вы не хотите ждать, пока Инстаграм* его сформирует, есть другие способы сохранить медиа.
Расширения браузера для скачивания медиа
Для пакетного скачивания через Google Chrome мы нашли расширение Загрузчик для Instagram.
Для скачивания отдельных фотографий и видео через Google Chrome есть, к примеру, такие:
- Image and Video Downloader;
- Скачать фото с Инстаграм*;
- App for Instagram*;
- Image Photo Downloader;
- Загрузчик видео, фото, стори;
- Media Saver for Instagram*;
- Web App for Instagram with DM;
- SaveFrom.net Helper;
- InstaGib;
- IDL Helper — дополнительно позволяет скачивать музыку из видео и видеоролики.
У других браузеров тоже есть расширения, например, Instagram Downloader для Firefox и Instagram PRO для Opera.
Сторонние сервисы для загрузки постов и сторис
Сервисы позволяют скачивать отдельные фото из любых открытых аккаунтов. Нужен только URL поста.

Несколько сервисов для скачивания:
- ИнстаГраббер;
- Инстаграб.ру;
- Downloadgram;
- Save Insta;
- Instasave для сторис.
Telegram-боты для парсинга постов с описаниями
Со смартфона может быть удобнее пользоваться Telegram. Тогда для скачивания фотографий подойдут боты. В ответ на URL поста бот отправит изображение, некоторые также присылают описание, которое добавил автор.

Несколько ботов, которые справляются с задачей:

- @instasavegrambot и @Instasave_bot присылают фотографии и видео с описанием;
- @SaveAsBot присылает фото и IGTV-видео с описанием;
- @Instatube_bot — присылает фото из карусели и видео с описанием и статистикой активности аудитории на посте, платно выгружает сторис и актуальные.
В комментариях рассказывайте о других способах сохранить данные, поможем друг другу.
*Компания Meta, которой принадлежит Instagram, признана в России экстремистской организацией.
Facebook, WhatsApp, Instagram: как выгрузить все данные на компьютер

В последние дни Роскомнадзор частично ограничил доступ к Facebook, а в работе Twitter наблюдались сбои. Под угрозой оказались и другие сервисы, где россияне хранят ценную информацию. РБК Тренды рассказывают, как сохранить свои данные при блокировке популярных приложений.

Чаты в WhatsApp можно настроить так, чтобы они ежедневно копировались и сохранялись в памяти смартфона автоматически. Если пользователь решит удалить WhatsApp, ему потребуется вручную создать резервную копию своих чатов. Для этого нужно открыть WhatsApp, нажать «Другие опции», выбрать «Настройки» → «Чаты» → «Резервная копия чатов» → «Резервное копирование». Функцию экспорта можно использовать как для индивидуальных, так и для групповых чатов. Для этого нужно открыть чат, нажать «Другие опции» → «Ещё» → «Экспорт чата».

Находим опцию «Экспорт чата» в выпадающем меню в правом верхнем углу чата
При этом пользователь должен выбрать, будет ли он экспортировать медиафайлы. После этого он получит электронное письмо с вложением в виде документа в формате TXT, содержащего историю переписки.
Чтобы получить копию всех материалов, нужно отправить запрос на скачивание в формате JSON. Для этого потребуется указать пароль аккаунта Instagram. Пользователь должен перейти в свой профиль, нажать на значок в правом верхнем углу, выбрать «Ваши действия», нажать «Скачать информацию». Затем потребуется ввести электронный адрес, на который Instagram отправит ссылку для скачивания, и нажать «Запросить файл».

Instagram просит указать электронную почту для отправки архива
При сохранении данных пользователь может выбрать, какой контент он хочет загрузить, а также настроить диапазон дат для загрузки.
- нажать значок account в правом верхнем углу окна Facebook,
- выбрать «Настройки и конфиденциальность», а затем — «Настройки»,
- выбрать «Ваша информация» слева,
- рядом с пунктом «Скачать информацию» нажать «Посмотреть»,
- для добавления или удаления категорий данных для загрузки нужно поставить или снять флажки справа,
- настроить другие параметры: формат скачиваемого файла, качество фото, видео и других материалов, диапазон дат (по умолчанию выполняется скачивание информации за все время),
- нажать «Создать файл», чтобы подтвердить запрос на скачивание. После этого запрос на скачивание получит статус «Ожидается» и появится в разделе «Доступные копии вашего инструмента скачивания информации»

Facebook позволяет выбрать формат, качество и диапазон времени для сохраняемых файлов, а также их категории
Facebook может потребоваться до нескольких дней для подготовки архива. Затем пользователь получит от соцсети уведомление.
Чтобы скачать копию запрошенных данных, нужно:
- перейти в раздел «Доступные копии инструмента скачивания информации»,
- нажать «Скачать» и ввести пароль.
Для скачивания файлов пользователь может выбрать формат файла HTML или JSON.
Последний более удобен для переноса данных на другой сервис.
Чтобы отправить запрос на выгрузку архива твитов, пользователю нужно нажать значок «Еще» на панели навигации, чтобы перейти в настройки учетной записи. Затем необходимо выбрать в меню пункт «Ваша учетная запись», нажать «Загрузить архив своих данных», ввести пароль в разделе «Загрузить архив своих данных» и нажать «Подтвердить».
Затем пользователю придет код на сохраненный номер телефона или адрес электронной почты учетной записи. После подтверждения личности нужно нажать кнопку «Запросить данные». Twitter пришлет электронное письмо на электронную почту или push-уведомление об окончании загрузки, если на смартфоне установлено соответствующее приложение. После этого в настройках в разделе «Загрузить данные» можно нажать кнопку «Загрузить данные». Архив выгружается в форматах ZIP, HTML, JSON. Его подготовка может занять несколько дней.

Кнопка «Загрузить архив своих данных» в панели управления учетной записи Twitter
Архив будет включать информацию профиля, твиты, личные сообщения, «моменты», медиафайлы, список читателей и читаемых, адресную книгу, списки, информацию о предполагаемых интересах, предполагаемые демографические сведения, информацию о рекламных объявлениях и так далее.
Dropbox
Файлы и папки из аккаунта Dropbox можно перенести на компьютер. Для этого нужно войти в свой аккаунт на сайте dropbox.com, навести курсор на файл или папку, которые нужно скачать, затем нажать «…» (многоточие) и выбрать «Скачать».

Скачиваем папку с фотографиями из Dropbox
Таким образом можно скачивать папки размером до 20 Гб, количество файлов в которых не превышает 10 000. Все папки скачиваются в виде архивных файлов ZIP.
Документы Dropbox Paper для загрузки на ПК нужно конвертировать в один из форматов: DOCX, MD или PDF. Для этого нужно нажать «…» (многоточие) в документе, выбрать «Экспорт», выбрать формат файла для загрузки и нажать «Загрузить».
При этом формат DOCX будет совместим только с Microsoft Word, но не с Google Docs или OpenOffice.
Apple Notes
Большинство пользователей синхронизируют свои заметки с учетными записями iCloud. Чтобы выгрузить заметки из iCloud на Mac, нужно:
- нажать на логотип Apple в верхнем левом углу,
- выбрать «Системные настройки»,
- выбрать iCloud,
- поставить галочку в Notes,
- выбрать заметку или заметки, которые нужно выгрузить,
- нажмите на «Файл» сверху и выбрать параметр «Экспортировать как PDF»,
- назвать файл и указать его местоположение на Mac,
- нажать «Сохранить».
Пользователям Windows необходимо сначала установить приложение iCloud на свой компьютер, а затем синхронизировать свои заметки с Outlook. В приложении iCloud нужно:
- установить флажок «Почта, контакты, календари и задачи»,
- нажать «Применить» внизу,
- запустить приложение Microsoft Outlook на своем компьютере,
- перейти в «Файл» → «Параметры» → «Дополнительно»,
- нажать «Экспорт».

Выбираем заметки для загрузки в Backup Explorer (Фото: macroplant.com)
Все заметки iCloud будут доступны в выбранной папке на компьютере.
Trello
Функцию экспорта можно найти в меню «Доска» → «Дополнительно» → «Печать и экспорт». Информация скачивается в формате JSON. В настоящее время невозможно импортировать архив обратно для повторного создания доски Trello.

Экспорт доски из Trello
В Trello Premium можно экспортировать все доски в рабочей области в форматах CSV и JSON. Также пользователь может включить все свои вложения в виде ZIP-файла в их собственном формате. Для этого нужно перейти на страницу Premium Workspace и выбрать вкладку «Экспорт».
Notion
Чтобы создать архив, нужно перейти в «Настройки и участники» в верхней части левой боковой панели, выбрать «Настройки» в боковой панели этого окна, прокрутить его вниз и нажать «Экспорт всего содержимого рабочей области» (Export all workspace). После этого пользователю придет электронное письмо от Notion со ссылкой для загрузки файлов. Срок действия ссылки истечет через 7 дней.

Экспорт рабочей области из Notion
Для участников плана Enterprise такая опция может быть отключена по усмотрению администратора, чтобы документы были доступны только для внутреннего использования. Пользователи корпоративного плана могут экспортировать свое рабочее пространство в виде файлов PDF.

На сервисе можно выгружать отдельные изображения, файлы HTML, Markdown, PDF и CSV-таблицы. Для этого нужно кликнуть в правом верхнем меню «…», затем — Export, и выбрать нужный формат.