A package for scraping and serving book data in to bookspointer.
Project description
bookspointer
A package for scraping and serving book data.
Installation
pip install bookspointer
Usage
Import and use the modules in your Python code:
from bookspointer.scraper import BookScraper
from bookspointer.server import BookAPI, AuthorAPI, TokenAPI
from bookspointer.sheet import AuthorSheetManager
from bookspointer.api import BookspointerAPI
from rich import print
import random
# Initialize the main classes
scraper = BookScraper([5, 17]) # Categories to scrape by single page
book_api = BookAPI()
author_api = AuthorAPI()
def update_authors_from_bookspointer():
"""
Fetches authors from a Google Sheet using AuthorSheetManager and updates them on the server.
"""
# Fetch and update authors from Google Sheet to your server
author_sheet = AuthorSheetManager().run()
def update_books_from_authors():
"""
Fetches unscraped authors from the server, scrapes their books, adds the books to the server, and marks authors as scraped.
"""
# Fetch unscraped authors and update their books
authors = author_api.get_unscraped_authors()
for author in authors:
author_url = author.get('author_link')
author_name = author.get('author_name', 'Unknown')
author_id = author.get('author_id')
if not author_url:
continue
books = scraper.get_book_list(author_url)
for book in books:
book_list = scraper.get_book_details(book, author_id)
for book in book_list:
add_book = book_api.create(book)
author_api.update(author.get('id'), {"is_scraped": "yes"})
print(
f"Added book: {book['title']} by {author_name} with ID: {add_book}")
print(f"Finished scraping books for author: {author_name}")
def post_books_on_bookspointer():
"""
Posts all books that have not yet been posted to Bookspointer using random tokens for authentication.
"""
books = book_api.get_all_books(is_posted=False)
tokens = TokenAPI().get_all_tokens()
for book in books:
token = random.choice(tokens)
bookspointer_api = BookspointerAPI(token)
bookspointer_api.post_book(book)
def main():
"""
Orchestrates the process of updating authors, updating books, and posting books by calling the respective functions in sequence.
"""
print("Starting to update authors from Bookspointer...")
update_authors_from_bookspointer()
print("Authors updated successfully.")
print("Starting to update books from authors...")
update_books_from_authors()
print("Books updated successfully.")
print("Starting to post books on Bookspointer...")
post_books_on_bookspointer()
print("All books posted successfully.")
if __name__ == "__main__":
main()
Features
- Scrape book data
- Serve book data via API
- Sync authors and books with Google Sheets
Project Links
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bookspointer-0.2.3.tar.gz
(20.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bookspointer-0.2.3.tar.gz.
File metadata
- Download URL: bookspointer-0.2.3.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03fbbcbc4a2a1633dfe2ed98b610f1e9c5617109e473f4fdc21b5b4f558885c0
|
|
| MD5 |
257b50429149eb36017c9b2fdccf9b47
|
|
| BLAKE2b-256 |
1fef7fa94715a26a5afb1a63c989d4c99465699928071987819b2135790814ac
|
File details
Details for the file bookspointer-0.2.3-py3-none-any.whl.
File metadata
- Download URL: bookspointer-0.2.3-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
956843081a5f36690e6f609688a917972fc99595740c3ae79982d5b41d5f6286
|
|
| MD5 |
22c65fcb6eb6f1cd89e4074ff64d2616
|
|
| BLAKE2b-256 |
49865c766f26ffb54d9c353c0ebaf772c986397b1111ef314214ac853c55049d
|