mirror of
https://github.com/yaronzz/Tidal-Media-Downloader.git
synced 2026-06-13 04:05:07 +03:00
Mulithread download
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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 = "开始启动登录..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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 = "로그인 중..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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 = "Входим в сервис..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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ı..."
|
||||
|
||||
@@ -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 = "Початок процесу авторизації..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -26,6 +26,7 @@ class Settings(aigpy.model.ModelBase):
|
||||
showProgress = True
|
||||
showTrackInfo = True
|
||||
saveAlbumInfo = False
|
||||
multiThread = False
|
||||
|
||||
downloadPath = "./download/"
|
||||
audioQuality = AudioQuality.Normal
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user