Mulithread download

This commit is contained in:
Yaronzz
2022-07-06 14:43:59 +08:00
parent e3c5886a02
commit 242747719a
28 changed files with 80 additions and 38 deletions
+3 -2
View File
@@ -132,16 +132,17 @@ def test():
SETTINGS.albumFolderFormat = R"{ArtistName}/{Flag} {AlbumTitle} [{AlbumID}] [{AlbumYear}]"
SETTINGS.trackFileFormat = R"{TrackNumber} - {ArtistName} - {TrackTitle}{ExplicitFlag}"
SETTINGS.videoFileFormat = R"{VideoNumber} - {ArtistName} - {VideoTitle}{ExplicitFlag}"
SETTINGS.multiThread = True
Printf.settings()
# test example
# https://tidal.com/browse/track/70973230
# track 70973230 77798028 212657
start('70973230')
# start('70973230')
# album 58138532 77803199 21993753 79151897 56288918
# start('58138532')
# playlist 98235845-13e8-43b4-94e2-d9f8e603cee7
# start('98235845-13e8-43b4-94e2-d9f8e603cee7')
start('98235845-13e8-43b4-94e2-d9f8e603cee7')
# video 155608351 188932980
# start("155608351")
+35 -6
View File
@@ -16,6 +16,7 @@ from tidal_dl.printf import *
from tidal_dl.decryption import *
from tidal_dl.tidal import *
from concurrent.futures import ThreadPoolExecutor
def __isSkip__(finalpath, url):
if not SETTINGS.checkExist:
@@ -84,10 +85,10 @@ def downloadCover(album):
def downloadAlbumInfo(album, tracks):
if album is None:
return
path = getAlbumPath(album)
aigpy.path.mkdirs(path)
path += '/AlbumInfo.txt'
infos = ""
infos += "[ID] %s\n" % (str(album.id))
@@ -113,7 +114,7 @@ def downloadVideo(video: Video, album: Album = None, playlist: Playlist = None):
try:
stream = TIDAL_API.getVideoStreamUrl(video.id, SETTINGS.videoQuality)
path = getVideoPath(video, album, playlist)
Printf.video(video, stream)
logging.info("[DL Video] name=" + aigpy.path.getFileName(path) + "\nurl=" + stream.m3u8Url)
@@ -144,7 +145,7 @@ def downloadTrack(track: Track, album=None, playlist=None, userProgress=None, pa
stream = TIDAL_API.getStreamUrl(track.id, SETTINGS.audioQuality)
path = getTrackPath(track, stream, album, playlist)
if SETTINGS.showTrackInfo:
if SETTINGS.showTrackInfo and not SETTINGS.multiThread:
Printf.track(track, stream)
if userProgress is not None:
@@ -161,7 +162,7 @@ def downloadTrack(track: Track, album=None, playlist=None, userProgress=None, pa
tool = aigpy.download.DownloadTool(path + '.part', [stream.url])
tool.setUserProgress(userProgress)
tool.setPartSize(partSize)
check, err = tool.start(SETTINGS.showProgress)
check, err = tool.start(SETTINGS.showProgress and not SETTINGS.multiThread)
if not check:
Printf.err(f"DL Track[{track.title}] failed.{str(err)}")
return False, str(err)
@@ -180,7 +181,7 @@ def downloadTrack(track: Track, album=None, playlist=None, userProgress=None, pa
lyrics = TIDAL_API.getLyrics(track.id).subtitles
if SETTINGS.lyricFile:
lrcPath = path.rsplit(".", 1)[0] + '.lrc'
aigpy.fileHelper.write(lrcPath, lyrics, 'w')
aigpy.file.write(lrcPath, lyrics, 'w')
except:
lyrics = ''
@@ -190,3 +191,31 @@ def downloadTrack(track: Track, album=None, playlist=None, userProgress=None, pa
except Exception as e:
Printf.err(f"DL Track[{track.title}] failed.{str(e)}")
return False, str(e)
def downloadTracks(tracks, album: Album = None, playlist : Playlist=None):
def __getAlbum__(item: Track):
album = TIDAL_API.getAlbum(item.album.id)
if SETTINGS.saveCovers and not SETTINGS.usePlaylistFolder:
downloadCover(album)
return album
if not SETTINGS.multiThread:
for index, item in enumerate(tracks):
if album is None:
album = __getAlbum__(item)
item.trackNumberOnPlaylist = index + 1
downloadTrack(item, album, playlist)
else:
thread_pool = ThreadPoolExecutor(max_workers=5)
for index, item in enumerate(tracks):
if album is None:
album = __getAlbum__(item)
item.trackNumberOnPlaylist = index + 1
thread_pool.submit(downloadTrack, item, album, playlist)
thread_pool.shutdown(wait=True)
def downloadVideos(videos, album: Album, playlist=None):
for item in videos:
downloadVideo(item, album, playlist)
+9 -23
View File
@@ -32,10 +32,8 @@ def start_album(obj: Album):
downloadAlbumInfo(obj, tracks)
if SETTINGS.saveCovers:
downloadCover(obj)
for item in tracks:
downloadTrack(item, obj)
for item in videos:
downloadVideo(item, obj)
downloadTracks(tracks, obj)
downloadVideos(videos, obj)
def start_track(obj: Track):
@@ -46,7 +44,6 @@ def start_track(obj: Track):
def start_video(obj: Video):
# Printf.video(obj)
downloadVideo(obj, obj.album)
@@ -60,28 +57,14 @@ def start_artist(obj: Artist):
def start_playlist(obj: Playlist):
Printf.playlist(obj)
tracks, videos = TIDAL_API.getItems(obj.uuid, Type.Playlist)
for index, item in enumerate(tracks):
album = TIDAL_API.getAlbum(item.album.id)
item.trackNumberOnPlaylist = index + 1
downloadTrack(item, album, obj)
if SETTINGS.saveCovers and not SETTINGS.usePlaylistFolder:
downloadCover(album)
for item in videos:
downloadVideo(item, None)
downloadTracks(tracks, None, obj)
downloadVideos(videos, None, obj)
def start_mix(obj: Mix):
Printf.mix(obj)
for index, item in enumerate(obj.tracks):
album = TIDAL_API.getAlbum(item.album.id)
item.trackNumberOnPlaylist = index + 1
downloadTrack(item, album)
if SETTINGS.saveCovers and not SETTINGS.usePlaylistFolder:
downloadCover(album)
for item in obj.videos:
downloadVideo(item, None)
downloadTracks(obj.tracks, None, None)
downloadVideos(obj.videos, None, None)
def start_file(string):
@@ -114,6 +97,7 @@ def start_type(etype: Type, obj):
elif etype == Type.Mix:
start_mix(obj)
def start(string):
if aigpy.string.isNull(string):
Printf.err('Please enter something.')
@@ -138,6 +122,7 @@ def start(string):
except Exception as e:
Printf.err(str(e))
'''
=================================
CHANGE SETTINGS
@@ -189,6 +174,7 @@ def changeSettings():
SETTINGS.saveCovers = Printf.enterBool(LANG.select.CHANGE_SAVE_COVERS)
SETTINGS.saveAlbumInfo = Printf.enterBool(LANG.select.CHANGE_SAVE_ALBUM_INFO)
SETTINGS.lyricFile = Printf.enterBool(LANG.select.CHANGE_ADD_LRC_FILE)
SETTINGS.multiThread = Printf.enterBool(LANG.select.CHANGE_MULITHREAD_DOWNLOAD)
SETTINGS.usePlaylistFolder = Printf.enterBool(LANG.select.SETTING_USE_PLAYLIST_FOLDER + "('0'-No,'1'-Yes):")
SETTINGS.language = Printf.enter(LANG.select.CHANGE_LANGUAGE + "(" + LANG.getLangChoicePrint() + "):")
LANG.setLang(SETTINGS.language)
+1
View File
@@ -135,6 +135,7 @@ if enableGui:
self.addItem(index, 1, item.title)
self.addItem(index, 2, '')
self.addItem(index, 3, '')
self.c_tableInfo.viewport().update()
def download(self):
index = self.c_tableInfo.currentIndex().row()
+1
View File
@@ -88,6 +88,7 @@ class LangArabic(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+8 -7
View File
@@ -37,22 +37,22 @@ class LangChinese(object):
SETTING_SAVE_ALBUMINFO = "保存AlbumInfo.txt"
SETTING_ADD_LYRICS = "添加歌词"
SETTING_LYRICS_SERVER_PROXY = "歌词服务器代理"
SETTING_PATH = "Settings path"
SETTINGS_ADD_LRC_FILE = "Save timed lyrics (.lrc file)"
SETTING_PATH = "配置文件目录"
SETTINGS_ADD_LRC_FILE = "保存歌词文件 (.lrc file)"
SETTING_APIKEY = "APIKey支持"
SETTING_ADD_TYPE_FOLDER = "Add Type-Folder"
SETTING_ADD_TYPE_FOLDER = "添加类型文件夹"
CHOICE = "选项"
FUNCTION = "功能"
CHOICE_ENTER = "输入"
CHOICE_ENTER_URLID = "输入 'Url或ID':"
CHOICE_EXIT = "退出"
CHOICE_LOGIN = "检查 AccessToken"
CHOICE_LOGIN = "检查AccessToken"
CHOICE_SETTINGS = "配置"
CHOICE_SET_ACCESS_TOKEN = "设置AccessToken"
CHOICE_DOWNLOAD_BY_URL = "通过链接或ID下载"
CHOICE_LOGOUT = "注销"
CHOICE_APIKEY = "Select APIKey"
CHOICE_APIKEY = "选择APIKey"
PRINT_ERR = "[错误]"
PRINT_INFO = "[提示]"
@@ -80,14 +80,15 @@ class LangChinese(object):
CHANGE_LANGUAGE = "选择语言"
CHANGE_ALBUM_FOLDER_FORMAT = "专辑目录格式('0' 不修改):"
CHANGE_TRACK_FILE_FORMAT = "歌曲文件名格式('0' 不修改):"
CHANGE_VIDEO_FILE_FORMAT = "Video file format('0'-not modify,'default'-to set default):"
CHANGE_VIDEO_FILE_FORMAT = "视频文件名格式('0'-not modify,'default'-to set default):"
CHANGE_SHOW_PROGRESS = "显示进度条('0'-不,'1'-是):"
CHANGE_SHOW_TRACKINFO = "显示歌曲信息('0'-否,'1'-是):"
CHANGE_SAVE_ALBUM_INFO = "保存AlbumInfo.txt('0'-否,'1'-是):"
CHANGE_ADD_LYRICS = "添加歌词('0'-否,'1'-是):"
CHANGE_LYRICS_SERVER_PROXY = "歌词服务器代理('0' 不修改):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-否,'1'-是):"
CHANGE_ADD_LRC_FILE = "保存歌词文件 ('0'-否,'1'-是):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "多线程下载('0'-否,'1'-是):"
# {} are required in these strings
AUTH_START_LOGIN = "开始启动登录..."
+1
View File
@@ -88,6 +88,7 @@ class LangCroatian(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangCzech(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangDanish(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starter login-processen."
+1
View File
@@ -88,6 +88,7 @@ class LangDutch(object):
CHANGE_LYRICS_SERVER_PROXY = "Songtekst proxyserver('0'-niet wijzigen):"
CHANGE_ADD_LRC_FILE = "Sla getimede songtekst .lrc-bestand op ('0'-Nee,'1'-Ja):"
CHANGE_ADD_TYPE_FOLDER = "Type-map toevoegen, bijv. Album/Video/Playlist('0'-Nee,'1'-Ja):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Inlogproces starten..."
+1
View File
@@ -88,6 +88,7 @@ class LangEnglish(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0'-not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangFilipino(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangFrench(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangGerman(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starte Loginprozess..."
+1
View File
@@ -88,6 +88,7 @@ class LangHungarian(object):
CHANGE_LYRICS_SERVER_PROXY = "Dalszöveg kiszolgáló proxy('0' nincs módosítás):"
CHANGE_ADD_LRC_FILE = "Dalszöveg mentése időbélyeggel .lrc fájl('0'-Nem,'1'-Igen):"
CHANGE_ADD_TYPE_FOLDER = "Mappa típus hozzáadása, pl. Album/Video/Playlist('0'-Nem,'1'-Igen):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Bejelentkezési folyamat elindítása..."
+1
View File
@@ -88,6 +88,7 @@ class LangItalian(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangJapanese(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0'-変更しない):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-いいえ,'1'-はい):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Starting login process..."
+1
View File
@@ -88,6 +88,7 @@ class LangKorean(object):
CHANGE_LYRICS_SERVER_PROXY = "가사 서버 프록시('0'-변경 안 함):"
CHANGE_ADD_LRC_FILE = "timed 가사 .lrc 파일 저장 ('0'-아니요,'1'-예):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "로그인 중..."
+1
View File
@@ -88,6 +88,7 @@ class LangPolish(object):
CHANGE_LYRICS_SERVER_PROXY = "Serwer proxy dla tekstów('0'-nie modyfikuj):"
CHANGE_ADD_LRC_FILE = "Zapisz plik .lrc czasowych tekstów utworów ('0'-Nie,'1'-Tak):"
CHANGE_ADD_TYPE_FOLDER = "Dodaj folder typu, np. Album/wideo/lista odtwarzania('0'-Nie,'1'-Tak):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Rozpoczęcie procesu logowania..."
+1
View File
@@ -88,6 +88,7 @@ class LangPortuguese(object):
CHANGE_LYRICS_SERVER_PROXY = "Proxy do servidor de letras ('0' não modificar):"
CHANGE_ADD_LRC_FILE = "Salvar arquivo .lrc de letras cronometradas ('0'-Não,'1'-Sim):"
CHANGE_ADD_TYPE_FOLDER = "Adicionar Tipo de Pasta, por exemplo, Álbum/Vídeo/Lista de Reprodução('0'-Não,'1'-Sim):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Iniciando o processo de login..."
+1
View File
@@ -88,6 +88,7 @@ class LangRussian(object):
CHANGE_LYRICS_SERVER_PROXY = "Прокси для сервера с текстом песень('0' не менять):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Входим в сервис..."
+1
View File
@@ -88,6 +88,7 @@ class LangSpanish(object):
CHANGE_LYRICS_SERVER_PROXY = "¿Proxy del servidor de letras?('0' no modificar):"
CHANGE_ADD_LRC_FILE = "¿Añadir letras cronometradas en un archivo .lrc? ('0'-No,'1'-Sí):"
CHANGE_ADD_TYPE_FOLDER = "Añadir tipo de carpeta, ej: Album/Video/Playlist('0'-No,'1'-Sí):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Iniciando sesión..."
+1
View File
@@ -88,6 +88,7 @@ class LangTurkish(object):
CHANGE_LYRICS_SERVER_PROXY = "Lyrics server proxy('0' not modify):"
CHANGE_ADD_LRC_FILE = "Save timed lyrics .lrc file ('0'-No,'1'-Yes):"
CHANGE_ADD_TYPE_FOLDER = "Add Type-Folder,eg Album/Video/Playlist('0'-No,'1'-Yes):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Giriş işlemleri başlatıldı..."
+1
View File
@@ -88,6 +88,7 @@ class LangUkrainian(object):
CHANGE_LYRICS_SERVER_PROXY = "Проксі для сервера з текстами пісень('0'-не змінювати):"
CHANGE_ADD_LRC_FILE = "Зберігати тексти пісень з відмітками часу в .lrc файл('0'-Ні,'1'-Так):"
CHANGE_ADD_TYPE_FOLDER = "Додавати теку-тип,наприклад Альбом/Відео/Плейлист('0'-Ні,'1'-Так):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Початок процесу авторизації..."
+1
View File
@@ -88,6 +88,7 @@ class LangVietnamese(object):
CHANGE_LYRICS_SERVER_PROXY = "Máy chủ proxy cho lyrics('0' không đổi):"
CHANGE_ADD_LRC_FILE = "Lưu timed lyrics tệp .lrc ('0'-Không,'1'-Có):"
CHANGE_ADD_TYPE_FOLDER = "Thêm Loại-Thư mục, ví dụ Album/Video/Playlist('0'-Không,'1'-Có):"
CHANGE_MULITHREAD_DOWNLOAD = "Multi thread download('0'-No,'1'-Yes):"
# {} are required in these strings
AUTH_START_LOGIN = "Đang bắt đầu đăng nhập..."
+1
View File
@@ -102,6 +102,7 @@ class Printf(object):
[LANG.select.SETTING_INCLUDE_EP, data.includeEP],
[LANG.select.SETTING_LANGUAGE, LANG.getLangName(data.language)],
[LANG.select.SETTINGS_ADD_LRC_FILE, data.lyricFile],
[LANG.select.SETTING_MULITHREAD_DOWNLOAD, data.multiThread],
[LANG.select.SETTING_APIKEY, f"[{data.apiKeyIndex}]" + apiKey.getItem(data.apiKeyIndex)['formats']]
])
print(tb)
+1
View File
@@ -26,6 +26,7 @@ class Settings(aigpy.model.ModelBase):
showProgress = True
showTrackInfo = True
saveAlbumInfo = False
multiThread = False
downloadPath = "./download/"
audioQuality = AudioQuality.Normal
+2
View File
@@ -1,6 +1,8 @@
TYPE tidal-dl
USE pip3 install tidal-dl --upgrade
1. [X] Mulithread download
#### v2022-06-23
1. [X] remove redundant configuration