mirror of
https://github.com/Wojtek242/qobuz-dl.git
synced 2024-10-22 22:50:51 +02:00
5f3c85847f
Covers won't be downloaded in their original size anymore by default as they are too big. If you still want to download in the original size, just set the flag --og-cover after running a qobuz-dl command.
129 lines
3.6 KiB
Python
129 lines
3.6 KiB
Python
import argparse
|
|
|
|
|
|
def fun_args(subparsers, default_limit):
|
|
interactive = subparsers.add_parser(
|
|
"fun",
|
|
description="Interactively search for tracks and albums.",
|
|
help="interactive mode",
|
|
)
|
|
interactive.add_argument(
|
|
"-l",
|
|
"--limit",
|
|
metavar="int",
|
|
default=default_limit,
|
|
help="limit of search results (default: 20)",
|
|
)
|
|
return interactive
|
|
|
|
|
|
def lucky_args(subparsers):
|
|
lucky = subparsers.add_parser(
|
|
"lucky",
|
|
description="Download the first <n> albums returned from a Qobuz search.",
|
|
help="lucky mode",
|
|
)
|
|
lucky.add_argument(
|
|
"-t",
|
|
"--type",
|
|
default="album",
|
|
help="type of items to search (artist, album, track, playlist) (default: album)",
|
|
)
|
|
lucky.add_argument(
|
|
"-n",
|
|
"--number",
|
|
metavar="int",
|
|
default=1,
|
|
help="number of results to download (default: 1)",
|
|
)
|
|
lucky.add_argument("QUERY", nargs="+", help="search query")
|
|
return lucky
|
|
|
|
|
|
def dl_args(subparsers):
|
|
download = subparsers.add_parser(
|
|
"dl",
|
|
description="Download by album/track/artist/label/playlist/last.fm-playlist URL.",
|
|
help="input mode",
|
|
)
|
|
download.add_argument(
|
|
"SOURCE",
|
|
metavar="SOURCE",
|
|
nargs="+",
|
|
help=("one or more URLs (space separated) or a text file"),
|
|
)
|
|
return download
|
|
|
|
|
|
def add_common_arg(custom_parser, default_folder, default_quality):
|
|
custom_parser.add_argument(
|
|
"-d",
|
|
"--directory",
|
|
metavar="PATH",
|
|
default=default_folder,
|
|
help='directory for downloads (default: "{}")'.format(default_folder),
|
|
)
|
|
custom_parser.add_argument(
|
|
"-q",
|
|
"--quality",
|
|
metavar="int",
|
|
default=default_quality,
|
|
help=(
|
|
'audio "quality" (5, 6, 7, 27)\n'
|
|
"[320, LOSSLESS, 24B <96KHZ, 24B >96KHZ] (default: 6)"
|
|
),
|
|
)
|
|
custom_parser.add_argument(
|
|
"--albums-only",
|
|
action="store_true",
|
|
help=("don't download singles, EPs and VA releases"),
|
|
)
|
|
custom_parser.add_argument(
|
|
"--no-m3u",
|
|
action="store_true",
|
|
help="don't create .m3u files when downloading playlists",
|
|
)
|
|
custom_parser.add_argument(
|
|
"--no-fallback",
|
|
action="store_true",
|
|
help="disable quality fallback (skip releases not available in set quality)",
|
|
)
|
|
custom_parser.add_argument(
|
|
"-e", "--embed-art", action="store_true", help="embed cover art into files"
|
|
)
|
|
custom_parser.add_argument(
|
|
"--og-cover", action="store_true", help="download cover art in its original quality (bigger file)"
|
|
)
|
|
|
|
|
|
def qobuz_dl_args(
|
|
default_quality=6, default_limit=20, default_folder="Qobuz Downloads"
|
|
):
|
|
parser = argparse.ArgumentParser(
|
|
prog="qobuz-dl",
|
|
description=(
|
|
"The ultimate Qobuz music downloader.\nSee usage"
|
|
" examples on https://github.com/vitiko98/qobuz-dl"
|
|
),
|
|
formatter_class=argparse.RawTextHelpFormatter,
|
|
)
|
|
parser.add_argument(
|
|
"-r", "--reset", action="store_true", help="create/reset config file"
|
|
)
|
|
|
|
subparsers = parser.add_subparsers(
|
|
title="commands",
|
|
description="run qobuz-dl <command> --help for more info\n(e.g. qobuz-dl fun --help)",
|
|
dest="command",
|
|
)
|
|
|
|
interactive = fun_args(subparsers, default_limit)
|
|
download = dl_args(subparsers)
|
|
lucky = lucky_args(subparsers)
|
|
[
|
|
add_common_arg(i, default_folder, default_quality)
|
|
for i in (interactive, download, lucky)
|
|
]
|
|
|
|
return parser
|