Skip to content

Latest commit

 

History

History
300 lines (279 loc) · 8.13 KB

README.md

File metadata and controls

300 lines (279 loc) · 8.13 KB

КиноПоиск 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.