Add console_script
, load configs from config dir.
This commit is contained in:
parent
c8c8e36dfe
commit
6af4fc3948
4 changed files with 76 additions and 37 deletions
|
@ -1,35 +1,3 @@
|
||||||
import argparse
|
from lyrics_dl.main import main
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from lyrics_dl.config import LyricsDlConfig
|
main()
|
||||||
from lyrics_dl.logger import DefaultLogger
|
|
||||||
from lyrics_dl import LyricsDl
|
|
||||||
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("path", type=Path, help="Path to the song file or directory")
|
|
||||||
parser.add_argument("-c", "--config", type=Path, help="Config file for lyrics-dl")
|
|
||||||
parser.add_argument("-e", "--extensions", type=str, help="Music files extensions, separated by a comma. For example: wav,flac,mp3")
|
|
||||||
parser.add_argument("-f", "--force-override", action="store_true", help="Force override .lrc file, if it already exists")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
logger = DefaultLogger()
|
|
||||||
|
|
||||||
if args.config:
|
|
||||||
config = LyricsDlConfig.from_file(args.config)
|
|
||||||
else:
|
|
||||||
config = LyricsDlConfig()
|
|
||||||
|
|
||||||
lyrics_dl = LyricsDl(config=config, logger=logger)
|
|
||||||
|
|
||||||
|
|
||||||
if args.path.is_dir():
|
|
||||||
if not args.extensions:
|
|
||||||
extensions = ["flac", "alac", "mp3", "m4a", "mp4", "aac", "wav", "opus", "ogg"]
|
|
||||||
else:
|
|
||||||
extensions = args.extensions.split(",")
|
|
||||||
|
|
||||||
lyrics_dl.process_directory(args.path, extensions, args.force_override)
|
|
||||||
else:
|
|
||||||
lyrics_dl.process_file(args.path, args.force_override)
|
|
||||||
|
|
|
@ -1,7 +1,22 @@
|
||||||
from typing import Self
|
|
||||||
import tomllib
|
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from typing import Self
|
||||||
|
import os
|
||||||
|
import tomllib
|
||||||
|
|
||||||
|
from lyrics_dl.logger import DefaultLogger
|
||||||
|
|
||||||
|
|
||||||
|
def _get_config_file() -> Path | None:
|
||||||
|
config_dir = os.environ.get("XDG_CONFIG_HOME")
|
||||||
|
|
||||||
|
if config_dir is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return Path(config_dir) / "lyrics-dl" / "config.toml"
|
||||||
|
|
||||||
|
|
||||||
|
CONFIG_PATH = _get_config_file()
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -18,3 +33,16 @@ class LyricsDlConfig:
|
||||||
order=config["providers"].pop("order"),
|
order=config["providers"].pop("order"),
|
||||||
providers_configs=config["providers"],
|
providers_configs=config["providers"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def default(cls) -> Self:
|
||||||
|
try:
|
||||||
|
if CONFIG_PATH is not None:
|
||||||
|
return cls.from_file(CONFIG_PATH)
|
||||||
|
except FileNotFoundError:
|
||||||
|
DefaultLogger().warning(
|
||||||
|
f"Warning: Missing config file ({CONFIG_PATH})."
|
||||||
|
" Falling back to default parameters."
|
||||||
|
)
|
||||||
|
|
||||||
|
return cls()
|
||||||
|
|
40
lyrics_dl/main.py
Normal file
40
lyrics_dl/main.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
import argparse
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from lyrics_dl.config import LyricsDlConfig
|
||||||
|
from lyrics_dl.logger import DefaultLogger
|
||||||
|
from lyrics_dl import LyricsDl
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_EXTENSIONS = ["flac", "alac", "mp3", "m4a", "mp4", "aac", "wav", "opus", "ogg"]
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("path", type=Path, help="Path to the song file or directory")
|
||||||
|
parser.add_argument("-c", "--config", type=Path, help="Config file for lyrics-dl")
|
||||||
|
parser.add_argument("-e", "--extensions", type=str, help="Music files extensions, separated by a comma. For example: wav,flac,mp3")
|
||||||
|
parser.add_argument("-f", "--force-override", action="store_true", help="Force override .lrc file, if it already exists")
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = parse_args()
|
||||||
|
logger = DefaultLogger()
|
||||||
|
|
||||||
|
if args.config:
|
||||||
|
config = LyricsDlConfig.from_file(args.config)
|
||||||
|
else:
|
||||||
|
config = LyricsDlConfig.default()
|
||||||
|
|
||||||
|
lyrics_dl = LyricsDl(config=config, logger=logger)
|
||||||
|
|
||||||
|
if args.path.is_dir():
|
||||||
|
if not args.extensions:
|
||||||
|
extensions = DEFAULT_EXTENSIONS
|
||||||
|
else:
|
||||||
|
extensions = args.extensions.split(",")
|
||||||
|
|
||||||
|
lyrics_dl.process_directory(args.path, extensions, args.force_override)
|
||||||
|
else:
|
||||||
|
lyrics_dl.process_file(args.path, args.force_override)
|
5
setup.py
5
setup.py
|
@ -2,12 +2,15 @@ from setuptools import setup
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='lyrics_dl',
|
name='lyrics_dl',
|
||||||
version='0.0.1',
|
version='0.0.2',
|
||||||
description='An ultimate cli tool for downloading song lyrics, inspired by other awesome *-dl programs.',
|
description='An ultimate cli tool for downloading song lyrics, inspired by other awesome *-dl programs.',
|
||||||
packages=[
|
packages=[
|
||||||
"lyrics_dl",
|
"lyrics_dl",
|
||||||
"lyrics_dl.providers",
|
"lyrics_dl.providers",
|
||||||
],
|
],
|
||||||
|
entry_points={
|
||||||
|
'console_scripts': ['lyrics-dl=lyrics_dl:__main__'],
|
||||||
|
},
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"httpx>=0.24.1",
|
"httpx>=0.24.1",
|
||||||
"mutagen>=1.46.0",
|
"mutagen>=1.46.0",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue