-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathurl2png.py
40 lines (31 loc) · 1.16 KB
/
url2png.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
import imgkit
import argparse
from multiprocessing import Pool
import pathlib
CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
parser = argparse.ArgumentParser()
parser.add_argument('-f', help='path to file containing urls')
parser.add_argument('-u', help='generate image from a single url')
parser.add_argument('-o', help='output file for single url mode')
parser.add_argument('-p', type=int, default=5, help='number of worker processes to spawn')
def generate_image(url):
filename = f'{url}.png'
imgkit.from_url(url, f'{CURRENT_DIR}/{filename}')
if __name__ == '__main__':
args = parser.parse_args().__dict__
infile = args.get('f')
inurl = args.get('u')
outfile = args.get('o')
numprocs =args.get('p', 5)
urls = []
if infile:
with open(infile, 'r') as f_in:
urls = [u.strip() for u in f_in.readlines()]
with Pool(min(len(urls), numprocs)) as p:
p.map(generate_image, urls)
else:
if not inurl:
raise ValueError("URL (-u) is required")
if not outfile:
raise ValueError("outfile (-o) is required")
imgkit.from_url(inurl, f'{outfile}')