КиноПоиск API gem (обновлённая рабочая версия)
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
lib
spec
.gitignore
.travis.yml
CODE_OF_CONDUCT.md
Gemfile
LICENSE.txt
README.md
Rakefile
earch.exactly
kp_api.gemspec

README.md

КиноПоиск API (Gem)

Build Status Gem Version Dependency Status Maintainability

Этот gem создан для упрощения работы с КиноПоиск API в проектах на Ruby. Гем работает через API от кинопоиска. Используется соответственно не официально, прикидываясь андроидом.

Что нового

  • Изменено название гема.
  • Восстановлена работа API использует последнюю версию подписи 5.0.0.
  • Написаны тесты.
  • Добавлен travis-ci.

Установка

Добавьте эту строку в Gemfile вашего приложения:

gem 'kp_api'

Затем выполните:

$ bundle

Использование

Глобальные функции

api = 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_ids

Поиск

Глобальный поиск

search = KpApi::GlobalSearch.new('Бразилия')
#   Найдено ли что-нибудь
search.found?
#   Количество найденных фильмов
search.films_count
#   Количество найденных фильмов
search.peoples_count
#   Скорее всего вы искали этот фильм
search.youmean
#   Остальные найденные фильмы(лимит: 3)
search.films
#   Или даже этих людей
search.peoples

Поиск по фильмам

search = 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

Благодарность

Всем кто связывался со мной и помог разобраться с алгоритмом.

License

The gem is available as open source under the terms of the MIT License.