Этот gem создан для упрощения работы с КиноПоиск API в проектах на Ruby. Гем работает через API от кинопоиска. Используется соответственно не официально, прикидываясь андроидом.
- Изменено название гема.
- Восстановлена работа API использует последнюю версию подписи 5.0.0.
- Написаны тесты.
- Добавлен travis-ci.
Добавьте эту строку в Gemfile вашего приложения:
gem 'kp_api'Затем выполните:
$ bundleapi = KpApi::[Class] api.status
# > true [Получена следующая станица]
# > false [Достигли конца пагинации]# Оригинальный хеш кинопоиска
api.data # Оригинальный хеш кинопоиска (используется в некоторых классах для дополнительного запроса).
# Пример: film.peoples_full)
api.data2 # Статус парсинга json
# Boolean
api.status # Статус парсинга json дополнительного запроса.
# Boolean
api.status2При ошибке выбрасывается исключение KpApi::ApiError. Доступные методы.
# http код ответа
e.code
=> "404"# Тело ответа
e.body
=> [key:false]Практически каждый метод имеет отдельный класс. При инициализации класса выполняется запрос к АПИ, возвращая текущий объект или исключение.
film = KpApi::Film.new(film_id)# Вся информация о фильме(включая rating, rent, budget).
film.view# Рейтинги фильма и т.д.
film.rating# Даты премьер и т.д.
film.rent# Бюджет и сборы.
film.budget# Люди связанные с фильмом(Не полный список, смотрите ниже).
film.peoples# Люди связанные с фильмом(Полный список). Генерирует новый запрос к API.
film.peoples_fullСервер не выдаёт 404 на не существующего человека. Исключение реализовано проверкой(NameRu, nameEn).
people = KpApi::People.new(people_id)# Детальная информация о человеке.
people.view# Фильмы связанные с конкретным человеком.
people.films# Массив id фильмов связанных с конкретным человеком.
people.films_idsСписок категорий, не понятно для чего нужен параметр country_id, но без него не
проходит запрос. По умолчанию 2(Россия).
category = KpApi::Category.new(country_id=2)# Страны
category.countries# Города (требует доп. запроса)
category.cities# Жанры
category.genresСписок фильмов идущих сегодня в кино. Если города не существует возвращает пустой массив.
- Параметр
city_idне обязательный, по умолчанию 1(Москва). - Параметр
country_idне обязательный, по умолчанию 2(Россия). Возможно не используется, т.к. первый уникальный, но приложение передает его в заголовках.
Доступны только эти страны:
- 2 - Россия
- 62 - Украина
- 69 - Беларусь
- 122 - Казахстан
- 71 - Узбекистан
today = KpApi::Today.new(city_id=1, country_id=2)# Список фильмов
today.view# Массив id фильмов
today.film_idssearch = KpApi::GlobalSearch.new('Бразилия')# Найдено ли что-нибудь
search.found?# Количество найденных фильмов
search.films_count# Количество найденных фильмов
search.peoples_count# Скорее всего вы искали этот фильм
search.youmean# Остальные найденные фильмы(лимит: 3)
search.films# Или даже этих людей
search.peoplessearch = KpApi::FilmSearch.new('Привет')# Найдено ли что-нибудь)
search.found?# Список фильмов (не более 20)
search.view# Количество найденных фильмов
search.films_count# Текущая страница
search.current_page# Количество страниц
search.page_count# Следующая страница(новый запрос к АПИ)
search.next_page
# > true [Получена следующая станица]
# > false [Достигли конца пагинации]search = KpApi::PeopleSearch.new('Андрей')# Список людей (не более 20)
search.view# Количество найденных фильмов
search.peoples_count# Текущая страница
search.current_page# Количество страниц
search.page_count# Следующая страница
search.next_page
# > true [Получена следующая станица]
# > false [Достигли конца пагинации]search = KpApi::PeopleSearch.new('Анд')# Найдено ли что-нибудь)
search.found?# Массив фильмов/людей в перемешку
# (@todo удалить неиспользуемые поля)
search.itemsПока реализованны только:
:popular_films:best_films:await_films:popular_people
top = KpApi::Top.new(:popular_films)# Массив топов (ограничение 20)
top.view# Массив хешей топов (рекурсивно идём по пагинации)
top.view_all(limit=15)# Массив Integer топа (рекурсивно идём по пагинации)
top.view_all(limit=15)@todo
Всем кто связывался со мной и помог разобраться с алгоритмом.
The gem is available as open source under the terms of the MIT License.