mirror of
https://github.com/lifegpc/pixiv_downloader.git
synced 2026-06-06 05:49:01 +08:00
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from argparse import ArgumentParser, Namespace
|
|
from sys import exit as _exit
|
|
from traceback import print_exc
|
|
from urllib.parse import urlparse
|
|
from os.path import join
|
|
try:
|
|
from requests import Session
|
|
except ImportError:
|
|
_exit(2)
|
|
except Exception:
|
|
print_exc()
|
|
_exit(1)
|
|
|
|
|
|
def download_file(arg: Namespace):
|
|
s = Session()
|
|
fn = urlparse(arg.URL).path.split('/')[-1]
|
|
output = fn
|
|
if arg.output:
|
|
output = arg.output
|
|
elif arg.dest:
|
|
output = join(arg.dest, fn)
|
|
print(f'Downloading {arg.URL} to {output}')
|
|
r = s.get(arg.URL, stream=True)
|
|
if r.status_code >= 400:
|
|
raise Exception(f'Failed to download {arg.URL}')
|
|
with open(output, 'wb') as f:
|
|
for chunk in r.iter_content(chunk_size=1024):
|
|
if chunk:
|
|
f.write(chunk)
|
|
|
|
|
|
try:
|
|
p = ArgumentParser(description='Download resources from github.')
|
|
p.add_argument('URL', help='The URL of the resource.')
|
|
p.add_argument('-o', '--output', help='The full path of output file.')
|
|
p.add_argument('-d', '--dest', help='The destination directory.')
|
|
arg = p.parse_intermixed_args()
|
|
download_file(arg)
|
|
except Exception:
|
|
print_exc()
|
|
_exit(1)
|