Документация api cinemate¶
Реализация API сайта cinemate.cc на языке python.
Содержание:
Использование¶
Для начала использования библиотеки необходимо инициализировать основной класс:
from cinemate import Cinemate
cin = Cinemate(
'your_username',
'your_password',
'your_passkey',
'your_apikey'
)
Конфигурационный файл¶
Если не укзать данные для доступа к сайту (имя пользователя, пароль, passkey, apikey),
то они будут считываться из файла ~/.cinemate или %HOME%\.cinemate в зависимости
от операционной системы.
Формат файла:
auth:
username: your_username
password: your_password
passkey: your_passkey
apikey: apikey
Файл может быть создан автоматически при инициализации основного класса в интерактивном режиме:
>>> from cinemate import Cinemate
>>> Cinemate()
Username: your_username
Password:
Passkey:
Apikey:
<Cinemate: your_username>
В целях безопасности пароль, passkey и apikey не отображаются. При инициализации данные будут сохранены и в следующий раз запрашиваться не будут.
Список методов API¶
Доступ к методам api осуществляется через аттрибуты объекта cinemate. Ниже приведена таблица сооветсвия методов API и данной реализации.
| Метод API | Описание | Метод реализации |
|---|---|---|
| account.auth | Авторизация по логину и паролю | cin.account.auth() |
| account.profile | Данные и статистика пользовательского аккаунта | cin.account.profile() |
| account.updatelist | Записи ленты обновлений пользователя | cin.account.updatelist() |
| account.watchlist | Метод возвращает список объектов слежения пользователя | cin.account.watchlist() |
| movie | Информация о фильме | cin.movie.get(id) |
| movie.list | Результаты поиска фильмов, используя заданные фильтры | cin.movie.list() |
| movie.search | Поиск по заголовкам фильмов | cin.movie.search() |
| person | Основная информация о персоне | cin.person.get(id) |
| person.movies | Фильмы, в съемке которых персона принимала участие | cin.person(id).movies() |
| person.search | Метод возвращает первые 10 результатов поиска по базе персон | cin.person.search() |
| stats.new | Метод возвращает статистику сайта за последние сутки | cin.stats.new() |
Примеры использования некоторых методов приведены в репозитарии.
Фильмы¶
-
class
cinemate.Movie(movie_id, **kwargs)[исходный код]¶ Класс реализуюзий фильмы, сериалы, короткометражки.
Параметры: - movie_id (
int) – идентификатор фильма на cinemate.cc - title (
Title) – название - year (
int) – год выхода - type (
int) – типmovie,serial,short - description (
str) – описание - imdb (
Rating) – рейтинг IMDb - kinopoisk (
Rating) – рейтинг kinopoisk - poster (
Poster) – постер фильма - release (
Release) – даты релиза - runtime (
int) – продолжительность в минутах - trailer (
str) – ссылка на трейлер - url (
str) – ссылка на cinemate.cc - genre (
Genre) – список жанров - country (
Country) – список стран - cast (
list) – список актёров - director (
list) – список режиссеров
-
fetch(*args, **kwargs)¶ Обёртка для метода fetch. Каждый раз после вызова метода экземпляр класса добавляется в _instances.
-
classmethod
from_dict(dct)[исходный код]¶ Получить информацию о фильме из словаря, возвращаемого API.
Параметры: dct ( dict) – словарь, возвращаемый APIРезультат: фильм Тип результата: Movie
-
classmethod
get(movie_id)[исходный код]¶ Короткий аналог movie(123).fetch()
Параметры: movie_id ( int) – идентификатор требуемого фильмаРезультат: фильм Тип результата: Movie
-
classmethod
list(**kwargs)[исходный код]¶ Метод API movie.list возращает результаты поиска фильмов, используя заданные фильтры. По-умолчанию возвращается 10 первых фильмов.
Параметры: - kwargs (
dict) – именованные фильтры - type (
str) – тип фильмов. Возможные значения:movie,serial,short - year (
int) – год выпуска фильма или сериала - genre (
strorcinemate.Genre) – slug жанра - country (
strorcinemate.Country) – slug страны - order_by (
str) – критерий сортировки:create_date,release_date,ru_release_date - order (
str) – порядок сортировки параметраorder_by:desc,asc - order_from (
datetime.dateorstr) – начальная дата среза параметраorder_byв форматеДД.ММ.ГГГГ - order_to (
datetime.dateorstr) – конечная дата среза параметраorder_byв форматеДД.ММ.ГГГГ - page (
int) – страница в выборке (по умолчанию 0) - per_page (
int) – количество записей в выборке (по умолчанию 10, максимум 25)
Результат: список фильмов
Тип результата: Исключение: ValueError – вызывается если указан один из параметров
order_to/order_from, но не указанorder_by- kwargs (
-
classmethod
search(term)[исходный код]¶ Метод API movie.search производит поиск по заголовкам фильмов. Поддерживается уточняющий поиск по году выхода фильма и коррекцию ошибок при печати.
Параметры: term ( str) – искомая строкаРезультат: список фильов Тип результата: list
- movie_id (
-
class
cinemate.Title(russian='', original='', english='')[исходный код]¶ Заголовки фильма на разных языках.
Параметры: -
classmethod
from_dict(dct)[исходный код]¶ Задать название фильма из словаря, возвращаемого API.
Параметры: dct ( dict) – словарь, возвращаемый APIРезультат: фильм Тип результата: .Movie
-
classmethod
-
class
cinemate.Genre(name, slug=None)[исходный код]¶ -
Параметры:
-
class
cinemate.Poster(small, medium, big)[исходный код]¶ Постер фильма в трёх размерах.
Параметры:
-
class
cinemate.Release(world=None, russia=None)[исходный код]¶ Даты релиза фильма.
Параметры:
-
class
cinemate.Rating(votes=0, rating=0)[исходный код]¶ Рейтинг фильма imdb и kinopoisk.
Параметры:
-
class
cinemate.Country(name, slug=None)[исходный код]¶ Страна производства фильма.
Параметры:
Актеры и режиссеры¶
-
class
cinemate.Person(person_id, **kwargs)[исходный код]¶ Класс персоны.
Параметры: -
fetch(*args, **kwargs)¶ Обёртка для метода fetch. Каждый раз после вызова метода экземпляр класса добавляется в _instances.
-
classmethod
from_dict(dct)[исходный код]¶ Информация о персоне из словаря, возвращаемого API.
Параметры: dct ( dict) – словарь, возвращаемый APIРезультат: персона Тип результата: Person
-
classmethod
get(person_id)[исходный код]¶ Короткий аналог person(123).fetch()
Параметры: person_id ( int) – идентификатор персоныРезультат: персона Тип результата: Person
-
movies()[исходный код]¶ Метод API person.movies возвращает фильмы, в съемке которых персона принимала участие в качестве актера или режиссера.
Результат: словарь с ключами actor, director Тип результата: dict
-
classmethod
search(term)[исходный код]¶ Метод API movie.search возвращает первые 10 результатов поиска по базе персон.
Параметры: term ( str) – искомая строка; поддерживает коррекцию ошибок при печатиРезультат: список персон Тип результата: list
-
-
class
cinemate.Photo(small, medium, big)[исходный код]¶ Фотография персоны. Включает в себя 3 тега со ссылками на фотографии разных размеров.
Параметры: Type: big:
str
Доступ к пользовательским данным¶
-
class
cinemate.Account[исходный код]¶ Класс для получения пользовательских данных.
-
auth()[исходный код]¶ Метод API account.auth возвращает passkey.
Результат: passkey Тип результата: str
-
profile()[исходный код]¶ Метод API account.profile получить поля профиля.
Результат: словарь с полями профиля Тип результата: dict
-
updatelist()[исходный код]¶ Метод API account.updatelist возвращает записи ленты обновлений пользователя.
Результат: список персон и фильмов за которыми следит пользователь Тип результата: list
-
watchlist()[исходный код]¶ Метод API account.watchlist возвращает список объектов слежения пользователя.
Результат: словарь объектов слежения с ключами movie, person Тип результата: dict
-
Статистика сайта¶
-
class
cinemate.Stats[исходный код]¶ Статистика сайта.
-
new()[исходный код]¶ Метод API stats.new возвращает статистику сайта за последние сутки.
Результат: словарь содежащий статистику за последние сутки Тип результата: dict
-
Расширение функционала¶
Можно расширить базовый функционал библиотеки собственными методами и классами.
Пример:
from requests import session
from cinemate import Cinemate, Movie
from cinemate.utils import BaseCinemate
class MovieWithLinks(Movie):
""" Добавление дополнительного метода к основному классу. """
def links(self):
return self.cinemate.link.for_movie(self.id)
class Link(BaseCinemate):
""" Собственный класс для работы с ссылками. """
@classmethod
def for_movie(cls, movie_id):
""" your code here """
class CinemateExtra(Cinemate):
""" Переопределение главного класса. """
def __init__(self, *args, **kwargs):
super(CinemateExtra, self).__init__(*args, **kwargs)
self.session = session()
# переопределение класса movie
self.movie = type('movie', (MovieWithLinks,), {'cinemate': self})
# добавление класса link
self.link = type('link', (Link,), {'cinemate': self})
def login(self):
""" your code here """