Skip to content

КиноПоиск API gem (обновлённая рабочая версия)

License

Notifications You must be signed in to change notification settings

vokshirg/kp_api

 
 

Repository files navigation

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

About

КиноПоиск API gem (обновлённая рабочая версия)

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 99.7%
  • Shell 0.3%