Skip to main content

A module provides access to the public Polka API. (https://polka.academy/).

Project description

ПОЛКА

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}...")
ФЁДОР ДОСТОЕВСКИЙ «БЕДНЫЕ ЛЮДИ»: ...людей», Достоевский сразу же принялся за повесть «Двойник» о...
АЛЕКСАНДР ПУШКИН «ЦЫГАНЫ»: ...выполняет важную функцию в сюжете поэмы  своеобразного двойника...
МИХАИЛ ЛЕРМОНТОВ «ГЕРОЙ НАШЕГО ВРЕМЕНИ»: ...Как и пародийный Грушницкий, этот двойник должен быть...

🔝

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polka-2.4.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

polka-2.4.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file polka-2.4.0.tar.gz.

File metadata

  • Download URL: polka-2.4.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.6.3 Linux/4.4.0-101-generic

File hashes

Hashes for polka-2.4.0.tar.gz
Algorithm Hash digest
SHA256 8c33cce7ac3bce4abe20f3865df585c1eddd07509bd8de8eec266b05827b535b
MD5 55349759d7b203342be5221cf2dfe845
BLAKE2b-256 b71540c702b8436626eeced166e5f1f51b62323a4d07c5b79fb0703e8c283fca

See more details on using hashes here.

File details

Details for the file polka-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: polka-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.6.3 Linux/4.4.0-101-generic

File hashes

Hashes for polka-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76310cb10716e3917212b755a45599d3eaab7ce1b69a50b5b61415bad012e8da
MD5 9303c9906559f8b8cd68df0abccccf3f
BLAKE2b-256 570d4b45a43569cab48a1a7ae9b7a2083bfa6b4ff5617f0d03a402a9e34c983f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page