Exemplo n.º 1
0
 def settings(data: Settings):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.SETTING), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row(["Settings path", getSettingsPath()])
     tb.add_row([LANG.SETTING_DOWNLOAD_PATH, data.downloadPath])
     tb.add_row([LANG.SETTING_ONLY_M4A, data.onlyM4a])
     # tb.add_row([LANG.SETTING_ADD_EXPLICIT_TAG, data.addExplicitTag])
     # tb.add_row([LANG.SETTING_ADD_HYPHEN, data.addHyphen])
     # tb.add_row([LANG.SETTING_ADD_YEAR, data.addYear])
     # tb.add_row([LANG.SETTING_USE_TRACK_NUM, data.useTrackNumber])
     tb.add_row([LANG.SETTING_AUDIO_QUALITY, data.audioQuality])
     tb.add_row([LANG.SETTING_VIDEO_QUALITY, data.videoQuality])
     tb.add_row([LANG.SETTING_CHECK_EXIST, data.checkExist])
     tb.add_row([LANG.SETTING_SHOW_PROGRESS, data.showProgress])
     # tb.add_row([LANG.SETTING_ARTIST_BEFORE_TITLE, data.artistBeforeTitle])
     # tb.add_row([LANG.SETTING_ALBUMID_BEFORE_FOLDER, data.addAlbumIDBeforeFolder])
     tb.add_row([LANG.SETTING_INCLUDE_EP, data.includeEP])
     tb.add_row([LANG.SETTING_SAVE_COVERS, data.saveCovers])
     tb.add_row([LANG.SETTING_LANGUAGE, getLangName(data.language)])
     tb.add_row([LANG.SETTING_USE_PLAYLIST_FOLDER, data.usePlaylistFolder])
     tb.add_row(
         [LANG.SETTING_MULITHREAD_DOWNLOAD, data.multiThreadDownload])
     tb.add_row([LANG.SETTING_ALBUM_FOLDER_FORMAT, data.albumFolderFormat])
     tb.add_row([LANG.SETTING_TRACK_FILE_FORMAT, data.trackFileFormat])
     print(tb)
Exemplo n.º 2
0
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!")
Exemplo n.º 3
0
def login():
    print(LANG.AUTH_START_LOGIN)
    msg, check = API.getDeviceCode()
    if check == False:
        Printf.err(msg)
        return

    print(LANG.AUTH_LOGIN_CODE.format(green(API.key.userCode)))
    print(LANG.AUTH_NEXT_STEP.format(green(API.key.verificationUrl), yellow(displayTime(API.key.authCheckTimeout))))
    print(LANG.AUTH_WAITING)
    start = time.time()
    elapsed = 0
    while elapsed < API.key.authCheckTimeout:
        elapsed = time.time() - start
        # print("Check auth status...")
        msg, check = API.checkAuthStatus()
        if check == False:
            if msg == "pending":
                time.sleep(API.key.authCheckInterval + 1)
                continue
            Printf.err(msg)
            break
        if check == True:
            Printf.success(LANG.MSG_VALID_ACCESSTOKEN.format(displayTime(int(API.key.expiresIn))))
            TOKEN.userid = API.key.userId
            TOKEN.countryCode = API.key.countryCode
            TOKEN.accessToken = API.key.accessToken
            TOKEN.refreshToken = API.key.refreshToken
            TOKEN.expiresAfter = time.time() + int(API.key.expiresIn)
            TokenSettings.save(TOKEN)
            break
    if elapsed >= API.key.authCheckTimeout:
        Printf.err(LANG.AUTH_TIMEOUT)
    return
Exemplo n.º 4
0
 def playlist(data):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.MODEL_PLAYLIST_PROPERTY), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.MODEL_TITLE, data.title])
     tb.add_row([LANG.MODEL_TRACK_NUMBER, data.numberOfTracks])
     tb.add_row([LANG.MODEL_VIDEO_NUMBER, data.numberOfVideos])
     print(tb)
Exemplo n.º 5
0
 def artist(data):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.MODEL_ARTIST_PROPERTY), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.MODEL_ID, data.id])
     tb.add_row([LANG.MODEL_NAME, data.name])
     tb.add_row([LANG.MODEL_TYPE, str(data.type)])
     print(tb)
Exemplo n.º 6
0
 def usage():
     print("=============TIDAL-DL HELP==============")
     tb = prettytable.PrettyTable()
     tb.field_names = [green("OPTION"), green("DESC")]
     tb.align = 'l'
     tb.add_row(["-h or --help", "show help-message"])
     tb.add_row(["-v or --version", "show version"])
     tb.add_row(["-o or --output", "download path"])
     tb.add_row(["-l or --link", "url/id/filePath"])
     print(tb)
Exemplo n.º 7
0
 def video(data):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.MODEL_VIDEO_PROPERTY), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.MODEL_TITLE, data.title])
     tb.add_row([LANG.MODEL_ALBUM, data.album.title if data.album != None else None])
     tb.add_row([LANG.MODEL_VERSION, data.version])
     tb.add_row([LANG.MODEL_EXPLICIT, data.explicit])
     print(tb)
Exemplo n.º 8
0
 def track(data: Track):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.MODEL_TRACK_PROPERTY), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.MODEL_TITLE, data.title])
     tb.add_row(["ID", data.id])
     tb.add_row([LANG.MODEL_ALBUM, data.album.title])
     tb.add_row([LANG.MODEL_VERSION, data.version])
     tb.add_row([LANG.MODEL_EXPLICIT, data.explicit])
     print(tb)
Exemplo n.º 9
0
 def album(data):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.MODEL_ALBUM_PROPERTY), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.MODEL_TITLE, data.title])
     tb.add_row([LANG.MODEL_TRACK_NUMBER, data.numberOfTracks])
     tb.add_row([LANG.MODEL_VIDEO_NUMBER, data.numberOfVideos])
     tb.add_row([LANG.MODEL_RELEASE_DATE, data.releaseDate])
     tb.add_row([LANG.MODEL_VERSION, data.version])
     tb.add_row([LANG.MODEL_EXPLICIT, data.explicit])
     print(tb)
Exemplo n.º 10
0
 def searchTypes():
     LANG = getLang()
     print("====================================================")
     tb = prettytable.PrettyTable()
     tb.field_names = [LANG.CHOICE, "SEARCH BY"]
     tb.align = 'l'
     tb.set_style(prettytable.PLAIN_COLUMNS)
     tb.add_row([green(LANG.CHOICE_ENTER + " '0':"), "Track"])
     tb.add_row([green(LANG.CHOICE_ENTER + " '1':"), "Album"])
     tb.add_row([green(LANG.CHOICE_ENTER + " '2':"), "Playlist"])
     tb.add_row([green(LANG.CHOICE_ENTER + " '3':"), "Url/ID"])
     print(tb)
     print("====================================================")
Exemplo n.º 11
0
 def choices():
     LANG = getLang()
     print("====================================================")
     tb = prettytable.PrettyTable()
     tb.field_names = [LANG.CHOICE, LANG.FUNCTION]
     tb.align = 'l'
     tb.set_style(prettytable.PLAIN_COLUMNS)
     tb.add_row([green(LANG.CHOICE_ENTER + " '0':"), LANG.CHOICE_EXIT])
     tb.add_row([green(LANG.CHOICE_ENTER + " '1':"), LANG.CHOICE_LOGIN])
     tb.add_row([green(LANG.CHOICE_ENTER + " '2':"), LANG.CHOICE_SETTINGS])
     tb.add_row([green(LANG.CHOICE_ENTER + " '3':"), LANG.CHOICE_SET_ACCESS_TOKEN])
     tb.add_row([green(LANG.CHOICE_ENTER_URLID), LANG.CHOICE_DOWNLOAD_BY_URL])
     print(tb)
     print("====================================================")
Exemplo n.º 12
0
 def usage():
     print("=============TIDAL-DL HELP==============")
     tb = prettytable.PrettyTable()
     tb.field_names = [green("OPTION"), green("DESC")]
     tb.align = 'l'
     tb.add_row(["-h or --help", "show help-message"])
     tb.add_row(["-v or --version", "show version"])
     tb.add_row(["-o or --output", "download path"])
     tb.add_row(["-l or --link", "url/id/filePath"])
     tb.add_row(["-q or --quality", "track quality('0'-Normal,'1'-High,'2'-HiFi,'3'-Master)"])
     tb.add_row(["-r or --resolution", "video resolution('0'-1080,'1'-720,'2'-480,'3'-360)"])
     tb.add_row(["-u or --username", "account-email"])
     tb.add_row(["-p or --password", "account-password"])
     tb.add_row(["-a or --accessToken", "account-accessToken"])
     print(tb)
Exemplo n.º 13
0
 def settings(data):
     LANG = getLang()
     tb = prettytable.PrettyTable()
     tb.field_names = [green(LANG.SETTING), green(LANG.VALUE)]
     tb.align = 'l'
     tb.add_row([LANG.SETTING_DOWNLOAD_PATH, data.downloadPath])
     tb.add_row([LANG.SETTING_ONLY_M4A, data.onlyM4a])
     tb.add_row([LANG.SETTING_ADD_EXPLICIT_TAG, data.addExplicitTag])
     tb.add_row([LANG.SETTING_ADD_HYPHEN, data.addHyphen])
     tb.add_row([LANG.SETTING_ADD_YEAR, data.addYear])
     tb.add_row([LANG.SETTING_USE_TRACK_NUM, data.useTrackNumber])
     tb.add_row([LANG.SETTING_AUDIO_QUALITY, data.audioQuality])
     tb.add_row([LANG.SETTING_VIDEO_QUALITY, data.videoQuality])
     tb.add_row([LANG.SETTING_CHECK_EXIST, data.checkExist])
     tb.add_row([LANG.SETTING_ARTIST_BEFORE_TITLE, data.artistBeforeTitle])
     tb.add_row([LANG.SETTING_ALBUMID_BEFORE_FOLDER, data.addAlbumIDBeforeFolder])
     tb.add_row([LANG.SETTING_INCLUDE_EP, data.includeEP])
     tb.add_row([LANG.SETTING_SAVE_COVERS, data.saveCovers])
     tb.add_row([LANG.SETTING_LANGUAGE, getLangName(data.language)])
     print(tb)
def login():
    print(LANG.AUTH_START_LOGIN)
    msg, check = API.getDeviceCode()
    if not check:
        Printf.err(msg)
        return

    # print(LANG.AUTH_LOGIN_CODE.format(green(API.key.userCode)))
    print(LANG.AUTH_NEXT_STEP.format(green("http://" + API.key.verificationUrl + "/" + API.key.userCode), yellow(displayTime(API.key.authCheckTimeout))))
    print(LANG.AUTH_WAITING)
    loginByWeb()
    return
Exemplo n.º 15
0
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])
Exemplo n.º 16
0
 def success(string):
     LANG = getLang()
     print(green(LANG.PRINT_SUCCESS + " ") + string)