%global _empty_manifest_terminate_build 0 Name: python-thestorygraph-client Version: 0.1.6 Release: 1 Summary: A Simple Python Client for TheStoryGraph License: MIT License URL: https://github.com/altvod/thestorygraph-client Source0: https://mirrors.nju.edu.cn/pypi/web/packages/39/13/6a25628fab2107ad864efa653262c6fd72d2019baaf8c3a6d99902f39d26/thestorygraph-client-0.1.6.tar.gz BuildArch: noarch Requires: python3-aiohttp Requires: python3-attrs Requires: python3-beautifulsoup4 Requires: python3-requests Requires: python3-yarl Requires: python3-build Requires: python3-twine Requires: python3-mypy Requires: python3-pytest Requires: python3-types-requests %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 ```bash pip install thestorygraph-client ``` ## Examples ### Search for books (sync) Find and print books related to `'SPQR'`: ```python 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: ```python 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 ```python 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 ```bash pip install -Ue .[testing] ``` ### Testing Run the tests: ```bash pytest tests ``` And always validate typing: ```bash mypy src/tsg ``` Or simply ```bash 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/ %package -n python3-thestorygraph-client Summary: A Simple Python Client for TheStoryGraph Provides: python-thestorygraph-client BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-thestorygraph-client # 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 ```bash pip install thestorygraph-client ``` ## Examples ### Search for books (sync) Find and print books related to `'SPQR'`: ```python 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: ```python 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 ```python 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 ```bash pip install -Ue .[testing] ``` ### Testing Run the tests: ```bash pytest tests ``` And always validate typing: ```bash mypy src/tsg ``` Or simply ```bash 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/ %package help Summary: Development documents and examples for thestorygraph-client Provides: python3-thestorygraph-client-doc %description help # 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 ```bash pip install thestorygraph-client ``` ## Examples ### Search for books (sync) Find and print books related to `'SPQR'`: ```python 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: ```python 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 ```python 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 ```bash pip install -Ue .[testing] ``` ### Testing Run the tests: ```bash pytest tests ``` And always validate typing: ```bash mypy src/tsg ``` Or simply ```bash 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/ %prep %autosetup -n thestorygraph-client-0.1.6 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-thestorygraph-client -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.1.6-1 - Package Spec generated