Compare commits
2 commits
66b35b8e09
...
4c37c102cf
| Author | SHA1 | Date | |
|---|---|---|---|
|
4c37c102cf |
|||
|
229d933308 |
6 changed files with 55 additions and 52 deletions
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "spotifyio-downloader"
|
||||
description = "CLI for downloading music from Spotify"
|
||||
version = "0.5.1"
|
||||
version = "0.6.0"
|
||||
edition.workspace = true
|
||||
authors.workspace = true
|
||||
license.workspace = true
|
||||
|
|
|
|||
|
|
@ -441,7 +441,7 @@ impl SpotifyDownloader {
|
|||
audio_item.track_id
|
||||
);
|
||||
|
||||
let formats = &[AudioFileFormat::MP4_128];
|
||||
let formats = &[AudioFileFormat::MP4_128, AudioFileFormat::MP4_128_DUAL];
|
||||
|
||||
let (format, file_id) = formats
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ message AudioFile {
|
|||
MP3_160_ENC = 7;
|
||||
AAC_24 = 8;
|
||||
AAC_48 = 9;
|
||||
AAC_160 = 10;
|
||||
AAC_320 = 11;
|
||||
MP4_128 = 12;
|
||||
OTHER5 = 13;
|
||||
MP4_128 = 10;
|
||||
MP4_256 = 11;
|
||||
MP4_128_DUAL = 12;
|
||||
MP4_256_DUAL = 13;
|
||||
FLAC_FLAC = 16;
|
||||
}
|
||||
}
|
||||
|
|
@ -29,22 +29,22 @@ message AudioFile {
|
|||
message File {
|
||||
int32 bitrate = 3;
|
||||
string mime_type = 4;
|
||||
|
||||
|
||||
oneof file {
|
||||
ExternalFile external_file = 1;
|
||||
FileIdFile file_id_file = 2;
|
||||
}
|
||||
|
||||
|
||||
message ExternalFile {
|
||||
string method = 1;
|
||||
bytes body = 4;
|
||||
|
||||
|
||||
oneof endpoint {
|
||||
string url = 2;
|
||||
string service = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
message FileIdFile {
|
||||
string file_id_hex = 1;
|
||||
AudioFile.Format download_format = 2;
|
||||
|
|
|
|||
|
|
@ -292,10 +292,10 @@ message AudioFile {
|
|||
MP3_160_ENC = 7;
|
||||
AAC_24 = 8;
|
||||
AAC_48 = 9;
|
||||
AAC_160 = 10;
|
||||
AAC_320 = 11;
|
||||
MP4_128 = 12;
|
||||
MP4_256 = 13;
|
||||
MP4_128 = 10;
|
||||
MP4_256 = 11;
|
||||
MP4_128_DUAL = 12;
|
||||
MP4_256_DUAL = 13;
|
||||
FLAC_FLAC = 16;
|
||||
UNKNOWN_FORMAT = 255;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,11 +59,11 @@ pub fn audio_format_extension(format: AudioFileFormat) -> Option<&'static str> {
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320 => Some(".mp3"),
|
||||
AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::AAC_320 => Some(".aac"),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_256 => Some(".m4a"),
|
||||
AudioFileFormat::AAC_24 | AudioFileFormat::AAC_48 => Some(".aac"),
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL => Some(".m4a"),
|
||||
AudioFileFormat::FLAC_FLAC => Some(".flac"),
|
||||
AudioFileFormat::UNKNOWN_FORMAT => None,
|
||||
}
|
||||
|
|
@ -79,11 +79,11 @@ pub fn audio_format_mime(format: AudioFileFormat) -> Option<&'static str> {
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320 => Some("audio/mp3"),
|
||||
AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::AAC_320 => Some("audio/aac"),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_256 => Some("audio/mp4"),
|
||||
AudioFileFormat::AAC_24 | AudioFileFormat::AAC_48 => Some("audio/aac"),
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL => Some("audio/mp4"),
|
||||
AudioFileFormat::FLAC_FLAC => Some("audio/flac"),
|
||||
AudioFileFormat::UNKNOWN_FORMAT => None,
|
||||
}
|
||||
|
|
@ -94,14 +94,13 @@ pub fn audio_format_bitrate(format: AudioFileFormat) -> Option<u32> {
|
|||
match format {
|
||||
AudioFileFormat::OGG_VORBIS_96 | AudioFileFormat::MP3_96 => Some(96000),
|
||||
AudioFileFormat::OGG_VORBIS_160
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::MP3_160
|
||||
| AudioFileFormat::MP3_160_ENC => Some(160000),
|
||||
AudioFileFormat::OGG_VORBIS_320 | AudioFileFormat::AAC_320 | AudioFileFormat::MP3_320 => {
|
||||
Some(320000)
|
||||
AudioFileFormat::OGG_VORBIS_320 | AudioFileFormat::MP3_320 => Some(320000),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_128_DUAL => Some(128000),
|
||||
AudioFileFormat::MP3_256 | AudioFileFormat::MP4_256 | AudioFileFormat::MP4_256_DUAL => {
|
||||
Some(256000)
|
||||
}
|
||||
AudioFileFormat::MP4_128 => Some(128000),
|
||||
AudioFileFormat::MP3_256 | AudioFileFormat::MP4_256 => Some(256000),
|
||||
AudioFileFormat::AAC_24 => Some(24000),
|
||||
AudioFileFormat::AAC_48 => Some(48000),
|
||||
AudioFileFormat::FLAC_FLAC | AudioFileFormat::UNKNOWN_FORMAT => None,
|
||||
|
|
@ -117,13 +116,13 @@ pub fn audio_format_available(format: AudioFileFormat, is_premium: bool) -> bool
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::MP4_128 => true,
|
||||
| AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL => true,
|
||||
AudioFileFormat::OGG_VORBIS_320
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320
|
||||
| AudioFileFormat::AAC_320
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL
|
||||
| AudioFileFormat::FLAC_FLAC => is_premium,
|
||||
AudioFileFormat::UNKNOWN_FORMAT => false,
|
||||
}
|
||||
|
|
@ -131,5 +130,11 @@ pub fn audio_format_available(format: AudioFileFormat, is_premium: bool) -> bool
|
|||
|
||||
/// Return true if the audio format uses Widevine
|
||||
pub fn audio_format_widevine(format: AudioFileFormat) -> bool {
|
||||
matches!(format, AudioFileFormat::MP4_128 | AudioFileFormat::MP4_256)
|
||||
matches!(
|
||||
format,
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@ pub fn audio_format_extension(format: AudioFileFormat) -> Option<&'static str> {
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320 => Some(".mp3"),
|
||||
AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::AAC_320 => Some(".aac"),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_256 => Some(".m4a"),
|
||||
AudioFileFormat::AAC_24 | AudioFileFormat::AAC_48 => Some(".aac"),
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL => Some(".m4a"),
|
||||
AudioFileFormat::FLAC_FLAC => Some(".flac"),
|
||||
AudioFileFormat::UNKNOWN_FORMAT => None,
|
||||
}
|
||||
|
|
@ -48,11 +48,11 @@ pub fn audio_format_mime(format: AudioFileFormat) -> Option<&'static str> {
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320 => Some("audio/mp3"),
|
||||
AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::AAC_320 => Some("audio/aac"),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_256 => Some("audio/mp4"),
|
||||
AudioFileFormat::AAC_24 | AudioFileFormat::AAC_48 => Some("audio/aac"),
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL => Some("audio/mp4"),
|
||||
AudioFileFormat::FLAC_FLAC => Some("audio/flac"),
|
||||
AudioFileFormat::UNKNOWN_FORMAT => None,
|
||||
}
|
||||
|
|
@ -66,8 +66,8 @@ pub fn audio_format_bitrate(format: AudioFileFormat) -> Option<u32> {
|
|||
| AudioFileFormat::MP3_160
|
||||
| AudioFileFormat::MP3_160_ENC => Some(160000),
|
||||
AudioFileFormat::OGG_VORBIS_320 | AudioFileFormat::MP3_320 => Some(320000),
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::AAC_160 => Some(128000),
|
||||
AudioFileFormat::MP3_256 | AudioFileFormat::MP4_256 | AudioFileFormat::AAC_320 => {
|
||||
AudioFileFormat::MP4_128 | AudioFileFormat::MP4_128_DUAL => Some(128000),
|
||||
AudioFileFormat::MP3_256 | AudioFileFormat::MP4_256 | AudioFileFormat::MP4_256_DUAL => {
|
||||
Some(256000)
|
||||
}
|
||||
AudioFileFormat::AAC_24 => Some(24000),
|
||||
|
|
@ -85,13 +85,13 @@ pub fn audio_format_available(format: AudioFileFormat, is_premium: bool) -> bool
|
|||
| AudioFileFormat::MP3_160_ENC
|
||||
| AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::MP4_128 => true,
|
||||
| AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL => true,
|
||||
AudioFileFormat::OGG_VORBIS_320
|
||||
| AudioFileFormat::MP3_256
|
||||
| AudioFileFormat::MP3_320
|
||||
| AudioFileFormat::AAC_320
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::MP4_256_DUAL
|
||||
| AudioFileFormat::FLAC_FLAC => is_premium,
|
||||
AudioFileFormat::UNKNOWN_FORMAT => false,
|
||||
}
|
||||
|
|
@ -102,10 +102,8 @@ pub fn audio_format_widevine(format: AudioFileFormat) -> bool {
|
|||
matches!(
|
||||
format,
|
||||
AudioFileFormat::MP4_128
|
||||
| AudioFileFormat::MP4_128_DUAL
|
||||
| AudioFileFormat::MP4_256
|
||||
| AudioFileFormat::AAC_160
|
||||
| AudioFileFormat::AAC_320
|
||||
| AudioFileFormat::AAC_24
|
||||
| AudioFileFormat::AAC_48
|
||||
| AudioFileFormat::MP4_256_DUAL
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue