Add Goodreads series and group them on the about page

This commit is contained in:
SirBlob committed 2026-11-01 20:57:37 -05:00
1 parent 737700a9a8
commit 2318cdeaac
11 files changed
+651 -12

No files matched your search

+12 -5
View File
@@ -214,8 +214,10 @@ def print_summary(book: dict):
def main() -> int:
parser = argparse.ArgumentParser(description="Scrape book info from a Goodreads book page")
parser.add_argument("urls", nargs="+", help="Goodreads book urls, for example https://www.goodreads.com/book/show/170448.Animal_Farm")
import goodreads_series
parser = argparse.ArgumentParser(description="Scrape book or series info from Goodreads")
parser.add_argument("urls", nargs="+", help="Goodreads book or series urls, for example https://www.goodreads.com/book/show/170448.Animal_Farm")
parser.add_argument("--json", action="store_true", help="print the raw result as JSON")
parser.add_argument("--debug", action="store_true", help="show what the downloaded page contains instead of parsing it")
parser.add_argument("--save-html", type=Path, help="with --debug, save the downloaded page to this file")
@@ -223,19 +225,24 @@ def main() -> int:
exit_code = 0
for url in arguments.urls:
is_series = goodreads_series.series_id(url) is not None
try:
if arguments.debug:
print_diagnostics(url, arguments.save_html)
print(f"React data {len(goodreads_series.REACT_PROPS_PATTERN.findall(download_page(url).text))} blocks")
continue
book = scrape_book(url)
result = goodreads_series.scrape_series(url) if is_series else scrape_book(url)
except (OSError, ValueError) as error:
print(f"Error for {url}: {error}", file=sys.stderr)
exit_code = 1
continue
if arguments.json:
print(json.dumps(book, indent="\t", ensure_ascii=False))
print(json.dumps(result, indent="\t", ensure_ascii=False))
elif is_series:
goodreads_series.print_series(result)
print()
else:
print_summary(book)
print_summary(result)
print()
return exit_code