Add handle for song name and song folder config.
This commit is contained in:
parent
a148e91524
commit
e492deb771
|
@ -3,28 +3,49 @@
|
||||||
import os
|
import os
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from ncm import config
|
||||||
from ncm.api import CloudApi
|
from ncm.api import CloudApi
|
||||||
from ncm.file_util import add_metadata_to_song
|
from ncm.file_util import add_metadata_to_song
|
||||||
|
|
||||||
|
|
||||||
def download_song_by_id(song_id, download_folder):
|
def download_song_by_id(song_id, download_folder, sub_folder=True):
|
||||||
# get song info
|
# get song info
|
||||||
api = CloudApi()
|
api = CloudApi()
|
||||||
song = api.get_song(song_id)
|
song = api.get_song(song_id)
|
||||||
download_song_by_song(song, download_folder)
|
download_song_by_song(song, download_folder, sub_folder)
|
||||||
|
|
||||||
|
|
||||||
def download_song_by_song(song, download_folder):
|
def download_song_by_song(song, download_folder, sub_folder=True):
|
||||||
# get song info
|
# get song info
|
||||||
api = CloudApi()
|
api = CloudApi()
|
||||||
song_id = song['id']
|
song_id = song['id']
|
||||||
song_name = song['name']
|
song_name = song['name']
|
||||||
artist_name = song['artists'][0]['name']
|
artist_name = song['artists'][0]['name']
|
||||||
song_file_name = '{}_{}.mp3'.format(artist_name, song_name)
|
album_name = song['album']['name']
|
||||||
|
|
||||||
|
# update song file name by config
|
||||||
|
song_file_name = '{}.mp3'.format(song_name)
|
||||||
|
switcher_song = {
|
||||||
|
1: song_file_name,
|
||||||
|
2: '{} - {}.mp3'.format(artist_name, song_name),
|
||||||
|
3: '{} - {}.mp3'.format(song_name, artist_name)
|
||||||
|
}
|
||||||
|
song_file_name = switcher_song.get(config.SONG_NAME_TYPE, song_file_name)
|
||||||
|
|
||||||
|
# update song folder name by config, if support sub folder
|
||||||
|
if sub_folder:
|
||||||
|
switcher_folder = {
|
||||||
|
1: download_folder,
|
||||||
|
2: os.path.join(download_folder, artist_name),
|
||||||
|
3: os.path.join(download_folder, artist_name, album_name),
|
||||||
|
}
|
||||||
|
song_download_folder = switcher_folder.get(config.SONG_FOLDER_TYPE, download_folder)
|
||||||
|
else:
|
||||||
|
song_download_folder = download_folder
|
||||||
|
|
||||||
# download song
|
# download song
|
||||||
song_url = api.get_song_url(song_id)
|
song_url = api.get_song_url(song_id)
|
||||||
is_already_download = download_file(song_url, song_file_name, download_folder)
|
is_already_download = download_file(song_url, song_file_name, song_download_folder)
|
||||||
if is_already_download:
|
if is_already_download:
|
||||||
print('Mp3 file already download:', song_file_name)
|
print('Mp3 file already download:', song_file_name)
|
||||||
return
|
return
|
||||||
|
@ -32,11 +53,11 @@ def download_song_by_song(song, download_folder):
|
||||||
# download cover
|
# download cover
|
||||||
cover_url = song['album']['blurPicUrl']
|
cover_url = song['album']['blurPicUrl']
|
||||||
cover_file_name = 'cover_{}.jpg'.format(song_id)
|
cover_file_name = 'cover_{}.jpg'.format(song_id)
|
||||||
download_file(cover_url, cover_file_name, download_folder)
|
download_file(cover_url, cover_file_name, song_download_folder)
|
||||||
|
|
||||||
# add metadata for song
|
# add metadata for song
|
||||||
song_file_path = os.path.join(download_folder, song_file_name)
|
song_file_path = os.path.join(song_download_folder, song_file_name)
|
||||||
cover_file_path = os.path.join(download_folder, cover_file_name)
|
cover_file_path = os.path.join(song_download_folder, cover_file_name)
|
||||||
add_metadata_to_song(song_file_path, cover_file_path, song)
|
add_metadata_to_song(song_file_path, cover_file_path, song)
|
||||||
|
|
||||||
# delete cover file
|
# delete cover file
|
||||||
|
|
12
ncm/start.py
12
ncm/start.py
|
@ -14,29 +14,29 @@ api = CloudApi()
|
||||||
|
|
||||||
def download_hot_songs(artist_id):
|
def download_hot_songs(artist_id):
|
||||||
songs = api.get_hot_songs(artist_id)
|
songs = api.get_hot_songs(artist_id)
|
||||||
folder_name = songs[0]['artists'][0]['name'] + '_hot50'
|
folder_name = songs[0]['artists'][0]['name'] + ' - hot50'
|
||||||
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
||||||
for i, song in enumerate(songs):
|
for i, song in enumerate(songs):
|
||||||
print(str(i + 1) + ' song name:' + song['name'])
|
print(str(i + 1) + ' song name:' + song['name'])
|
||||||
download_song_by_song(song, folder_path)
|
download_song_by_song(song, folder_path, False)
|
||||||
|
|
||||||
|
|
||||||
def download_album_songs(album_id):
|
def download_album_songs(album_id):
|
||||||
songs = api.get_album_songs(album_id)
|
songs = api.get_album_songs(album_id)
|
||||||
folder_name = songs[0]['artists'][0]['name'] + '_' + songs[0]['album']['name']
|
folder_name = songs[0]['album']['name'] + ' - album'
|
||||||
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
||||||
for i, song in enumerate(songs):
|
for i, song in enumerate(songs):
|
||||||
print(str(i + 1) + ' song name:' + song['name'])
|
print(str(i + 1) + ' song name:' + song['name'])
|
||||||
download_song_by_song(song, folder_path)
|
download_song_by_song(song, folder_path, False)
|
||||||
|
|
||||||
|
|
||||||
def download_playlist_songs(playlist_id):
|
def download_playlist_songs(playlist_id):
|
||||||
songs, playlist_name = api.get_playlist_songs(playlist_id)
|
songs, playlist_name = api.get_playlist_songs(playlist_id)
|
||||||
folder_name = 'playlist_' + playlist_name
|
folder_name = playlist_name + ' - playlist'
|
||||||
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name)
|
||||||
for i, song in enumerate(songs):
|
for i, song in enumerate(songs):
|
||||||
print(str(i + 1) + ' song name:' + song['name'])
|
print(str(i + 1) + ' song name:' + song['name'])
|
||||||
download_song_by_song(song, folder_path)
|
download_song_by_song(song, folder_path, False)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
Loading…
Reference in New Issue