Git Product home page Git Product logo

inwidget's Introduction

/**
 * Project:     inWidget: show pictures from instagram.com on your site!
 * File:        readme.txt
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of MIT license
 * http://inwidget.ru/MIT-license.txt
 *
 * @link http://inwidget.ru
 * @author Alexandr Kazarmshchikov
 * @version 1.1.3
 * @package inWidget
 *
 */

// ----------------------------------------
// Системные требования:
// ----------------------------------------

* PHP >= 5.4.0 с поддержкой библиотеки cURL

// ----------------------------------------
// Установка виджета на сайт:
// ----------------------------------------

1. Загрузите исходный код виджета в корень вашего сайта:

Для этого скачайте архив с исходным кодом виджета. Извлеките папку /inwidget из архива. 
Загрузите папку /inwidget в корень вашего сайта со всеми файлами внутри.

Примечание. Виджет использует относительные пути, поэтому вы можете загрузить его в любую папку, 
если у вас нет доступа к корню сайта. Не забудьте при этом изменить путь в IFRAME.

2. Установите права на запись для папки /inwidget/cache:

В папке /inwidget/cache виджет будет хранить кэшированные данные. 
Если для директории будут отсутствовать права на запись, вы увидите ошибку ERROR #101.

3. Настройте виджет:

Отредактируйте файл /inwidget/config.php
Вам потребуется указать логин Instgram.

Список параметров:

* LOGIN – логин аккаунта в инстаграм из которого будут транслироваться фотографии.
* HASHTAG – хэш-теги через запятую (например: girl, man). Если вы хотите транслировать фотографии других пользователей, либо вывести фотографии с очень специфичным тегом, используйте эту опцию. Выборка фотографий будет производиться со всего мира в порядке того, как фотографии были отмечены искомым тегом. Обратите внимание, что тулбар с аватаркой и статистикой будет автоматически скрыт.
* bannedLogins - логины заблокированных пользователей через запятую (например: mark18, kitty45). Фотографии перечисленных пользователей не будут выводиться в виджете при использовании поиска по хештегам.
* imgRandom - выводить фотографии в случайном порядке [ true / false ]
* imgCount – сколько фотографий запрашивать из Instagram. Влияет на размер кэша.
* cacheExpiration – через сколько часов обновлять кэш.
* cacheSkip – не использовать кэш [ true / false ]. Если присвоить true, то кэш будет проигнорирован и запросы к API будут отправляться при каждой загрузке виджета. Используйте эту опцию только для отладки.
* langDefault - язык виджета по умолчанию [ ru / en ]
* langAuto - автоматически определять язык пользователя [ true / false ]

Внимание! Если после первичной настройки вы решите изменить LOGIN или HASHTAG,
изменения вступят в силу только после удаления файла с кэшем или после того, как кэш устареет. 

4. Вставьте виджет в сайт с помощью следующего кода:

<!-- По умолчанию -->
<iframe src='/inwidget/index.php' scrolling='no' frameborder='no' style='border:none;width:260px;height:330px;overflow:hidden;'></iframe> 

Ещё примеры вставки с различным отображением виджета: 

<!-- Без профиля -->
<iframe src='/inwidget/index.php?toolbar=false' scrolling='no' frameborder='no' style='border:none;width:260px;height:320px;overflow:hidden;'></iframe>

<!-- Мини 1 -->
<iframe src='/inwidget/index.php?width=100&inline=2&view=12&toolbar=false' scrolling='no' frameborder='no' style='border:none;width:100px;height:320px;overflow:hidden;'></iframe>

<!-- Мини 2 -->
<iframe src='/inwidget/index.php?width=100&inline=1&view=3&toolbar=false' scrolling='no' frameborder='no' style='border:none;width:100px;height:320px;overflow:hidden;'></iframe>

<!-- Горизонтальная ориентация -->
<iframe src='/inwidget/index.php?width=800&inline=7&view=14&toolbar=false' scrolling='no' frameborder='no' style='border:none;width:800px;height:295px;overflow:hidden;'></iframe>

<!-- Крупные preview -->
<iframe src='/inwidget/index.php?width=800&inline=3&view=9&toolbar=false&preview=large' scrolling='no' frameborder='no' style='border:none;width:800px;height:850px;overflow:hidden;'></iframe> 

// ----------------------------------------
// Точная настройка отображения виджета:
// ----------------------------------------

Параметры передаются как GET переменные при обращении к скрипту виджета.
К примеру, чтобы уставить ширину виджета 600px и вывести в строку пять фотографий, нужно добавить соотвествующие параметры в URL к скрипту. Т.е.: /inwidget/index.php?width=600&inline=5 

Список параметров:

width – ширина виджета (по умолчанию 260px);
inline – количество фотографий в строке (по умолчанию 4 шт.);
view – сколько фотографий отображать в виджете (по умолчанию 12 шт., максимально 30 шт., можно исправить в config.php);
toolbar – отобразить тулбар с аватаркой и статистикой (значения true/false, по умолчанию true);
preview – размер и качество изображений (small – маленькие до 320px, large – большие до 640px, fullsize – полноразмерые, по умолчанию стоит small)
lang – язык виджета (значения ru/en, по умолчанию берутся настройки из config.php). Приоритет этого параметра выше чем для настроек в config.php.

При изменении ширины или количества фотографий не забудьте изменить размер iframe. 

// ----------------------------------------
// Коды ошибок:
// ----------------------------------------

[*] ERROR #101 - не удаётся получить доступ к файлу с кэшем. Нужно изменить права на директорию /inwidget/cache 

Если файл не существует, виджет пытается создать его. Если файл существует, виджет пытается открыть его на чтение и запись. 
Отсутствие прав на чтение или запись файлов в директорию /inwidget/cache вызовет ошибку. 
Если до изменения прав на директорию в ней уже был файл с кэшем, просто удалите его, т.к. на него также установлены некорректные права.

[*] ERROR #102 - не удаётся получить время последнего изменения файла. 

Возможно, данная функция ограниченна или не поддерживается файловой системой вашего сервера. 
Для того, чтобы определить, актуален ли ещё кэш, виджет использует время последнего изменения файла в папке /inwidget/cache. 
Если не удаётся определить время, кэш всегда будет неактуальным, что приведёт к постоянным запросам к API Instagram.

[*] ERROR #500 - Неизвестная ошибка

Для выяснения деталей смотрите, что было записано в кэш. Данная ошибка сгенерированна библиотекой instagram-php-scraper и в большинстве случаев означает проблемы при отправке или получении данных запроса от сервера Instagram.
Чтобы виджет попытался отправить запрос ещё раз, удалите файл с кэшем и обновите страницу на которой выводится виджет.

// ----------------------------------------
// История версий:
// ----------------------------------------

inWidget-1.1.3
Дата: 11 ноября 2017 г.

* Исправлен баг при использовании нескольких хештегов. Вывод производился только по последнему тегу, а не по всем перечисленным.
* Исправлен баг с блокировкой нежелательных аккаунтов.
* В настройки добавлена опция cacheSkip. Если присвоить ей true, то кэш будет проигнорирован и запросы к API будут отправляться при каждой загрузке виджета. Используйте эту опцию только для отладки.
* Теперь можно передать настройки виджета конструктору класса в качестве аргумента. Приоритет таких настроек выше, чем в файле config.php. Пример: $inWidget = new inWidget($config);
* Обновлена библиотека instagram-php-scraper до версии v0.8.5.

inWidget-1.1.2
Дата: 09 ноября 2017 г.

* Исправлена ошибка приводящая к повреждению данных в массиве. Воспроизводилась только в PHP 7.1.x.
* Обновлена библиотека instagram-php-scraper до версии v0.8.4.
* Изменены модификаторы доступа

inWidget-1.1.1
Дата: 08 ноября 2017 г.

* Эта версия исправляет ошибку загрузки фотографий (из-за того, что источник /media/ больше не доступен)
* Вывод фотографий по хэштегам снова работает
* Обновлена библиотека instagram-php-scraper до v0.8.0. Пришлось внести в неё изменения, чтобы избавиться от ошибки загрузки фото, убрать лишние зависимости, избавиться от необходимости использовать пароль при поиске по тегам. Для этого полностью переписал функции getMedias и getMediasByTag класса Instagram, добавил файл autoload.php в папку plugins для совместимости.

inWidget-1.1.0
Дата: 18 февраля 2017 г.

* Для работы виджета теперь требует PHP >= 5.4.0 с поддержкой библиотеки cURL
* Добавлена проверка на минимальные системные требования
* Отправка запросов и прасинг ответов от Instagram теперь осуществляется через библиотеку instagram-php-scraper (https://github.com/postaddictme/instagram-php-scraper)
* Удалены оригинальные функции класса inWidget отвечающие за отправку запросов и проверку ответов сервера.
* ACCESS_TOKEN упразднён и больше нигде не используется. Также больше не требуется регистрация своего приложения.
* Упразднены ошибки с номерами: 103, 401, 404, 405, 406, 407.
* Появилась ошибка с номером 500 - которая в большинстве случаев отдаёт текст ошибки сгенерированной библиотекой instagram-php-scraper.
* Виджет теперь может выводить любой открытый профиль, а не только ваш.
* Вывод фотографий по тегам снова стал глобальным, т.е. в выдачу будут попадать фото и других пользователей, а не только ваши.
* Теперь можно указать несколько хештегов через запятую.
* Теперь можно блокировать нежелательные аккаунты других пользователей через опцию bannedLogins в файле confing.php. Логины необходимо перечислить через запятую. Опция будет полезна при работе с хештегами.
* Имя кэш-файла теперь совпадает с логином пользователя. Благодаря этому виджет можно использовать с несколькими аккаунтами одновременно. Вам лишь необходимо решить, как вы будете менять значение переменной LOGIN в файле confing.php
* Теперь виджет может получать от сервера любое количество фотографий. Т.е. значение параметра imgCount может быть существенно больше 30 шт. Мне удалось получить 1000 шт. за один раз, но я крайне не рекомендую вводить экстремальные значения. 

inWidget-1.0.7
Дата: 24 декабря 2015 г.

* Запросы на получение данных теперь используют ACCESS TOKEN.
* CLIENT_ID упразднён и больше нигде не используется.
* Частично изменилась логика обработки ошибок
* Появились ошибки с номерами: 404, 405, 406, 407. Описание см. в документации.

inWidget-1.0.6 
Дата: 28 августа 2014 г.

* Теперь виджет умеет работать с хэш-тегами на кириллице и других нелатинских языках.
* Поля LOGIN, CLIENT_ID и langDefault стали обязательными для заполнения.
* Вывод ошибок PHP снова включён. Рекомендую выключать после настройки виджета в index.php

inWidget-1.0.5 
Дата: 27 августа 2014 г.

* Исправлена ошибка деления на ноль в случае если виджету передаются некорректные аргументы. 
* Вывод PHP ошибок отключен из соображений безопасности. Для отладки можно включить в index.php

inWidget-1.0.4 
Дата: 22 августа 2014 г.

* Случайный порядок фотографий можно выключить в config.php
* Отсутствие фотографий в профиле больше не является ошибкой.
* Виджет переведён на русский и английский язык. Появились файлы локализации.
* Язык по умолчанию можно указать в config.php
* Виджет научился автоматически определять язык пользователя. Можно отключить в config.php
* Можно изменить язык виджета с помощью $_GET переменной.
* Произведён небольшой рефакторинг кода.

inWidget-1.0.3 
Дата: 11 августа 2014 г.

Исправлена ошибка из-за которой виджет мог начать транслировать фотографии другого пользователя.

inWidget-1.0.2
Дата: 01 августа 2014 г.

Добавлена возможность вывода фотографий по хэш-тегу.

inWidget-1.0.1
Дата: 28 июля 2014 г.

* Переписан механизм кэширования. Теперь используется файл, а не база данных.
* Размер кэша уменьшен в 10 раз.
* Скорость работы виджета увеличилась в 2 раза.
* Ошибки стали более информативными. Появились коды ошибок и пояснения.
* Картинки оформления встроены прямо в CSS, чтобы уменьшить количество запросов к серверу.
* Улучшена стабильность, произведён рефекторинг кода и исправлены мелкие баги.

inWidget-1.0.0
Дата: 23 января 2014 г.

С этой версии всё началось. Кэширование производится в базу данных MySQL.
Актуальная инструкция для этой версии содержится в архиве.

// ----------------------------------------
// Ваши отзывы, вопросы и предложения:
// ----------------------------------------

Посетите сайт виджета: http://inwidget.ru
Пишите на [email protected] или свяжитесь со мной Вконтакте http://vk.com/vanzan
Присоединяйтесь к разработке виджета на GitHub: https://github.com/aik27/inwidget
Статья о виджете на habrahabr: http://habrahabr.ru/post/223739/

inwidget's People

Contributors

aik27 avatar valeriyselitskiyviber avatar

Watchers

 avatar  avatar

Forkers

alekseiuva

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.