From c78f77165e5f4b2f2d3b199c0193b4027a5cfdaa Mon Sep 17 00:00:00 2001
From: MrDulfin <Dulfinaminator@gmail.com>
Date: Tue, 9 Jan 2024 13:38:54 -0500
Subject: [PATCH] Cargo formatted and made `query_uri()` public

---
 src/music_storage/db_reader/foobar/reader.rs | 22 ++++++--
 src/music_storage/library.rs                 |  2 +-
 src/music_storage/playlist.rs                | 56 ++++++++++++--------
 3 files changed, 53 insertions(+), 27 deletions(-)

diff --git a/src/music_storage/db_reader/foobar/reader.rs b/src/music_storage/db_reader/foobar/reader.rs
index 218d6c0..3cb417d 100644
--- a/src/music_storage/db_reader/foobar/reader.rs
+++ b/src/music_storage/db_reader/foobar/reader.rs
@@ -1,10 +1,10 @@
 use std::collections::BTreeMap;
 use std::{fs::File, io::Read, path::Path, time::Duration};
 
+use super::utils::meta_offset;
 use crate::music_storage::db_reader::common::{get_bytes, get_bytes_vec};
 use crate::music_storage::db_reader::extern_library::ExternalLibrary;
 use crate::music_storage::library::{Song, URI};
-use super::utils::meta_offset;
 
 const MAGIC: [u8; 16] = [
     0xE1, 0xA0, 0x9C, 0x91, 0xF8, 0x3C, 0x77, 0x42, 0x85, 0x2C, 0x3B, 0xCC, 0x14, 0x01, 0xD3, 0xF2,
@@ -87,7 +87,10 @@ impl ExternalLibrary for FoobarPlaylist {
             for _ in 0..primary_count {
                 println!("{}", i32::from_le_bytes(get_bytes(&mut buf_iter)));
 
-                let key = meta_offset(metadata, i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize);
+                let key = meta_offset(
+                    metadata,
+                    i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize,
+                );
 
                 entries.push((key, String::new()));
             }
@@ -100,15 +103,24 @@ impl ExternalLibrary for FoobarPlaylist {
             for i in 0..primary_count {
                 println!("primkey {i}");
 
-                let value = meta_offset(metadata, i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize);
+                let value = meta_offset(
+                    metadata,
+                    i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize,
+                );
 
                 entries[i as usize].1 = value;
             }
 
             // Get secondary Keys
             for _ in 0..secondary_count {
-                let key = meta_offset(metadata, i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize);
-                let value = meta_offset(metadata, i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize);
+                let key = meta_offset(
+                    metadata,
+                    i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize,
+                );
+                let value = meta_offset(
+                    metadata,
+                    i32::from_le_bytes(get_bytes(&mut buf_iter)) as usize,
+                );
                 entries.push((key, value));
             }
 
diff --git a/src/music_storage/library.rs b/src/music_storage/library.rs
index 99b8bb5..c3458cf 100644
--- a/src/music_storage/library.rs
+++ b/src/music_storage/library.rs
@@ -368,7 +368,7 @@ impl MusicLibrary {
 
     /// Queries for a [Song] by its [URI], returning a single `Song`
     /// with the `URI` that matches
-    fn query_uri(&self, path: &URI) -> Option<(&Song, usize)> {
+    pub fn query_uri(&self, path: &URI) -> Option<(&Song, usize)> {
         let result = self
             .library
             .par_iter()
diff --git a/src/music_storage/playlist.rs b/src/music_storage/playlist.rs
index 1c29bb6..6b3dc96 100644
--- a/src/music_storage/playlist.rs
+++ b/src/music_storage/playlist.rs
@@ -1,21 +1,20 @@
 use chrono::Duration;
 use walkdir::Error;
 
-use crate::music_controller::config::Config;
 use super::{
+    db_reader::extern_library::ExternalLibrary,
     library::{self, AlbumArt, Song, Tag},
     music_collection::MusicCollection,
-    db_reader::extern_library::ExternalLibrary
 };
-use crate::music_storage::db_reader::xml::reader::{XmlLibrary};
+use crate::music_controller::config::Config;
+use crate::music_storage::db_reader::xml::reader::XmlLibrary;
 
-use std::{default, path::Path, path::PathBuf, thread::AccessError};
 use std::io::Read;
+use std::{default, path::Path, path::PathBuf, thread::AccessError};
 
 use m3u8_rs::{MediaPlaylist, MediaPlaylistType, MediaSegment};
 // use nom::IResult;
 
-
 #[derive(Debug, Clone)]
 pub struct Playlist<'a> {
     title: String,
@@ -74,15 +73,26 @@ impl<'a> Playlist<'a> {
         false
     }
     pub fn to_m3u8(&mut self) {
-        let seg = &self.tracks.iter().map({
-            |track|
-            MediaSegment {
-                uri: track.location.to_string().into(),
-                duration: track.duration.as_millis() as f32,
-                title: Some(track.tags.get_key_value(&Tag::Title).unwrap().1.to_string().into()),
-                ..Default::default()
-            }
-        }).collect::<Vec<MediaSegment>>();
+        let seg = &self
+            .tracks
+            .iter()
+            .map({
+                |track| MediaSegment {
+                    uri: track.location.to_string().into(),
+                    duration: track.duration.as_millis() as f32,
+                    title: Some(
+                        track
+                            .tags
+                            .get_key_value(&Tag::Title)
+                            .unwrap()
+                            .1
+                            .to_string()
+                            .into(),
+                    ),
+                    ..Default::default()
+                }
+            })
+            .collect::<Vec<MediaSegment>>();
 
         let m3u8 = MediaPlaylist {
             version: Some(6),
@@ -94,7 +104,12 @@ impl<'a> Playlist<'a> {
             segments: seg.clone(),
             ..Default::default()
         };
-        let mut file = std::fs::OpenOptions::new().read(true).create(true).write(true).open("F:\\Dango Music Player\\playlist.m3u8").unwrap();
+        let mut file = std::fs::OpenOptions::new()
+            .read(true)
+            .create(true)
+            .write(true)
+            .open("F:\\Dango Music Player\\playlist.m3u8")
+            .unwrap();
         m3u8.write_to(&mut file).unwrap();
     }
     pub fn from_file(file: std::fs::File) -> Playlist<'a> {
@@ -129,13 +144,12 @@ impl Default for Playlist<'_> {
 
 #[test]
 fn list_to_m3u8() {
-    let lib = XmlLibrary::from_file(Path::new("F:\\Music\\Mp3\\Music Main\\iTunes Music Library.xml"));
+    let lib = XmlLibrary::from_file(Path::new(
+        "F:\\Music\\Mp3\\Music Main\\iTunes Music Library.xml",
+    ));
     let mut a = Playlist::new();
     let c = lib.to_songs();
-    let mut b = c.iter().map({
-        |song|
-        song
-    }).collect::<Vec<&Song>>();
+    let mut b = c.iter().map({ |song| song }).collect::<Vec<&Song>>();
     a.tracks.append(&mut b);
     a.to_m3u8()
-}
\ No newline at end of file
+}