Add console_script, load configs from config dir.

This commit is contained in:
mrsobakin 2024-08-13 21:30:16 +05:00
parent c8c8e36dfe
commit 6af4fc3948
No known key found for this signature in database
GPG key ID: 325CBF665E4FFD6E
4 changed files with 76 additions and 37 deletions

View file

@ -1,35 +1,3 @@
import argparse
from pathlib import Path
from lyrics_dl.main import main
from lyrics_dl.config import LyricsDlConfig
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)
main()

View file

@ -1,7 +1,22 @@
from typing import Self
import tomllib
from dataclasses import dataclass, field
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
@ -18,3 +33,16 @@ class LyricsDlConfig:
order=config["providers"].pop("order"),
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
View 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)

View file

@ -2,12 +2,15 @@ from setuptools import setup
setup(
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.',
packages=[
"lyrics_dl",
"lyrics_dl.providers",
],
entry_points={
'console_scripts': ['lyrics-dl=lyrics_dl:__main__'],
},
install_requires=[
"httpx>=0.24.1",
"mutagen>=1.46.0",