1
0
This commit is contained in:
2025-08-04 03:36:45 +09:00
commit e7f8dd4d25
4 changed files with 205 additions and 0 deletions

59
main.py Normal file
View File

@@ -0,0 +1,59 @@
import asyncio
from dataclasses import dataclass
from argparse import ArgumentParser
from pathlib import Path
from datetime import datetime
from tracker import Tracker
@dataclass
class ArgumentInterface:
drawing_id: str
download_path: Path
download_format: str
download_delay: int
parser = ArgumentParser()
parser.add_argument('drawing_id', type=str)
parser.add_argument('--download-path', type=Path, default=Path('downloads'))
parser.add_argument('--download-format', type=str, default='{timestamp}__{drawing_id}.{extension}')
parser.add_argument('--download-delay', type=int, default=60)
args = ArgumentInterface(**vars(parser.parse_args()))
async def main():
try:
async with Tracker(headless=False) as tracker:
await tracker.open_drawing(args.drawing_id)
while args.download_delay > 0:
print(f'downloading {len(tracker.pages)} drawing(s); delay={args.download_delay}')
timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
await asyncio.gather(
asyncio.sleep(max(0, args.download_delay)),
*[
tracker.download(
drawing_id,
args.download_path.joinpath(
args.download_format.format(**{
'timestamp': timestamp,
'drawing_id': drawing_id,
'extension': 'psd' # TODO: no hardcode >:(
})
)
)
for drawing_id in tracker.pages.keys()
],
return_exceptions=True
)
except Exception as e:
print(e)
if __name__ == '__main__':
asyncio.run(main())