Compare commits
4 Commits
64a2c38eea
...
6741fb447b
Author | SHA1 | Date | |
---|---|---|---|
6741fb447b | |||
f5cbfffe82 | |||
c83f8c65e9 | |||
0845ababa3 |
8
PKGBUILD
8
PKGBUILD
@ -1,6 +1,6 @@
|
||||
# Maintainer: Matthias Quintern <matthiasqui@protonmail.com>
|
||||
# Maintainer: Matthias Quintern <matthias(dot)quintern(at)posteo(dot)de>
|
||||
pkgname=nicole
|
||||
pkgver=2.1
|
||||
pkgver=2.1.0
|
||||
pkgrel=1
|
||||
pkgdesc="Write lyrics from genius or azlyrics.com to a mp3-tag"
|
||||
arch=('any')
|
||||
@ -8,8 +8,8 @@ url="https:/github.com/MatthiasQuintern/nicole"
|
||||
license=('GPL3')
|
||||
depends=('python-mutagen' 'python-beautifulsoup4')
|
||||
source=(file://${PWD}/nicole/nicole.py _nicole.compdef.zsh nicole.1.man)
|
||||
md5sums=('e7d1a3df7cb96798a7958018b28ed733'
|
||||
'f3b46bdcaba5e7fc23bbacc6b2e153c0'
|
||||
md5sums=('1cfc6bca38b8e1b8c28694226eebb31e'
|
||||
'a0a390f36de74a366065ab65bfd1d8de'
|
||||
'8c3b8e5c90afdc8993ebab78d48f5668')
|
||||
|
||||
package() {
|
||||
|
@ -15,16 +15,16 @@ _nicole()
|
||||
# option[description]:message:action
|
||||
# # -s allow stacking, eg -inr
|
||||
_arguments -s \
|
||||
'-d[process directory]':directory:_directories \
|
||||
'-f[process file]':file:_files \
|
||||
'-r[go through directories recursively]' \
|
||||
'-s[silent]' \
|
||||
'-i[ignore history]' \
|
||||
'-n[do not write to history]' \
|
||||
'-o[overwrite if the file already has lyrics]' \
|
||||
'-t[test, only print lyrics, dont write to tags]' \
|
||||
'-h[show this]' \
|
||||
'--rm_explicit[remove the "Explicit" lyrics warning from the title tag]' \
|
||||
'--site[specify lyrics site]':lyrics-site:_lyrics-site
|
||||
{--directory,-d}'[process directory]':directory:_directories \
|
||||
{--file,-f}'[process file]':file:_files \
|
||||
{--recursive,-r}'[go through directories recursively]' \
|
||||
{--silent}'[silent]' \
|
||||
{--ignore-history,-i}'[ignore history]' \
|
||||
{--no-history,-n]}'[do not write to history]' \
|
||||
{--overwrite,-o}'[overwrite if the file already has lyrics]' \
|
||||
{--dry-run,-t}'[test, only print lyrics, dont write to tags]' \
|
||||
'--help[show this]' \
|
||||
'--rm-explicit[remove the "Explicit" lyrics warning from the title tag]' \
|
||||
{--site,-s}'[specify lyrics site]':lyrics-site:_lyrics-site
|
||||
}
|
||||
_nicole "$@"
|
||||
|
48
nicole.1.md
48
nicole.1.md
@ -1,6 +1,6 @@
|
||||
% NICOLE(1) nicole 2.0
|
||||
% NICOLE(1) nicole 2.1.0
|
||||
% Matthias Quintern
|
||||
% April 2022
|
||||
% May 2024
|
||||
|
||||
# NAME
|
||||
**N**ew-**I**ntrepid-**C**hief-**O**f-**L**yrics-**E**mbedders (obviously)
|
||||
@ -31,56 +31,52 @@ If you don't want your files in the history, add the `-n` option.
|
||||
|
||||
## genius
|
||||
Nicole searches for lyrics using the genius api with the "title" and "artist" tags of the file.
|
||||
If the title and artist names from genius and the tags are similar, the lyrics are scraped from the url obtained through the api.
|
||||
If the title and artist names from genius are similar enough to the ones of the file,
|
||||
the lyrics are scraped from the url obtained through the api.
|
||||
|
||||
## azlyrics
|
||||
Nicole creates an azlyrics.com url from the "title" and "artist" tags of the file.
|
||||
The lyrics are extracted from the html document using regex.
|
||||
|
||||
Unfortunately, there needs to be a 5 second delay between each request to azlyrics.com because the site will block your ip for a while if you send many requests.
|
||||
Unfortunately, there needs to be a 5 second delay between each request to azlyrics.com because
|
||||
the site will block your ip for a while if you send many requests.
|
||||
|
||||
## Important Note
|
||||
Since the lyrics are extracted from html pages and not from an api, the lyrics sites might temporarily block your ip address if you send too many requests.
|
||||
If that is the case, wait a few hours and try again.
|
||||
|
||||
# USAGE
|
||||
|
||||
## Command line options
|
||||
**-d** directory
|
||||
**--directory**, **-d** directory
|
||||
: process directory [directory]
|
||||
|
||||
**-f** file
|
||||
**--file**, **-f** file
|
||||
: process file [file]
|
||||
|
||||
**-r**
|
||||
**--recursive**, **-r**
|
||||
: go through directories recursively
|
||||
|
||||
**-s**
|
||||
**--silent**
|
||||
: silent, no command-line output
|
||||
|
||||
**-i**
|
||||
**--ignore-history**, **-i**
|
||||
: ignore history
|
||||
|
||||
**-n**
|
||||
**--no-history**, **-n**
|
||||
: do not write to history
|
||||
|
||||
**-o**
|
||||
**--overwrite**, **-o**
|
||||
: overwrite if the file already has lyrics
|
||||
|
||||
**-t**
|
||||
**--test**, **-t**
|
||||
: test, do not write lyrics to file, but print to stdout
|
||||
|
||||
**-h**
|
||||
: show this
|
||||
|
||||
**--rm_explicit**
|
||||
**--rm-explicit**
|
||||
: remove the "[Explicit]" lyrics warning from the song's title tag
|
||||
|
||||
**--site** site
|
||||
**--site**, **-s** site
|
||||
: onlysearch [site] for lyrics (genius or azlyrics)
|
||||
|
||||
If you do not specify a directory or file, the program will ask you if you want to use the current working directory.
|
||||
Example: `nicole -ior -d ~/music/artist --rm_explicit`
|
||||
One of `--file` and `--directory` must be given at least once.
|
||||
Example: `nicole -ior -d ~/music/artist --rm-explicit`
|
||||
|
||||
# INSTALLATION AND UPDATING
|
||||
To update nicole, simply follow the installation instructions.
|
||||
@ -117,6 +113,12 @@ sudo chmod +x /usr/share/zsh/site-functions/_nicole
|
||||
The dependencies will be automatically installed when using the either of the two installation options.
|
||||
|
||||
# CHANGELOG
|
||||
## 2.1.0
|
||||
- Refactoring:
|
||||
- use argparse
|
||||
- use pyproject.toml
|
||||
- Ignore case when matching a genius result
|
||||
|
||||
## 2.0
|
||||
- Nicole now supports lyrics from genius!
|
||||
- Added man-page
|
||||
@ -128,5 +130,5 @@ The dependencies will be automatically installed when using the either of the tw
|
||||
- Files are now processed in order
|
||||
|
||||
# COPYRIGHT
|
||||
Copyright © 2022 Matthias Quintern. License GPLv3+: GNU GPL version 3 <https://gnu.org/licenses/gpl.html>.\
|
||||
Copyright © 2024 Matthias Quintern. License GPLv3+: GNU GPL version 3 <https://gnu.org/licenses/gpl.html>.\
|
||||
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/python3
|
||||
# Copyright © 2022 Matthias Quintern.
|
||||
# Copyright © 2024 Matthias Quintern.
|
||||
# This software comes with no warranty.
|
||||
# This software is licensed under the GPL3
|
||||
|
||||
@ -16,7 +16,7 @@ from os import path, getcwd, listdir, mkdir
|
||||
from time import sleep
|
||||
from sys import argv
|
||||
|
||||
version = "2.1"
|
||||
version = "2.1.0"
|
||||
|
||||
# Der Name Nicole ist frei erfunden und hat keine Bedeutung.
|
||||
# Jeglicher Zusammenhang mit einer Website der DHL wird hiermit ausdrücklich ausgeschlossen.
|
||||
@ -450,7 +450,7 @@ class Nicole:
|
||||
def main():
|
||||
print(f"Nicole version {version}")
|
||||
|
||||
parser = argparse.ArgumentParser("nicole")
|
||||
parser = argparse.ArgumentParser(prog="nicole", description="lyrics scraper and embedder", epilog="https://github.com/MatthiasQuinter/nicole")
|
||||
parser.add_argument("--directory", "-d", action="append", help="process directory [directory]")
|
||||
parser.add_argument("--file", "-f", action="append", help="process file [file]")
|
||||
parser.add_argument("--recursive", "-r", action="store_true", help="go through directories recursively")
|
||||
@ -462,7 +462,6 @@ def main():
|
||||
parser.add_argument("--rm-explicit", action="store_true", help="remove the \"[Explicit]\" lyrics warning from the songs title tag")
|
||||
parser.add_argument("--site", "-s", action="store", help="use only [site]: azlyrics or genius", default="all")
|
||||
args = parser.parse_args()
|
||||
# Visit https://github.com/MatthiasQuintern/nicole for updates and further help."""
|
||||
|
||||
if args.file is None and args.directory is None:
|
||||
parser.error("Either --directory or --file is required")
|
||||
|
23
pyproject.toml
Normal file
23
pyproject.toml
Normal file
@ -0,0 +1,23 @@
|
||||
[build-system]
|
||||
requires = ["setuptools", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[tool.setuptools]
|
||||
name = "nicole"
|
||||
version = "2.1.0"
|
||||
description = "Write lyrics from genius or azlyrics.com into a mp3-tag"
|
||||
author = "Matthias Quintern"
|
||||
author_email = "matthias.quintern@posteo.de"
|
||||
url = "https://github.com/MatthiasQuintern/nicole.git"
|
||||
license = "GPLv3"
|
||||
packages = ["nicole"]
|
||||
install_requires = ["mutagen", "beautifulsoup4"]
|
||||
|
||||
[tool.setuptools.entry-points]
|
||||
console_scripts = ["nicole=nicole.nicole:main"]
|
||||
|
||||
[tool.setuptools.metadata]
|
||||
description-file = "readme.md"
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = "."
|
Loading…
Reference in New Issue
Block a user