def main(): if len(sys.argv) > 1: mainCommand() return Printf.logo() Printf.settings(CONF) checkLogin() onlineVer = getLastVersion('tidal-dl') if not isNull(onlineVer): icmp = cmpVersion(onlineVer, VERSION) if icmp > 0: Printf.info(LANG.PRINT_LATEST_VERSION + ' ' + onlineVer) while True: Printf.choices() choice = Printf.enter(LANG.PRINT_ENTER_CHOICE) if choice == "0": return elif choice == "1": checkLogin() elif choice == "2": changeSettings() elif choice == "3": checkLogout() elif choice == "4": song = Printf.enter("Enter the song name: ") searchTrack(TOKEN, LANG.PRINT_ENTER_CHOICE, song, CONF) else: start(TOKEN, CONF, choice)
def main(): if len(sys.argv) > 1: mainCommand() return Printf.logo() Printf.settings(CONF) checkLogin() onlineVer = getLastVersion('tidal-dl') if not isNull(onlineVer): icmp = cmpVersion(onlineVer, VERSION) if icmp > 0: Printf.info(LANG.PRINT_LATEST_VERSION + ' ' + onlineVer) while True: Printf.choices() raw = Printf.enter(LANG.PRINT_ENTER_CHOICE).strip() choice = int(re.sub('[^0-9]', '', raw)) if choice == 0: return elif choice == 1: checkLogin() elif choice == 2: changeSettings() elif choice == 3: checkLogout() elif choice == 4: Printf.searchTypes() searchRaw = Printf.enter(LANG.PRINT_ENTER_CHOICE).strip() searchType = int(re.sub('[^0-9]', '', searchRaw)) if (searchType == 3): searchRaw = Printf.enter("Enter a url or id: ").strip() start(TOKEN, CONF, searchRaw) return field = "track" if searchType == 0 else 'album' if searchType == 1 else 'playlist' if searchType >= 0 and searchType <= 2: song = Printf.enter("Enter the song name: ") searchTrack(TOKEN, LANG.PRINT_ENTER_CHOICE, field, song, CONF) else: os.system('clear') Printf.err("Invalid option!") else: os.system('clear') Printf.err("Invalid option!")
def main(): if len(sys.argv) > 1: mainCommand() return Printf.logo() Printf.settings(CONF) checkLogin() autoGetAccessToken() onlineVer = getLastVersion('tidal-dl') if not isNull(onlineVer): icmp = cmpVersion(onlineVer, VERSION) if icmp > 0: Printf.info(LANG.PRINT_LATEST_VERSION + ' ' + onlineVer) while True: Printf.choices() choice = Printf.enter(LANG.PRINT_ENTER_CHOICE) if choice == "0": return elif choice == "1": login() elif choice == "2": changeSettings() elif choice == "3": setAccessToken() else: start(USER, CONF, choice)
def searchTrack(user, lang, field, song, conf): __loadAPI__(user) msg, obj = API.searchSong(field, song, limit=10) for item in obj: if field == 'track': print( green(f"Enter [{obj.index(item)}]: ") + f"{item.title} - {item.artist.name} - {item.album.title}") elif field == 'album': print( green(f"Enter [{obj.index(item)}]: ") + f"{item.title} - {item.artist.name}") else: print( green(f"Enter [{obj.index(item)}]: ") + f"{item.title} - {item.numberOfTracks} Songs") try: choice = int(Printf.enter(lang)) if (choice >= 0 and choice < len(obj)): if field == 'track': __track__(conf, obj[choice]) elif field == 'album': __album__(conf, obj[choice]) else: __playlist__(conf, obj[choice]) else: os.system('clear') Printf.err("Invalid option!") except ValueError: os.system('clear') Printf.err("Invalid option!")
def changeSettings(): global LANG Printf.settings(CONF) choice = Printf.enter(LANG.CHANGE_START_SETTINGS) if choice == '0': return CONF.downloadPath = Printf.enterPath(LANG.CHANGE_DOWNLOAD_PATH, LANG.MSG_PATH_ERR, '0', CONF.downloadPath) CONF.audioQuality = AudioQuality( int( Printf.enterLimit(LANG.CHANGE_AUDIO_QUALITY, LANG.MSG_INPUT_ERR, ['0', '1', '2', '3']))) CONF.videoQuality = AudioQuality( int( Printf.enterLimit(LANG.CHANGE_VIDEO_QUALITY, LANG.MSG_INPUT_ERR, ['0', '1', '2', '3']))) CONF.onlyM4a = Printf.enter(LANG.CHANGE_ONLYM4A) == '1' CONF.checkExist = Printf.enter(LANG.CHANGE_CHECK_EXIST) == '1' CONF.includeEP = Printf.enter(LANG.CHANGE_INCLUDE_EP) == '1' CONF.saveCovers = Printf.enter(LANG.CHANGE_SAVE_COVERS) == '1' CONF.showProgress = Printf.enter(LANG.CHANGE_SHOW_PROGRESS) == '1' CONF.language = Printf.enter(LANG.CHANGE_LANGUAGE + "(" + getLangChoicePrint() + "):") CONF.albumFolderFormat = Printf.enterFormat( LANG.CHANGE_ALBUM_FOLDER_FORMAT, CONF.albumFolderFormat, Settings.getDefaultAlbumFolderFormat()) CONF.trackFileFormat = Printf.enterFormat( LANG.CHANGE_TRACK_FILE_FORMAT, CONF.trackFileFormat, Settings.getDefaultTrackFileFormat()) LANG = setLang(CONF.language) Settings.save(CONF)
def changeSettings(): global LANG Printf.settings(CONF) choice = Printf.enter(LANG.CHANGE_START_SETTINGS) if choice == '0': return CONF.downloadPath = Printf.enterPath(LANG.CHANGE_DOWNLOAD_PATH, LANG.MSG_PATH_ERR, '0', CONF.downloadPath) CONF.audioQuality = AudioQuality( int( Printf.enterLimit(LANG.CHANGE_AUDIO_QUALITY, LANG.MSG_INPUT_ERR, ['0', '1', '2', '3']))) CONF.videoQuality = VideoQuality( int( Printf.enterLimit(LANG.CHANGE_VIDEO_QUALITY, LANG.MSG_INPUT_ERR, ['1080', '720', '480', '360']))) CONF.onlyM4a = Printf.enter(LANG.CHANGE_ONLYM4A) == '1' CONF.checkExist = Printf.enter(LANG.CHANGE_CHECK_EXIST) == '1' CONF.includeEP = Printf.enter(LANG.CHANGE_INCLUDE_EP) == '1' CONF.saveCovers = Printf.enter(LANG.CHANGE_SAVE_COVERS) == '1' CONF.showProgress = Printf.enter(LANG.CHANGE_SHOW_PROGRESS) == '1' CONF.saveAlbumInfo = Printf.enter(LANG.CHANGE_SAVE_ALBUM_INFO) == '1' CONF.usePlaylistFolder = Printf.enter(LANG.SETTING_USE_PLAYLIST_FOLDER + "('0'-No,'1'-Yes):") == '1' CONF.language = Printf.enter(LANG.CHANGE_LANGUAGE + "(" + getLangChoicePrint() + "):") CONF.albumFolderFormat = Printf.enterFormat( LANG.CHANGE_ALBUM_FOLDER_FORMAT, CONF.albumFolderFormat, Settings.getDefaultAlbumFolderFormat()) CONF.trackFileFormat = Printf.enterFormat( LANG.CHANGE_TRACK_FILE_FORMAT, CONF.trackFileFormat, Settings.getDefaultTrackFileFormat()) CONF.addLyrics = Printf.enter(LANG.CHANGE_ADD_LYRICS) == '1' CONF.lyricsServerProxy = Printf.enterFormat( LANG.CHANGE_LYRICS_SERVER_PROXY, CONF.lyricsServerProxy, CONF.lyricsServerProxy) LANG = setLang(CONF.language) Settings.save(CONF)
def setAccessToken(): while True: print("-------------AccessToken---------------") token = Printf.enter("accessToken('0' go back):") if token == '0': return msg, check = API.loginByAccessToken(token, TOKEN.userid) if check == False: Printf.err(msg) continue break print("-------------RefreshToken---------------") refreshToken = Printf.enter("refreshToken('0' to skip):") if refreshToken == '0': refreshToken = TOKEN.refreshToken TOKEN.assesstoken = token TOKEN.refreshToken = refreshToken TOKEN.expiresAfter = 0 TokenSettings.save(TOKEN)
def searchTrack(user, lang, song, conf): __loadAPI__(user) msg, obj = API.searchSong(song, limit=10) for track in obj: print( green(f"Enter [{obj.index(track)}]: ") + f"{track.title} - {track.artist.name} - {track.album.title}") choice = int(Printf.enter(lang)) if (choice >= 0 and choice < len(obj)): print(f"Downlaoding [{obj[choice].id}] ...") __track__(conf, obj[choice])
def setAccessToken(): while True: print("-------------AccessToken---------------") token = Printf.enter("accessToken('0' go back):") if token == '0': return msg, check = API.loginByAccessToken(token, USER.userid) if check == False: Printf.err(msg) continue break USER.assesstoken = token UserSettings.save(USER)
def login(username="", password=""): while True: if isNull(username) or isNull(password): print("---------------" + LANG.CHOICE_LOGIN + "-----------------") username = Printf.enter(LANG.PRINT_USERNAME) password = Printf.enter(LANG.PRINT_PASSWORD) msg, check = API.login(username, password, TOKEN1) if check == False: Printf.err(msg) username = "" password = "" continue api2 = TidalAPI() msg, check = api2.login(username, password, TOKEN2) break USER.username = username USER.password = password USER.userid = API.key.userId USER.countryCode = API.key.countryCode USER.sessionid1 = API.key.sessionId USER.sessionid2 = api2.key.sessionId UserSettings.save(USER)
def main(): if len(sys.argv) > 1: mainCommand() return Printf.logo() Printf.settings(CONF) checkLogin() onlineVer = getLastVersion('tidal-dl') if not isNull(onlineVer): icmp = cmpVersion(onlineVer, VERSION) if icmp > 0: Printf.info(LANG.PRINT_LATEST_VERSION + ' ' + onlineVer) while True: Printf.choices() choice = Printf.enter(LANG.PRINT_ENTER_CHOICE) if choice == "0": return elif choice == "1": checkLogin() elif choice == "2": changeSettings() elif choice == "3": checkLogout() elif choice == "4": setAccessToken() elif choice == '5': if setAPIKey(): checkLogout() elif choice == "10": # test track start(TOKEN, CONF, '70973230') elif choice == "11": # test video start(TOKEN, CONF, '188932980') elif choice == "12": # test album start(TOKEN, CONF, '58138532') elif choice == "13": # test playlist start(TOKEN, CONF, '98235845-13e8-43b4-94e2-d9f8e603cee7') elif choice == "14": # test playlist start(TOKEN, CONF, '01453963b7dbd41c8b82ccb678d127') else: start(TOKEN, CONF, choice)
def main(): if len(sys.argv) > 1: mainCommand() return Printf.logo() Printf.settings(CONF) checkLogin() autoGetAccessToken() onlineVer = getLastVersion('tidal-dl') if not isNull(onlineVer): icmp = cmpVersion(onlineVer, VERSION) if icmp > 0: Printf.info(LANG.PRINT_LATEST_VERSION + ' ' + onlineVer) while True: Printf.choices() choice = Printf.enter(LANG.PRINT_ENTER_CHOICE) if choice == "0": return elif choice == "1": login() elif choice == "2": changeSettings() elif choice == "3": setAccessToken() elif choice == "4": #batch processing try: with open('batch.txt') as batchfile: line = batchfile.readline() while line: if len(line.strip()) > 0: print('\033[1m' + f"Batching {line.strip()}" + '\033[0m') start(USER, CONF, line.strip()) line = batchfile.readline() except: traceback.print_exc() else: start(USER, CONF, choice)
def changeSettings(): global LANG Printf.settings(CONF) choice = Printf.enter(LANG.CHANGE_START_SETTINGS) if choice == '0': return while True: choice = Printf.enter(LANG.CHANGE_DOWNLOAD_PATH) if choice == '0': choice = CONF.downloadPath elif not os.path.isdir(choice): if not mkdirs(choice): Printf.err(LANG.MSG_PATH_ERR) continue CONF.downloadPath = choice break while True: choice = Printf.enter(LANG.CHANGE_AUDIO_QUALITY) if choice != '1' and choice != '2' and choice != '3' and choice != '0': Printf.err(LANG.MSG_INPUT_ERR) continue if choice == '0': CONF.audioQuality = AudioQuality.Normal if choice == '1': CONF.audioQuality = AudioQuality.High if choice == '2': CONF.audioQuality = AudioQuality.HiFi if choice == '3': CONF.audioQuality = AudioQuality.Master break while True: choice = Printf.enter(LANG.CHANGE_VIDEO_QUALITY) if choice != '1' and choice != '2' and choice != '3' and choice != '0': Printf.err(LANG.MSG_INPUT_ERR) continue if choice == '0': CONF.videoQuality = VideoQuality.P1080 if choice == '1': CONF.videoQuality = VideoQuality.P720 if choice == '2': CONF.videoQuality = VideoQuality.P480 if choice == '3': CONF.videoQuality = VideoQuality.P360 break CONF.onlyM4a = Printf.enter(LANG.CHANGE_ONLYM4A) == '1' # CONF.addExplicitTag = Printf.enter(LANG.CHANGE_ADD_EXPLICIT_TAG) == '1' # CONF.addHyphen = Printf.enter(LANG.CHANGE_ADD_HYPHEN) == '1' # CONF.addYear = Printf.enter(LANG.CHANGE_ADD_YEAR) == '1' # CONF.useTrackNumber = Printf.enter(LANG.CHANGE_USE_TRACK_NUM) == '1' CONF.checkExist = Printf.enter(LANG.CHANGE_CHECK_EXIST) == '1' # CONF.artistBeforeTitle = Printf.enter(LANG.CHANGE_ARTIST_BEFORE_TITLE) == '1' CONF.includeEP = Printf.enter(LANG.CHANGE_INCLUDE_EP) == '1' # CONF.addAlbumIDBeforeFolder = Printf.enter(LANG.CHANGE_ALBUMID_BEFORE_FOLDER) == '1' CONF.saveCovers = Printf.enter(LANG.CHANGE_SAVE_COVERS) == '1' CONF.showProgress = Printf.enter(LANG.CHANGE_SHOW_PROGRESS) == '1' CONF.language = Printf.enter( LANG.CHANGE_LANGUAGE + "('0'-English,'1'-中文,'2'-Turkish,'3'-Italiano,'4'-Czech,'5'-Arabic,'6'-Russian,'7'-Filipino,'8'-Croatian,'9'-Spanish,'10'-Portuguese,'11'-Ukrainian,'12'-Vietnamese,'13'-French,'14'-German):" ) albumFolderFormat = Printf.enter(LANG.CHANGE_ALBUM_FOLDER_FORMAT) if albumFolderFormat == '0': albumFolderFormat = CONF.albumFolderFormat else: CONF.albumFolderFormat = albumFolderFormat trackFileFormat = Printf.enter(LANG.CHANGE_TRACK_FILE_FORMAT) if trackFileFormat == '0': trackFileFormat = CONF.trackFileFormat else: CONF.trackFileFormat = trackFileFormat LANG = setLang(CONF.language) Settings.save(CONF)
def changeSettings(): Printf.settings(CONF) choice = Printf.enter(LANG.CHANGE_START_SETTINGS) if choice == '0': return while True: choice = Printf.enter(LANG.CHANGE_DOWNLOAD_PATH) if choice == '0': choice = CONF.downloadPath elif not os.path.isdir(choice): if not mkdirs(choice): Printf.err(LANG.MSG_PATH_ERR) continue CONF.downloadPath = choice break while True: choice = Printf.enter(LANG.CHANGE_AUDIO_QUALITY) if choice != '1' and choice != '2' and choice != '3' and choice != '0': Printf.err(LANG.MSG_INPUT_ERR) continue if choice == '0': CONF.audioQuality = AudioQuality.Normal if choice == '1': CONF.audioQuality = AudioQuality.High if choice == '2': CONF.audioQuality = AudioQuality.HiFi if choice == '3': CONF.audioQuality = AudioQuality.Master break while True: choice = Printf.enter(LANG.CHANGE_VIDEO_QUALITY) if choice != '1' and choice != '2' and choice != '3' and choice != '0': Printf.err(LANG.MSG_INPUT_ERR) continue if choice == '0': CONF.videoQuality = VideoQuality.P1080 if choice == '1': CONF.videoQuality = VideoQuality.P720 if choice == '2': CONF.videoQuality = VideoQuality.P480 if choice == '3': CONF.videoQuality = VideoQuality.P360 break CONF.onlyM4a = Printf.enter(LANG.CHANGE_ONLYM4A) == '1' CONF.addExplicitTag = Printf.enter(LANG.CHANGE_ADD_EXPLICIT_TAG) == '1' CONF.addHyphen = Printf.enter(LANG.CHANGE_ADD_HYPHEN) == '1' CONF.addYear = Printf.enter(LANG.CHANGE_ADD_YEAR) == '1' CONF.useTrackNumber = Printf.enter(LANG.CHANGE_USE_TRACK_NUM) == '1' CONF.checkExist = Printf.enter(LANG.CHANGE_CHECK_EXIST) == '1' CONF.artistBeforeTitle = Printf.enter( LANG.CHANGE_ARTIST_BEFORE_TITLE) == '1' CONF.includeEP = Printf.enter(LANG.CHANGE_INCLUDE_EP) == '1' CONF.addAlbumIDBeforeFolder = Printf.enter( LANG.CHANGE_ALBUMID_BEFORE_FOLDER) == '1' CONF.saveCovers = Printf.enter(LANG.CHANGE_SAVE_COVERS) == '1' CONF.language = Printf.enter(LANG.CHANGE_LANGUAGE) LANG = setLang(CONF.language) Settings.save(CONF)