Skip to main content

A Simple Python Client for TheStoryGraph

Project description

thestorygraph-client

A Simple Python Client for TheStoryGraph.com

Sync and async clients as well as a model abstraction layer for the website.

Since no public API is available, this library parses HTML via BeautifulSoup4 and loads the data into model objects.

Installation

pip install thestorygraph-client

Examples

Search for books (sync)

Find and print books related to 'SPQR':

from tsg.client import SyncTSGClient

def print_search_result(search_text: str) -> None:
    client = SyncTSGClient()
    book_list = client.search(text=search_text)
    for book in book_list:
        print(f'{book.authors[0].name} - {book.title}')

print_search_result('SPQR')

Search for books (async)

Same as above, but using the asynchronous client:

import asyncio
from tsg.client import AsyncTSGClient

async def print_search_result(search_text: str) -> None:
    client = AsyncTSGClient()
    book_list = await client.get_browse(text=search_text)
    for book in book_list:
        print(f'{", ".join(book.author_names)} - {book.title}')

asyncio.run(print_search_result('SPQR'))

The two clients have identical APIs (beside the fact that the latter is async).

Get a book by ID

import asyncio
from tsg.client import AsyncTSGClient

async def print_book_by_id(book_id: str) -> None:
    client = AsyncTSGClient()
    book = await client.get_book(id=book_id)
    print(f'{book.title} by {", ".join(book.author_names)}')

asyncio.run(print_book_by_id('79b894b0-df12-4bb6-89d7-40288f28acc1'))

Development and Testing

Configuring the test environment

Install

pip install -Ue .[testing]

Testing

Run the tests:

pytest tests

And always validate typing:

mypy src/tsg

Or simply

make test

(it will run all test commands)

Links

Homepage on GitHub: https://github.com/altvod/thestorygraph-client

Project's page on PyPi: https://pypi.org/project/thestorygraph-client/

TheStoryGraph: https://thestorygraph.com/

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

thestorygraph-client-0.1.6.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

thestorygraph_client-0.1.6-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file thestorygraph-client-0.1.6.tar.gz.

File metadata

  • Download URL: thestorygraph-client-0.1.6.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for thestorygraph-client-0.1.6.tar.gz
Algorithm Hash digest
SHA256 f372bb63f5e172d69cec4a588a74ce16cd97212936847d668b75d4eff4c33be4
MD5 db0a2a138cb6eeb4de3201d1aa55db75
BLAKE2b-256 39136a25628fab2107ad864efa653262c6fd72d2019baaf8c3a6d99902f39d26

See more details on using hashes here.

File details

Details for the file thestorygraph_client-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: thestorygraph_client-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for thestorygraph_client-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0c1afa730a3a1d659cea86f147df0bb840c3fae8b22e5c3a3fa21295100d122e
MD5 07afb7325dca7d259800180e7792123d
BLAKE2b-256 ba05ceee7f560d16413ee4c375eaa3f6167ab43e9ed6ae533411999f256078d7

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