Add Goodreads series and group them on the about page
This commit is contained in:
1 parent
737700a9a8
commit
2318cdeaac
11 files changed
+651
-12
No files matched your search
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user