Add a library identifier to disambiguate clashes in the library #238

Merged
wojtek merged 16 commits from 231---differentiate-release-groups-with-same-title-but-different-type-clash into main 2025-01-02 15:50:55 +01:00
6 changed files with 171 additions and 38 deletions
Showing only changes of commit c03bfe5021 - Show all commits

View File

@ -47,6 +47,14 @@ pub struct AlbumId {
pub title: String,
}
/// Unique library identifier.
#[derive(Clone, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
pub enum AlbumLibId {
Some(u32),
Singleton,
None,
}
// There are crates for handling dates, but we don't need much complexity beyond year-month-day.
/// The album's release date.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)]

View File

@ -1,11 +1,11 @@
//! Module for interacting with the music library.
use std::{collections::HashSet, fmt, num::ParseIntError, str::Utf8Error};
use std::{collections::HashSet, fmt, num::ParseIntError, str::{ParseBoolError, Utf8Error}};
#[cfg(test)]
use mockall::automock;
use crate::core::collection::track::TrackFormat;
use crate::{collection::album::AlbumLibId, core::collection::track::TrackFormat};
/// Trait for interacting with the music library.
#[cfg_attr(test, automock)]
@ -32,6 +32,7 @@ pub struct Item {
pub album_month: u8,
pub album_day: u8,
pub album_title: String,
pub album_lib_id: AlbumLibId,
pub track_number: u32,
pub track_title: String,
pub track_artist: Vec<String>,
@ -90,6 +91,8 @@ pub enum Error {
Io(String),
/// The library received invalid data.
Invalid(String),
/// The library failed to parse a boolean.
ParseBool(String),
/// The library failed to parse an integer.
ParseInt(String),
/// The library failed to parse a UTF-8 string.
@ -102,6 +105,7 @@ impl fmt::Display for Error {
Self::Executor(ref s) => write!(f, "the library's executor failed: {s}"),
Self::Io(ref s) => write!(f, "the library experienced an I/O error: {s}"),
Self::Invalid(ref s) => write!(f, "the library received invalid data: {s}"),
Self::ParseBool(ref s) => write!(f, "the library failed to parse a boolean: {s}"),
Self::ParseInt(ref s) => write!(f, "the library failed to parse an integer: {s}"),
Self::Utf8(ref s) => write!(f, "the library failed to parse a UTF-8 string: {s}"),
}
@ -114,6 +118,12 @@ impl From<std::io::Error> for Error {
}
}
impl From<ParseBoolError> for Error {
fn from(err: ParseBoolError) -> Error {
Error::ParseBool(err.to_string())
}
}
impl From<ParseIntError> for Error {
fn from(err: ParseIntError) -> Error {
Error::ParseInt(err.to_string())

View File

@ -1,6 +1,6 @@
use once_cell::sync::Lazy;
use crate::core::{collection::track::TrackFormat, interface::library::Item};
use crate::{collection::album::AlbumLibId, core::{collection::track::TrackFormat, interface::library::Item}};
pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
vec![
@ -11,6 +11,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title a.a"),
album_lib_id: AlbumLibId::Some(1),
track_number: 1,
track_title: String::from("track a.a.1"),
track_artist: vec![String::from("artist a.a.1")],
@ -24,6 +25,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title a.a"),
album_lib_id: AlbumLibId::Some(1),
track_number: 2,
track_title: String::from("track a.a.2"),
track_artist: vec![
@ -40,6 +42,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title a.a"),
album_lib_id: AlbumLibId::Some(1),
track_number: 3,
track_title: String::from("track a.a.3"),
track_artist: vec![String::from("artist a.a.3")],
@ -53,6 +56,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title a.a"),
album_lib_id: AlbumLibId::Some(1),
track_number: 4,
track_title: String::from("track a.a.4"),
track_artist: vec![String::from("artist a.a.4")],
@ -66,6 +70,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 4,
album_day: 0,
album_title: String::from("album_title a.b"),
album_lib_id: AlbumLibId::Some(2),
track_number: 1,
track_title: String::from("track a.b.1"),
track_artist: vec![String::from("artist a.b.1")],
@ -79,6 +84,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 4,
album_day: 0,
album_title: String::from("album_title a.b"),
album_lib_id: AlbumLibId::Some(2),
track_number: 2,
track_title: String::from("track a.b.2"),
track_artist: vec![String::from("artist a.b.2")],
@ -92,6 +98,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 6,
album_day: 6,
album_title: String::from("album_title b.a"),
album_lib_id: AlbumLibId::Some(3),
track_number: 1,
track_title: String::from("track b.a.1"),
track_artist: vec![String::from("artist b.a.1")],
@ -105,6 +112,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 6,
album_day: 6,
album_title: String::from("album_title b.a"),
album_lib_id: AlbumLibId::Some(3),
track_number: 2,
track_title: String::from("track b.a.2"),
track_artist: vec![
@ -121,6 +129,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.b"),
album_lib_id: AlbumLibId::Some(4),
track_number: 1,
track_title: String::from("track b.b.1"),
track_artist: vec![String::from("artist b.b.1")],
@ -134,6 +143,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.b"),
album_lib_id: AlbumLibId::Some(4),
track_number: 2,
track_title: String::from("track b.b.2"),
track_artist: vec![
@ -150,6 +160,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.c"),
album_lib_id: AlbumLibId::Some(5),
track_number: 1,
track_title: String::from("track b.c.1"),
track_artist: vec![String::from("artist b.c.1")],
@ -163,6 +174,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.c"),
album_lib_id: AlbumLibId::Some(5),
track_number: 2,
track_title: String::from("track b.c.2"),
track_artist: vec![
@ -179,6 +191,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.d"),
album_lib_id: AlbumLibId::Some(6),
track_number: 1,
track_title: String::from("track b.d.1"),
track_artist: vec![String::from("artist b.d.1")],
@ -192,6 +205,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title b.d"),
album_lib_id: AlbumLibId::Some(6),
track_number: 2,
track_title: String::from("track b.d.2"),
track_artist: vec![
@ -208,6 +222,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title c.a"),
album_lib_id: AlbumLibId::Some(7),
track_number: 1,
track_title: String::from("track c.a.1"),
track_artist: vec![String::from("artist c.a.1")],
@ -221,6 +236,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title c.a"),
album_lib_id: AlbumLibId::Some(7),
track_number: 2,
track_title: String::from("track c.a.2"),
track_artist: vec![
@ -237,6 +253,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title c.b"),
album_lib_id: AlbumLibId::Some(8),
track_number: 1,
track_title: String::from("track c.b.1"),
track_artist: vec![String::from("artist c.b.1")],
@ -250,6 +267,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title c.b"),
album_lib_id: AlbumLibId::Some(8),
track_number: 2,
track_title: String::from("track c.b.2"),
track_artist: vec![
@ -266,6 +284,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title d.a"),
album_lib_id: AlbumLibId::Some(9),
track_number: 1,
track_title: String::from("track d.a.1"),
track_artist: vec![String::from("artist d.a.1")],
@ -279,6 +298,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title d.a"),
album_lib_id: AlbumLibId::Some(9),
track_number: 2,
track_title: String::from("track d.a.2"),
track_artist: vec![
@ -295,6 +315,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title d.b"),
album_lib_id: AlbumLibId::Some(10),
track_number: 1,
track_title: String::from("track d.b.1"),
track_artist: vec![String::from("artist d.b.1")],
@ -308,6 +329,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("album_title d.b"),
album_lib_id: AlbumLibId::Some(10),
track_number: 2,
track_title: String::from("track d.b.2"),
track_artist: vec![

View File

@ -6,9 +6,12 @@ pub mod executor;
#[cfg(test)]
use mockall::automock;
use crate::core::{
collection::track::TrackFormat,
interface::library::{Error, Field, ILibrary, Item, Query},
use crate::{
collection::album::AlbumLibId,
core::{
collection::track::TrackFormat,
interface::library::{Error, Field, ILibrary, Item, Query},
},
};
macro_rules! list_format_separator {
@ -31,8 +34,12 @@ const LIST_FORMAT_ARG: &str = concat!(
list_format_separator!(),
"$day",
list_format_separator!(),
"$singleton",
list_format_separator!(),
"$album",
list_format_separator!(),
"$album_id",
list_format_separator!(),
"$track",
list_format_separator!(),
"$title",
@ -144,7 +151,7 @@ impl<BLE: IBeetsLibraryExecutor> BeetsLibrary<BLE> {
}
let split: Vec<&str> = line.split(LIST_FORMAT_SEPARATOR).collect();
if split.len() != 11 {
if split.len() != 13 {
return Err(Error::Invalid(line.to_string()));
}
@ -156,15 +163,20 @@ impl<BLE: IBeetsLibraryExecutor> BeetsLibrary<BLE> {
let album_year = split[2].parse::<u32>()?;
let album_month = split[3].parse::<u8>()?;
let album_day = split[4].parse::<u8>()?;
let album_title = split[5].to_string();
let track_number = split[6].parse::<u32>()?;
let track_title = split[7].to_string();
let track_artist = split[8].split("; ").map(|s| s.to_owned()).collect();
let track_format = match str_to_format(split[9].to_string().as_str()) {
let singleton = split[5].to_lowercase().parse::<bool>()?;
let album_title = split[6].to_string();
let album_lib_id = match singleton {
true => AlbumLibId::Singleton,
false => AlbumLibId::Some(split[7].parse::<u32>()?),
};
let track_number = split[8].parse::<u32>()?;
let track_title = split[9].to_string();
let track_artist = split[10].split("; ").map(|s| s.to_owned()).collect();
let track_format = match str_to_format(split[11].to_string().as_str()) {
Some(format) => format,
None => return Err(Error::Invalid(line.to_string())),
};
let track_bitrate = split[10].trim_end_matches("kbps").parse::<u32>()?;
let track_bitrate = split[12].trim_end_matches("kbps").parse::<u32>()?;
items.push(Item {
album_artist,
@ -173,6 +185,7 @@ impl<BLE: IBeetsLibraryExecutor> BeetsLibrary<BLE> {
album_month,
album_day,
album_title,
album_lib_id,
track_number,
track_title,
track_artist,
@ -358,8 +371,8 @@ mod tests {
.split(LIST_FORMAT_SEPARATOR)
.map(|s| s.to_owned())
.collect::<Vec<String>>();
invalid_string[9].clear();
invalid_string[9].push_str("invalid format");
invalid_string[11].clear();
invalid_string[11].push_str("invalid format");
let invalid_string = invalid_string.join(LIST_FORMAT_SEPARATOR);
output[2] = invalid_string.clone();
let result = Ok(output);

View File

@ -4,112 +4,112 @@ pub static LIBRARY_BEETS: Lazy<Vec<String>> = Lazy::new(|| -> Vec<String> {
vec![
String::from(
"Album_Artist A -*^- -*^- \
1998 -*^- 00 -*^- 00 -*^- album_title a.a -*^- \
1998 -*^- 00 -*^- 00 -*^- False -*^- album_title a.a -*^- 1 -*^- \
1 -*^- track a.a.1 -*^- artist a.a.1 -*^- FLAC -*^- 992",
),
String::from(
"Album_Artist A -*^- -*^- \
1998 -*^- 00 -*^- 00 -*^- album_title a.a -*^- \
1998 -*^- 00 -*^- 00 -*^- False -*^- album_title a.a -*^- 1 -*^- \
2 -*^- track a.a.2 -*^- artist a.a.2.1; artist a.a.2.2 -*^- MP3 -*^- 320",
),
String::from(
"Album_Artist A -*^- -*^- \
1998 -*^- 00 -*^- 00 -*^- album_title a.a -*^- \
1998 -*^- 00 -*^- 00 -*^- False -*^- album_title a.a -*^- 1 -*^- \
3 -*^- track a.a.3 -*^- artist a.a.3 -*^- FLAC -*^- 1061",
),
String::from(
"Album_Artist A -*^- -*^- \
1998 -*^- 00 -*^- 00 -*^- album_title a.a -*^- \
1998 -*^- 00 -*^- 00 -*^- False -*^- album_title a.a -*^- 1 -*^- \
4 -*^- track a.a.4 -*^- artist a.a.4 -*^- FLAC -*^- 1042",
),
String::from(
"Album_Artist A -*^- -*^- \
2015 -*^- 04 -*^- 00 -*^- album_title a.b -*^- \
2015 -*^- 04 -*^- 00 -*^- False -*^- album_title a.b -*^- 2 -*^- \
1 -*^- track a.b.1 -*^- artist a.b.1 -*^- FLAC -*^- 1004",
),
String::from(
"Album_Artist A -*^- -*^- \
2015 -*^- 04 -*^- 00 -*^- album_title a.b -*^- \
2015 -*^- 04 -*^- 00 -*^- False -*^- album_title a.b -*^- 2 -*^- \
2 -*^- track a.b.2 -*^- artist a.b.2 -*^- FLAC -*^- 1077",
),
String::from(
"Album_Artist B -*^- -*^- \
2003 -*^- 06 -*^- 06 -*^- album_title b.a -*^- \
2003 -*^- 06 -*^- 06 -*^- False -*^- album_title b.a -*^- 3 -*^- \
1 -*^- track b.a.1 -*^- artist b.a.1 -*^- MP3 -*^- 190",
),
String::from(
"Album_Artist B -*^- -*^- \
2003 -*^- 06 -*^- 06 -*^- album_title b.a -*^- \
2003 -*^- 06 -*^- 06 -*^- False -*^- album_title b.a -*^- 3 -*^- \
2 -*^- track b.a.2 -*^- artist b.a.2.1; artist b.a.2.2 -*^- MP3 -*^- 120",
),
String::from(
"Album_Artist B -*^- -*^- \
2008 -*^- 00 -*^- 00 -*^- album_title b.b -*^- \
2008 -*^- 00 -*^- 00 -*^- False -*^- album_title b.b -*^- 4 -*^- \
1 -*^- track b.b.1 -*^- artist b.b.1 -*^- FLAC -*^- 1077",
),
String::from(
"Album_Artist B -*^- -*^- \
2008 -*^- 00 -*^- 00 -*^- album_title b.b -*^- \
2008 -*^- 00 -*^- 00 -*^- False -*^- album_title b.b -*^- 4 -*^- \
2 -*^- track b.b.2 -*^- artist b.b.2.1; artist b.b.2.2 -*^- MP3 -*^- 320",
),
String::from(
"Album_Artist B -*^- -*^- \
2009 -*^- 00 -*^- 00 -*^- album_title b.c -*^- \
2009 -*^- 00 -*^- 00 -*^- False -*^- album_title b.c -*^- 5 -*^- \
1 -*^- track b.c.1 -*^- artist b.c.1 -*^- MP3 -*^- 190",
),
String::from(
"Album_Artist B -*^- -*^- \
2009 -*^- 00 -*^- 00 -*^- album_title b.c -*^- \
2009 -*^- 00 -*^- 00 -*^- False -*^- album_title b.c -*^- 5 -*^- \
2 -*^- track b.c.2 -*^- artist b.c.2.1; artist b.c.2.2 -*^- MP3 -*^- 120",
),
String::from(
"Album_Artist B -*^- -*^- \
2015 -*^- 00 -*^- 00 -*^- album_title b.d -*^- \
2015 -*^- 00 -*^- 00 -*^- False -*^- album_title b.d -*^- 6 -*^- \
1 -*^- track b.d.1 -*^- artist b.d.1 -*^- MP3 -*^- 190",
),
String::from(
"Album_Artist B -*^- -*^- \
2015 -*^- 00 -*^- 00 -*^- album_title b.d -*^- \
2015 -*^- 00 -*^- 00 -*^- False -*^- album_title b.d -*^- 6 -*^- \
2 -*^- track b.d.2 -*^- artist b.d.2.1; artist b.d.2.2 -*^- MP3 -*^- 120",
),
String::from(
"The Album_Artist C -*^- Album_Artist C, The -*^- \
1985 -*^- 00 -*^- 00 -*^- album_title c.a -*^- \
1985 -*^- 00 -*^- 00 -*^- False -*^- album_title c.a -*^- 7 -*^- \
1 -*^- track c.a.1 -*^- artist c.a.1 -*^- MP3 -*^- 320",
),
String::from(
"The Album_Artist C -*^- Album_Artist C, The -*^- \
1985 -*^- 00 -*^- 00 -*^- album_title c.a -*^- \
1985 -*^- 00 -*^- 00 -*^- False -*^- album_title c.a -*^- 7 -*^- \
2 -*^- track c.a.2 -*^- artist c.a.2.1; artist c.a.2.2 -*^- MP3 -*^- 120",
),
String::from(
"The Album_Artist C -*^- Album_Artist C, The -*^- \
2018 -*^- 00 -*^- 00 -*^- album_title c.b -*^- \
2018 -*^- 00 -*^- 00 -*^- False -*^- album_title c.b -*^- 8 -*^- \
1 -*^- track c.b.1 -*^- artist c.b.1 -*^- FLAC -*^- 1041",
),
String::from(
"The Album_Artist C -*^- Album_Artist C, The -*^- \
2018 -*^- 00 -*^- 00 -*^- album_title c.b -*^- \
2018 -*^- 00 -*^- 00 -*^- False -*^- album_title c.b -*^- 8 -*^- \
2 -*^- track c.b.2 -*^- artist c.b.2.1; artist c.b.2.2 -*^- FLAC -*^- 756",
),
String::from(
"Album_Artist D -*^- -*^- \
1995 -*^- 00 -*^- 00 -*^- album_title d.a -*^- \
1995 -*^- 00 -*^- 00 -*^- False -*^- album_title d.a -*^- 9 -*^- \
1 -*^- track d.a.1 -*^- artist d.a.1 -*^- MP3 -*^- 120",
),
String::from(
"Album_Artist D -*^- -*^- \
1995 -*^- 00 -*^- 00 -*^- album_title d.a -*^- \
1995 -*^- 00 -*^- 00 -*^- False -*^- album_title d.a -*^- 9 -*^- \
2 -*^- track d.a.2 -*^- artist d.a.2.1; artist d.a.2.2 -*^- MP3 -*^- 120",
),
String::from(
"Album_Artist D -*^- -*^- \
2028 -*^- 00 -*^- 00 -*^- album_title d.b -*^- \
2028 -*^- 00 -*^- 00 -*^- False -*^- album_title d.b -*^- 10 -*^- \
1 -*^- track d.b.1 -*^- artist d.b.1 -*^- FLAC -*^- 841",
),
String::from(
"Album_Artist D -*^- -*^- \
2028 -*^- 00 -*^- 00 -*^- album_title d.b -*^- \
2028 -*^- 00 -*^- 00 -*^- False -*^- album_title d.b -*^- 10 -*^- \
2 -*^- track d.b.2 -*^- artist d.b.2.1; artist d.b.2.2 -*^- FLAC -*^- 756",
),
]

View File

@ -1,6 +1,6 @@
use once_cell::sync::Lazy;
use musichoard::{collection::track::TrackFormat, interface::library::Item};
use musichoard::{collection::{album::AlbumLibId, track::TrackFormat}, interface::library::Item};
pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
vec![
@ -11,6 +11,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 1,
track_title: String::from("Az"),
track_artist: vec![String::from("Аркона")],
@ -24,6 +25,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 2,
track_title: String::from("Arkaim"),
track_artist: vec![String::from("Аркона")],
@ -37,6 +39,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 3,
track_title: String::from("Bolno mne"),
track_artist: vec![String::from("Аркона")],
@ -50,6 +53,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 4,
track_title: String::from("Leshiy"),
track_artist: vec![String::from("Аркона")],
@ -63,6 +67,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 5,
track_title: String::from("Zakliatie"),
track_artist: vec![String::from("Аркона")],
@ -76,6 +81,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 6,
track_title: String::from("Predok"),
track_artist: vec![String::from("Аркона")],
@ -89,6 +95,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 7,
track_title: String::from("Nikogda"),
track_artist: vec![String::from("Аркона")],
@ -102,6 +109,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 8,
track_title: String::from("Tam za tumanami"),
track_artist: vec![String::from("Аркона")],
@ -115,6 +123,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 9,
track_title: String::from("Potomok"),
track_artist: vec![String::from("Аркона")],
@ -128,6 +137,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 10,
track_title: String::from("Slovo"),
track_artist: vec![String::from("Аркона")],
@ -141,6 +151,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 11,
track_title: String::from("Odna"),
track_artist: vec![String::from("Аркона")],
@ -154,6 +165,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 12,
track_title: String::from("Vo moiom sadochke…"),
track_artist: vec![String::from("Аркона")],
@ -167,6 +179,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 13,
track_title: String::from("Stenka na stenku"),
track_artist: vec![String::from("Аркона")],
@ -180,6 +193,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slovo"),
album_lib_id: AlbumLibId::Some(7),
track_number: 14,
track_title: String::from("Zimushka"),
track_artist: vec![String::from("Аркона")],
@ -193,6 +207,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 1,
track_title: String::from("Verja Urit an Bitus"),
track_artist: vec![String::from("Eluveitie")],
@ -206,6 +221,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 2,
track_title: String::from("Uis Elveti"),
track_artist: vec![String::from("Eluveitie")],
@ -219,6 +235,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 3,
track_title: String::from("Ôrô"),
track_artist: vec![String::from("Eluveitie")],
@ -232,6 +249,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 4,
track_title: String::from("Lament"),
track_artist: vec![String::from("Eluveitie")],
@ -245,6 +263,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 5,
track_title: String::from("Druid"),
track_artist: vec![String::from("Eluveitie")],
@ -258,6 +277,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Vên [rerecorded]"),
album_lib_id: AlbumLibId::Some(1),
track_number: 6,
track_title: String::from("Jêzaïg"),
track_artist: vec![String::from("Eluveitie")],
@ -271,6 +291,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 1,
track_title: String::from("Samon"),
track_artist: vec![String::from("Eluveitie")],
@ -284,6 +305,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 2,
track_title: String::from("Primordial Breath"),
track_artist: vec![String::from("Eluveitie")],
@ -297,6 +319,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 3,
track_title: String::from("Inis Mona"),
track_artist: vec![String::from("Eluveitie")],
@ -310,6 +333,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 4,
track_title: String::from("Gray Sublime Archon"),
track_artist: vec![String::from("Eluveitie")],
@ -323,6 +347,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 5,
track_title: String::from("Anagantios"),
track_artist: vec![String::from("Eluveitie")],
@ -336,6 +361,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 6,
track_title: String::from("Bloodstained Ground"),
track_artist: vec![String::from("Eluveitie")],
@ -349,6 +375,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 7,
track_title: String::from("The Somber Lay"),
track_artist: vec![String::from("Eluveitie")],
@ -362,6 +389,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 8,
track_title: String::from("Slanias Song"),
track_artist: vec![String::from("Eluveitie")],
@ -375,6 +403,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 9,
track_title: String::from("Giamonios"),
track_artist: vec![String::from("Eluveitie")],
@ -388,6 +417,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 10,
track_title: String::from("Tarvos"),
track_artist: vec![String::from("Eluveitie")],
@ -401,6 +431,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 11,
track_title: String::from("Calling the Rain"),
track_artist: vec![String::from("Eluveitie")],
@ -414,6 +445,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Slania"),
album_lib_id: AlbumLibId::Some(2),
track_number: 12,
track_title: String::from("Elembivos"),
track_artist: vec![String::from("Eluveitie")],
@ -427,6 +459,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 1,
track_title: String::from("Intro = Chaos"),
track_artist: vec![String::from("Frontside")],
@ -440,6 +473,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 2,
track_title: String::from("Modlitwa"),
track_artist: vec![String::from("Frontside")],
@ -453,6 +487,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 3,
track_title: String::from("Długa droga z piekła"),
track_artist: vec![String::from("Frontside")],
@ -466,6 +501,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 4,
track_title: String::from("Synowie ognia"),
track_artist: vec![String::from("Frontside")],
@ -479,6 +515,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 5,
track_title: String::from("1902"),
track_artist: vec![String::from("Frontside")],
@ -492,6 +529,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 6,
track_title: String::from("Krew za krew"),
track_artist: vec![String::from("Frontside")],
@ -505,6 +543,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 7,
track_title: String::from("Kulminacja"),
track_artist: vec![String::from("Frontside")],
@ -518,6 +557,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 8,
track_title: String::from("Judasz"),
track_artist: vec![String::from("Frontside")],
@ -531,6 +571,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 9,
track_title: String::from("Więzy"),
track_artist: vec![String::from("Frontside")],
@ -544,6 +585,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 10,
track_title: String::from("Zagubione dusze"),
track_artist: vec![String::from("Frontside")],
@ -557,6 +599,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("…nasze jest królestwo, potęga i chwała na wieki…"),
album_lib_id: AlbumLibId::Some(3),
track_number: 11,
track_title: String::from("Linia życia"),
track_artist: vec![String::from("Frontside")],
@ -570,6 +613,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Paper Plague"),
album_lib_id: AlbumLibId::Singleton,
track_number: 0,
track_title: String::from("Paper Plague"),
track_artist: vec![String::from("Heavens Basement")],
@ -583,6 +627,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 1,
track_title: String::from("Unbreakable"),
track_artist: vec![String::from("Heavens Basement")],
@ -596,6 +641,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 2,
track_title: String::from("Guilt Trips and Sins"),
track_artist: vec![String::from("Heavens Basement")],
@ -609,6 +655,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 3,
track_title: String::from("The Long Goodbye"),
track_artist: vec![String::from("Heavens Basement")],
@ -622,6 +669,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 4,
track_title: String::from("Close Encounters"),
track_artist: vec![String::from("Heavens Basement")],
@ -635,6 +683,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 5,
track_title: String::from("Paranoia"),
track_artist: vec![String::from("Heavens Basement")],
@ -648,6 +697,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 6,
track_title: String::from("Let Me Out of Here"),
track_artist: vec![String::from("Heavens Basement")],
@ -661,6 +711,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Unbreakable"),
album_lib_id: AlbumLibId::Some(4),
track_number: 7,
track_title: String::from("Leeches"),
track_artist: vec![String::from("Heavens Basement")],
@ -674,6 +725,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 1,
track_title: String::from("Fight Fire with Fire"),
track_artist: vec![String::from("Metallica")],
@ -687,6 +739,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 2,
track_title: String::from("Ride the Lightning"),
track_artist: vec![String::from("Metallica")],
@ -700,6 +753,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 3,
track_title: String::from("For Whom the Bell Tolls"),
track_artist: vec![String::from("Metallica")],
@ -713,6 +767,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 4,
track_title: String::from("Fade to Black"),
track_artist: vec![String::from("Metallica")],
@ -726,6 +781,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 5,
track_title: String::from("Trapped under Ice"),
track_artist: vec![String::from("Metallica")],
@ -739,6 +795,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 6,
track_title: String::from("Escape"),
track_artist: vec![String::from("Metallica")],
@ -752,6 +809,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 7,
track_title: String::from("Creeping Death"),
track_artist: vec![String::from("Metallica")],
@ -765,6 +823,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("Ride the Lightning"),
album_lib_id: AlbumLibId::Some(5),
track_number: 8,
track_title: String::from("The Call of Ktulu"),
track_artist: vec![String::from("Metallica")],
@ -778,6 +837,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 1,
track_title: String::from("The Ecstasy of Gold"),
track_artist: vec![String::from("Metallica")],
@ -791,6 +851,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 2,
track_title: String::from("The Call of Ktulu"),
track_artist: vec![String::from("Metallica")],
@ -804,6 +865,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 3,
track_title: String::from("Master of Puppets"),
track_artist: vec![String::from("Metallica")],
@ -817,6 +879,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 4,
track_title: String::from("Of Wolf and Man"),
track_artist: vec![String::from("Metallica")],
@ -830,6 +893,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 5,
track_title: String::from("The Thing That Should Not Be"),
track_artist: vec![String::from("Metallica")],
@ -843,6 +907,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 6,
track_title: String::from("Fuel"),
track_artist: vec![String::from("Metallica")],
@ -856,6 +921,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 7,
track_title: String::from("The Memory Remains"),
track_artist: vec![String::from("Metallica")],
@ -869,6 +935,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 8,
track_title: String::from("No Leaf Clover"),
track_artist: vec![String::from("Metallica")],
@ -882,6 +949,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 9,
track_title: String::from("Hero of the Day"),
track_artist: vec![String::from("Metallica")],
@ -895,6 +963,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 10,
track_title: String::from("Devils Dance"),
track_artist: vec![String::from("Metallica")],
@ -908,6 +977,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 11,
track_title: String::from("Bleeding Me"),
track_artist: vec![String::from("Metallica")],
@ -921,6 +991,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 12,
track_title: String::from("Nothing Else Matters"),
track_artist: vec![String::from("Metallica")],
@ -934,6 +1005,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 13,
track_title: String::from("Until It Sleeps"),
track_artist: vec![String::from("Metallica")],
@ -947,6 +1019,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 14,
track_title: String::from("For Whom the Bell Tolls"),
track_artist: vec![String::from("Metallica")],
@ -960,6 +1033,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 15,
track_title: String::from("Human"),
track_artist: vec![String::from("Metallica")],
@ -973,6 +1047,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 16,
track_title: String::from("Wherever I May Roam"),
track_artist: vec![String::from("Metallica")],
@ -986,6 +1061,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 17,
track_title: String::from("Outlaw Torn"),
track_artist: vec![String::from("Metallica")],
@ -999,6 +1075,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 18,
track_title: String::from("Sad but True"),
track_artist: vec![String::from("Metallica")],
@ -1012,6 +1089,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 19,
track_title: String::from("One"),
track_artist: vec![String::from("Metallica")],
@ -1025,6 +1103,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 20,
track_title: String::from("Enter Sandman"),
track_artist: vec![String::from("Metallica")],
@ -1038,6 +1117,7 @@ pub static LIBRARY_ITEMS: Lazy<Vec<Item>> = Lazy::new(|| -> Vec<Item> {
album_month: 0,
album_day: 0,
album_title: String::from("S&M"),
album_lib_id: AlbumLibId::Some(6),
track_number: 21,
track_title: String::from("Battery"),
track_artist: vec![String::from("Metallica")],