Coder Social home page Coder Social logo

masterweber / kinopoisk-api-unofficial-client Goto Github PK

View Code? Open in Web Editor NEW
23.0 3.0 5.0 56 KB

Python-модуль для взаимодействия с неофициальным API КиноПоиска

License: MIT License

Python 100.00%
python api kinopoisk

kinopoisk-api-unofficial-client's Issues

Добавьте ,пожалуйста, coverUrl в класс фильм и оберните все поля в "optional"

Я обернул все строки так, чтобы возможно было получать фильм без некоторых полей.

@dataclass
class Film:
    kinopoisk_id: Optional[int] = None
    imdb_id: Optional[str] = None
    name_ru: Optional[str] = None
    name_en: Optional[Union[str, None]] = None
    name_original: Optional[str] = None
    poster_url: Optional[str] = None
    poster_url_preview: Optional[str] = None
    reviews_count: Optional[int] = None
    rating_good_review: Optional[float] = None
    rating_good_review_vote_count: Optional[int] = None
    rating_kinopoisk: Optional[float] = None
    rating_kinopoisk_vote_count: Optional[int] = None
    rating_imdb: Optional[float] = None
    rating_imdb_vote_count: Optional[int] = None
    rating_film_critics: Optional[float] = None
    rating_film_critics_vote_count: Optional[int] = None
    rating_await:  Optional[Union[float, None]] = None
    rating_await_count: Optional[int] = None
    rating_rf_critics:  Optional[Union[float, None]] = None
    rating_rf_critics_vote_count: Optional[int] = None
    year: Optional[int] = None
    film_length: Optional[int] = None
    is_tickets_available: Optional[bool] = None
    production_status:  Optional[Union[ProductionStatus, None]] = None
    type: Optional[FilmType] = None
    has_imax: Optional[bool] = None
    has_3_d: Optional[bool] = None
    countries: Optional[List[Country]] = None
    genres:  Optional[List[Genre]] = None
    start_year:  Optional[Union[int, None]] = None
    end_year:  Optional[Union[int, None]] = None
    web_url: Optional[str] = None
    slogan: Optional[str] = None
    description: Optional[str] = None
    short_description: Optional[str] = None
    editor_annotation: Optional[str] = None
    rating_mpaa: Optional[str] = None
    rating_age_limits: Optional[str] = None
    last_sync: Optional[str] = None
    serial: Optional[bool] = None
    short_film: Optional[bool] = None
    completed: Optional[bool] = None
    coverUrl: Optional[str] = None

A request.

Hi! I didn't manage to find your contacts anywhere, so I only can write there. I can delete this issue later.
I am a sociology student, writing a graduate diploma thesis about cinema. I own statistical packages and plan to collect data from the sites kinopoisk, IMDb, rotten tomatoes, make descriptive statistics on them, twist a little data on python, build networks and conduct network analysis in R and Pajek. Parsing a kinopoisk is very difficult, but you know it yourself. Could you provide a csv copy of the database of films and actors of kinopoisk? I will be immensely grateful to you.... Maybe you have a sparse database of users and their reviews, ratings?
thank you in advance.

All the best,
Stepan.

[email protected]

Нерабочие примеры?

Я использовал следующий код (из README):

from kinopoisk_unofficial.kinopoisk_api_client import KinopoiskApiClient
from kinopoisk_unofficial.request.films.search_by_keyword_request import SearchByKeywordRequest

api_client = KinopoiskApiClient("token")
request = SearchByKeywordRequest("Kek")
response = api_client.films.send_search_by_keyword_request(request)

(Вместо "token" стоит токен)

Но я получил ошибку:

Traceback (most recent call last):
  File "/home/igors/Рабочий стол/archive/Main.py", line 6, in <module>
    response = api_client.films.send_search_by_keyword_request(request)
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/kinopoisk_unofficial/client/films_api_client.py", line 38, in send_search_by_keyword_request
    return self._send_request(request)
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/kinopoisk_unofficial/client/api_client.py", line 47, in _send_request
    return self.__deserialize_response(
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/kinopoisk_unofficial/client/api_client.py", line 57, in __deserialize_response
    return self.__serializer.deserialize(response_class, response_body)
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/apischema/utils.py", line 546, in wrapper
    return wrapped(*args, **kwargs)
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/apischema/deserialization/__init__.py", line 869, in deserialize
    return deserialization_method(
  File "/home/igors/Рабочий стол/archive/.venv/lib/python3.10/site-packages/apischema/deserialization/__init__.py", line 528, in method
    raise ValidationError(errors, field_errors)
apischema.validation.errors.ValidationError: ValidationError(messages=[], children={'keyword': ValidationError(messages=['missing property'], children={}), 'pagesCount': ValidationError(messages=['missing property'], children={}), 'searchFilmsCountResult': ValidationError(messages=['missing property'], children={})})

Как исправить?

bad requests

    request = FilmSearchByFiltersRequest()
    request.year_from = 1000
    request.rating_from = 0
    request.order = FilterOrder.RATING
    data = await state.get_data()
    ids = data.get("id")
    zanrsss = data.get("zanr")
    request.add_genre(FilterGenre(ids,zanrsss))
    request.add_country(FilterCountry(ids, coun)) 
    response = api_client.films.send_film_search_by_filters_request(request)

При попытке выполнить поиск фильма с фильтрами выдает bad requests. Случается это только во второй раз (т.е первый раз бот ищет фильм, на второй выдает ошибку, после перезапуска опять в первый раз работает, а во второй уже нет)

Ошибка, когда встречаются пустые поля в карточке фильма

Добрый день!
В энтпоинте /api/v2.2/films/{id} когда когда в карточке фильма встречаются пустые поля, метод send_film_request вылетает.
Например:

  1. 1103803: imdbId = null, ошибка
    apischema.validation.errors.ValidationError: ValidationError(messages=[], children={'imdbId': ValidationError(messages=['expected type string, found null'], children={})})

  2. 41519: nameOriginal = null, ошибка
    apischema.validation.errors.ValidationError: ValidationError(messages=[], children={'nameOriginal': ValidationError(messages= ['expected type string, found null'], children={})})

Ошибка идентификационных номеров в запросе FiltersRequest

Здравствуйте!
Пользовался библиотекой kinopoisk_unofficial (python) и столкнулся с такой проблемой: при отправке запроса FiltersRequest, получаю соответствующий ответ, но при попытке отправить запрос FilmSearchByFiltersRequest c несколькими фильтрами из FiltersRequest, получаю неправильный ответ. Например, при request.countries = [FilterCountry(9, "Япония")] видно, что вместо Японии была найдена Германия. Можно сделать вывод, что запрос FiltersRequest возвращает неправильный ответ (id неправильные).
Прошу пояснить поведение FiltersRequest.
Пример кода прикреплен в файле test.py.

from kinopoisk_unofficial.request.films.filters_request import FiltersRequest
from kinopoisk_unofficial.request.films.film_search_by_filters_request import FilmSearchByFiltersRequest
from pprint import pprint

from api_client.api_client import api_client

req = FiltersRequest()
res = api_client.films.send_filters_request(req)
req = FilmSearchByFiltersRequest()
request = FilmSearchByFiltersRequest()
for item in res.countries:
    if item.country == "Япония":
        request.countries = [item]
        response = api_client.films.send_film_search_by_filters_request(request)
        print(item)
        pprint(response)
        break

Т.е., вместо фильтра Япония был применён фильтр Германия

Также обнаружил аналогичное неправильное поведение с фильтрами жанров

Ломается client при добавлении нового поля в api

Добрый день. Похоже на то, что когда добавляется новое поле в респонсе от api, ваша либа начинает выдавать ошибки.
Сейчас добавлено новое поле logoUrl, аналогично #5
Если это так, немогли бы вы сделать так чтобы, когда появлялись новые поля в api они просто игнорились и ничего не ломалось?

Не работает метод send_search_by_keyword_request

Эндпоинт: /api/v2.1/films/search-by-keyword
Метод: send_search_by_keyword_request(request: SearchByKeywordRequest) -> SearchByKeywordResponse

Ошибки ValidationError. Пример с главной страницы не работает.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.