aboutsummaryrefslogtreecommitdiff
path: root/export_previews.py
blob: 68c895ed1675bf787f8b2c4471f3248c952a68c8 (plain)
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
#!/usr/bin/env python3

import multiprocessing as mp
import subprocess
import pathlib

import click
from tqdm import tqdm

def process_file(indir, outdir, inpath):
    outpath = outdir / inpath.relative_to(indir).with_suffix('.png')
    outpath.parent.mkdir(parents=True, exist_ok=True)
    subprocess.run(['resvg', '--export-id', 'g-top-copper', '--width', '1000', inpath, outpath],
            check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
 
@click.command()
@click.argument('indir', type=click.Path(exists=True, file_okay=False, dir_okay=True, path_type=pathlib.Path))
def export(indir):
    jobs = list(indir.glob('svg/**/*.svg'))
    with tqdm(total = len(jobs)) as tq:
        with mp.Pool() as pool:
            results = [ pool.apply_async(process_file, (indir / 'svg', indir / 'png', path), callback=lambda _res: tq.update(1)) for path in jobs ]
            results = [ res.get() for res in results ]

if __name__ == '__main__':
    export()