Как перетворить формат чата инстаграм json в html формат?
Нужно перетворить чатовый формат инстаграма json в формат html
Можно скачать в самом инстаграмме и html версию, но там все разбросано и много информации нету.
Был наткнулся на сайт, что перетворяет json to html, но он изменяет до 5 МБ информации
Также, в ютубе наткнулся на видео: https://www.youtube.com/watch?v=M0K2HG_uI68
Но, увы, выдает ошибку, да и вся информация про аккаунт в таком виде, а не как на видео (На скриншоте html версия, но, кроме формата — отличия нету):

Хотел бы узнать как иначе можно перетворить json to html с максимально достоверной информацией ( А не как в html — все разбросано, 1/2 чата нету, как и медиафайлов)
- Вопрос задан более года назад
- 162 просмотра
3 комментария
Простой 3 комментария
Instagram API
Чтобы использовать Instagram API, мы должны бесплатно зарегистрироваться как разработчики Instagram. Основные вещи, которые нам нужны для этого приложения — client_id и client_secret. Мы можем взять их после создания аккаунта и регистрации нового приложения.
Использование client_id и client_secret один из вариантов взятия данных из Instagram API. Другой — это позволить пользователям вашего приложения проводить аутентификацию, используя учетную запись пользователя. Пакет instagram-node содержит возможности для этого, но подобная задача выходит за рамки нашего руководства.
Мы можем сделать всё быстро на сайте Instagram Developer.

Перейдите на сайт и залогиньтесь.
Теперь перейдём к созданию нашего нового клиента (или приложения).

После создания нашего клиента мы получим client_id и client_secret.

Это именно то, что нам нужно для получения доступа к Instagram API через наше Node-приложение.
Анализ Instagram API
Давайте отвлечёмся на минуту и посмотрим через API на информацию, которую мы можем получить. Часто компании предоставляют анализатор API, так что вы можете использовать удобный интерфейс и увидеть данные JSON, которые придут из API. Парой крупных компаний, которые предлагают анализаторы API являются Facebook и Twitter.
Instagram API также предлагает анализатор через сервис под названием Apigee. Мы можем получить к нему доступ из панели управления Instagram и через Apigee Instagram API Explorer.
После открытия анализатора API он на первый взгляд может показаться немного сложным. В левой панели мы можем увидеть все вызовы API. Нам нужно только обратить внимание на вызов GET media/popular.

Если мы щёлкнем на вызове media/popular и добавим client_id пользователя в URL вроде такого:
то сможем увидеть, что API вернул важные изображения.

При ближайшем рассмотрении видим, что получаем массив изображений с именем data .

Если мы взглянем на отдельный объект в массиве data , то увидим, что он является одной фотографией со всей нужной нам информацией.

Мы можем получить информацию из comments , likes , images и user . Мы собираемся использовать их при создании нашего приложения. У нас есть всё необходимое:
- client_id;
- client_secret;
- понимание данных API.
Давайте двинемся дальше и получим эти данные в нашем приложении и покажем их пользователям.
Условия и правила Instagram API
Я призываю вас всегда читать условия и правила API перед использованием. Есть истории приложений, которые выросли успешными из-за того, что их доступ к API сбежал от них, потому что они нарушили условия.
Основные моменты в правилах Instagram.
- Нельзя заменять или повторять instagram.com или приложения Instagram.
- Нельзя показывать более 30 одновременно.
- Нельзя участвовать в любой программе обмена «лайками», «поделиться», «комментариями» или «фолловерами».
Большинство из этих правил довольно стандартны при использовании API. Создатель API хочет гарантировать, что его пользователей не забомят рекламой, спамом или фейковыми пользователями. Это помогает сохранить сообщество на высоком уровне культуры.
Итак, если мы не можем повторить сайт или приложение, какой смысл в работе с их API? Это хороший вопрос. Пока Instagram, кажется, довольно мягок с этими правилами, поскольку есть сайты и приложения, которые довольно близко повторяют основные функции. Также есть очень аккуратные приложения, вроде printstagram, которое позволит вам печатать квадратные изображения.
instagram-node
Вернёмся к нашему приложению; нам нужно будет настроить instagram-node. Давайте добавим эту строку в раздел конфигурации нашего файла server.js:
// КОНФИГУРАЦИЯ ПРИЛОЖЕНИЯ // ================================================== . // настройка приложения с client_id ig.use(< client_id: 'e0e51c60672c4f09abe28c46c71a3a7a', client_secret: 'db11c575a8ae4f1aa90a03ba1d1345d8' >); .
Мы заполнили учётные данные клиента, вы можете свободно передавать их, пакет instagram-node обработает всё остальное. Мы не должны беспокоиться о добавлении client_id к любому URL, как это делали в анализе API.
Пакет также упрощает вызовы API для использования. Список вызовов API можно найти в документации. Вызов, который нам нужен для популярных картинок следующий:
ig.media_popular(function(err, medias, remaining, limit) <>);
Мы будем использовать этот вызов, чтобы передать medias в наше представление.
Как скачать свои данные (фотографии и посты) из Инстаграма*
В Инстаграме есть специальный инструмент «Скачивание данных». С его помощью можно скачать все свои фотографии, комментарии, описание профиля. Для скачивания данных нужно сначала войти в Инстаграм со своим логином и паролем с компьютера, через браузер.
Как заказать архив данных в Инстаграме
Открыть «Скачивание данных» можно по ссылке www.instagram.com/download/request/ или последовательно выполняя действия:
- Нажми на значок своего профиля справа вверху.
- Выбери Настройки в выпадающем меню.
- Выбери Конфиденциальность и безопасность в левой колонке.
- Прокрути до пункта «Скачивание данных» в правой колонке.
- Нажми на ссылку Запросить файл.
Теперь, когда открыта страница «Скачивание копии вашей информации», остается еще пара действий:
- Инстаграм спросит, какой формат данных использовать — HTML или JSON. Если тебе это ни о чем не говорит, выбирай HTML (этот вариант выбран по умолчанию).
- Введи свой пароль для подтверждения действия и нажми Запросить файл.
Если доступ к Инстаграму с компьютера есть, но ты не помнишь пароль, придется сначала восстановить доступ и задать новый пароль:

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