From d8b1f0c0026c481e2e36945fdc3e755a51194399 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Sat, 13 Jun 2020 20:58:43 -0400 Subject: [PATCH 1/6] Enable M4A format support - Use https://github.com/Saecki/rust-mp4ameta for M4A metadata Resolves https://github.com/agersant/polaris/issues/70 --- Cargo.lock | 10 ++++++++++ Cargo.toml | 1 + src/index/metadata.rs | 27 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index b311b46..10a5838 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1202,6 +1202,14 @@ dependencies = [ "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mp4ameta" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "native-tls" version = "0.2.4" @@ -1477,6 +1485,7 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "metaflac 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mp4ameta 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2939,6 +2948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "eda61ba6c266cd2c7bfcea9a2719837dc062869e24e101a93c1b0873d17c2d35" +"checksum mp4ameta 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3538f327d5d3afbc25b3677f5bd1e917ae7e9d3eae2aa9c3b57bc77f0356e829" "checksum native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" "checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" "checksum notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "80ae4a7688d1fab81c5bf19c64fc8db920be8d519ce6336ed4e7efe024724dbd" diff --git a/Cargo.toml b/Cargo.toml index e30aa99..fde6aa4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ lewton = "0.10.1" log = "0.4.5" metaflac = "0.2.3" mp3-duration = "0.1.9" +mp4ameta = "0.2.0" pbkdf2 = "0.3" rand = "0.7" rayon = "1.3" diff --git a/src/index/metadata.rs b/src/index/metadata.rs index e383a0b..8dcc7da 100644 --- a/src/index/metadata.rs +++ b/src/index/metadata.rs @@ -8,6 +8,7 @@ use mp3_duration; use regex::Regex; use std::fs; use std::path::Path; +use mp4ameta; use crate::utils; use crate::utils::AudioFormat; @@ -29,6 +30,7 @@ pub fn read(path: &Path) -> Option { let data = match utils::get_audio_format(path) { Some(AudioFormat::FLAC) => Some(read_flac(path)), Some(AudioFormat::MP3) => Some(read_id3(path)), + Some(AudioFormat::MP4) => Some(read_mp4(path)), Some(AudioFormat::MPC) => Some(read_ape(path)), Some(AudioFormat::OGG) => Some(read_vorbis(path)), _ => None, @@ -203,6 +205,31 @@ fn read_flac(path: &Path) -> Result { }) } +#[cfg_attr(feature = "profile-index", flame)] +fn read_mp4(path: &Path) -> Result { + let tag = mp4ameta::Tag::read_from_path(path)?; + let mut tags = SongTags { + artist: None, + album_artist: None, + album: None, + title: None, + duration: None, + disc_number: None, + track_number: None, + year: None, + }; + tags.artist = Some(tag.artist().unwrap().to_string()); + tags.album_artist = Some(tag.album_artist().unwrap().to_string()); + tags.album = Some(tag.album().unwrap().to_string()); + tags.title = Some(tag.title().unwrap().to_string()); + tags.duration = Some(tag.duration().unwrap() as u32); + tags.disc_number = tag.disk_number().0.and_then(|d| Some(d as u32)); + tags.track_number = tag.track_number().0.and_then(|d| Some(d as u32)); + tags.year = tag.year().unwrap().parse::().ok(); + + Ok(tags) +} + #[test] fn test_read_metadata() { let sample_tags = SongTags { From 2797d5ed91acfb46fabd10ee6dc8484c00c8e854 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Sat, 13 Jun 2020 21:18:54 -0400 Subject: [PATCH 2/6] alphabetize mp4meta import --- src/index/metadata.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index/metadata.rs b/src/index/metadata.rs index 8dcc7da..f3842d0 100644 --- a/src/index/metadata.rs +++ b/src/index/metadata.rs @@ -5,10 +5,10 @@ use lewton::inside_ogg::OggStreamReader; use log::error; use metaflac; use mp3_duration; +use mp4ameta; use regex::Regex; use std::fs; use std::path::Path; -use mp4ameta; use crate::utils; use crate::utils::AudioFormat; From e9346e29eef04e2f4037e1282e2e8e6a4aa825b0 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Mon, 15 Jun 2020 15:02:48 -0400 Subject: [PATCH 3/6] Add unit test --- src/index/metadata.rs | 10 ++++++---- test/sample.m4a | Bin 0 -> 5052 bytes 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 test/sample.m4a diff --git a/src/index/metadata.rs b/src/index/metadata.rs index f3842d0..4ae4614 100644 --- a/src/index/metadata.rs +++ b/src/index/metadata.rs @@ -250,10 +250,12 @@ fn test_read_metadata() { duration: Some(0), ..sample_tags.clone() }; + let m4a_sample_tag = SongTags { + duration: Some(0), + ..sample_tags.clone() + }; assert_eq!(read(Path::new("test/sample.mp3")).unwrap(), mp3_sample_tag); assert_eq!(read(Path::new("test/sample.ogg")).unwrap(), sample_tags); - assert_eq!( - read(Path::new("test/sample.flac")).unwrap(), - flac_sample_tag - ); + assert_eq!(read(Path::new("test/sample.flac")).unwrap(), flac_sample_tag); + assert_eq!(read(Path::new("test/sample.m4a")).unwrap(), m4a_sample_tag); } diff --git a/test/sample.m4a b/test/sample.m4a new file mode 100644 index 0000000000000000000000000000000000000000..1b4866a11411a7e80ca2bf2407fba267c55dca3b GIT binary patch literal 5052 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 literal 0 HcmV?d00001 From 7637037e3db74718c73a3fb47d8314901766e419 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Tue, 16 Jun 2020 08:06:27 -0400 Subject: [PATCH 4/6] add m4a support via mp4ameta crate --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- src/index/metadata.rs | 13 +++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 10a5838..7874aeb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "mp4ameta" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1485,7 +1485,7 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "metaflac 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mp4ameta 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mp4ameta 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2948,7 +2948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "eda61ba6c266cd2c7bfcea9a2719837dc062869e24e101a93c1b0873d17c2d35" -"checksum mp4ameta 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3538f327d5d3afbc25b3677f5bd1e917ae7e9d3eae2aa9c3b57bc77f0356e829" +"checksum mp4ameta 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1c3784b35bb34f94341fd1e2bf9a2c66fc40804464a155b06b3cd71f8d623e" "checksum native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" "checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" "checksum notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "80ae4a7688d1fab81c5bf19c64fc8db920be8d519ce6336ed4e7efe024724dbd" diff --git a/Cargo.toml b/Cargo.toml index fde6aa4..3430306 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ lewton = "0.10.1" log = "0.4.5" metaflac = "0.2.3" mp3-duration = "0.1.9" -mp4ameta = "0.2.0" +mp4ameta = "0.2.1" pbkdf2 = "0.3" rand = "0.7" rayon = "1.3" diff --git a/src/index/metadata.rs b/src/index/metadata.rs index 4ae4614..d8ec7fe 100644 --- a/src/index/metadata.rs +++ b/src/index/metadata.rs @@ -218,14 +218,15 @@ fn read_mp4(path: &Path) -> Result { track_number: None, year: None, }; - tags.artist = Some(tag.artist().unwrap().to_string()); - tags.album_artist = Some(tag.album_artist().unwrap().to_string()); - tags.album = Some(tag.album().unwrap().to_string()); - tags.title = Some(tag.title().unwrap().to_string()); - tags.duration = Some(tag.duration().unwrap() as u32); + tags.artist = tag.artist().map(|v| v.to_string()); + tags.album_artist = tag.album_artist().map(|v| v.to_string()); + tags.album = tag.album().map(|v| v.to_string()); + tags.title = tag.title().map(|v| v.to_string()); + tags.duration = tag.duration().map(|v| v as u32); tags.disc_number = tag.disk_number().0.and_then(|d| Some(d as u32)); tags.track_number = tag.track_number().0.and_then(|d| Some(d as u32)); - tags.year = tag.year().unwrap().parse::().ok(); + let year = tag.year().and_then(|v| Some(v.parse::().ok())); + tags.year = match year { None => None, Some(year) => year}; Ok(tags) } From f0fc9e8fbac8f5f41c4579fddc6cb17c32afb762 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Sat, 20 Jun 2020 21:56:35 -0400 Subject: [PATCH 5/6] bump mp4meta version for bugfix --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7874aeb..5ca1c2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "mp4ameta" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1485,7 +1485,7 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "metaflac 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mp4ameta 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mp4ameta 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2948,7 +2948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mp3-duration 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "eda61ba6c266cd2c7bfcea9a2719837dc062869e24e101a93c1b0873d17c2d35" -"checksum mp4ameta 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c1c3784b35bb34f94341fd1e2bf9a2c66fc40804464a155b06b3cd71f8d623e" +"checksum mp4ameta 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0de7480e6605e303c127e236712f866ed1b748de03908fd1f584d60d135878" "checksum native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" "checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" "checksum notify 4.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "80ae4a7688d1fab81c5bf19c64fc8db920be8d519ce6336ed4e7efe024724dbd" diff --git a/Cargo.toml b/Cargo.toml index 3430306..81e410a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ lewton = "0.10.1" log = "0.4.5" metaflac = "0.2.3" mp3-duration = "0.1.9" -mp4ameta = "0.2.1" +mp4ameta = "0.2.2" pbkdf2 = "0.3" rand = "0.7" rayon = "1.3" From 337a4020febcf4012c6d4f930641428e6d4c8836 Mon Sep 17 00:00:00 2001 From: Ray <7869818+rayrrr@users.noreply.github.com> Date: Sat, 20 Jun 2020 21:56:09 -0400 Subject: [PATCH 6/6] year one-liner for mp4 metadata --- src/index/metadata.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/index/metadata.rs b/src/index/metadata.rs index d8ec7fe..da08cb1 100644 --- a/src/index/metadata.rs +++ b/src/index/metadata.rs @@ -225,8 +225,7 @@ fn read_mp4(path: &Path) -> Result { tags.duration = tag.duration().map(|v| v as u32); tags.disc_number = tag.disk_number().0.and_then(|d| Some(d as u32)); tags.track_number = tag.track_number().0.and_then(|d| Some(d as u32)); - let year = tag.year().and_then(|v| Some(v.parse::().ok())); - tags.year = match year { None => None, Some(year) => year}; + tags.year = tag.year().and_then(|v| v.parse::().ok()); Ok(tags) }