SecondThundeR / shikithon

Yet another Python wrapper for Shikimori API
https://pypi.org/project/shikithon/
MIT License
8 stars 0 forks source link

Ранобэ в истории пользователей #13

Closed ren3104 closed 1 year ago

ren3104 commented 1 year ago

При получении истории пользователя все ранобэ парсятся в Manga модели, а не Ranobe.

Пример: id=320104646 created_at=datetime.datetime(2023, 1, 24, 20, 41, 20, 645000, tzinfo=datetime.timezone(datetime.timedelta(seconds=10800))) description='Изменена оценка c 9 на 10' target=Manga(id=14893, name='Monogatari Series: First Season', russian='Цикл историй: Первый сезон', image=Image(original='/system/mangas/original/14893.jpg?1675141811', preview='/system/mangas/preview/14893.jpg?1675141811', x96='/system/mangas/x96/14893.jpg?1675141811', x48='/system/mangas/x48/14893.jpg?1675141811'), url='/ranobe/z14893-monogatari-series-first-season', kind='light_novel, score=8.94, status='released', volumes=6, chapters=107, aired_on='2006-11-01', released_on='2010-07-28', english=None, japanese=None, synonyms=None, license_name_ru=None, description=None, description_html=None, description_source=None, franchise=None, favoured=None, anons=None, ongoing=None, thread_id=None, topic_id=None, myanimelist_id=None, rates_scores_stats=None, rates_statuses_stats=None, licensors=None, genres=None, publishers=None, user_rate=None)

SecondThundeR commented 1 year ago

Вроде бы починил: https://github.com/SecondThundeR/shikithon/commit/d9d7f7bbd9efa05db84e45463a4779836571f1a8

https://github.com/SecondThundeR/shikithon/blob/d9d7f7bbd9efa05db84e45463a4779836571f1a8/shikithon/models/history.py#L7-L17

Забыл добавить модель ранобэ в юнион для таргета( Если не сложно перепроверить, то буду рад

p.s. похоже дело не в этом, а в Pydantic, который путается в моделях и берет почему-то именно мангу, буду думать как это пофиксить

SecondThundeR commented 1 year ago

Почекал доку Pydantic еще раз и в итоге каким-то чудом починил этот мем с помощью валидаторов:

https://github.com/SecondThundeR/shikithon/blob/ccb53c5f1f3d4016bb6272fbc8f993257ce28dea/shikithon/models/manga.py#L51-L55 https://github.com/SecondThundeR/shikithon/blob/ccb53c5f1f3d4016bb6272fbc8f993257ce28dea/shikithon/models/ranobe.py#L51-L55


Пример с ранобе:

image image

Пример с мангой:

image image

Пример с аниме:

image image

Вроде бы теперь все работает как надо

ren3104 commented 1 year ago

Я бы изменил валидацию с kind на url, потому что это поточнее, как по мне. url.startswith('/ranobe').

SecondThundeR commented 1 year ago

Вот кстати я это не сделал по одной причине. Когда я тестил у себя, то у меня возникали такие случаи, что в поле с ссылкой почему-то сама ссылка начиналась с /mangas (хотя когда переходишь по ней, тебя кидает на /ranobe

image image image

Так что я подумал, что надежнее будет все же ориентироваться по полю kind

image
SecondThundeR commented 1 year ago

Еще раз потестил остальную работу с новыми валидаторами и пока что отвалилась только модель манги, ибо в нем типов еще больше, поэтому вынес их в отдельную константу https://github.com/SecondThundeR/shikithon/blob/60665084ff8e911a80d8a6f90574ce1337f77657/shikithon/models/manga.py#L14 В остальном ничего такого не заметил, так что закрываю этот issue и делаю релиз с фиксом