Skip to main content

ПОЛКА

Python модуль для доступа к API образовательного проекта «Полка».

Установка

Для работы модуля требуется Python 3.6+. Никаких зависимостей, кроме стандартной библиотеки нет.

pip install polka

Использование

Для получения данных в сыром виде «как есть», существуют функции rawbooks, rawbook, rawsearch, rawlists, rawlist и другие начинающиеся на raw.

>>> import polka

>>> [func for func in dir(polka) if func.startswith("raw")]
['rawbook', 'rawbooks', 'rawlist', 'rawlists', 'rawpunditfavs', 'rawpunditposts', 'rawpundits', 'rawsearch']

Но удобнее использовать функции books, lists, pundits, search и объекты Book, Compilation и Pundit.

Функция books возвращает список книг, каждая из которых является объектом Book.

>>> for book in polka.books()[:3]:
...     assert isinstance(book, polka.Book)
...     print(f"{book.title:<25} {book.year.start}")
Герой нашего времени      1840
Анна Каренина             1877
Мёртвые души              1842

Book содержит всю доступную информацию о книге, включая вопросы и ответы (если имеются).

>>> book
Book(title='Мёртвые души', authors=['Николай Гоголь'])

>>> book.description
'Великая поэма, праздник нелепости и гротеска, от которой парадоксальным образом отсчитывают историю русского реализма. Задумав трёхчастное произведение по образцу «Божественной комедии», Гоголь успел завершить только первый том — в котором ввёл в литературу нового героя, дельца и плута, и создал бессмертный образ России как птицы-тройки, несущейся в неизвестном направлении.'

>>> book.pundit
Pundit(name='Варвара Бабицкая')

>>> item = book.questions[0] # first question
>>> item.question
'О чём эта книга?'

>>> item.answer # or item.answer_with_notes
'В губернский город N. приезжает отставной чиновник Павел Иванович Чичиков, человек, лишённый отличительных черт и всем приходящийся по нраву. Очаровав губернатора, городских чиновников и окрестных помещиков, Чичиков начинает объезжать последних с загадочной целью: он скупает мёртвые души, то есть умерших недавно крепостных, которые ещё не внесены в ревизскую сказку и потому формально считаются живыми. Навестив последовательно карикатурных, каждый в своём роде, Собакевича, Манилова, Плюшкина, Коробочку и Ноздрёва, Чичиков оформляет купчие и готовится довести до конца свой таинственный план, но к концу первого (и единственного завершённого) тома поэмы в городе N. сгущаются какие-то хтонические силы, разражается скандал, и Чичиков, по формулировке Набокова, «покидает город на крыльях одного из тех восхитительных лирических отступлений... которые писатель всякий раз размещает между деловыми встречами персонажа». Так заканчивается первый том поэмы, задуманной Гоголем в трёх частях; третий том так и не был написан, а второй Гоголь сжёг — сегодня нам доступны только его реконструкции по сохранившимся отрывкам, причём в разных редакциях, поэтому, говоря о «Мёртвых душах», мы подразумеваем в общем случае только первый их том, завершённый и опубликованный автором.'

Функция pundits возвращает список представленных на сайте экспертов.

>>> for expert in polka.pundits()[:3]:
...     assert isinstance(expert, polka.Pundit)
...     print(expert)
Pundit(name='Евгения Абелюк')
Pundit(name='Михаил Айзенберг')
Pundit(name='Александр Архангельский')

Каждый эксперт представлен объектом Pundit.

>>> expert
Pundit(name='Варвара Бабицкая')

>>> expert.credit
'Литературный критик, редактор проекта «Полка»'

>>> expert.description
'Редактор, литературный критик, переводчик. Редактор проекта «Полка». Делала литературные и культурные разделы и печаталась на портале OpenSpace.ru, а затем Colta.ru, в проекте «Сноб», на радио «Свободная Европа»/«Радио Свобода», в журнале The New Times, писала для сайта «Афиша–Воздух», сайта «Горький» и других. Как редактор и переводчик сделала несколько книг для издательств «НЛО», Corpus, «Стрелка».'

>>> for book in expert.wrote_about:
...     print(book)
Book(title='Горе от ума', authors=['Александр Грибоедов'])
Book(title='Житие протопопа Аввакума', authors=['Аввакум Петров'])
Book(title='Картины прошедшего', authors=['Александр Сухово-Кобылин'])
Book(title='Колымские рассказы', authors=['Варлам Шаламов'])
Book(title='Леди Макбет Мценского уезда', authors=['Николай Лесков'])
Book(title='Мёртвые души', authors=['Николай Гоголь'])

>>> expert.favorites
[]

Функция lists возвращает компиляции книг по темам и направлениям.

>>> for compilation in polka.lists()[:3]:
...     print(compilation)
Compilation(title='Древняя Русь')
Compilation(title='Русский классицизм')
Compilation(title='Открытие истории')

Каждый список представлен объектом Compilation.

>>> compilation
Compilation(title='Антиутопия')

>>> compilation.short_description
'От строительства «Интеграла» до Дня открытых убийств'

>>> compilation.description
'Первопроходцем жанра антиутопии в XX веке оказывается Евгений Замятин, однако затем эстафету подхватывают Америка и Европа: в Советском Союзе антиутопия перестаёт быть фактом литературы и реализуется на практике. Создатели советских антиутопий, появившихся после долгого перерыва, уже учитывали опыт Хаксли и Оруэлла, имея, однако, перед ними то жутковатое преимущество, что советские антиутопии пишутся во многом с натуры. Тоталитарное государство посягает на основные права и потребности человека, распоряжается его жизнью и свободой, залезает к нему в постель, в кастрюлю и в голову, а литература пытается понять те социальные и психические механизмы, которые сделали это возможным: сперва противясь наступлению тоталитаризма, человек со временем приспосабливается и даже пытается использовать с итуацию к своей выгоде.'

>>> for book in compilation.books:
...     print(book)
Book(title='Мы', authors=['Евгений Замятин'])
Book(title='Говорит Москва', authors=['Юлий Даниэль'])
Book(title='Улитка на склоне', authors=['Аркадий Стругацкий', 'Борис Стругацкий'])
Book(title='Невозвращенец', authors=['Александр Кабаков'])

Функция search ищет указанную подстроку среди статей, списков и экспертов.

>>> for title, entry, obj in polka.search("двойник")[:3]:
...     assert isinstance(obj, (polka.Book, polka.Pundit, polka.Compilation))
...     print(f"{title.upper()}: ...{entry}...")
ФЁДОР ДОСТОЕВСКИЙ «БЕДНЫЕ ЛЮДИ»: ...людей», Достоевский сразу же принялся за повесть «Двойник» о...
АЛЕКСАНДР ПУШКИН «ЦЫГАНЫ»: ...выполняет важную функцию в сюжете поэмы — своеобразного двойника...
МИХАИЛ ЛЕРМОНТОВ «ГЕРОЙ НАШЕГО ВРЕМЕНИ»: ...Как и пародийный Грушницкий, этот двойник должен быть...

🔝

Metadata

Release files for polka 2.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for polka 2.5.0
File Size Uploaded Provenance Actions
polka-2.5.0.tar.gz 9.5 kB Without provenance Details for polka-2.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for polka 2.5.0
File Interpreter ABI Platform Actions
polka-2.5.0-py3-none-any.whl Python 3 none any Details for polka-2.5.0-py3-none-any.whl

Total release size: 17.8 kB

Release files / polka-2.5.0.tar.gz

Download URL polka-2.5.0.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d2840251fdd8399a9068ad2e28140d125326f2e34ba633e75a0bfed3fda49b48
BLAKE2b-256 checksum
How to use checksums
4a58647d7eacd6eb00afaeb5f01df1fe4ed410f1d0739cc26c051c6a36915403
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/0.12.17 CPython/3.6.7 Linux/4.15.0-1028-gcp

Release files / polka-2.5.0-py3-none-any.whl

Download URL polka-2.5.0-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89e667a062f321042e364093f59ff18a7e3317a742cff2798d2fc007404a387d
BLAKE2b-256 checksum
How to use checksums
b030c6287eb421048e3a4d6a257dbfadeac2abb14ebb0c0585acf621875500ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/0.12.17 CPython/3.6.7 Linux/4.15.0-1028-gcp

Security for polka 2.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page