mirror of
https://github.com/yashhere/BeautifyMP3.git
synced 2026-01-30 19:29:13 +00:00
Compare commits
14 Commits
78be520255
...
7145ec6bb1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7145ec6bb1 | ||
|
|
08c5fa0ce6 | ||
|
|
1430ab42dd | ||
|
|
c56ac3fe1f | ||
|
|
a570aa4e02 | ||
|
|
a0801fc9ef | ||
|
|
49b47b0929 | ||
|
|
3fcdbd3866 | ||
|
|
f9cb4fa77e | ||
|
|
66448c37a8 | ||
|
|
faf04cf94d | ||
|
|
6d7496507c | ||
|
|
3051e30f0c | ||
|
|
c1ae6d35f3 |
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Yash Agarwal
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
24
Pipfile
Normal file
24
Pipfile
Normal file
@@ -0,0 +1,24 @@
|
||||
[[source]]
|
||||
name = "pypi"
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[packages]
|
||||
appdirs = "==1.4.3"
|
||||
beautifulsoup4 = "==4.6.0"
|
||||
bs4 = "==0.0.1"
|
||||
certifi = "==2017.4.17"
|
||||
chardet = "==3.0.4"
|
||||
idna = "==2.5"
|
||||
pyparsing = "==2.2.0"
|
||||
requests = ">=2.20.0"
|
||||
six = "==1.10.0"
|
||||
spotipy = "==2.4.4"
|
||||
urllib3 = ">=1.24.2"
|
||||
eyeD3 = "==0.8"
|
||||
titlecase = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.7"
|
||||
117
README.md
117
README.md
@@ -1,8 +1,113 @@
|
||||
# TODO LIST
|
||||
<p align="left">
|
||||
<a href="https://github.com/yash2696/BeautifyMP3/LICENSE">
|
||||
<img alt="License" src="https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
Basic useful feature list:
|
||||
## Table of Contents
|
||||
|
||||
* implement song metadata fetch from musicbrainz/spotify/discogs/wikipedia/acoustid
|
||||
* use mutagen instead of eyed3
|
||||
* implement lyrics fetcher from genius/metrolyrics
|
||||
* add download functionality from youtube
|
||||
- [Features](#features)
|
||||
- [Dependencies](#dependencies)
|
||||
- [Installing](#installing)
|
||||
- [Source](#source)
|
||||
- [Usage](#usage)
|
||||
- [Options](#options)
|
||||
- [Contribute](#contribute)
|
||||
- [License](#license)
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
1. Fixes metadata of songs based on data received from Spotify
|
||||
2. Fetches lyrics from [Genius](https://www.genius.com)
|
||||
3. Fetches metadata from [Spotify](https://www.spotify.com)
|
||||
4. Can format filenames of songs
|
||||
5. Can fetch data for a single song or complete directory
|
||||
|
||||
## Dependencies
|
||||
|
||||
### [Genius API](https://genius.com/api-clients)
|
||||
|
||||
1. Create an account and register an application
|
||||
2. Grab Access Token
|
||||
3. Set access token in config file
|
||||
|
||||
|
||||
### [Spotify API](https://developer.spotify.com/my-applications/#!/applications/create)
|
||||
|
||||
1. Create an account and register an application
|
||||
2. Grab Client ID and client Secret Code
|
||||
3. Set both in config file
|
||||
|
||||
```sh
|
||||
$ python addMetadata.py --config
|
||||
|
||||
Enter Genius key : <enter genius key>
|
||||
|
||||
Enter Spotify Secret token : <enter client secret here>
|
||||
|
||||
Enter Spotify Client ID : <enter client id here>
|
||||
```
|
||||
|
||||
## Installing
|
||||
|
||||
### Source
|
||||
```sh
|
||||
$ git clone https://github.com/yash2696/BeautifyMP3
|
||||
$ cd BeautifyMP3
|
||||
$ python setup.py install
|
||||
```
|
||||
|
||||
### Options
|
||||
```sh
|
||||
(music-tagger) ~/D/music-tagger ❯❯❯ python addMetadata.py -h
|
||||
usage: addMetadata.py [-h] [-d REPAIR_DIRECTORY] [-s SONG_NAME] [-c] [-n]
|
||||
[-f RENAME_FORMAT]
|
||||
|
||||
____ _ _ __ __ __ ____ _____
|
||||
| __ ) ___ __ _ _ _| |_(_)/ _|_ _| \/ | _ \___ /
|
||||
| _ \ / _ \/ _` | | | | __| | |_| | | | |\/| | |_) ||_ \
|
||||
| |_) | __/ (_| | |_| | |_| | _| |_| | | | | __/___) |
|
||||
|____/ \___|\__,_|\__,_|\__|_|_| \__, |_| |_|_| |____/
|
||||
|___/
|
||||
|
||||
______________________________________________________________
|
||||
| |
|
||||
| Edit Metadata of MP3 files based on file name |
|
||||
|____________________________________________________________|
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-d REPAIR_DIRECTORY, --dir REPAIR_DIRECTORY
|
||||
give path of music files directory
|
||||
-s SONG_NAME, --song SONG_NAME
|
||||
Only fix metadata of the file specified
|
||||
-c, --config Add API Keys to config
|
||||
-n, --norename Does not rename files to song title
|
||||
-f RENAME_FORMAT, --format RENAME_FORMAT
|
||||
Specify the Name format used in renaming, Valid
|
||||
Keywords are: {title}{artist}{album} )
|
||||
```
|
||||
|
||||
## TODO
|
||||
- [ ] Add download functionality from youtube
|
||||
- [ ] add support for last.fm and soundcloud if spotify fails
|
||||
- [ ] add support for metrolyrics and other lyrics service if genius api fails
|
||||
- [ ] add support for searching with existing id3 tags if searching with name fails
|
||||
- [ ] somehow find a way to properly synchronize the lyrics with sound if possible
|
||||
- [ ] add support for other file types(aac, flac etc)
|
||||
|
||||
## Contribute
|
||||
|
||||
Found an issue? Post it in the [issue tracker](https://github.com/yash2696/BeautifyMP3/issues). <br>
|
||||
Want to add another awesome feature? [Fork](https://github.com/yash2696/BeautifyMP3/fork) this repository and add your feature, then send a pull request.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
The inspiration for this project is [MusicRepair](https://github.com/kalbhor/MusicRepair).
|
||||
|
||||
Downloading copyright songs is illegal in most of the countries. I made this tool for educational purposes and was created for my python learning process. Please support the artists by buying their music.
|
||||
|
||||
## License
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2017 Yash Agarwal
|
||||
|
||||
1
_config.yml
Normal file
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-dinky
|
||||
@@ -2,6 +2,13 @@
|
||||
|
||||
DESC = """
|
||||
|
||||
____ _ _ __ __ __ ____ _____
|
||||
| __ ) ___ __ _ _ _| |_(_)/ _|_ _| \/ | _ \___ /
|
||||
| _ \ / _ \/ _` | | | | __| | |_| | | | |\/| | |_) ||_ \
|
||||
| |_) | __/ (_| | |_| | |_| | _| |_| | | | | __/___) |
|
||||
|____/ \___|\__,_|\__,_|\__|_|_| \__, |_| |_|_| |____/
|
||||
|___/
|
||||
|
||||
______________________________________________________________
|
||||
| |
|
||||
| Edit Metadata of MP3 files based on file name |
|
||||
|
||||
4
config.ini
Normal file
4
config.ini
Normal file
@@ -0,0 +1,4 @@
|
||||
[keys]
|
||||
genius_key = ""
|
||||
spotify_client_id = ""
|
||||
spotify_client_secret = ""
|
||||
109
data.json
109
data.json
@@ -1,109 +0,0 @@
|
||||
{
|
||||
'release-group':{
|
||||
'type':'Soundtrack',
|
||||
'primary-type':'Album',
|
||||
'id':'90a8152a-29aa-440a-a783-faf8bf435be3',
|
||||
'secondary-type-list':[
|
||||
'Soundtrack'
|
||||
]
|
||||
},
|
||||
'medium-list':[
|
||||
{
|
||||
'track-list':[
|
||||
|
||||
],
|
||||
'track-count':11,
|
||||
'disc-list':[
|
||||
|
||||
],
|
||||
'format':'Digital Media',
|
||||
'disc-count':0
|
||||
}
|
||||
],
|
||||
'country':'IN',
|
||||
'barcode':'',
|
||||
'packaging':'None',
|
||||
'id':'2036808f-d484-4d00-b8f3-819e344bb131',
|
||||
'artist-credit':[
|
||||
{
|
||||
'artist':{
|
||||
'name':'Mithoon',
|
||||
'id':'7f74ac10-e2f0-480a-be9b-82264d2078a9',
|
||||
'disambiguation':'Indian composer and playback singer',
|
||||
'sort-name':'Mithoon'
|
||||
}
|
||||
},
|
||||
'/',
|
||||
{
|
||||
'artist':{
|
||||
'name':'Tanishk Bagchi',
|
||||
'id':'2eeb1326-b91e-470f-b210-d07b54f5334a',
|
||||
'sort-name':'Bagchi, Tanishk'
|
||||
}
|
||||
},
|
||||
'/',
|
||||
{
|
||||
'artist':{
|
||||
'name':'Rishi Rich',
|
||||
'id':'9b52b90b-9858-4463-b20d-7e00480c4714',
|
||||
'sort-name':'Rishi Rich'
|
||||
}
|
||||
},
|
||||
'/',
|
||||
{
|
||||
'artist':{
|
||||
'name':'Farhan Saeed',
|
||||
'id':'78af11d1-d351-4229-ad79-1112068cb1ab',
|
||||
'sort-name':'Saeed, Farhan'
|
||||
}
|
||||
},
|
||||
'/',
|
||||
{
|
||||
'artist':{
|
||||
'name':'Ami Mishra',
|
||||
'id':'cf9f2995-3a44-4bf3-b4e5-7847c68be644',
|
||||
'sort-name':'Mishra, Ami'
|
||||
}
|
||||
},
|
||||
'/',
|
||||
{
|
||||
'artist':{
|
||||
'name':'Rahul Mishra',
|
||||
'id':'9202f366-c50d-48b6-a069-47f24b26a3d1',
|
||||
'sort-name':'Rahul Mishra'
|
||||
}
|
||||
}
|
||||
],
|
||||
'release-event-list':[
|
||||
{
|
||||
'area':{
|
||||
'name':'India',
|
||||
'iso-3166-1-code-list':[
|
||||
'IN'
|
||||
],
|
||||
'id':'d31a9a15-537f-3669-ad53-25753ddd2772',
|
||||
'sort-name':'India'
|
||||
},
|
||||
'date':'2017-04-28'
|
||||
}
|
||||
],
|
||||
'ext:score':'100',
|
||||
'text-representation':{
|
||||
'language':'eng',
|
||||
'script':'Latn'
|
||||
},
|
||||
'date':'2017-04-28',
|
||||
'medium-count':1,
|
||||
'artist-credit-phrase':'Mithoon/Tanishk Bagchi/Rishi Rich/Farhan Saeed/Ami Mishra/Rahul Mishra',
|
||||
'title':'Half Girlfriend',
|
||||
'label-info-list':[
|
||||
{
|
||||
'label':{
|
||||
'name':'Zee Music',
|
||||
'id':'b0d52317-46e4-4208-98f3-926f1a67397b'
|
||||
}
|
||||
}
|
||||
],
|
||||
'medium-track-count':11,
|
||||
'status':'Official'
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
appdirs==1.4.3
|
||||
beautifulsoup4==4.6.0
|
||||
bs4==0.0.1
|
||||
certifi==2017.4.17
|
||||
chardet==3.0.4
|
||||
eyeD3==0.8
|
||||
idna==2.5
|
||||
musicbrainzngs==0.6
|
||||
musictools==2.1.4
|
||||
mutagen==1.38
|
||||
packaging==16.8
|
||||
pyparsing==2.2.0
|
||||
requests==2.17.3
|
||||
six==1.10.0
|
||||
spotipy==2.4.4
|
||||
urllib3==1.21.1
|
||||
youtube-dl==2017.6.5
|
||||
6
setup.py
6
setup.py
@@ -1,12 +1,12 @@
|
||||
from distutils.core import setup
|
||||
|
||||
setup(
|
||||
name='music-tagger',
|
||||
name='BeautifyMP3',
|
||||
version='1.0.0',
|
||||
packages=[''],
|
||||
url='https://github.com/yash2696/MP3Repair',
|
||||
url='https://github.com/yash2696/BeautifyMP3',
|
||||
license='MIT',
|
||||
author='Yash Agarwal',
|
||||
author_email='yashagarwaljpr@gmail.com',
|
||||
description=''
|
||||
description='A tool to automatically fix MP3 file metadata and filenames.'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user