This repository has been archived by the owner on Aug 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
64 lines (55 loc) · 1.96 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Pubu PoC main file"""
import argparse
import sys
from PubuPoC import Main
def execute(args):
"""Execute using args"""
main = Main(
args.database, args.raw_pages, args.output, args.verbose, args.change_decode
)
if args.threads is not None:
# set number of threads to fetchers
main.page_crawler.num_threads = args.threads
main.book_crawler.num_threads = args.threads
main.downloader.num_threads = args.threads
main.searcher.num_threads = args.threads
if args.update is not None:
if args.update in ["all", "pages"]:
main.page_crawler.start()
if args.update in ["all", "books"]:
main.book_crawler.start()
for book in args.books:
main.download(book)
if __name__ == "__main__":
# handle cmd arguments
parser = argparse.ArgumentParser(
description="Pubu PoC: download books from pubu.com.tw"
)
parser.add_argument(
"books", metavar="Book ID", type=int, nargs="*", help="A book's ID to download"
)
parser.add_argument(
"-u",
"--update",
nargs="?",
const="all",
choices=["all", "pages", "books"],
help="Update local books/pages database",
)
parser.add_argument("-t", "--threads", type=int, help="Number of threads")
parser.add_argument(
"--database", default="data/pubu.db", help="Path to local database file"
)
parser.add_argument(
"--raw-pages", default="data/", help="Path to raw pages records"
)
parser.add_argument("-o", "--output", default="output/", help="Output folder path")
parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output")
parser.add_argument(
"-c", "--change-decode", action="store_true", help="Change decode method"
)
_args = parser.parse_args()
if _args.update is None and len(_args.books) == 0:
parser.print_help(sys.stderr)
sys.exit(1)
execute(_args)