From 242747719a44a09725a09601dce55355ce7c51cd Mon Sep 17 00:00:00 2001 From: Yaronzz Date: Wed, 6 Jul 2022 14:43:59 +0800 Subject: [PATCH] Mulithread download --- TIDALDL-PY/tidal_dl/__init__.py | 5 ++-- TIDALDL-PY/tidal_dl/download.py | 41 ++++++++++++++++++++++---- TIDALDL-PY/tidal_dl/events.py | 32 ++++++-------------- TIDALDL-PY/tidal_dl/gui.py | 1 + TIDALDL-PY/tidal_dl/lang/arabic.py | 1 + TIDALDL-PY/tidal_dl/lang/chinese.py | 15 +++++----- TIDALDL-PY/tidal_dl/lang/croatian.py | 1 + TIDALDL-PY/tidal_dl/lang/czech.py | 1 + TIDALDL-PY/tidal_dl/lang/danish.py | 1 + TIDALDL-PY/tidal_dl/lang/dutch.py | 1 + TIDALDL-PY/tidal_dl/lang/english.py | 1 + TIDALDL-PY/tidal_dl/lang/filipino.py | 1 + TIDALDL-PY/tidal_dl/lang/french.py | 1 + TIDALDL-PY/tidal_dl/lang/german.py | 1 + TIDALDL-PY/tidal_dl/lang/hungarian.py | 1 + TIDALDL-PY/tidal_dl/lang/italian.py | 1 + TIDALDL-PY/tidal_dl/lang/japanese.py | 1 + TIDALDL-PY/tidal_dl/lang/korean.py | 1 + TIDALDL-PY/tidal_dl/lang/polish.py | 1 + TIDALDL-PY/tidal_dl/lang/portuguese.py | 1 + TIDALDL-PY/tidal_dl/lang/russian.py | 1 + TIDALDL-PY/tidal_dl/lang/spanish.py | 1 + TIDALDL-PY/tidal_dl/lang/turkish.py | 1 + TIDALDL-PY/tidal_dl/lang/ukrainian.py | 1 + TIDALDL-PY/tidal_dl/lang/vietnamese.py | 1 + TIDALDL-PY/tidal_dl/printf.py | 1 + TIDALDL-PY/tidal_dl/settings.py | 1 + TIDALDL-PY/updatelog.md | 2 ++ 28 files changed, 80 insertions(+), 38 deletions(-) diff --git a/TIDALDL-PY/tidal_dl/__init__.py b/TIDALDL-PY/tidal_dl/__init__.py index 5e7eb34..8907e0d 100644 --- a/TIDALDL-PY/tidal_dl/__init__.py +++ b/TIDALDL-PY/tidal_dl/__init__.py @@ -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") diff --git a/TIDALDL-PY/tidal_dl/download.py b/TIDALDL-PY/tidal_dl/download.py index bbec8af..4ae3115 100644 --- a/TIDALDL-PY/tidal_dl/download.py +++ b/TIDALDL-PY/tidal_dl/download.py @@ -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) diff --git a/TIDALDL-PY/tidal_dl/events.py b/TIDALDL-PY/tidal_dl/events.py index 3c0a6f0..8b0d94e 100644 --- a/TIDALDL-PY/tidal_dl/events.py +++ b/TIDALDL-PY/tidal_dl/events.py @@ -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) diff --git a/TIDALDL-PY/tidal_dl/gui.py b/TIDALDL-PY/tidal_dl/gui.py index cf0d790..099a1d7 100644 --- a/TIDALDL-PY/tidal_dl/gui.py +++ b/TIDALDL-PY/tidal_dl/gui.py @@ -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() diff --git a/TIDALDL-PY/tidal_dl/lang/arabic.py b/TIDALDL-PY/tidal_dl/lang/arabic.py index 323532b..a6a7b15 100644 --- a/TIDALDL-PY/tidal_dl/lang/arabic.py +++ b/TIDALDL-PY/tidal_dl/lang/arabic.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/chinese.py b/TIDALDL-PY/tidal_dl/lang/chinese.py index c7a2632..075b2da 100644 --- a/TIDALDL-PY/tidal_dl/lang/chinese.py +++ b/TIDALDL-PY/tidal_dl/lang/chinese.py @@ -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 = "开始启动登录..." diff --git a/TIDALDL-PY/tidal_dl/lang/croatian.py b/TIDALDL-PY/tidal_dl/lang/croatian.py index 3245e49..f0407a5 100644 --- a/TIDALDL-PY/tidal_dl/lang/croatian.py +++ b/TIDALDL-PY/tidal_dl/lang/croatian.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/czech.py b/TIDALDL-PY/tidal_dl/lang/czech.py index c174f89..2543588 100644 --- a/TIDALDL-PY/tidal_dl/lang/czech.py +++ b/TIDALDL-PY/tidal_dl/lang/czech.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/danish.py b/TIDALDL-PY/tidal_dl/lang/danish.py index a907891..15d2835 100644 --- a/TIDALDL-PY/tidal_dl/lang/danish.py +++ b/TIDALDL-PY/tidal_dl/lang/danish.py @@ -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." diff --git a/TIDALDL-PY/tidal_dl/lang/dutch.py b/TIDALDL-PY/tidal_dl/lang/dutch.py index 644edf8..1c3ebd4 100644 --- a/TIDALDL-PY/tidal_dl/lang/dutch.py +++ b/TIDALDL-PY/tidal_dl/lang/dutch.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/english.py b/TIDALDL-PY/tidal_dl/lang/english.py index b113025..e1f934d 100644 --- a/TIDALDL-PY/tidal_dl/lang/english.py +++ b/TIDALDL-PY/tidal_dl/lang/english.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/filipino.py b/TIDALDL-PY/tidal_dl/lang/filipino.py index 8ea1a34..d0c97bd 100644 --- a/TIDALDL-PY/tidal_dl/lang/filipino.py +++ b/TIDALDL-PY/tidal_dl/lang/filipino.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/french.py b/TIDALDL-PY/tidal_dl/lang/french.py index 5bdfe63..98e7320 100644 --- a/TIDALDL-PY/tidal_dl/lang/french.py +++ b/TIDALDL-PY/tidal_dl/lang/french.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/german.py b/TIDALDL-PY/tidal_dl/lang/german.py index 01ab55b..560925b 100644 --- a/TIDALDL-PY/tidal_dl/lang/german.py +++ b/TIDALDL-PY/tidal_dl/lang/german.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/hungarian.py b/TIDALDL-PY/tidal_dl/lang/hungarian.py index c2a76aa..2ad7e13 100644 --- a/TIDALDL-PY/tidal_dl/lang/hungarian.py +++ b/TIDALDL-PY/tidal_dl/lang/hungarian.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/italian.py b/TIDALDL-PY/tidal_dl/lang/italian.py index e25ef7b..1df9439 100644 --- a/TIDALDL-PY/tidal_dl/lang/italian.py +++ b/TIDALDL-PY/tidal_dl/lang/italian.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/japanese.py b/TIDALDL-PY/tidal_dl/lang/japanese.py index ec7478e..8855d6f 100644 --- a/TIDALDL-PY/tidal_dl/lang/japanese.py +++ b/TIDALDL-PY/tidal_dl/lang/japanese.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/korean.py b/TIDALDL-PY/tidal_dl/lang/korean.py index e64ab29..4fca27e 100644 --- a/TIDALDL-PY/tidal_dl/lang/korean.py +++ b/TIDALDL-PY/tidal_dl/lang/korean.py @@ -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 = "로그인 중..." diff --git a/TIDALDL-PY/tidal_dl/lang/polish.py b/TIDALDL-PY/tidal_dl/lang/polish.py index a6909f4..d2c6d2c 100644 --- a/TIDALDL-PY/tidal_dl/lang/polish.py +++ b/TIDALDL-PY/tidal_dl/lang/polish.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/portuguese.py b/TIDALDL-PY/tidal_dl/lang/portuguese.py index 1227305..95570b5 100644 --- a/TIDALDL-PY/tidal_dl/lang/portuguese.py +++ b/TIDALDL-PY/tidal_dl/lang/portuguese.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/russian.py b/TIDALDL-PY/tidal_dl/lang/russian.py index db26dd5..a273639 100644 --- a/TIDALDL-PY/tidal_dl/lang/russian.py +++ b/TIDALDL-PY/tidal_dl/lang/russian.py @@ -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 = "Входим в сервис..." diff --git a/TIDALDL-PY/tidal_dl/lang/spanish.py b/TIDALDL-PY/tidal_dl/lang/spanish.py index aef6616..a671d9d 100644 --- a/TIDALDL-PY/tidal_dl/lang/spanish.py +++ b/TIDALDL-PY/tidal_dl/lang/spanish.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/lang/turkish.py b/TIDALDL-PY/tidal_dl/lang/turkish.py index 08ffac5..6d9d15d 100644 --- a/TIDALDL-PY/tidal_dl/lang/turkish.py +++ b/TIDALDL-PY/tidal_dl/lang/turkish.py @@ -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ı..." diff --git a/TIDALDL-PY/tidal_dl/lang/ukrainian.py b/TIDALDL-PY/tidal_dl/lang/ukrainian.py index 0ca5656..70ad23a 100644 --- a/TIDALDL-PY/tidal_dl/lang/ukrainian.py +++ b/TIDALDL-PY/tidal_dl/lang/ukrainian.py @@ -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 = "Початок процесу авторизації..." diff --git a/TIDALDL-PY/tidal_dl/lang/vietnamese.py b/TIDALDL-PY/tidal_dl/lang/vietnamese.py index f004bdd..47d8b99 100644 --- a/TIDALDL-PY/tidal_dl/lang/vietnamese.py +++ b/TIDALDL-PY/tidal_dl/lang/vietnamese.py @@ -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..." diff --git a/TIDALDL-PY/tidal_dl/printf.py b/TIDALDL-PY/tidal_dl/printf.py index 7c85103..90c682e 100644 --- a/TIDALDL-PY/tidal_dl/printf.py +++ b/TIDALDL-PY/tidal_dl/printf.py @@ -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) diff --git a/TIDALDL-PY/tidal_dl/settings.py b/TIDALDL-PY/tidal_dl/settings.py index 62bd1b0..d897c15 100644 --- a/TIDALDL-PY/tidal_dl/settings.py +++ b/TIDALDL-PY/tidal_dl/settings.py @@ -26,6 +26,7 @@ class Settings(aigpy.model.ModelBase): showProgress = True showTrackInfo = True saveAlbumInfo = False + multiThread = False downloadPath = "./download/" audioQuality = AudioQuality.Normal diff --git a/TIDALDL-PY/updatelog.md b/TIDALDL-PY/updatelog.md index 6ec7606..ed7bab7 100644 --- a/TIDALDL-PY/updatelog.md +++ b/TIDALDL-PY/updatelog.md @@ -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