diff --git a/.gitignore b/.gitignore
index ca25715..2e2237e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/target/
+/cache/
settings.toml
+valgrind.log
diff --git a/Cargo.lock b/Cargo.lock
index 1517f5a..1db9dec 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "ab_glyph"
@@ -729,6 +729,9 @@ name = "camino"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+dependencies = [
+ "serde",
+]
[[package]]
name = "cc"
@@ -4376,8 +4379,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
[[package]]
-name = "xmpd-cli"
+name = "xmpd-cache"
version = "2.0.0"
+dependencies = [
+ "anyhow",
+ "camino",
+ "lazy_static",
+ "log",
+ "uuid",
+ "xmpd-cliargs",
+ "xmpd-manifest",
+ "xmpd-settings",
+]
+
+[[package]]
+name = "xmpd-cliargs"
+version = "2.0.0"
+dependencies = [
+ "camino",
+ "clap",
+ "dirs",
+ "lazy_static",
+]
[[package]]
name = "xmpd-core"
@@ -4386,24 +4409,20 @@ dependencies = [
"anyhow",
"camino",
"clap",
- "dirs",
"env_logger",
"log",
- "xmpd-cli",
+ "xmpd-cliargs",
"xmpd-gui",
"xmpd-manifest",
"xmpd-settings",
]
-[[package]]
-name = "xmpd-dl"
-version = "2.0.0"
-
[[package]]
name = "xmpd-gui"
version = "2.0.0"
dependencies = [
"anyhow",
+ "camino",
"eframe",
"egui 0.27.2",
"egui-aesthetix",
@@ -4412,6 +4431,8 @@ dependencies = [
"log",
"tokio",
"uuid",
+ "xmpd-cache",
+ "xmpd-cliargs",
"xmpd-manifest",
"xmpd-settings",
]
@@ -4432,12 +4453,17 @@ name = "xmpd-settings"
version = "2.0.0"
dependencies = [
"anyhow",
+ "camino",
"egui 0.27.2",
"lazy_static",
"serde",
"toml",
]
+[[package]]
+name = "xmpd-tooling"
+version = "2.0.0"
+
[[package]]
name = "zbus"
version = "3.15.2"
diff --git a/Cargo.toml b/Cargo.toml
index 9b4eb7e..cb51893 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,9 +4,10 @@ members=[
"xmpd-core",
"xmpd-manifest",
"xmpd-gui",
- #"xmpd-cli",
- "xmpd-dl",
- "xmpd-settings",
+ "xmpd-cliargs",
+ "xmpd-cache",
+ "xmpd-settings",
+ "xmpd-tooling",
# "xmpd-tui"
]
@@ -24,7 +25,7 @@ authors=[
anstyle = "1.0.6"
anyhow = "1.0.81"
bitflags = { version = "2.6.0", features = ["serde"] }
-camino = "1.1.6"
+camino = { version="1.1.6", features = ["serde1"] }
clap = { version = "4.5.4", features = ["derive"] }
eframe = "0.27.2"
egui = { version = "0.27.2", features = ["color-hex", "serde"] }
diff --git a/assets/check.svg b/assets/check.svg
new file mode 100644
index 0000000..b0ffff3
--- /dev/null
+++ b/assets/check.svg
@@ -0,0 +1 @@
+
diff --git a/assets/cross.svg b/assets/cross.svg
new file mode 100644
index 0000000..ffb94a9
--- /dev/null
+++ b/assets/cross.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/download.svg b/assets/download.svg
new file mode 100644
index 0000000..1d40fb2
--- /dev/null
+++ b/assets/download.svg
@@ -0,0 +1 @@
+
diff --git a/assets/warning.svg b/assets/warning.svg
new file mode 100644
index 0000000..30165d3
--- /dev/null
+++ b/assets/warning.svg
@@ -0,0 +1 @@
+
diff --git a/manifest.json b/manifest.json
index a232ac9..27c1693 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,741 +1,15 @@
{
"songs": {
- "3ea2a490-749f-4956-b7ef-bb0c428663a9": {
- "name": "Dabar Geriausi Musu Vakarai",
- "author": "Vilija ir Marijonas mikutavicius",
- "url": "https://www.youtube.com/watch?v=MPnZkEscWo0",
- "source_type": "Youtube"
- },
- "8e82aa7c-a9e0-42ee-a845-6ba7d3439452": {
- "name": "Apzavai",
- "author": "Vaidas Baumila",
- "url": "https://www.youtube.com/watch?v=H8uGi4ZMgHA",
- "source_type": "Youtube"
- },
- "4a4abe26-de77-4e0f-83c9-8eab9ca32281": {
- "name": "Parnesk alaus OG",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=e7cB1JIlZ2k",
- "source_type": "Youtube"
- },
- "201c6680-7dcf-4d75-8bdc-76ff9a715167": {
- "name": "Gyvenimo man vieno neuztenka",
- "author": "SEL",
- "url": "https://youtu.be/7Gd9XaEG5o4",
- "source_type": "Youtube"
- },
- "639dc5af-b3e6-4d38-a003-80deac01d326": {
- "name": "Myliu kina",
- "author": "Zas",
- "url": "https://www.youtube.com/watch?v=ImFrfmi-qT8",
- "source_type": "Youtube"
- },
- "407155fd-3174-4778-ae93-bb01b7518f9f": {
- "name": "Cia Mano Rojus",
- "author": "Robertas Kupstas",
- "url": "https://www.youtube.com/watch?v=xij_YeEInr8",
- "source_type": "Youtube"
- },
- "3453b523-e1f0-49d3-b60b-5ba063b6c26d": {
- "name": "The Love Parade ( Bounce Invaderz )",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=xogT6KBWjCU3",
- "source_type": "Youtube"
- },
- "0c5a22fc-2a61-4171-a5b9-f24da0c71466": {
- "name": "As ziuriu i tave pasauli",
- "author": "SEL",
- "url": "https://youtu.be/_SPDjl80kKw",
- "source_type": "Youtube"
- },
- "2b19ae9f-2321-41fc-8a1f-2bb4c2975380": {
- "name": "Malunas Prie Kelio",
- "author": "VainHouse",
- "url": "https://www.youtube.com/watch?v=bbwuNjDXCiM",
- "source_type": "Youtube"
- },
- "131ab436-869b-4b3b-8ce4-3b5087d3461f": {
- "name": "1.9 TDI",
- "author": "Grupe MX",
- "url": "https://www.youtube.com/watch?v=8FBr5GQXsI8",
- "source_type": "Youtube"
- },
- "f3edb436-bf04-4ad5-ad45-684a601846c3": {
- "name": "We are the winners",
- "author": "LT United",
- "url": "https://www.youtube.com/watch?v=DBAdOlQPbwg",
- "source_type": "Youtube"
- },
- "190a5577-124a-4232-9e6f-1d0a50f4d881": {
- "name": "Cheri cheri lady",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=lrIKt5uDWZo",
- "source_type": "Youtube"
- },
- "47001462-76c8-4aee-8ed4-65242600f840": {
- "name": "Fireball",
- "author": "Pitbul",
- "url": "https://www.youtube.com/watch?v=HMqgVXSvwGo",
- "source_type": "Youtube"
- },
- "7ed02ac9-cb84-4a34-870d-56b226f0a6be": {
- "name": "Always Forever",
- "author": "Cults",
- "url": "https://open.spotify.com/track/2enPRFda84VE2wtI8c86Uf",
- "source_type": "Spotify"
- },
- "6895e921-91f2-4713-b604-c2cdd9f3f1c2": {
- "name": "We Didn’t Start The Fire",
- "author": "Fall Out Boy",
- "url": "https://open.spotify.com/track/60glT2wsoSHV3B8yCRSB8v",
- "source_type": "Spotify"
- },
- "80a169ba-f711-408c-834c-744bac3660ca": {
- "name": "If Theres A Heaven I Wanna See It",
- "author": "Fidde",
- "url": "https://www.youtube.com/watch?v=l2Nw7cIh7qg",
- "source_type": "Youtube"
- },
- "4e903bfb-e9bf-49dc-a299-e08949ab78f9": {
- "name": "DANCE",
- "author": "ROMANCEPLANET",
- "url": "https://www.youtube.com/watch?v=ircOfMb4gEw",
- "source_type": "Youtube"
- },
- "9866acdd-97ee-4e19-ba20-a64caa9b02ee": {
- "name": "Where'd All the Time Go?",
- "author": "Dr. Dog",
- "url": "https://open.spotify.com/track/0UV5zxRMz6AO4ZwUOZNIKI",
- "source_type": "Spotify"
- },
- "a0bd5ffe-4be8-498e-8f43-c5a9505a4872": {
- "name": "Ten kur sapnai",
- "author": "SEL",
- "url": "https://youtu.be/GDj3NgjDbRo",
- "source_type": "Youtube"
- },
- "4b61344d-fa89-4b79-bd45-3b1fc8c8cc1c": {
- "name": "Rycka klipas",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=nuTUDSQ3BBI",
- "source_type": "Youtube"
- },
- "05a28184-e58e-42c3-a803-512bb0817a07": {
- "name": "Vakareja",
- "author": "Karaliska Erdve",
- "url": "https://www.youtube.com/watch?v=g0HmrlJ7fhE",
- "source_type": "Youtube"
- },
- "50186034-e8b4-4778-81e3-ab327e54dbff": {
- "name": "We Are The People",
- "author": "Empire Of The Sun, southstar",
- "url": "https://www.youtube.com/watch?v=qguEGR5BK2k",
- "source_type": "Youtube"
- },
- "8e8c3f6c-e34b-4f4e-b9be-f36be5901435": {
- "name": "biznis",
- "author": "PROFLAME",
- "url": "https://www.youtube.com/watch?v=t139Vd83pgs",
- "source_type": "Youtube"
- },
- "a6a20f00-cbf9-4506-9655-d6fd27944fea": {
- "name": "Rhodes Trip",
- "author": "THEOS",
- "url": "https://www.youtube.com/watch?v=m7guRO0Uz_c",
- "source_type": "Youtube"
- },
- "8dca8d6c-3388-4133-b773-79b9f076e467": {
- "name": "0,7",
- "author": "Depresinis feat. Deivas",
- "url": "https://www.youtube.com/watch?v=rjwFjBgTzAA",
- "source_type": "Youtube"
- },
- "e9495391-8a6c-4942-9dc6-09b764f9d1e9": {
- "name": "Zalias Pasas",
- "author": "Zas",
- "url": "https://www.youtube.com/watch?v=SZA7IjlCfyI",
- "source_type": "Youtube"
- },
- "0e1d36ed-d07d-48c0-a101-1bf1ac6d7a26": {
- "name": "Be taves",
- "author": "Funky",
- "url": "https://www.youtube.com/watch?v=heTDrDukLWU",
- "source_type": "Youtube"
- },
- "3b2573d4-2e1b-4446-a377-5fcb2b0a70c5": {
- "name": "18 mne uze",
- "author": "Ruki Verch",
- "url": "https://www.youtube.com/watch?v=Hxab_Sr132o",
- "source_type": "Youtube"
- },
- "870502f1-e3a9-419b-9ba6-d8100d1198a5": {
- "name": "Is Leto Leidziasi Saule",
- "author": "Jovani, Karaliska Erdve",
- "url": "https://www.youtube.com/watch?v=VqSu8iG1_DE",
- "source_type": "Youtube"
- },
- "4cf5e323-5e79-4471-816a-5fa345854cea": {
- "name": "rytmecio rasos",
- "author": "nemuno krantai",
- "url": "https://www.youtube.com/watch?v=2-fGbsrofv4",
- "source_type": "Youtube"
- },
- "518e23e8-72df-42de-a918-6a9a197deb9a": {
- "name": "Whiskey, Cola i Tequila",
- "author": "Maco Mamuko",
- "url": "https://www.youtube.com/watch?v=aBrN0k0Phtc",
- "source_type": "Youtube"
- },
- "18c2b9bc-6403-4a67-94bd-1e9f5413d83b": {
- "name": "Skrendu",
- "author": "SEL",
- "url": "https://youtu.be/G5Q_asvrXlA",
- "source_type": "Youtube"
- },
- "4a7b1853-7529-498d-addf-25e894a37ccf": {
- "name": "Temptation",
- "author": "Arash",
- "url": "https://www.youtube.com/watch?v=6X3ZJh762-I",
- "source_type": "Youtube"
- },
- "c72768c0-1f2e-4992-b66f-e569c572435a": {
- "name": "Nezinau, Kodel...",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=A-i2CkCnPoc",
- "source_type": "Youtube"
- },
- "9d7a0837-04d4-40f7-92dc-48c7db70be51": {
- "name": "As Judu",
- "author": "Adomas Vysniauskas",
- "url": "https://www.youtube.com/watch?v=dMm16TzZrjg",
- "source_type": "Youtube"
- },
- "7b680328-e576-4185-a5da-3c37de98ca42": {
- "name": "cabin fever",
- "author": "re6ce",
- "url": "https://open.spotify.com/track/3c3oUMxOr2cVFBY6V3v08C",
- "source_type": "Spotify"
- },
- "9be83d96-6dfb-47a0-b58e-a1aed1cf6031": {
- "name": "Pasitusinam",
- "author": "NL",
- "url": "https://www.youtube.com/watch?v=WhSFudvloog",
- "source_type": "Youtube"
- },
- "7f2b2809-1b38-45b5-876c-cbdb42b26bdf": {
- "name": "Volkswagina",
- "author": "Depresinis",
- "url": "https://www.youtube.com/watch?v=1lZR1VKsQHo",
- "source_type": "Youtube"
- },
"d286a3a7-ab7b-488c-9c68-b7521e290c5e": {
"name": "Bossa Nova (Lewii Edit)",
"author": "Billie Eilish",
"url": "https://www.youtube.com/watch?v=gNawHj2NCxA",
"source_type": "Youtube"
},
- "9fabb799-f6aa-45a0-93b7-8cb08ab8f0a8": {
- "name": "16 metu",
- "author": "69 Danguje",
- "url": "https://www.youtube.com/watch?v=nwjoqPcUPrw",
- "source_type": "Youtube"
- },
- "d71c0e55-5d40-4045-853e-b32da713c0b8": {
- "name": "Lietuva (Nebelinksmas musu kaimas)",
- "author": "Vytautas siskauskas",
- "url": "https://www.youtube.com/watch?v=31UkGzde14c",
- "source_type": "Youtube"
- },
- "08995ab0-2954-4d6b-913e-27609e90b354": {
- "name": "Caramelldansen",
- "author": "Alfons, LOOKET, DJ BERIT",
- "url": "https://open.spotify.com/track/1v7aZHBUwKxeCgmpe6fVUH",
- "source_type": "Spotify"
- },
- "383cb60f-13fd-4947-9924-6c5d8c39d453": {
- "name": "Kur Tu",
- "author": "Patruliai",
- "url": "https://www.youtube.com/watch?v=OPWhiu3cvj0",
- "source_type": "Youtube"
- },
- "ae2c4c10-4fac-4d80-a114-81adf209c6a1": {
- "name": "Kaip Diena",
- "author": "morre",
- "url": "https://www.youtube.com/watch?v=6LDgLWCQSSM",
- "source_type": "Youtube"
- },
- "be09f147-cda5-4e5f-ac29-eef9c3a7414f": {
- "name": "Blue Monday",
- "author": "MOGUAI, Tim Hox, Iggy",
- "url": "https://open.spotify.com/track/4vAP9OY2Ci79fUCuc9EBdD",
- "source_type": "Spotify"
- },
- "ca765223-e4e6-4b5d-8928-919c3f491b43": {
- "name": "Kaifuok",
- "author": "SADBOY",
- "url": "https://www.youtube.com/watch?v=vclryWgfy8I",
- "source_type": "Youtube"
- },
- "795b22ae-d19e-4571-a5d7-fba5a66d5b6e": {
- "name": "PLAIN WHITE TEE",
- "author": "ROMANCEPLANET",
- "url": "https://www.youtube.com/watch?v=tdVQbNwjGac",
- "source_type": "Youtube"
- },
- "877c24e4-c0c0-4e9c-a553-221e381c8a00": {
- "name": "Stumblin' In",
- "author": "CYRIL",
- "url": "https://open.spotify.com/track/0h3Xy4V4apMraB5NuM8U7Z",
- "source_type": "Spotify"
- },
- "fa339b0b-8d3a-45e7-aed9-f744afb4a666": {
- "name": "Eik Tu NA",
- "author": "AVA",
- "url": "https://www.youtube.com/watch?v=yRf3ijaIgOg",
- "source_type": "Youtube"
- },
- "c332ce2b-6b1c-4979-9977-dc00aa6e710b": {
- "name": "TU ESI MELAGIS (Techno Extended)",
- "author": "Radvis",
- "url": "https://www.youtube.com/watch?v=kmvvP7GW_bw",
- "source_type": "Youtube"
- },
- "ec3edf2d-1e19-4c71-8f5c-e53d9cd06c3b": {
- "name": "Cigarette Daydreams",
- "author": "Cage The Elephant",
- "url": "https://open.spotify.com/track/6jHvX8ZnHKC1PnrPMJ0Emt",
- "source_type": "Spotify"
- },
- "5c2ee27e-d564-404a-8259-87d1d336f106": {
- "name": "Money",
- "author": "The Drums",
- "url": "https://open.spotify.com/track/3VIJBrMpvimHEw5wtPh2wB",
- "source_type": "Spotify"
- },
- "c28f14ca-ec10-469a-b0cc-3e26e9f56007": {
- "name": "VASARA ZJBS",
- "author": "Depresinis & MERAKI2004",
- "url": "https://www.youtube.com/watch?v=BD-pBjRy-5A",
- "source_type": "Youtube"
- },
- "4eafd817-d75a-451e-b6b4-38ef29e66fdf": {
- "name": "Ne, nereikia asaru",
- "author": "Rytis Cicinas",
- "url": "https://www.youtube.com/watch?v=48GSg1q2kPE",
- "source_type": "Youtube"
- },
- "0b907d17-e3f9-4dbb-9c2d-e10327316f6e": {
- "name": "UZ MUS IR JUS",
- "author": "Mr.Bullet",
- "url": "https://www.youtube.com/watch?v=85q_7jXEgH8",
- "source_type": "Youtube"
- },
- "a1ab9370-70bc-488d-a78b-5cdc09c82f73": {
- "name": "Trys Trys Trys",
- "author": "Riaukenzo",
- "url": "https://www.youtube.com/watch?v=qJv6GRQCnCk",
- "source_type": "Youtube"
- },
- "27d61e87-deec-4e4c-8015-ad8b691eea40": {
- "name": "Klaipeda On Top",
- "author": "Deivas",
- "url": "https://www.youtube.com/watch?v=g_h2M3e2OYU",
- "source_type": "Youtube"
- },
- "402a9066-127a-4a62-b711-50e979abbd51": {
- "name": "Naktinis Tusas",
- "author": "Dove",
- "url": "https://www.youtube.com/watch?v=pz-HEAwFEnk",
- "source_type": "Youtube"
- },
- "2645c0f2-fade-489a-87ad-261d5d983ef6": {
- "name": "Bad Boys",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=NTC7RD8xzCY",
- "source_type": "Youtube"
- },
- "91629850-33e2-4e18-8c37-6eafdfcde3f4": {
- "name": "Give It To Me",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=upQe8EeSyZU",
- "source_type": "Youtube"
- },
- "b0c0d44c-86ca-4b80-a081-734a4178c870": {
- "name": "After Marvins Dance (Marvin Gaye's 'After The Dance' Edit)",
- "author": "Bauhouse",
- "url": "https://www.youtube.com/watch?v=J-cgyYiExh8",
- "source_type": "Youtube"
- },
- "9000f22e-83ff-4261-be0c-625fe1d806ab": {
- "name": "MAMA MANE RODYS PER FARUS",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=F5HqXYRDZaE",
- "source_type": "Youtube"
- },
- "6bc8cd16-722b-42e4-9824-a1de9c67029f": {
- "name": "Tears Drop",
- "author": "Baltra",
- "url": "https://www.youtube.com/watch?v=EXXMtKPfuzY",
- "source_type": "Youtube"
- },
- "fc3f499b-2c33-41d0-b79c-ca68486b2a4d": {
- "name": "Blaue Augen",
- "author": "08 Blumchen",
- "url": "https://www.youtube.com/watch?v=mE4PZcUfiwE",
- "source_type": "Youtube"
- },
- "85098bbc-86fa-4da4-b342-d2a512738060": {
- "name": "Topolini puh",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=UUryvYF8tUs",
- "source_type": "Youtube"
- },
- "484b9560-731b-447d-9e7f-3d32eb68b05f": {
- "name": "Freed from Desire",
- "author": "Drenchill",
- "url": "https://www.youtube.com/watch?v=6b6FBneAENQ",
- "source_type": "Youtube"
- },
- "03f406b5-d5e9-4d22-b9bc-d0b36354400a": {
- "name": "Diskoteka is 90 hit",
- "author": "Raim & Artur feat. Zhenis",
- "url": "https://www.youtube.com/watch?v=GfBhxlNhrn0",
- "source_type": "Youtube"
- },
- "192a8655-7dfc-4c4b-b351-87c75cbbe048": {
- "name": "It Wasn't Me",
- "author": "Shaggy",
- "url": "https://www.youtube.com/watch?v=ssVj50ombaM",
- "source_type": "Youtube"
- },
- "3d543d58-e33d-4158-9956-049309baa35c": {
- "name": "Movin' Out (Anthony's Song)",
- "author": "Billy Joel",
- "url": "https://open.spotify.com/track/16GUMo6u3D2qo9a19AkYct",
- "source_type": "Spotify"
- },
- "cec368bd-6b4c-4c89-9eeb-1b88bed0efc3": {
- "name": "PARIS (TECHNO)",
- "author": "$UICIDEBOY$",
- "url": "https://www.youtube.com/watch?v=YYDJmGDkEyw",
- "source_type": "Youtube"
- },
- "cbc90bff-5476-408c-9cc8-afd1af5b536d": {
- "name": "Vienna",
- "author": "Billy Joel",
- "url": "https://open.spotify.com/track/4U45aEWtQhrm8A5mxPaFZ7",
- "source_type": "Spotify"
- },
- "0c77785e-7149-45a7-84a1-a9c8ccaa9f7f": {
- "name": "Lyja",
- "author": "SEL",
- "url": "https://www.youtube.com/watch?v=KL6JBWnXCxw",
- "source_type": "Youtube"
- },
- "bcb9af16-7bdb-458a-b092-42225abf2645": {
- "name": "LEDUKAI",
- "author": "Depresinis feat. Deivas",
- "url": "https://www.youtube.com/watch?v=R2-MtpkKgGI",
- "source_type": "Youtube"
- },
- "eadbd827-0f71-4401-97bd-d11c365c3243": {
- "name": "I Only See Things I Dont Have",
- "author": "Fidde",
- "url": "https://www.youtube.com/watch?v=vX_Ye_ZzI-Y",
- "source_type": "Youtube"
- },
- "d8e93863-6102-4cda-a0b2-3728d20c9cf8": {
- "name": "dashstar",
- "author": "Knock2",
- "url": "https://www.youtube.com/watch?v=58ml5b_On6w",
- "source_type": "Youtube"
- },
- "e71a61d4-b54a-47d1-b0ad-db6695bd0739": {
- "name": "Hey Lover!",
- "author": "Wabie",
- "url": "https://open.spotify.com/track/7rC3P7tpWriaC4hYWKwGQd",
- "source_type": "Spotify"
- },
- "c393d1a6-b265-4a73-a7bd-d33667b08445": {
- "name": "Kauniete",
- "author": "DJ Dalgis",
- "url": "https://www.youtube.com/watch?v=b3xPE9Iyuzc",
- "source_type": "Youtube"
- },
- "bc5fe406-040b-4c46-82ce-bb4505b81947": {
- "name": "i like the way you kiss me",
- "author": "Artemas",
- "url": "https://www.youtube.com/watch?v=ODDRRXMi22E",
- "source_type": "Youtube"
- },
- "b26f7338-0d1f-4dba-b639-3bdae9d7e10e": {
- "name": "Po stikliuka",
- "author": "Tipo grupe ir Kastaneda",
- "url": "https://www.youtube.com/watch?v=EtmE60nE7fI",
- "source_type": "Youtube"
- },
- "3525668b-4402-4fb8-b106-bed44d8c9db2": {
- "name": "I Kluba",
- "author": "Raketa",
- "url": "https://www.youtube.com/watch?v=FkSjtpYN3EI",
- "source_type": "Youtube"
- },
- "abd6a036-f17a-4a6a-8420-2cc3e7e4a181": {
- "name": "Ten kazkur giliai",
- "author": "SEL",
- "url": "https://youtu.be/N7YNlegeiqs?si=9BBH6hjrgOjJ01Nz",
- "source_type": "Youtube"
- },
- "7da79c32-9eda-4897-be69-69fb39437404": {
- "name": "Tricky Disco",
- "author": "DR. VODKA",
- "url": "https://www.youtube.com/watch?v=IknAUhl3i2o",
- "source_type": "Youtube"
- },
- "ee1e8d12-75ac-43f7-bf85-a1b69eb66e86": {
- "name": "Vanished",
- "author": "Crystal Castles",
- "url": "https://open.spotify.com/track/3gGMsx3jxYKfhXq8LMj1tz",
- "source_type": "Spotify"
- },
- "8c641f7f-e151-4abc-932c-a9895823a278": {
- "name": "Nevaidink",
- "author": "SixthBoi",
- "url": "https://www.youtube.com/watch?v=nOTNnnrqTII",
- "source_type": "Youtube"
- },
- "101166d0-1b7c-4d1c-b0ce-35b9a89b0822": {
- "name": "Nes as tik vejas",
- "author": "SEL",
- "url": "https://youtu.be/acMG37IZ6z8",
- "source_type": "Youtube"
- },
- "bd85a9d7-1fb6-4154-a290-e5137590e419": {
- "name": "I gamta",
- "author": "Andzikas",
- "url": "https://www.youtube.com/watch?v=UyLdjC-hihM",
- "source_type": "Youtube"
- },
- "16dafb40-ebac-4e04-961a-99d79789f1a3": {
- "name": "Topine Panele",
- "author": "Wenona Waves",
- "url": "https://www.youtube.com/watch?v=MPHuhmUomfE",
- "source_type": "Youtube"
- },
- "a950fac9-3b5f-4215-8a49-7680fd5b90bf": {
- "name": "Gyvenu",
- "author": "69 Danguje",
- "url": "https://www.youtube.com/watch?v=HMXlhmAoux4",
- "source_type": "Youtube"
- },
- "2e9ef729-1560-446c-af6a-8a9d4c43ac9a": {
- "name": "Big Sis",
- "author": "SALES",
- "url": "https://open.spotify.com/track/0ARp9mXXpPflIwehy25kCa",
- "source_type": "Spotify"
- },
- "81426b49-3511-4e48-be21-3c24acba0fb9": {
- "name": "Kernkraft 400",
- "author": "Zombie Nation",
- "url": "https://www.youtube.com/watch?v=z5LW07FTJbI",
- "source_type": "Youtube"
- },
- "22f18d88-fb39-4cec-98be-02d4ebe3a6ee": {
- "name": "Party maker",
- "author": "MUTA",
- "url": "https://www.youtube.com/watch?v=LT9VNK1aCXY",
- "source_type": "Youtube"
- },
- "02d90830-7b5f-430f-b82c-f45998862e81": {
- "name": "Juodas Golfas",
- "author": "NL",
- "url": "https://www.youtube.com/watch?v=f2-ZmElSvPc",
- "source_type": "Youtube"
- },
- "7d232736-f977-4645-bd64-106e94f91bb0": {
- "name": "Judam Lietuvoj",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=WDzWSEgSy5U",
- "source_type": "Youtube"
- },
- "cd72e9db-aaa4-485e-b3a5-7fbeed2cff36": {
- "name": "I.M.P Jingle (From \"Helluva Boss\")",
- "author": "Geek Music",
- "url": "https://open.spotify.com/track/5x0bvS385Ata1irjLMyLTn",
- "source_type": "Spotify"
- },
- "dfc0782c-33f2-414d-9b56-76a77902bcc5": {
- "name": "Baliavojam",
- "author": "16Hz",
- "url": "https://www.youtube.com/watch?v=Ia-qERX8WLs",
- "source_type": "Youtube"
- },
- "e37c6cb6-ad8e-43a7-83d1-8b795db8aa1c": {
- "name": "Harness Your Hopes",
- "author": "Pavement",
- "url": "https://open.spotify.com/track/4vsoWZcvtvSsE0OiVvDDvX",
- "source_type": "Spotify"
- },
- "f81f8f9d-6c56-4ae3-8f5f-28c04632d3b5": {
- "name": "Kcik 23",
- "author": "Unknown Artist",
- "url": "https://www.youtube.com/watch?v=SnnqDdZJpzA",
- "source_type": "Youtube"
- },
- "8fcad64e-bb63-414b-9cad-243f1f4c4293": {
- "name": "FALL FROM THE SKY",
- "author": "ROMANCEPLANET",
- "url": "https://www.youtube.com/watch?v=HMhzxzXBisw",
- "source_type": "Youtube"
- },
- "95a3350c-c62f-4543-8cfe-6c512861b229": {
- "name": "Ryk Zuvedra ryk",
- "author": "Zilviokas",
- "url": "https://www.youtube.com/watch?v=eN6BOI7UlSE",
- "source_type": "Youtube"
- },
- "080d60fb-bdf1-40f3-8b81-967c5ea2fe44": {
- "name": "moi marmeladni (paprobui mua mua)",
- "author": "Katja lel",
- "url": "https://www.youtube.com/watch?v=0JMdXFHo5SY",
- "source_type": "Youtube"
- },
- "35877af8-65ad-4d85-9f18-93b98fd3ebd4": {
- "name": "Le Son Dancefloor",
- "author": "Sweely",
- "url": "https://www.youtube.com/watch?v=5uEvZgmoG6Y",
- "source_type": "Youtube"
- },
- "d617c8c2-6237-40c4-8b47-b612a93c3689": {
- "name": "vse shto nas ne Ubivaet",
- "author": "Pimp Schwab",
- "url": "https://www.youtube.com/watch?v=NTEXFyUE9Ww",
- "source_type": "Youtube"
- },
- "78d3766c-7d79-43a1-aa37-f680cfd253e0": {
- "name": "Perfect remix 1991",
- "author": "Mason",
- "url": "https://open.spotify.com/track/1VKWQgq0g2uKtgNfL0ceNM?si=b3f1dc504ddb41ed",
- "source_type": "Spotify"
- },
- "7e1d6501-ec53-4513-9917-84886d7523e5": {
- "name": "Amerikonas grizo sunus",
- "author": "Zilvinas Zvagulis",
- "url": "https://www.youtube.com/watch?v=UvzJEz5ADY8",
- "source_type": "Youtube"
- },
- "bb16708f-0cd7-4918-8014-d374d68acbd2": {
- "name": "Not Allowed",
- "author": "TV Girl",
- "url": "https://open.spotify.com/track/3IznIgmXtrUaoPWpQTy5jB",
- "source_type": "Spotify"
- },
- "83b50be2-c286-4dcc-9e7f-cacf5e4031fe": {
- "name": "Not Fair",
- "author": "Lily Allen",
- "url": "https://www.youtube.com/watch?v=WON_YIbeLis",
- "source_type": "Youtube"
- },
- "9e6095bb-8b05-40eb-b5d3-b6410ac65171": {
- "name": "C'est Beau La Bourgeoisie",
- "author": "Discobitch",
- "url": "https://www.youtube.com/watch?v=RCeQN2aEWxo",
- "source_type": "Youtube"
- },
- "7832d70f-2af3-417f-88dd-e193622ac599": {
- "name": "DZIEWCZYNO Z TIKTOKA",
- "author": "DR. VODKA",
- "url": "https://www.youtube.com/watch?v=HLbw1WQt64o",
- "source_type": "Youtube"
- },
- "0491fd9f-149d-4e70-bc5c-0fae9a21d9b0": {
- "name": "Rozovoe vino",
- "author": "Eldzej and Feduk",
- "url": "https://www.youtube.com/watch?v=S9oXj3a4gZ4",
- "source_type": "Youtube"
- },
- "720d5b94-ac54-4162-8da7-ba8d258139e6": {
- "name": "KINO FILMAI",
- "author": "RADVIS",
- "url": "https://www.youtube.com/watch?v=vhAEkC3xNMo",
- "source_type": "Youtube"
- },
- "0e33d04e-776e-4746-ab17-c4602d556716": {
- "name": "1001 Naktis",
- "author": "SADBOY",
- "url": "https://www.youtube.com/watch?v=mLJIjGvWmKI",
- "source_type": "Youtube"
- },
- "eb91fc63-4e0e-49e9-99c7-ea7fe5770a5b": {
- "name": "LEDINE",
- "author": "Depresinis",
- "url": "https://www.youtube.com/watch?v=qugvChkXMLk",
- "source_type": "Youtube"
- },
- "b0732ead-9a8c-4537-b98a-a4618d33959f": {
- "name": "O Mazuti",
- "author": "Depresinis, Jypas",
- "url": "https://www.youtube.com/watch?v=4t_DPbe2r3M",
- "source_type": "Youtube"
- },
- "bf529d54-1ad0-4396-84c7-82bd7fe495c6": {
- "name": "P.R.O.T.E.C.T.T.R.A.N.S.K.I.D.S.",
- "author": "Cheap Dirty Horse",
- "url": "https://open.spotify.com/track/1ytHY16pP1P6A2noeiPXuU",
- "source_type": "Spotify"
- },
- "9ef33d55-972d-490c-95c6-bf046bf4f979": {
- "name": "MONEY ON THE DASH",
- "author": "Unknown",
- "url": "https://open.spotify.com/track/6nVEV8CIU4dw12oVZbKJtl",
- "source_type": "Spotify"
- },
- "df2e369f-2fee-49e5-b52c-33f73c34ffb2": {
- "name": "Autostrada Vilnius",
- "author": "16Hz",
- "url": "https://www.youtube.com/watch?v=ANS2TSegr40",
- "source_type": "Youtube"
- },
- "22565196-5757-4767-8f1f-f1c9b8a87dcc": {
- "name": "I WAS MADE FOR LOVIN' YOU (TECHNO)",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=asVznhccYao",
- "source_type": "Youtube"
- },
- "d8423579-1225-4865-9955-149e6878b59d": {
- "name": "Black Sabbath",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=BOTIIw76qiE",
- "source_type": "Youtube"
- },
- "9d482849-d488-4222-adc0-727f92babcab": {
- "name": "Jau Nutilo Sirgaliai",
- "author": "Ciulpuoneliai",
- "url": "https://www.youtube.com/watch?v=s8qIVA1U0C0",
- "source_type": "Youtube"
- },
- "a59cb678-f229-43cf-b438-4ce53b7264ae": {
- "name": "R1",
- "author": "NL",
- "url": "https://www.youtube.com/watch?v=hSgav4fYnZ8",
- "source_type": "Youtube"
- },
- "2eae7db0-4263-4870-b0c0-638a0d944c8e": {
- "name": "Negeriau",
- "author": "DJ Dalgis",
- "url": "https://www.youtube.com/watch?v=c89YvG3MCcs",
- "source_type": "Youtube"
- },
- "009b9458-3205-4b13-9c65-03f16fea2293": {
- "name": "Whiskey Cola Lietuviskai (sultys degtinele) remix",
- "author": "L1GHT CASH",
- "url": "https://www.youtube.com/watch?v=YVaqDaf1KXU",
- "source_type": "Youtube"
- },
- "f1878fda-ecec-4303-a6df-dc6adf1ea3c0": {
- "name": "Juodas Garvezys (Remix)",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=D-7qQbXHSAw",
+ "dc6c36b0-f595-457f-8fc3-641710b0e3b9": {
+ "name": "I Pajuri",
+ "author": "Mercy Dance",
+ "url": "https://www.youtube.com/watch?v=RPpkMh47l9w",
"source_type": "Youtube"
},
"34e3c90b-7763-4154-9035-367e22ed7d75": {
@@ -744,22 +18,754 @@
"url": "https://www.youtube.com/watch?v=erDHG-QpbPY",
"source_type": "Youtube"
},
- "7e32803d-a5a9-453c-8c81-b479c51e5bc9": {
- "name": "Looking Out for You",
- "author": "Joy Again",
- "url": "https://open.spotify.com/track/3jfZ9M23l0L7RxzYMTgBTv",
- "source_type": "Spotify"
- },
- "70a80d91-581e-4599-81e6-d047f28e9068": {
- "name": "Margarita",
- "author": "Rondo",
- "url": "https://www.youtube.com/watch?v=rF4w-Rxsiv4",
+ "6bc8cd16-722b-42e4-9824-a1de9c67029f": {
+ "name": "Tears Drop",
+ "author": "Baltra",
+ "url": "https://www.youtube.com/watch?v=EXXMtKPfuzY",
"source_type": "Youtube"
},
- "e1cb8b00-713b-4a0e-bc61-dbf2d2596fcf": {
- "name": "Tik Tok",
+ "4a4abe26-de77-4e0f-83c9-8eab9ca32281": {
+ "name": "Parnesk alaus OG",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=e7cB1JIlZ2k",
+ "source_type": "Youtube"
+ },
+ "3525668b-4402-4fb8-b106-bed44d8c9db2": {
+ "name": "I Kluba",
+ "author": "Raketa",
+ "url": "https://www.youtube.com/watch?v=FkSjtpYN3EI",
+ "source_type": "Youtube"
+ },
+ "2eae7db0-4263-4870-b0c0-638a0d944c8e": {
+ "name": "Negeriau",
+ "author": "DJ Dalgis",
+ "url": "https://www.youtube.com/watch?v=c89YvG3MCcs",
+ "source_type": "Youtube"
+ },
+ "08995ab0-2954-4d6b-913e-27609e90b354": {
+ "name": "Caramelldansen",
+ "author": "Alfons, LOOKET, DJ BERIT",
+ "url": "https://open.spotify.com/track/1v7aZHBUwKxeCgmpe6fVUH",
+ "source_type": "Spotify"
+ },
+ "47f2a63e-e9eb-48df-a61b-dbcdfa3aaf35": {
+ "name": "Everlong",
+ "author": "Foo Fighters",
+ "url": "https://open.spotify.com/track/5UWwZ5lm5PKu6eKsHAGxOk",
+ "source_type": "Spotify"
+ },
+ "2645c0f2-fade-489a-87ad-261d5d983ef6": {
+ "name": "Bad Boys",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=NTC7RD8xzCY",
+ "source_type": "Youtube"
+ },
+ "d71c0e55-5d40-4045-853e-b32da713c0b8": {
+ "name": "Lietuva (Nebelinksmas musu kaimas)",
+ "author": "Vytautas siskauskas",
+ "url": "https://www.youtube.com/watch?v=31UkGzde14c",
+ "source_type": "Youtube"
+ },
+ "101166d0-1b7c-4d1c-b0ce-35b9a89b0822": {
+ "name": "Nes as tik vejas",
"author": "SEL",
- "url": "https://youtu.be/RkaIUateIxg",
+ "url": "https://youtu.be/acMG37IZ6z8",
+ "source_type": "Youtube"
+ },
+ "c393d1a6-b265-4a73-a7bd-d33667b08445": {
+ "name": "Kauniete",
+ "author": "DJ Dalgis",
+ "url": "https://www.youtube.com/watch?v=b3xPE9Iyuzc",
+ "source_type": "Youtube"
+ },
+ "a950fac9-3b5f-4215-8a49-7680fd5b90bf": {
+ "name": "Gyvenu",
+ "author": "69 Danguje",
+ "url": "https://www.youtube.com/watch?v=HMXlhmAoux4",
+ "source_type": "Youtube"
+ },
+ "7da79c32-9eda-4897-be69-69fb39437404": {
+ "name": "Tricky Disco",
+ "author": "DR. VODKA",
+ "url": "https://www.youtube.com/watch?v=IknAUhl3i2o",
+ "source_type": "Youtube"
+ },
+ "0491fd9f-149d-4e70-bc5c-0fae9a21d9b0": {
+ "name": "Rozovoe vino",
+ "author": "Eldzej and Feduk",
+ "url": "https://www.youtube.com/watch?v=S9oXj3a4gZ4",
+ "source_type": "Youtube"
+ },
+ "90ae639e-0214-4a8e-b582-4949674ffaa2": {
+ "name": "Coco Jumbo",
+ "author": "Mr President",
+ "url": "https://www.youtube.com/watch?v=cOrc37wNUqU",
+ "source_type": "Youtube"
+ },
+ "cbc90bff-5476-408c-9cc8-afd1af5b536d": {
+ "name": "Vienna",
+ "author": "Billy Joel",
+ "url": "https://open.spotify.com/track/4U45aEWtQhrm8A5mxPaFZ7",
+ "source_type": "Spotify"
+ },
+ "4c849092-b6c4-450c-b69c-304e54f63611": {
+ "name": "Deginam",
+ "author": "SADBOY",
+ "url": "https://www.youtube.com/watch?v=w3R0Aq1EGXg",
+ "source_type": "Youtube"
+ },
+ "27d61e87-deec-4e4c-8015-ad8b691eea40": {
+ "name": "Klaipeda On Top",
+ "author": "Deivas",
+ "url": "https://www.youtube.com/watch?v=g_h2M3e2OYU",
+ "source_type": "Youtube"
+ },
+ "b26f7338-0d1f-4dba-b639-3bdae9d7e10e": {
+ "name": "Po stikliuka",
+ "author": "Tipo grupe ir Kastaneda",
+ "url": "https://www.youtube.com/watch?v=EtmE60nE7fI",
+ "source_type": "Youtube"
+ },
+ "78d3766c-7d79-43a1-aa37-f680cfd253e0": {
+ "name": "Perfect remix 1991",
+ "author": "Mason",
+ "url": "https://open.spotify.com/track/1VKWQgq0g2uKtgNfL0ceNM?si=b3f1dc504ddb41ed",
+ "source_type": "Spotify"
+ },
+ "b0732ead-9a8c-4537-b98a-a4618d33959f": {
+ "name": "O Mazuti",
+ "author": "Depresinis, Jypas",
+ "url": "https://www.youtube.com/watch?v=4t_DPbe2r3M",
+ "source_type": "Youtube"
+ },
+ "4eafd817-d75a-451e-b6b4-38ef29e66fdf": {
+ "name": "Ne, nereikia asaru",
+ "author": "Rytis Cicinas",
+ "url": "https://www.youtube.com/watch?v=48GSg1q2kPE",
+ "source_type": "Youtube"
+ },
+ "0ee56450-2942-4805-9f08-b49652472258": {
+ "name": "Tricky Disco",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=t78qVdbAiXw",
+ "source_type": "Youtube"
+ },
+ "8e82aa7c-a9e0-42ee-a845-6ba7d3439452": {
+ "name": "Apzavai",
+ "author": "Vaidas Baumila",
+ "url": "https://www.youtube.com/watch?v=H8uGi4ZMgHA",
+ "source_type": "Youtube"
+ },
+ "35877af8-65ad-4d85-9f18-93b98fd3ebd4": {
+ "name": "Le Son Dancefloor",
+ "author": "Sweely",
+ "url": "https://www.youtube.com/watch?v=5uEvZgmoG6Y",
+ "source_type": "Youtube"
+ },
+ "4f368ef5-08d0-4d1f-b8ba-a34ee9fc6aa2": {
+ "name": "Blizgantys Naikai",
+ "author": "SADBOY",
+ "url": "https://www.youtube.com/watch?v=p5KsYJGcfOM",
+ "source_type": "Youtube"
+ },
+ "92561031-92ae-471a-b154-8519c715011d": {
+ "name": "On The Rob",
+ "author": "Cheap Dirty Horse",
+ "url": "https://open.spotify.com/track/2kZ2fD3ohaGhDHMBTAppto",
+ "source_type": "Spotify"
+ },
+ "88fe04aa-a7be-4f6c-b32f-d3d25e58bbf8": {
+ "name": "Because I Got High",
+ "author": "Afroman",
+ "url": "https://www.youtube.com/watch?v=WeYsTmIzjkw",
+ "source_type": "Youtube"
+ },
+ "83ff90a9-4a19-4a66-a452-c2bafdfb884b": {
+ "name": "You're My Heart, You're My Soul",
+ "author": "Modern Talking",
+ "url": "https://www.youtube.com/watch?v=4kHl4FoK1Ys",
+ "source_type": "Youtube"
+ },
+ "0e1d36ed-d07d-48c0-a101-1bf1ac6d7a26": {
+ "name": "Be taves",
+ "author": "Funky",
+ "url": "https://www.youtube.com/watch?v=heTDrDukLWU",
+ "source_type": "Youtube"
+ },
+ "518e23e8-72df-42de-a918-6a9a197deb9a": {
+ "name": "Whiskey, Cola i Tequila",
+ "author": "Maco Mamuko",
+ "url": "https://www.youtube.com/watch?v=aBrN0k0Phtc",
+ "source_type": "Youtube"
+ },
+ "7e1d6501-ec53-4513-9917-84886d7523e5": {
+ "name": "Amerikonas grizo sunus",
+ "author": "Zilvinas Zvagulis",
+ "url": "https://www.youtube.com/watch?v=UvzJEz5ADY8",
+ "source_type": "Youtube"
+ },
+ "0679475a-259c-4c98-9ae7-a58c10dfeedb": {
+ "name": "New Flesh",
+ "author": "Current Joys",
+ "url": "https://open.spotify.com/track/6HJxxqHWMdidwTVZmZWeHU",
+ "source_type": "Spotify"
+ },
+ "5c2ee27e-d564-404a-8259-87d1d336f106": {
+ "name": "Money",
+ "author": "The Drums",
+ "url": "https://open.spotify.com/track/3VIJBrMpvimHEw5wtPh2wB",
+ "source_type": "Spotify"
+ },
+ "1a22e35a-0af1-4326-b59c-00d59504446b": {
+ "name": "Virs debesu",
+ "author": "Andzikas",
+ "url": "https://www.youtube.com/watch?v=PHJcVGhxra8",
+ "source_type": "Youtube"
+ },
+ "cec368bd-6b4c-4c89-9eeb-1b88bed0efc3": {
+ "name": "PARIS (TECHNO)",
+ "author": "$UICIDEBOY$",
+ "url": "https://www.youtube.com/watch?v=YYDJmGDkEyw",
+ "source_type": "Youtube"
+ },
+ "6bfe21f8-b6e5-409b-b6cb-a5692f6dfeeb": {
+ "name": "Welcome To The Club",
+ "author": "Manian",
+ "url": "https://www.youtube.com/watch?v=7F9xDewtgNA",
+ "source_type": "Youtube"
+ },
+ "9d93859c-dae3-4c03-8f8d-d4f6bc0e287e": {
+ "name": "Jealous",
+ "author": "Eyedress",
+ "url": "https://open.spotify.com/track/1aXV8GrmQLvgoFtBPERP7E",
+ "source_type": "Spotify"
+ },
+ "eb08806a-5fe3-46d7-a989-89f6a55187cc": {
+ "name": "Tailwhip (Lewii Edit)",
+ "author": "Men I Trust",
+ "url": "https://www.youtube.com/watch?v=XhyM-JUWwWQ",
+ "source_type": "Youtube"
+ },
+ "720d5b94-ac54-4162-8da7-ba8d258139e6": {
+ "name": "KINO FILMAI",
+ "author": "RADVIS",
+ "url": "https://www.youtube.com/watch?v=vhAEkC3xNMo",
+ "source_type": "Youtube"
+ },
+ "080d60fb-bdf1-40f3-8b81-967c5ea2fe44": {
+ "name": "moi marmeladni (paprobui mua mua)",
+ "author": "Katja lel",
+ "url": "https://www.youtube.com/watch?v=0JMdXFHo5SY",
+ "source_type": "Youtube"
+ },
+ "f5a31a44-fc62-4cce-b65e-05e4085864fe": {
+ "name": "End of Beginning",
+ "author": "Djo",
+ "url": "https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD",
+ "source_type": "Spotify"
+ },
+ "7b680328-e576-4185-a5da-3c37de98ca42": {
+ "name": "cabin fever",
+ "author": "re6ce",
+ "url": "https://open.spotify.com/track/3c3oUMxOr2cVFBY6V3v08C",
+ "source_type": "Spotify"
+ },
+ "76f7945f-e677-4297-a98a-708314f92de8": {
+ "name": "Kanikuli",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=GNMiDZTL7jo",
+ "source_type": "Youtube"
+ },
+ "862ddd87-68c4-4bed-a8cd-0e2021a0ce79": {
+ "name": "Renee",
+ "author": "SALES",
+ "url": "https://open.spotify.com/track/5MeUMSRreLHYLhw8ZTyqpk",
+ "source_type": "Spotify"
+ },
+ "3453b523-e1f0-49d3-b60b-5ba063b6c26d": {
+ "name": "The Love Parade ( Bounce Invaderz )",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=xogT6KBWjCU3",
+ "source_type": "Youtube"
+ },
+ "02d90830-7b5f-430f-b82c-f45998862e81": {
+ "name": "Juodas Golfas",
+ "author": "NL",
+ "url": "https://www.youtube.com/watch?v=f2-ZmElSvPc",
+ "source_type": "Youtube"
+ },
+ "bb16708f-0cd7-4918-8014-d374d68acbd2": {
+ "name": "Not Allowed",
+ "author": "TV Girl",
+ "url": "https://open.spotify.com/track/3IznIgmXtrUaoPWpQTy5jB",
+ "source_type": "Spotify"
+ },
+ "dfc0782c-33f2-414d-9b56-76a77902bcc5": {
+ "name": "Baliavojam",
+ "author": "16Hz",
+ "url": "https://www.youtube.com/watch?v=Ia-qERX8WLs",
+ "source_type": "Youtube"
+ },
+ "017e1086-7ca7-4788-834d-5490e0cf8276": {
+ "name": "Mersas",
+ "author": "Tweaxx",
+ "url": "https://www.youtube.com/watch?v=7ljAzgALPdA",
+ "source_type": "Youtube"
+ },
+ "1e77552d-702f-4c61-8e9f-bd02bbafe434": {
+ "name": "Morning Sex (Mochakk Remix)",
+ "author": "Ralph Castelli",
+ "url": "https://www.youtube.com/watch?v=6bCwJ_TIDG4",
+ "source_type": "Youtube"
+ },
+ "6c3f2503-0160-4c42-8b17-25ff402f3fa7": {
+ "name": "Visky Kola karaleva trans pola",
+ "author": "Dzaro and hansa",
+ "url": "https://www.youtube.com/watch?v=fflrMvZ2HtA",
+ "source_type": "Youtube"
+ },
+ "b23f9b7f-1668-43f0-a1bd-9471759db18f": {
+ "name": "Juda Tavo rankos",
+ "author": "Elektra",
+ "url": "https://www.youtube.com/watch?v=k2RuDoudnOE",
+ "source_type": "Youtube"
+ },
+ "47001462-76c8-4aee-8ed4-65242600f840": {
+ "name": "Fireball",
+ "author": "Pitbul",
+ "url": "https://www.youtube.com/watch?v=HMqgVXSvwGo",
+ "source_type": "Youtube"
+ },
+ "0e969066-b7f9-4e60-a24f-989aad28dfac": {
+ "name": "Svajoklis",
+ "author": "Vairas",
+ "url": "https://www.youtube.com/watch?v=hs8_KTV0Vrw",
+ "source_type": "Youtube"
+ },
+ "0e33d04e-776e-4746-ab17-c4602d556716": {
+ "name": "1001 Naktis",
+ "author": "SADBOY",
+ "url": "https://www.youtube.com/watch?v=mLJIjGvWmKI",
+ "source_type": "Youtube"
+ },
+ "91629850-33e2-4e18-8c37-6eafdfcde3f4": {
+ "name": "Give It To Me",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=upQe8EeSyZU",
+ "source_type": "Youtube"
+ },
+ "8fcad64e-bb63-414b-9cad-243f1f4c4293": {
+ "name": "FALL FROM THE SKY",
+ "author": "ROMANCEPLANET",
+ "url": "https://www.youtube.com/watch?v=HMhzxzXBisw",
+ "source_type": "Youtube"
+ },
+ "f3edb436-bf04-4ad5-ad45-684a601846c3": {
+ "name": "We are the winners",
+ "author": "LT United",
+ "url": "https://www.youtube.com/watch?v=DBAdOlQPbwg",
+ "source_type": "Youtube"
+ },
+ "383cb60f-13fd-4947-9924-6c5d8c39d453": {
+ "name": "Kur Tu",
+ "author": "Patruliai",
+ "url": "https://www.youtube.com/watch?v=OPWhiu3cvj0",
+ "source_type": "Youtube"
+ },
+ "402a9066-127a-4a62-b711-50e979abbd51": {
+ "name": "Naktinis Tusas",
+ "author": "Dove",
+ "url": "https://www.youtube.com/watch?v=pz-HEAwFEnk",
+ "source_type": "Youtube"
+ },
+ "fa7d62b1-2f9a-4499-b07b-ac3127c0f69f": {
+ "name": "Mano Skonis Sokolado (Matuze & Arnisxd Remix)",
+ "author": "Sokoledas",
+ "url": "https://soundcloud.com/matuze/sokoledas-mano-skonis-sokolado-matuze-arnisxd-remix",
+ "source_type": "Soundcloud"
+ },
+ "a59cb678-f229-43cf-b438-4ce53b7264ae": {
+ "name": "R1",
+ "author": "NL",
+ "url": "https://www.youtube.com/watch?v=hSgav4fYnZ8",
+ "source_type": "Youtube"
+ },
+ "85098bbc-86fa-4da4-b342-d2a512738060": {
+ "name": "Topolini puh",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=UUryvYF8tUs",
+ "source_type": "Youtube"
+ },
+ "877c24e4-c0c0-4e9c-a553-221e381c8a00": {
+ "name": "Stumblin' In",
+ "author": "CYRIL",
+ "url": "https://open.spotify.com/track/0h3Xy4V4apMraB5NuM8U7Z",
+ "source_type": "Spotify"
+ },
+ "2c650e29-9f87-4253-8074-146f3653051d": {
+ "name": "Satisfaction",
+ "author": "Benny Benassi",
+ "url": "https://www.youtube.com/watch?v=a0fkNdPiIL4",
+ "source_type": "Youtube"
+ },
+ "bf529d54-1ad0-4396-84c7-82bd7fe495c6": {
+ "name": "P.R.O.T.E.C.T.T.R.A.N.S.K.I.D.S.",
+ "author": "Cheap Dirty Horse",
+ "url": "https://open.spotify.com/track/1ytHY16pP1P6A2noeiPXuU",
+ "source_type": "Spotify"
+ },
+ "795b22ae-d19e-4571-a5d7-fba5a66d5b6e": {
+ "name": "PLAIN WHITE TEE",
+ "author": "ROMANCEPLANET",
+ "url": "https://www.youtube.com/watch?v=tdVQbNwjGac",
+ "source_type": "Youtube"
+ },
+ "22f18d88-fb39-4cec-98be-02d4ebe3a6ee": {
+ "name": "Party maker",
+ "author": "MUTA",
+ "url": "https://www.youtube.com/watch?v=LT9VNK1aCXY",
+ "source_type": "Youtube"
+ },
+ "009b9458-3205-4b13-9c65-03f16fea2293": {
+ "name": "Whiskey Cola Lietuviskai (sultys degtinele) remix",
+ "author": "L1GHT CASH",
+ "url": "https://www.youtube.com/watch?v=YVaqDaf1KXU",
+ "source_type": "Youtube"
+ },
+ "ec3edf2d-1e19-4c71-8f5c-e53d9cd06c3b": {
+ "name": "Cigarette Daydreams",
+ "author": "Cage The Elephant",
+ "url": "https://open.spotify.com/track/6jHvX8ZnHKC1PnrPMJ0Emt",
+ "source_type": "Spotify"
+ },
+ "c7867d88-60f2-483b-b435-883d4ff5b2f9": {
+ "name": "Alien Blues",
+ "author": "Vundabar",
+ "url": "https://open.spotify.com/track/11iIikXxC6NP0Ma8vMD27x",
+ "source_type": "Spotify"
+ },
+ "eadbd827-0f71-4401-97bd-d11c365c3243": {
+ "name": "I Only See Things I Dont Have",
+ "author": "Fidde",
+ "url": "https://www.youtube.com/watch?v=vX_Ye_ZzI-Y",
+ "source_type": "Youtube"
+ },
+ "d617c8c2-6237-40c4-8b47-b612a93c3689": {
+ "name": "vse shto nas ne Ubivaet",
+ "author": "Pimp Schwab",
+ "url": "https://www.youtube.com/watch?v=NTEXFyUE9Ww",
+ "source_type": "Youtube"
+ },
+ "abd6a036-f17a-4a6a-8420-2cc3e7e4a181": {
+ "name": "Ten kazkur giliai",
+ "author": "SEL",
+ "url": "https://youtu.be/N7YNlegeiqs?si=9BBH6hjrgOjJ01Nz",
+ "source_type": "Youtube"
+ },
+ "9fabb799-f6aa-45a0-93b7-8cb08ab8f0a8": {
+ "name": "16 metu",
+ "author": "69 Danguje",
+ "url": "https://www.youtube.com/watch?v=nwjoqPcUPrw",
+ "source_type": "Youtube"
+ },
+ "eb91fc63-4e0e-49e9-99c7-ea7fe5770a5b": {
+ "name": "LEDINE",
+ "author": "Depresinis",
+ "url": "https://www.youtube.com/watch?v=qugvChkXMLk",
+ "source_type": "Youtube"
+ },
+ "03f406b5-d5e9-4d22-b9bc-d0b36354400a": {
+ "name": "Diskoteka is 90 hit",
+ "author": "Raim & Artur feat. Zhenis",
+ "url": "https://www.youtube.com/watch?v=GfBhxlNhrn0",
+ "source_type": "Youtube"
+ },
+ "d01635a4-1a28-4d86-a524-9876eb3094de": {
+ "name": "VAIKAI PO LELIJOM (REMIX)",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=k1amBbsAZuo",
+ "source_type": "Youtube"
+ },
+ "59c20651-6ffe-493d-886b-ccd8b7fe6dee": {
+ "name": "EVERYTHING WHAT",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=Gjdsq4kc5cA",
+ "source_type": "Youtube"
+ },
+ "4a7b1853-7529-498d-addf-25e894a37ccf": {
+ "name": "Temptation",
+ "author": "Arash",
+ "url": "https://www.youtube.com/watch?v=6X3ZJh762-I",
+ "source_type": "Youtube"
+ },
+ "bcb9af16-7bdb-458a-b092-42225abf2645": {
+ "name": "LEDUKAI",
+ "author": "Depresinis feat. Deivas",
+ "url": "https://www.youtube.com/watch?v=R2-MtpkKgGI",
+ "source_type": "Youtube"
+ },
+ "8dca8d6c-3388-4133-b773-79b9f076e467": {
+ "name": "0,7",
+ "author": "Depresinis feat. Deivas",
+ "url": "https://www.youtube.com/watch?v=rjwFjBgTzAA",
+ "source_type": "Youtube"
+ },
+ "fc3f499b-2c33-41d0-b79c-ca68486b2a4d": {
+ "name": "Blaue Augen",
+ "author": "08 Blumchen",
+ "url": "https://www.youtube.com/watch?v=mE4PZcUfiwE",
+ "source_type": "Youtube"
+ },
+ "6a00704f-6da9-44d7-8fee-75cf487036f0": {
+ "name": "Lovoj Vezi",
+ "author": "Tipo grupe",
+ "url": "https://www.youtube.com/watch?v=M3zVMzWCy_c",
+ "source_type": "Youtube"
+ },
+ "ee1e8d12-75ac-43f7-bf85-a1b69eb66e86": {
+ "name": "Vanished",
+ "author": "Crystal Castles",
+ "url": "https://open.spotify.com/track/3gGMsx3jxYKfhXq8LMj1tz",
+ "source_type": "Spotify"
+ },
+ "d8e93863-6102-4cda-a0b2-3728d20c9cf8": {
+ "name": "dashstar",
+ "author": "Knock2",
+ "url": "https://www.youtube.com/watch?v=58ml5b_On6w",
+ "source_type": "Youtube"
+ },
+ "7832d70f-2af3-417f-88dd-e193622ac599": {
+ "name": "DZIEWCZYNO Z TIKTOKA",
+ "author": "DR. VODKA",
+ "url": "https://www.youtube.com/watch?v=HLbw1WQt64o",
+ "source_type": "Youtube"
+ },
+ "75c6e1aa-21c7-4626-9def-602d656282bc": {
+ "name": "Ka Tu Ka Vakare",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=6SOS4ljHbJY",
+ "source_type": "Youtube"
+ },
+ "eaf1cc63-3eb6-4d86-a986-e8129fff7fcb": {
+ "name": "Zalia Siera",
+ "author": "DJ Dalgis",
+ "url": "https://www.youtube.com/watch?v=nfentq_pez4",
+ "source_type": "Youtube"
+ },
+ "0c5a22fc-2a61-4171-a5b9-f24da0c71466": {
+ "name": "As ziuriu i tave pasauli",
+ "author": "SEL",
+ "url": "https://youtu.be/_SPDjl80kKw",
+ "source_type": "Youtube"
+ },
+ "8bf09666-9aba-4c71-a58a-a64200d49f9e": {
+ "name": "Cloud 9",
+ "author": "Beach Bunny",
+ "url": "https://open.spotify.com/track/6vFsBXYczYsP0H3lgunZOm",
+ "source_type": "Spotify"
+ },
+ "8c641f7f-e151-4abc-932c-a9895823a278": {
+ "name": "Nevaidink",
+ "author": "SixthBoi",
+ "url": "https://www.youtube.com/watch?v=nOTNnnrqTII",
+ "source_type": "Youtube"
+ },
+ "6f28b04a-588e-4a81-8b4e-aa4ed4f88e31": {
+ "name": "Pavasaris",
+ "author": "Depresinis feat. Deivas",
+ "url": "https://www.youtube.com/watch?v=yWWAucfQdN4",
+ "source_type": "Youtube"
+ },
+ "e9495391-8a6c-4942-9dc6-09b764f9d1e9": {
+ "name": "Zalias Pasas",
+ "author": "Zas",
+ "url": "https://www.youtube.com/watch?v=SZA7IjlCfyI",
+ "source_type": "Youtube"
+ },
+ "20945b3f-e9d6-4023-9a97-4a04424cc8a3": {
+ "name": "Basket Case",
+ "author": "Green Day",
+ "url": "https://www.youtube.com/watch?v=wZ8eZRxFA-0",
+ "source_type": "Youtube"
+ },
+ "7d232736-f977-4645-bd64-106e94f91bb0": {
+ "name": "Judam Lietuvoj",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=WDzWSEgSy5U",
+ "source_type": "Youtube"
+ },
+ "e71a61d4-b54a-47d1-b0ad-db6695bd0739": {
+ "name": "Hey Lover!",
+ "author": "Wabie",
+ "url": "https://open.spotify.com/track/7rC3P7tpWriaC4hYWKwGQd",
+ "source_type": "Spotify"
+ },
+ "9000f22e-83ff-4261-be0c-625fe1d806ab": {
+ "name": "MAMA MANE RODYS PER FARUS",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=F5HqXYRDZaE",
+ "source_type": "Youtube"
+ },
+ "8e8c3f6c-e34b-4f4e-b9be-f36be5901435": {
+ "name": "biznis",
+ "author": "PROFLAME",
+ "url": "https://www.youtube.com/watch?v=t139Vd83pgs",
+ "source_type": "Youtube"
+ },
+ "2e9ef729-1560-446c-af6a-8a9d4c43ac9a": {
+ "name": "Big Sis",
+ "author": "SALES",
+ "url": "https://open.spotify.com/track/0ARp9mXXpPflIwehy25kCa",
+ "source_type": "Spotify"
+ },
+ "4a56c71c-70f0-45e7-a9b8-2304d41e1877": {
+ "name": "Big Jet Plane",
+ "author": "Restricted",
+ "url": "https://www.youtube.com/watch?v=NpVF0z5N-tE",
+ "source_type": "Youtube"
+ },
+ "c28f14ca-ec10-469a-b0cc-3e26e9f56007": {
+ "name": "VASARA ZJBS",
+ "author": "Depresinis & MERAKI2004",
+ "url": "https://www.youtube.com/watch?v=BD-pBjRy-5A",
+ "source_type": "Youtube"
+ },
+ "3ea2a490-749f-4956-b7ef-bb0c428663a9": {
+ "name": "Dabar Geriausi Musu Vakarai",
+ "author": "Vilija ir Marijonas mikutavicius",
+ "url": "https://www.youtube.com/watch?v=MPnZkEscWo0",
+ "source_type": "Youtube"
+ },
+ "4e903bfb-e9bf-49dc-a299-e08949ab78f9": {
+ "name": "DANCE",
+ "author": "ROMANCEPLANET",
+ "url": "https://www.youtube.com/watch?v=ircOfMb4gEw",
+ "source_type": "Youtube"
+ },
+ "b0c0d44c-86ca-4b80-a081-734a4178c870": {
+ "name": "After Marvins Dance (Marvin Gaye's 'After The Dance' Edit)",
+ "author": "Bauhouse",
+ "url": "https://www.youtube.com/watch?v=J-cgyYiExh8",
+ "source_type": "Youtube"
+ },
+ "16dafb40-ebac-4e04-961a-99d79789f1a3": {
+ "name": "Topine Panele",
+ "author": "Wenona Waves",
+ "url": "https://www.youtube.com/watch?v=MPHuhmUomfE",
+ "source_type": "Youtube"
+ },
+ "e37c6cb6-ad8e-43a7-83d1-8b795db8aa1c": {
+ "name": "Harness Your Hopes",
+ "author": "Pavement",
+ "url": "https://open.spotify.com/track/4vsoWZcvtvSsE0OiVvDDvX",
+ "source_type": "Spotify"
+ },
+ "a6a20f00-cbf9-4506-9655-d6fd27944fea": {
+ "name": "Rhodes Trip",
+ "author": "THEOS",
+ "url": "https://www.youtube.com/watch?v=m7guRO0Uz_c",
+ "source_type": "Youtube"
+ },
+ "4b61344d-fa89-4b79-bd45-3b1fc8c8cc1c": {
+ "name": "Rycka klipas",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=nuTUDSQ3BBI",
+ "source_type": "Youtube"
+ },
+ "9e6095bb-8b05-40eb-b5d3-b6410ac65171": {
+ "name": "C'est Beau La Bourgeoisie",
+ "author": "Discobitch",
+ "url": "https://www.youtube.com/watch?v=RCeQN2aEWxo",
+ "source_type": "Youtube"
+ },
+ "9d482849-d488-4222-adc0-727f92babcab": {
+ "name": "Jau Nutilo Sirgaliai",
+ "author": "Ciulpuoneliai",
+ "url": "https://www.youtube.com/watch?v=s8qIVA1U0C0",
+ "source_type": "Youtube"
+ },
+ "98b04764-39cc-4c82-a2e2-420dd85573ca": {
+ "name": "Tarp amzinybes",
+ "author": "SEL",
+ "url": "https://youtu.be/UfPj-0QpGFA",
+ "source_type": "Youtube"
+ },
+ "6d78099b-042c-4b19-b3d9-15af1bf4ef10": {
+ "name": "JUODA ORCHIDEJA",
+ "author": "MG INTERNATIONAL",
+ "url": "https://www.youtube.com/watch?v=HQvceFRBq9M",
+ "source_type": "Youtube"
+ },
+ "201c6680-7dcf-4d75-8bdc-76ff9a715167": {
+ "name": "Gyvenimo man vieno neuztenka",
+ "author": "SEL",
+ "url": "https://youtu.be/7Gd9XaEG5o4",
+ "source_type": "Youtube"
+ },
+ "80a169ba-f711-408c-834c-744bac3660ca": {
+ "name": "If Theres A Heaven I Wanna See It",
+ "author": "Fidde",
+ "url": "https://www.youtube.com/watch?v=l2Nw7cIh7qg",
+ "source_type": "Youtube"
+ },
+ "83808446-bd43-4140-86ff-853fea897a89": {
+ "name": "Bla Bla Bla",
+ "author": "Gigi D'Agostino",
+ "url": "https://www.youtube.com/watch?v=yKapqR2XRJE",
+ "source_type": "Youtube"
+ },
+ "81426b49-3511-4e48-be21-3c24acba0fb9": {
+ "name": "Kernkraft 400",
+ "author": "Zombie Nation",
+ "url": "https://www.youtube.com/watch?v=z5LW07FTJbI",
+ "source_type": "Youtube"
+ },
+ "d563619a-344e-41cf-99d1-5a52214ada49": {
+ "name": "Sports",
+ "author": "Beach Bunny",
+ "url": "https://open.spotify.com/track/77G0k1La0c5Dw8bAFANcyp",
+ "source_type": "Spotify"
+ },
+ "615d63ee-51aa-4ac2-b826-9a41f59b8622": {
+ "name": "I Love It",
+ "author": "Icona Pop",
+ "url": "https://www.youtube.com/watch?v=UxxajLWwzqY",
+ "source_type": "Youtube"
+ },
+ "afdc69fa-c2ee-4dee-9794-e3166fc9dd20": {
+ "name": "Pedro (Jaxomy & Agatino Romero Remix)",
+ "author": "Raffaella Carra",
+ "url": "https://www.youtube.com/watch?v=AIGnRc7F86Q",
+ "source_type": "Youtube"
+ },
+ "2bd2e64e-28f0-4bd7-aee3-e1d27ed0797d": {
+ "name": "In the End",
+ "author": "Linkin Park",
+ "url": "https://open.spotify.com/track/60a0Rd6pjrkxjPbaKzXjfq",
+ "source_type": "Spotify"
+ },
+ "9d7a0837-04d4-40f7-92dc-48c7db70be51": {
+ "name": "As Judu",
+ "author": "Adomas Vysniauskas",
+ "url": "https://www.youtube.com/watch?v=dMm16TzZrjg",
+ "source_type": "Youtube"
+ },
+ "cd72e9db-aaa4-485e-b3a5-7fbeed2cff36": {
+ "name": "I.M.P Jingle (From \"Helluva Boss\")",
+ "author": "Geek Music",
+ "url": "https://open.spotify.com/track/5x0bvS385Ata1irjLMyLTn",
+ "source_type": "Spotify"
+ },
+ "870502f1-e3a9-419b-9ba6-d8100d1198a5": {
+ "name": "Is Leto Leidziasi Saule",
+ "author": "Jovani, Karaliska Erdve",
+ "url": "https://www.youtube.com/watch?v=VqSu8iG1_DE",
+ "source_type": "Youtube"
+ },
+ "d8423579-1225-4865-9955-149e6878b59d": {
+ "name": "Black Sabbath",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=BOTIIw76qiE",
"source_type": "Youtube"
},
"ea41c37c-7b62-4fd6-9fec-650e94d184f2": {
@@ -774,154 +780,112 @@
"url": "https://www.youtube.com/watch?v=9qHLELnq1B0",
"source_type": "Youtube"
},
- "b23f9b7f-1668-43f0-a1bd-9471759db18f": {
- "name": "Juda Tavo rankos",
- "author": "Elektra",
- "url": "https://www.youtube.com/watch?v=k2RuDoudnOE",
+ "4cf5e323-5e79-4471-816a-5fa345854cea": {
+ "name": "rytmecio rasos",
+ "author": "nemuno krantai",
+ "url": "https://www.youtube.com/watch?v=2-fGbsrofv4",
"source_type": "Youtube"
},
- "858d8645-8637-4d3f-b4b7-c9c75743d90a": {
- "name": "Dviratukas",
- "author": "Eugenijus Ostapenko",
- "url": "https://www.youtube.com/watch?v=ILFHZQK33Mw",
+ "7f2b2809-1b38-45b5-876c-cbdb42b26bdf": {
+ "name": "Volkswagina",
+ "author": "Depresinis",
+ "url": "https://www.youtube.com/watch?v=1lZR1VKsQHo",
"source_type": "Youtube"
},
- "1a22e35a-0af1-4326-b59c-00d59504446b": {
- "name": "Virs debesu",
- "author": "Andzikas",
- "url": "https://www.youtube.com/watch?v=PHJcVGhxra8",
+ "2b19ae9f-2321-41fc-8a1f-2bb4c2975380": {
+ "name": "Malunas Prie Kelio",
+ "author": "VainHouse",
+ "url": "https://www.youtube.com/watch?v=bbwuNjDXCiM",
"source_type": "Youtube"
},
- "65fe7b10-2395-47f4-b920-089fe0d129ac": {
- "name": "Kelyje",
- "author": "Kastaneda",
- "url": "https://www.youtube.com/watch?v=JVE6NQqKPL4",
- "source_type": "Youtube"
- },
- "6dd614cd-ba76-483c-bf6d-26eb1f3b6f1a": {
- "name": "99 Red Balloons",
- "author": "Nena",
- "url": "https://open.spotify.com/track/7p8HVe22aGW1XtO1hoDHGo",
+ "3d543d58-e33d-4158-9956-049309baa35c": {
+ "name": "Movin' Out (Anthony's Song)",
+ "author": "Billy Joel",
+ "url": "https://open.spotify.com/track/16GUMo6u3D2qo9a19AkYct",
"source_type": "Spotify"
},
+ "41a8d7c8-4b75-46f6-9940-7f0b8f5f5feb": {
+ "name": "Beggin' (Techno)",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=tXPs1FwW6lk",
+ "source_type": "Youtube"
+ },
+ "18c2b9bc-6403-4a67-94bd-1e9f5413d83b": {
+ "name": "Skrendu",
+ "author": "SEL",
+ "url": "https://youtu.be/G5Q_asvrXlA",
+ "source_type": "Youtube"
+ },
+ "c72768c0-1f2e-4992-b66f-e569c572435a": {
+ "name": "Nezinau, Kodel...",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=A-i2CkCnPoc",
+ "source_type": "Youtube"
+ },
+ "9ef33d55-972d-490c-95c6-bf046bf4f979": {
+ "name": "MONEY ON THE DASH",
+ "author": "Unknown",
+ "url": "https://open.spotify.com/track/6nVEV8CIU4dw12oVZbKJtl",
+ "source_type": "Spotify"
+ },
+ "484b9560-731b-447d-9e7f-3d32eb68b05f": {
+ "name": "Freed from Desire",
+ "author": "Drenchill",
+ "url": "https://www.youtube.com/watch?v=6b6FBneAENQ",
+ "source_type": "Youtube"
+ },
+ "83b50be2-c286-4dcc-9e7f-cacf5e4031fe": {
+ "name": "Not Fair",
+ "author": "Lily Allen",
+ "url": "https://www.youtube.com/watch?v=WON_YIbeLis",
+ "source_type": "Youtube"
+ },
+ "7e32803d-a5a9-453c-8c81-b479c51e5bc9": {
+ "name": "Looking Out for You",
+ "author": "Joy Again",
+ "url": "https://open.spotify.com/track/3jfZ9M23l0L7RxzYMTgBTv",
+ "source_type": "Spotify"
+ },
+ "22565196-5757-4767-8f1f-f1c9b8a87dcc": {
+ "name": "I WAS MADE FOR LOVIN' YOU (TECHNO)",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=asVznhccYao",
+ "source_type": "Youtube"
+ },
+ "be09f147-cda5-4e5f-ac29-eef9c3a7414f": {
+ "name": "Blue Monday",
+ "author": "MOGUAI, Tim Hox, Iggy",
+ "url": "https://open.spotify.com/track/4vAP9OY2Ci79fUCuc9EBdD",
+ "source_type": "Spotify"
+ },
+ "0b907d17-e3f9-4dbb-9c2d-e10327316f6e": {
+ "name": "UZ MUS IR JUS",
+ "author": "Mr.Bullet",
+ "url": "https://www.youtube.com/watch?v=85q_7jXEgH8",
+ "source_type": "Youtube"
+ },
+ "e1cb8b00-713b-4a0e-bc61-dbf2d2596fcf": {
+ "name": "Tik Tok",
+ "author": "SEL",
+ "url": "https://youtu.be/RkaIUateIxg",
+ "source_type": "Youtube"
+ },
+ "50186034-e8b4-4778-81e3-ab327e54dbff": {
+ "name": "We Are The People",
+ "author": "Empire Of The Sun, southstar",
+ "url": "https://www.youtube.com/watch?v=qguEGR5BK2k",
+ "source_type": "Youtube"
+ },
"2374179d-d6a8-41b9-9cac-21147303fc8e": {
"name": "Nebenoriu Laukt",
"author": "Dzordana Butkute",
"url": "https://www.youtube.com/watch?v=_AozFrAqNMk",
"source_type": "Youtube"
},
- "47f2a63e-e9eb-48df-a61b-dbcdfa3aaf35": {
- "name": "Everlong",
- "author": "Foo Fighters",
- "url": "https://open.spotify.com/track/5UWwZ5lm5PKu6eKsHAGxOk",
- "source_type": "Spotify"
- },
- "4f368ef5-08d0-4d1f-b8ba-a34ee9fc6aa2": {
- "name": "Blizgantys Naikai",
- "author": "SADBOY",
- "url": "https://www.youtube.com/watch?v=p5KsYJGcfOM",
- "source_type": "Youtube"
- },
- "8858c7a1-ea6d-409b-9fc3-7256a39d4d8b": {
- "name": "PENKTADIENIS",
- "author": "NIERKA",
- "url": "https://www.youtube.com/watch?v=h3TuZj_OAf0",
- "source_type": "Youtube"
- },
- "2b33d0b1-aecb-4ff9-841a-3a7b2861f28d": {
- "name": "Degtine",
- "author": "Grupiokai",
- "url": "https://www.youtube.com/watch?v=8SqbG2VmEFw",
- "source_type": "Youtube"
- },
- "6f28b04a-588e-4a81-8b4e-aa4ed4f88e31": {
- "name": "Pavasaris",
- "author": "Depresinis feat. Deivas",
- "url": "https://www.youtube.com/watch?v=yWWAucfQdN4",
- "source_type": "Youtube"
- },
- "fa7d62b1-2f9a-4499-b07b-ac3127c0f69f": {
- "name": "Mano Skonis Sokolado (Matuze & Arnisxd Remix)",
- "author": "Sokoledas",
- "url": "https://soundcloud.com/matuze/sokoledas-mano-skonis-sokolado-matuze-arnisxd-remix",
- "source_type": "Soundcloud"
- },
- "c374f3c2-b498-49b3-88c5-a2e6e741e1e8": {
- "name": "Leisk",
- "author": "SEL",
- "url": "https://youtu.be/DDPmFMrffXQ",
- "source_type": "Youtube"
- },
- "20945b3f-e9d6-4023-9a97-4a04424cc8a3": {
- "name": "Basket Case",
- "author": "Green Day",
- "url": "https://www.youtube.com/watch?v=wZ8eZRxFA-0",
- "source_type": "Youtube"
- },
- "615d63ee-51aa-4ac2-b826-9a41f59b8622": {
- "name": "I Love It",
- "author": "Icona Pop",
- "url": "https://www.youtube.com/watch?v=UxxajLWwzqY",
- "source_type": "Youtube"
- },
- "5015106c-abcb-45c2-aed3-1f28674f92f6": {
- "name": "Dance For Me",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=5DTSvGO_944",
- "source_type": "Youtube"
- },
- "76f7945f-e677-4297-a98a-708314f92de8": {
- "name": "Kanikuli",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=GNMiDZTL7jo",
- "source_type": "Youtube"
- },
- "6c3f2503-0160-4c42-8b17-25ff402f3fa7": {
- "name": "Visky Kola karaleva trans pola",
- "author": "Dzaro and hansa",
- "url": "https://www.youtube.com/watch?v=fflrMvZ2HtA",
- "source_type": "Youtube"
- },
- "0679475a-259c-4c98-9ae7-a58c10dfeedb": {
- "name": "New Flesh",
- "author": "Current Joys",
- "url": "https://open.spotify.com/track/6HJxxqHWMdidwTVZmZWeHU",
- "source_type": "Spotify"
- },
- "4a56c71c-70f0-45e7-a9b8-2304d41e1877": {
- "name": "Big Jet Plane",
- "author": "Restricted",
- "url": "https://www.youtube.com/watch?v=NpVF0z5N-tE",
- "source_type": "Youtube"
- },
- "d563619a-344e-41cf-99d1-5a52214ada49": {
- "name": "Sports",
- "author": "Beach Bunny",
- "url": "https://open.spotify.com/track/77G0k1La0c5Dw8bAFANcyp",
- "source_type": "Spotify"
- },
- "4c849092-b6c4-450c-b69c-304e54f63611": {
- "name": "Deginam",
- "author": "SADBOY",
- "url": "https://www.youtube.com/watch?v=w3R0Aq1EGXg",
- "source_type": "Youtube"
- },
- "75c6e1aa-21c7-4626-9def-602d656282bc": {
- "name": "Ka Tu Ka Vakare",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=6SOS4ljHbJY",
- "source_type": "Youtube"
- },
- "73ddd372-4853-4182-b212-b021e7dc8988": {
- "name": "Parukom",
- "author": "Tnn",
- "url": "https://www.youtube.com/watch?v=v9pBZK2RIPI",
- "source_type": "Youtube"
- },
- "1e77552d-702f-4c61-8e9f-bd02bbafe434": {
- "name": "Morning Sex (Mochakk Remix)",
- "author": "Ralph Castelli",
- "url": "https://www.youtube.com/watch?v=6bCwJ_TIDG4",
+ "3b2573d4-2e1b-4446-a377-5fcb2b0a70c5": {
+ "name": "18 mne uze",
+ "author": "Ruki Verch",
+ "url": "https://www.youtube.com/watch?v=Hxab_Sr132o",
"source_type": "Youtube"
},
"e53d24bf-930d-490a-b41b-9b3382e24e3c": {
@@ -930,64 +894,154 @@
"url": "https://www.youtube.com/watch?v=Pxve7CwiCHM",
"source_type": "Youtube"
},
- "92561031-92ae-471a-b154-8519c715011d": {
- "name": "On The Rob",
- "author": "Cheap Dirty Horse",
- "url": "https://open.spotify.com/track/2kZ2fD3ohaGhDHMBTAppto",
- "source_type": "Spotify"
- },
- "0ee56450-2942-4805-9f08-b49652472258": {
- "name": "Tricky Disco",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=t78qVdbAiXw",
- "source_type": "Youtube"
- },
- "0e969066-b7f9-4e60-a24f-989aad28dfac": {
- "name": "Svajoklis",
- "author": "Vairas",
- "url": "https://www.youtube.com/watch?v=hs8_KTV0Vrw",
- "source_type": "Youtube"
- },
- "c7867d88-60f2-483b-b435-883d4ff5b2f9": {
- "name": "Alien Blues",
- "author": "Vundabar",
- "url": "https://open.spotify.com/track/11iIikXxC6NP0Ma8vMD27x",
- "source_type": "Spotify"
- },
- "9d93859c-dae3-4c03-8f8d-d4f6bc0e287e": {
- "name": "Jealous",
- "author": "Eyedress",
- "url": "https://open.spotify.com/track/1aXV8GrmQLvgoFtBPERP7E",
- "source_type": "Spotify"
- },
- "dc6c36b0-f595-457f-8fc3-641710b0e3b9": {
- "name": "I Pajuri",
- "author": "Mercy Dance",
- "url": "https://www.youtube.com/watch?v=RPpkMh47l9w",
- "source_type": "Youtube"
- },
"56684f28-ff1a-4f65-a585-e9ea532babb2": {
"name": "AUDI",
"author": "MC ENDRAY",
"url": "https://www.youtube.com/watch?v=oIjNoMGEuRg",
"source_type": "Youtube"
},
- "88fe04aa-a7be-4f6c-b32f-d3d25e58bbf8": {
- "name": "Because I Got High",
- "author": "Afroman",
- "url": "https://www.youtube.com/watch?v=WeYsTmIzjkw",
+ "73ddd372-4853-4182-b212-b021e7dc8988": {
+ "name": "Parukom",
+ "author": "Tnn",
+ "url": "https://www.youtube.com/watch?v=v9pBZK2RIPI",
"source_type": "Youtube"
},
- "90ae639e-0214-4a8e-b582-4949674ffaa2": {
- "name": "Coco Jumbo",
- "author": "Mr President",
- "url": "https://www.youtube.com/watch?v=cOrc37wNUqU",
+ "60214f0e-9a37-49b4-92bf-b7b548e501ad": {
+ "name": "Uzmerkiu akis",
+ "author": "SEL",
+ "url": "https://youtu.be/SdWj06XRZms?si=9TNGzjK9ITom-jaD",
"source_type": "Youtube"
},
- "2c650e29-9f87-4253-8074-146f3653051d": {
- "name": "Satisfaction",
- "author": "Benny Benassi",
- "url": "https://www.youtube.com/watch?v=a0fkNdPiIL4",
+ "95a3350c-c62f-4543-8cfe-6c512861b229": {
+ "name": "Ryk Zuvedra ryk",
+ "author": "Zilviokas",
+ "url": "https://www.youtube.com/watch?v=eN6BOI7UlSE",
+ "source_type": "Youtube"
+ },
+ "6895e921-91f2-4713-b604-c2cdd9f3f1c2": {
+ "name": "We Didn’t Start The Fire",
+ "author": "Fall Out Boy",
+ "url": "https://open.spotify.com/track/60glT2wsoSHV3B8yCRSB8v",
+ "source_type": "Spotify"
+ },
+ "407155fd-3174-4778-ae93-bb01b7518f9f": {
+ "name": "Cia Mano Rojus",
+ "author": "Robertas Kupstas",
+ "url": "https://www.youtube.com/watch?v=xij_YeEInr8",
+ "source_type": "Youtube"
+ },
+ "a0bd5ffe-4be8-498e-8f43-c5a9505a4872": {
+ "name": "Ten kur sapnai",
+ "author": "SEL",
+ "url": "https://youtu.be/GDj3NgjDbRo",
+ "source_type": "Youtube"
+ },
+ "05a28184-e58e-42c3-a803-512bb0817a07": {
+ "name": "Vakareja",
+ "author": "Karaliska Erdve",
+ "url": "https://www.youtube.com/watch?v=g0HmrlJ7fhE",
+ "source_type": "Youtube"
+ },
+ "ca765223-e4e6-4b5d-8928-919c3f491b43": {
+ "name": "Kaifuok",
+ "author": "SADBOY",
+ "url": "https://www.youtube.com/watch?v=vclryWgfy8I",
+ "source_type": "Youtube"
+ },
+ "7ed02ac9-cb84-4a34-870d-56b226f0a6be": {
+ "name": "Always Forever",
+ "author": "Cults",
+ "url": "https://open.spotify.com/track/2enPRFda84VE2wtI8c86Uf",
+ "source_type": "Spotify"
+ },
+ "fa339b0b-8d3a-45e7-aed9-f744afb4a666": {
+ "name": "Eik Tu NA",
+ "author": "AVA",
+ "url": "https://www.youtube.com/watch?v=yRf3ijaIgOg",
+ "source_type": "Youtube"
+ },
+ "9be83d96-6dfb-47a0-b58e-a1aed1cf6031": {
+ "name": "Pasitusinam",
+ "author": "NL",
+ "url": "https://www.youtube.com/watch?v=WhSFudvloog",
+ "source_type": "Youtube"
+ },
+ "131ab436-869b-4b3b-8ce4-3b5087d3461f": {
+ "name": "1.9 TDI",
+ "author": "Grupe MX",
+ "url": "https://www.youtube.com/watch?v=8FBr5GQXsI8",
+ "source_type": "Youtube"
+ },
+ "c332ce2b-6b1c-4979-9977-dc00aa6e710b": {
+ "name": "TU ESI MELAGIS (Techno Extended)",
+ "author": "Radvis",
+ "url": "https://www.youtube.com/watch?v=kmvvP7GW_bw",
+ "source_type": "Youtube"
+ },
+ "bc5fe406-040b-4c46-82ce-bb4505b81947": {
+ "name": "i like the way you kiss me",
+ "author": "Artemas",
+ "url": "https://www.youtube.com/watch?v=ODDRRXMi22E",
+ "source_type": "Youtube"
+ },
+ "f81f8f9d-6c56-4ae3-8f5f-28c04632d3b5": {
+ "name": "Kcik 23",
+ "author": "Unknown Artist",
+ "url": "https://www.youtube.com/watch?v=SnnqDdZJpzA",
+ "source_type": "Youtube"
+ },
+ "f1878fda-ecec-4303-a6df-dc6adf1ea3c0": {
+ "name": "Juodas Garvezys (Remix)",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=D-7qQbXHSAw",
+ "source_type": "Youtube"
+ },
+ "639dc5af-b3e6-4d38-a003-80deac01d326": {
+ "name": "Myliu kina",
+ "author": "Zas",
+ "url": "https://www.youtube.com/watch?v=ImFrfmi-qT8",
+ "source_type": "Youtube"
+ },
+ "858d8645-8637-4d3f-b4b7-c9c75743d90a": {
+ "name": "Dviratukas",
+ "author": "Eugenijus Ostapenko",
+ "url": "https://www.youtube.com/watch?v=ILFHZQK33Mw",
+ "source_type": "Youtube"
+ },
+ "6dd614cd-ba76-483c-bf6d-26eb1f3b6f1a": {
+ "name": "99 Red Balloons",
+ "author": "Nena",
+ "url": "https://open.spotify.com/track/7p8HVe22aGW1XtO1hoDHGo",
+ "source_type": "Spotify"
+ },
+ "2b33d0b1-aecb-4ff9-841a-3a7b2861f28d": {
+ "name": "Degtine",
+ "author": "Grupiokai",
+ "url": "https://www.youtube.com/watch?v=8SqbG2VmEFw",
+ "source_type": "Youtube"
+ },
+ "5015106c-abcb-45c2-aed3-1f28674f92f6": {
+ "name": "Dance For Me",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=5DTSvGO_944",
+ "source_type": "Youtube"
+ },
+ "0c77785e-7149-45a7-84a1-a9c8ccaa9f7f": {
+ "name": "Lyja",
+ "author": "SEL",
+ "url": "https://www.youtube.com/watch?v=KL6JBWnXCxw",
+ "source_type": "Youtube"
+ },
+ "190a5577-124a-4232-9e6f-1d0a50f4d881": {
+ "name": "Cheri cheri lady",
+ "author": "Unknown",
+ "url": "https://www.youtube.com/watch?v=lrIKt5uDWZo",
+ "source_type": "Youtube"
+ },
+ "bd85a9d7-1fb6-4154-a290-e5137590e419": {
+ "name": "I gamta",
+ "author": "Andzikas",
+ "url": "https://www.youtube.com/watch?v=UyLdjC-hihM",
"source_type": "Youtube"
},
"457bc1f5-f804-4665-a595-8e56a6558d1d": {
@@ -996,121 +1050,135 @@
"url": "https://www.youtube.com/watch?v=3Z3_4TknCfQ",
"source_type": "Youtube"
},
- "2bd2e64e-28f0-4bd7-aee3-e1d27ed0797d": {
- "name": "In the End",
- "author": "Linkin Park",
- "url": "https://open.spotify.com/track/60a0Rd6pjrkxjPbaKzXjfq",
+ "df2e369f-2fee-49e5-b52c-33f73c34ffb2": {
+ "name": "Autostrada Vilnius",
+ "author": "16Hz",
+ "url": "https://www.youtube.com/watch?v=ANS2TSegr40",
+ "source_type": "Youtube"
+ },
+ "ae2c4c10-4fac-4d80-a114-81adf209c6a1": {
+ "name": "Kaip Diena",
+ "author": "morre",
+ "url": "https://www.youtube.com/watch?v=6LDgLWCQSSM",
+ "source_type": "Youtube"
+ },
+ "70a80d91-581e-4599-81e6-d047f28e9068": {
+ "name": "Margarita",
+ "author": "Rondo",
+ "url": "https://www.youtube.com/watch?v=rF4w-Rxsiv4",
+ "source_type": "Youtube"
+ },
+ "9866acdd-97ee-4e19-ba20-a64caa9b02ee": {
+ "name": "Where'd All the Time Go?",
+ "author": "Dr. Dog",
+ "url": "https://open.spotify.com/track/0UV5zxRMz6AO4ZwUOZNIKI",
"source_type": "Spotify"
},
- "8bf09666-9aba-4c71-a58a-a64200d49f9e": {
- "name": "Cloud 9",
- "author": "Beach Bunny",
- "url": "https://open.spotify.com/track/6vFsBXYczYsP0H3lgunZOm",
- "source_type": "Spotify"
- },
- "6bfe21f8-b6e5-409b-b6cb-a5692f6dfeeb": {
- "name": "Welcome To The Club",
- "author": "Manian",
- "url": "https://www.youtube.com/watch?v=7F9xDewtgNA",
- "source_type": "Youtube"
- },
- "41a8d7c8-4b75-46f6-9940-7f0b8f5f5feb": {
- "name": "Beggin' (Techno)",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=tXPs1FwW6lk",
- "source_type": "Youtube"
- },
- "afdc69fa-c2ee-4dee-9794-e3166fc9dd20": {
- "name": "Pedro (Jaxomy & Agatino Romero Remix)",
- "author": "Raffaella Carra",
- "url": "https://www.youtube.com/watch?v=AIGnRc7F86Q",
- "source_type": "Youtube"
- },
- "d01635a4-1a28-4d86-a524-9876eb3094de": {
- "name": "VAIKAI PO LELIJOM (REMIX)",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=k1amBbsAZuo",
- "source_type": "Youtube"
- },
- "83ff90a9-4a19-4a66-a452-c2bafdfb884b": {
- "name": "You're My Heart, You're My Soul",
- "author": "Modern Talking",
- "url": "https://www.youtube.com/watch?v=4kHl4FoK1Ys",
- "source_type": "Youtube"
- },
- "83808446-bd43-4140-86ff-853fea897a89": {
- "name": "Bla Bla Bla",
- "author": "Gigi D'Agostino",
- "url": "https://www.youtube.com/watch?v=yKapqR2XRJE",
- "source_type": "Youtube"
- },
- "eaf1cc63-3eb6-4d86-a986-e8129fff7fcb": {
- "name": "Zalia Siera",
- "author": "DJ Dalgis",
- "url": "https://www.youtube.com/watch?v=nfentq_pez4",
- "source_type": "Youtube"
- },
- "eb08806a-5fe3-46d7-a989-89f6a55187cc": {
- "name": "Tailwhip (Lewii Edit)",
- "author": "Men I Trust",
- "url": "https://www.youtube.com/watch?v=XhyM-JUWwWQ",
- "source_type": "Youtube"
- },
- "6a00704f-6da9-44d7-8fee-75cf487036f0": {
- "name": "Lovoj Vezi",
- "author": "Tipo grupe",
- "url": "https://www.youtube.com/watch?v=M3zVMzWCy_c",
- "source_type": "Youtube"
- },
- "59c20651-6ffe-493d-886b-ccd8b7fe6dee": {
- "name": "EVERYTHING WHAT",
- "author": "Unknown",
- "url": "https://www.youtube.com/watch?v=Gjdsq4kc5cA",
- "source_type": "Youtube"
- },
- "017e1086-7ca7-4788-834d-5490e0cf8276": {
- "name": "Mersas",
- "author": "Tweaxx",
- "url": "https://www.youtube.com/watch?v=7ljAzgALPdA",
- "source_type": "Youtube"
- },
- "f5a31a44-fc62-4cce-b65e-05e4085864fe": {
- "name": "End of Beginning",
- "author": "Djo",
- "url": "https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD",
- "source_type": "Spotify"
- },
- "862ddd87-68c4-4bed-a8cd-0e2021a0ce79": {
- "name": "Renee",
- "author": "SALES",
- "url": "https://open.spotify.com/track/5MeUMSRreLHYLhw8ZTyqpk",
- "source_type": "Spotify"
- },
- "60214f0e-9a37-49b4-92bf-b7b548e501ad": {
- "name": "Uzmerkiu akis",
+ "c374f3c2-b498-49b3-88c5-a2e6e741e1e8": {
+ "name": "Leisk",
"author": "SEL",
- "url": "https://youtu.be/SdWj06XRZms?si=9TNGzjK9ITom-jaD",
+ "url": "https://youtu.be/DDPmFMrffXQ",
"source_type": "Youtube"
},
- "98b04764-39cc-4c82-a2e2-420dd85573ca": {
- "name": "Tarp amzinybes",
- "author": "SEL",
- "url": "https://youtu.be/UfPj-0QpGFA",
+ "65fe7b10-2395-47f4-b920-089fe0d129ac": {
+ "name": "Kelyje",
+ "author": "Kastaneda",
+ "url": "https://www.youtube.com/watch?v=JVE6NQqKPL4",
"source_type": "Youtube"
},
- "6d78099b-042c-4b19-b3d9-15af1bf4ef10": {
- "name": "JUODA ORCHIDEJA",
- "author": "MG INTERNATIONAL",
- "url": "https://www.youtube.com/watch?v=HQvceFRBq9M",
+ "8858c7a1-ea6d-409b-9fc3-7256a39d4d8b": {
+ "name": "PENKTADIENIS",
+ "author": "NIERKA",
+ "url": "https://www.youtube.com/watch?v=h3TuZj_OAf0",
+ "source_type": "Youtube"
+ },
+ "192a8655-7dfc-4c4b-b351-87c75cbbe048": {
+ "name": "It Wasn't Me",
+ "author": "Shaggy",
+ "url": "https://www.youtube.com/watch?v=ssVj50ombaM",
+ "source_type": "Youtube"
+ },
+ "a1ab9370-70bc-488d-a78b-5cdc09c82f73": {
+ "name": "Trys Trys Trys",
+ "author": "Riaukenzo",
+ "url": "https://www.youtube.com/watch?v=qJv6GRQCnCk",
"source_type": "Youtube"
}
},
"playlists": {
- "c3ebcdd5-82b6-49b3-a340-dc786a66eee6": {
- "name": "reggea",
+ "8c9d2cf1-6f0b-4ea9-993a-c3193867a914": {
+ "name": "rave",
"author": "Unknown",
"songs": [
- "192a8655-7dfc-4c4b-b351-87c75cbbe048"
+ "59c20651-6ffe-493d-886b-ccd8b7fe6dee",
+ "78d3766c-7d79-43a1-aa37-f680cfd253e0",
+ "7da79c32-9eda-4897-be69-69fb39437404",
+ "0ee56450-2942-4805-9f08-b49652472258"
+ ]
+ },
+ "8e806ac3-63d9-4366-95d6-04f5a0aae31e": {
+ "name": "rusiskos",
+ "author": "Unknown",
+ "songs": [
+ "76f7945f-e677-4297-a98a-708314f92de8",
+ "0491fd9f-149d-4e70-bc5c-0fae9a21d9b0",
+ "4a7b1853-7529-498d-addf-25e894a37ccf",
+ "6c3f2503-0160-4c42-8b17-25ff402f3fa7",
+ "3b2573d4-2e1b-4446-a377-5fcb2b0a70c5",
+ "03f406b5-d5e9-4d22-b9bc-d0b36354400a",
+ "85098bbc-86fa-4da4-b342-d2a512738060",
+ "d617c8c2-6237-40c4-8b47-b612a93c3689",
+ "080d60fb-bdf1-40f3-8b81-967c5ea2fe44"
+ ]
+ },
+ "a906d80f-2028-407e-8263-6eacb53325a2": {
+ "name": "lietuviskos/rave",
+ "author": "Unknown",
+ "songs": [
+ "2b19ae9f-2321-41fc-8a1f-2bb4c2975380",
+ "fa7d62b1-2f9a-4499-b07b-ac3127c0f69f"
+ ]
+ },
+ "4230f218-7de4-463c-a42f-ad05c745de5a": {
+ "name": "techno",
+ "author": "Unknown",
+ "songs": [
+ "3453b523-e1f0-49d3-b60b-5ba063b6c26d",
+ "6bfe21f8-b6e5-409b-b6cb-a5692f6dfeeb",
+ "41a8d7c8-4b75-46f6-9940-7f0b8f5f5feb",
+ "fc3f499b-2c33-41d0-b79c-ca68486b2a4d",
+ "22f18d88-fb39-4cec-98be-02d4ebe3a6ee",
+ "4a56c71c-70f0-45e7-a9b8-2304d41e1877",
+ "5015106c-abcb-45c2-aed3-1f28674f92f6",
+ "2f179aab-c51b-4501-b5d1-8a2e51b19a80",
+ "83b50be2-c286-4dcc-9e7f-cacf5e4031fe",
+ "22565196-5757-4767-8f1f-f1c9b8a87dcc",
+ "83808446-bd43-4140-86ff-853fea897a89",
+ "50186034-e8b4-4778-81e3-ab327e54dbff",
+ "afdc69fa-c2ee-4dee-9794-e3166fc9dd20",
+ "91629850-33e2-4e18-8c37-6eafdfcde3f4",
+ "d8e93863-6102-4cda-a0b2-3728d20c9cf8",
+ "cec368bd-6b4c-4c89-9eeb-1b88bed0efc3"
+ ]
+ },
+ "a37e3c7c-584d-4803-981b-5be9244dd7c1": {
+ "name": "rock",
+ "author": "Unknown",
+ "songs": [
+ "d8423579-1225-4865-9955-149e6878b59d"
+ ]
+ },
+ "cb15d471-58bc-4d5a-9e3c-b13e1433818c": {
+ "name": "pop",
+ "author": "Unknown",
+ "songs": [
+ "83ff90a9-4a19-4a66-a452-c2bafdfb884b",
+ "f3edb436-bf04-4ad5-ad45-684a601846c3",
+ "20945b3f-e9d6-4023-9a97-4a04424cc8a3",
+ "90ae639e-0214-4a8e-b582-4949674ffaa2",
+ "615d63ee-51aa-4ac2-b826-9a41f59b8622",
+ "190a5577-124a-4232-9e6f-1d0a50f4d881",
+ "47001462-76c8-4aee-8ed4-65242600f840"
]
},
"5f2e4043-cb32-4e90-9fb6-69f0466d6398": {
@@ -1129,12 +1197,66 @@
"f81f8f9d-6c56-4ae3-8f5f-28c04632d3b5"
]
},
- "e4203363-48dd-430c-8a63-f997ebe7e2bc": {
- "name": "hip-hop",
+ "ba68f47d-384d-4808-a69d-48c6a85be479": {
+ "name": "electronic",
"author": "Unknown",
"songs": [
- "88fe04aa-a7be-4f6c-b32f-d3d25e58bbf8",
- "484b9560-731b-447d-9e7f-3d32eb68b05f"
+ "81426b49-3511-4e48-be21-3c24acba0fb9",
+ "2c650e29-9f87-4253-8074-146f3653051d",
+ "9ef33d55-972d-490c-95c6-bf046bf4f979"
+ ]
+ },
+ "b633b0c7-8151-4b5c-bf18-a0b8d2f85f27": {
+ "name": "Ours <3",
+ "author": "Unknown",
+ "songs": [
+ "e71a61d4-b54a-47d1-b0ad-db6695bd0739",
+ "bf529d54-1ad0-4396-84c7-82bd7fe495c6",
+ "7e32803d-a5a9-453c-8c81-b479c51e5bc9",
+ "6dd614cd-ba76-483c-bf6d-26eb1f3b6f1a",
+ "9866acdd-97ee-4e19-ba20-a64caa9b02ee",
+ "ee1e8d12-75ac-43f7-bf85-a1b69eb66e86",
+ "5c2ee27e-d564-404a-8259-87d1d336f106",
+ "f5a31a44-fc62-4cce-b65e-05e4085864fe",
+ "7b680328-e576-4185-a5da-3c37de98ca42",
+ "877c24e4-c0c0-4e9c-a553-221e381c8a00",
+ "d563619a-344e-41cf-99d1-5a52214ada49",
+ "92561031-92ae-471a-b154-8519c715011d",
+ "cd72e9db-aaa4-485e-b3a5-7fbeed2cff36",
+ "9d93859c-dae3-4c03-8f8d-d4f6bc0e287e",
+ "bb16708f-0cd7-4918-8014-d374d68acbd2",
+ "be09f147-cda5-4e5f-ac29-eef9c3a7414f",
+ "7ed02ac9-cb84-4a34-870d-56b226f0a6be",
+ "47f2a63e-e9eb-48df-a61b-dbcdfa3aaf35",
+ "e37c6cb6-ad8e-43a7-83d1-8b795db8aa1c",
+ "3d543d58-e33d-4158-9956-049309baa35c",
+ "2e9ef729-1560-446c-af6a-8a9d4c43ac9a",
+ "ec3edf2d-1e19-4c71-8f5c-e53d9cd06c3b",
+ "c7867d88-60f2-483b-b435-883d4ff5b2f9",
+ "cbc90bff-5476-408c-9cc8-afd1af5b536d",
+ "2bd2e64e-28f0-4bd7-aee3-e1d27ed0797d",
+ "08995ab0-2954-4d6b-913e-27609e90b354",
+ "862ddd87-68c4-4bed-a8cd-0e2021a0ce79",
+ "0679475a-259c-4c98-9ae7-a58c10dfeedb",
+ "6895e921-91f2-4713-b604-c2cdd9f3f1c2",
+ "8bf09666-9aba-4c71-a58a-a64200d49f9e"
+ ]
+ },
+ "7d7c0020-7daa-4d85-8aa9-311f24eeb702": {
+ "name": "lietuviskos/sel",
+ "author": "Unknown",
+ "songs": [
+ "60214f0e-9a37-49b4-92bf-b7b548e501ad",
+ "e1cb8b00-713b-4a0e-bc61-dbf2d2596fcf",
+ "abd6a036-f17a-4a6a-8420-2cc3e7e4a181",
+ "a0bd5ffe-4be8-498e-8f43-c5a9505a4872",
+ "201c6680-7dcf-4d75-8bdc-76ff9a715167",
+ "18c2b9bc-6403-4a67-94bd-1e9f5413d83b",
+ "c374f3c2-b498-49b3-88c5-a2e6e741e1e8",
+ "0c5a22fc-2a61-4171-a5b9-f24da0c71466",
+ "0c77785e-7149-45a7-84a1-a9c8ccaa9f7f",
+ "98b04764-39cc-4c82-a2e2-420dd85573ca",
+ "101166d0-1b7c-4d1c-b0ce-35b9a89b0822"
]
},
"2391911d-2d2c-4c33-b8f5-1a6e543512cc": {
@@ -1147,6 +1269,31 @@
"2645c0f2-fade-489a-87ad-261d5d983ef6"
]
},
+ "c3ebcdd5-82b6-49b3-a340-dc786a66eee6": {
+ "name": "reggea",
+ "author": "Unknown",
+ "songs": [
+ "192a8655-7dfc-4c4b-b351-87c75cbbe048"
+ ]
+ },
+ "ff11b5bc-6bf7-4cdd-a47a-023dcc68a8c3": {
+ "name": "alt",
+ "author": "Unknown",
+ "songs": [
+ "4e903bfb-e9bf-49dc-a299-e08949ab78f9",
+ "bc5fe406-040b-4c46-82ce-bb4505b81947",
+ "8fcad64e-bb63-414b-9cad-243f1f4c4293",
+ "795b22ae-d19e-4571-a5d7-fba5a66d5b6e"
+ ]
+ },
+ "e4203363-48dd-430c-8a63-f997ebe7e2bc": {
+ "name": "hip-hop",
+ "author": "Unknown",
+ "songs": [
+ "88fe04aa-a7be-4f6c-b32f-d3d25e58bbf8",
+ "484b9560-731b-447d-9e7f-3d32eb68b05f"
+ ]
+ },
"27afdb2f-2672-43f1-8a55-b7c6bbb7927a": {
"name": "lietuviskos",
"author": "Unknown",
@@ -1232,153 +1379,6 @@
"c72768c0-1f2e-4992-b66f-e569c572435a",
"eaf1cc63-3eb6-4d86-a986-e8129fff7fcb"
]
- },
- "ba68f47d-384d-4808-a69d-48c6a85be479": {
- "name": "electronic",
- "author": "Unknown",
- "songs": [
- "81426b49-3511-4e48-be21-3c24acba0fb9",
- "2c650e29-9f87-4253-8074-146f3653051d",
- "9ef33d55-972d-490c-95c6-bf046bf4f979"
- ]
- },
- "8e806ac3-63d9-4366-95d6-04f5a0aae31e": {
- "name": "rusiskos",
- "author": "Unknown",
- "songs": [
- "76f7945f-e677-4297-a98a-708314f92de8",
- "0491fd9f-149d-4e70-bc5c-0fae9a21d9b0",
- "4a7b1853-7529-498d-addf-25e894a37ccf",
- "6c3f2503-0160-4c42-8b17-25ff402f3fa7",
- "3b2573d4-2e1b-4446-a377-5fcb2b0a70c5",
- "03f406b5-d5e9-4d22-b9bc-d0b36354400a",
- "85098bbc-86fa-4da4-b342-d2a512738060",
- "d617c8c2-6237-40c4-8b47-b612a93c3689",
- "080d60fb-bdf1-40f3-8b81-967c5ea2fe44"
- ]
- },
- "7d7c0020-7daa-4d85-8aa9-311f24eeb702": {
- "name": "lietuviskos/sel",
- "author": "Unknown",
- "songs": [
- "60214f0e-9a37-49b4-92bf-b7b548e501ad",
- "e1cb8b00-713b-4a0e-bc61-dbf2d2596fcf",
- "abd6a036-f17a-4a6a-8420-2cc3e7e4a181",
- "a0bd5ffe-4be8-498e-8f43-c5a9505a4872",
- "201c6680-7dcf-4d75-8bdc-76ff9a715167",
- "18c2b9bc-6403-4a67-94bd-1e9f5413d83b",
- "c374f3c2-b498-49b3-88c5-a2e6e741e1e8",
- "0c5a22fc-2a61-4171-a5b9-f24da0c71466",
- "0c77785e-7149-45a7-84a1-a9c8ccaa9f7f",
- "98b04764-39cc-4c82-a2e2-420dd85573ca",
- "101166d0-1b7c-4d1c-b0ce-35b9a89b0822"
- ]
- },
- "a37e3c7c-584d-4803-981b-5be9244dd7c1": {
- "name": "rock",
- "author": "Unknown",
- "songs": [
- "d8423579-1225-4865-9955-149e6878b59d"
- ]
- },
- "a906d80f-2028-407e-8263-6eacb53325a2": {
- "name": "lietuviskos/rave",
- "author": "Unknown",
- "songs": [
- "2b19ae9f-2321-41fc-8a1f-2bb4c2975380",
- "fa7d62b1-2f9a-4499-b07b-ac3127c0f69f"
- ]
- },
- "4230f218-7de4-463c-a42f-ad05c745de5a": {
- "name": "techno",
- "author": "Unknown",
- "songs": [
- "3453b523-e1f0-49d3-b60b-5ba063b6c26d",
- "6bfe21f8-b6e5-409b-b6cb-a5692f6dfeeb",
- "41a8d7c8-4b75-46f6-9940-7f0b8f5f5feb",
- "fc3f499b-2c33-41d0-b79c-ca68486b2a4d",
- "22f18d88-fb39-4cec-98be-02d4ebe3a6ee",
- "4a56c71c-70f0-45e7-a9b8-2304d41e1877",
- "5015106c-abcb-45c2-aed3-1f28674f92f6",
- "2f179aab-c51b-4501-b5d1-8a2e51b19a80",
- "83b50be2-c286-4dcc-9e7f-cacf5e4031fe",
- "22565196-5757-4767-8f1f-f1c9b8a87dcc",
- "83808446-bd43-4140-86ff-853fea897a89",
- "50186034-e8b4-4778-81e3-ab327e54dbff",
- "afdc69fa-c2ee-4dee-9794-e3166fc9dd20",
- "91629850-33e2-4e18-8c37-6eafdfcde3f4",
- "d8e93863-6102-4cda-a0b2-3728d20c9cf8",
- "cec368bd-6b4c-4c89-9eeb-1b88bed0efc3"
- ]
- },
- "cb15d471-58bc-4d5a-9e3c-b13e1433818c": {
- "name": "pop",
- "author": "Unknown",
- "songs": [
- "83ff90a9-4a19-4a66-a452-c2bafdfb884b",
- "f3edb436-bf04-4ad5-ad45-684a601846c3",
- "20945b3f-e9d6-4023-9a97-4a04424cc8a3",
- "90ae639e-0214-4a8e-b582-4949674ffaa2",
- "615d63ee-51aa-4ac2-b826-9a41f59b8622",
- "190a5577-124a-4232-9e6f-1d0a50f4d881",
- "47001462-76c8-4aee-8ed4-65242600f840"
- ]
- },
- "ff11b5bc-6bf7-4cdd-a47a-023dcc68a8c3": {
- "name": "alt",
- "author": "Unknown",
- "songs": [
- "4e903bfb-e9bf-49dc-a299-e08949ab78f9",
- "bc5fe406-040b-4c46-82ce-bb4505b81947",
- "8fcad64e-bb63-414b-9cad-243f1f4c4293",
- "795b22ae-d19e-4571-a5d7-fba5a66d5b6e"
- ]
- },
- "b633b0c7-8151-4b5c-bf18-a0b8d2f85f27": {
- "name": "Ours <3",
- "author": "Unknown",
- "songs": [
- "e71a61d4-b54a-47d1-b0ad-db6695bd0739",
- "bf529d54-1ad0-4396-84c7-82bd7fe495c6",
- "7e32803d-a5a9-453c-8c81-b479c51e5bc9",
- "6dd614cd-ba76-483c-bf6d-26eb1f3b6f1a",
- "9866acdd-97ee-4e19-ba20-a64caa9b02ee",
- "ee1e8d12-75ac-43f7-bf85-a1b69eb66e86",
- "5c2ee27e-d564-404a-8259-87d1d336f106",
- "f5a31a44-fc62-4cce-b65e-05e4085864fe",
- "7b680328-e576-4185-a5da-3c37de98ca42",
- "877c24e4-c0c0-4e9c-a553-221e381c8a00",
- "d563619a-344e-41cf-99d1-5a52214ada49",
- "92561031-92ae-471a-b154-8519c715011d",
- "cd72e9db-aaa4-485e-b3a5-7fbeed2cff36",
- "9d93859c-dae3-4c03-8f8d-d4f6bc0e287e",
- "bb16708f-0cd7-4918-8014-d374d68acbd2",
- "be09f147-cda5-4e5f-ac29-eef9c3a7414f",
- "7ed02ac9-cb84-4a34-870d-56b226f0a6be",
- "47f2a63e-e9eb-48df-a61b-dbcdfa3aaf35",
- "e37c6cb6-ad8e-43a7-83d1-8b795db8aa1c",
- "3d543d58-e33d-4158-9956-049309baa35c",
- "2e9ef729-1560-446c-af6a-8a9d4c43ac9a",
- "ec3edf2d-1e19-4c71-8f5c-e53d9cd06c3b",
- "c7867d88-60f2-483b-b435-883d4ff5b2f9",
- "cbc90bff-5476-408c-9cc8-afd1af5b536d",
- "2bd2e64e-28f0-4bd7-aee3-e1d27ed0797d",
- "08995ab0-2954-4d6b-913e-27609e90b354",
- "862ddd87-68c4-4bed-a8cd-0e2021a0ce79",
- "0679475a-259c-4c98-9ae7-a58c10dfeedb",
- "6895e921-91f2-4713-b604-c2cdd9f3f1c2",
- "8bf09666-9aba-4c71-a58a-a64200d49f9e"
- ]
- },
- "8c9d2cf1-6f0b-4ea9-993a-c3193867a914": {
- "name": "rave",
- "author": "Unknown",
- "songs": [
- "59c20651-6ffe-493d-886b-ccd8b7fe6dee",
- "78d3766c-7d79-43a1-aa37-f680cfd253e0",
- "7da79c32-9eda-4897-be69-69fb39437404",
- "0ee56450-2942-4805-9f08-b49652472258"
- ]
}
}
}
\ No newline at end of file
diff --git a/xmpd-dl/Cargo.toml b/xmpd-cache/Cargo.toml
similarity index 52%
rename from xmpd-dl/Cargo.toml
rename to xmpd-cache/Cargo.toml
index 2e6ee85..ccf5cd1 100644
--- a/xmpd-dl/Cargo.toml
+++ b/xmpd-cache/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "xmpd-dl"
+name = "xmpd-cache"
edition = "2021"
readme="README.md"
authors.workspace = true
@@ -18,3 +18,11 @@ crate-type = ["rlib"]
bench = false
[dependencies]
+xmpd-settings.path = "../xmpd-settings"
+xmpd-manifest.path = "../xmpd-manifest"
+xmpd-cliargs.path = "../xmpd-cliargs"
+anyhow.workspace = true
+camino.workspace = true
+lazy_static.workspace = true
+log.workspace = true
+uuid.workspace = true
diff --git a/xmpd-cli/README.md b/xmpd-cache/README.md
similarity index 100%
rename from xmpd-cli/README.md
rename to xmpd-cache/README.md
diff --git a/xmpd-dl/README.md b/xmpd-cache/src/downloader/icon.rs
similarity index 100%
rename from xmpd-dl/README.md
rename to xmpd-cache/src/downloader/icon.rs
diff --git a/xmpd-dl/src/lib.rs b/xmpd-cache/src/downloader/metadata.rs
similarity index 100%
rename from xmpd-dl/src/lib.rs
rename to xmpd-cache/src/downloader/metadata.rs
diff --git a/xmpd-cache/src/downloader/mod.rs b/xmpd-cache/src/downloader/mod.rs
new file mode 100644
index 0000000..f4cfce7
--- /dev/null
+++ b/xmpd-cache/src/downloader/mod.rs
@@ -0,0 +1,4 @@
+
+pub mod song;
+pub mod icon;
+pub mod metadata;
diff --git a/xmpd-cache/src/downloader/song.rs b/xmpd-cache/src/downloader/song.rs
new file mode 100644
index 0000000..dba01d0
--- /dev/null
+++ b/xmpd-cache/src/downloader/song.rs
@@ -0,0 +1,127 @@
+use std::{collections::HashMap, ffi::OsStr, process::{Command, Stdio}, sync::{Arc, Mutex, MutexGuard}};
+use xmpd_manifest::song::{Song, SourceType};
+
+
+lazy_static::lazy_static!(
+ static ref SONG_CACHE_DL: Arc> = Arc::default();
+);
+
+#[derive(Debug, Clone, Hash, PartialEq, PartialOrd, Eq, Ord)]
+pub enum SongStatus {
+ Downloading,
+ Converting,
+ Done
+}
+
+#[derive(Debug, Default, Clone)]
+pub struct SongCacheDl {
+ pub jobs: HashMap,
+ pub current_jobs: usize,
+}
+
+impl SongCacheDl {
+ pub fn get() -> crate::Result> {
+ match SONG_CACHE_DL.lock() {
+ Ok(v) => Ok(v),
+ Err(e) => anyhow::bail!(format!("{e:?}"))
+ }
+ }
+ pub fn is_job_list_full(&self) -> bool {
+ self.current_jobs >= 5
+ }
+
+ pub fn download(&mut self, sid: uuid::Uuid, song: Song) -> crate::Result<()> {
+ self.current_jobs += 1;
+ let song_format = xmpd_settings::Settings::get().unwrap().tooling.song_format.clone();
+ let tooling = xmpd_settings::Settings::get()?.tooling.clone();
+ let mut song_cache_d = xmpd_cliargs::CLIARGS.cache_path();
+ song_cache_d.push("songs");
+ match song.source_type() {
+ SourceType::Youtube |
+ SourceType::Soundcloud => {
+ let mut song_p = song_cache_d.clone();
+ song_p.push(sid.to_string());
+ let song_p = song_p.with_extension(&song_format);
+
+ let mut dl_cmd = Command::new(&tooling.ytdlp_path);
+ dl_cmd.arg(song.url().as_str());
+ dl_cmd.args(["-x", "--audio-format", &song_format]);
+ dl_cmd.arg("-o");
+ dl_cmd.arg(&song_p);
+
+ if xmpd_cliargs::CLIARGS.debug {
+ dl_cmd.stdout(Stdio::piped());
+ dl_cmd.stderr(Stdio::piped());
+ } else {
+ dl_cmd.stdout(Stdio::null());
+ dl_cmd.stderr(Stdio::null());
+ }
+ let dl_child = dl_cmd.spawn()?;
+ self.jobs.insert(sid, SongStatus::Downloading);
+ std::thread::spawn(move || {
+ if let Ok(output) = dl_child.wait_with_output() {
+ for line in String::from_utf8(output.stdout).unwrap().lines() {
+ log::info!("CMD: {}", line);
+ }
+ for line in String::from_utf8(output.stderr).unwrap().lines() {
+ log::error!("CMD: {}", line);
+ }
+ }
+ let mut cache = SONG_CACHE_DL.lock().unwrap();
+ cache.jobs.insert(sid, SongStatus::Done);
+ cache.current_jobs -= 1;
+ });
+ }
+
+ SourceType::Spotify => {
+ // Spotdl doesnt have webm as a format so its fucking annoying, oh well
+ let mut song_p = song_cache_d.clone();
+ song_p.push(sid.to_string());
+ song_p.push("{output-ext}");
+ let mut dl_cmd = Command::new(&tooling.spotdl_path);
+ dl_cmd.arg(song.url().as_str());
+ dl_cmd.arg("--ffmpeg");
+ dl_cmd.arg(&tooling.ffmpeg_path);
+ dl_cmd.args(["--format", &song_format, "--output"]);
+ dl_cmd.arg(&song_p);
+ let arg_str = dl_cmd.get_args();
+ let arg_str: Vec<_> = arg_str.collect();
+ let arg_str = arg_str.join(OsStr::new(" ")).to_string_lossy().to_string();
+ log::debug!("spotify cli: {} {}", tooling.spotdl_path, arg_str);
+ if xmpd_cliargs::CLIARGS.debug {
+ dl_cmd.stdout(Stdio::piped());
+ dl_cmd.stderr(Stdio::piped());
+ } else {
+ dl_cmd.stdout(Stdio::null());
+ dl_cmd.stderr(Stdio::null());
+ }
+ let child = dl_cmd.spawn()?;
+ self.jobs.insert(sid, SongStatus::Downloading);
+ std::thread::spawn(move || {
+ if let Ok(output) = child.wait_with_output() {
+ for line in String::from_utf8(output.stdout).unwrap().lines() {
+ log::info!("CMD: {}", line);
+ }
+ for line in String::from_utf8(output.stderr).unwrap().lines() {
+ log::error!("CMD: {}", line);
+ }
+ }
+ let mut from = song_p.clone();
+ from.pop();
+ from.push("{song_format}.{song_format}");
+
+ let mut to = song_p.clone();
+ to.pop();
+ to.set_extension(&song_format);
+ std::fs::copy(&from, &to).unwrap();
+ from.pop();
+ std::fs::remove_dir_all(from).unwrap();
+ let mut cache = SONG_CACHE_DL.lock().unwrap();
+ cache.jobs.insert(sid, SongStatus::Done);
+ cache.current_jobs -= 1;
+ });
+ }
+ }
+ Ok(())
+ }
+}
diff --git a/xmpd-cache/src/lib.rs b/xmpd-cache/src/lib.rs
new file mode 100644
index 0000000..caed2f0
--- /dev/null
+++ b/xmpd-cache/src/lib.rs
@@ -0,0 +1,122 @@
+use std::{collections::HashMap, str::FromStr, sync::{Arc, Mutex, MutexGuard}, time::Duration};
+use downloader::song::SongStatus;
+use xmpd_manifest::song::Song;
+
+pub mod downloader;
+
+type Result = anyhow::Result;
+
+lazy_static::lazy_static!(
+ static ref CACHE: Arc> = Arc::new(Mutex::new(Cache::default()));
+);
+
+#[derive(Debug, Default)]
+pub struct Cache {
+ cache_dir: camino::Utf8PathBuf,
+ song_cache: HashMap,
+ queue: Vec<(uuid::Uuid, Song)>
+ // TODO: Add Icon, metadata cache
+}
+
+#[derive(Debug, Clone)]
+pub enum DlStatus {
+ Done(camino::Utf8PathBuf),
+ Downloading,
+ Error(String),
+}
+
+impl Cache {
+ pub fn get() -> crate::Result> {
+ match CACHE.lock() {
+ Ok(l) => Ok(l),
+ Err(e) => Err(anyhow::anyhow!(format!("{e:?}"))),
+ }
+ }
+
+ pub fn init(&mut self) -> Result<()> {
+ start_cache_mv_thread();
+ self.cache_dir = xmpd_cliargs::CLIARGS.cache_path();
+
+ { // Get cached songs
+ let mut song_cache_dir = self.cache_dir.clone();
+ song_cache_dir.push("songs");
+ for file in song_cache_dir.read_dir_utf8()? {
+ if let Ok(file) = file {
+ if !file.file_type()?.is_file() {
+ log::warn!("Non song file in: {}", file.path());
+ continue;
+ }
+ let file_path = file.path();
+ let file2 = file_path.with_extension("");
+ if let Some(file_name) = file2.file_name() {
+ let id = uuid::Uuid::from_str(file_name)?;
+ log::debug!("Found song {id}");
+ // TODO: Check if id is in manifest
+ self.song_cache.insert(id, DlStatus::Done(file_path.to_path_buf()));
+ }
+
+ }
+ }
+ }
+ { // Get cached icons
+ }
+ { // Get Cached meta
+ }
+ Ok(())
+ }
+
+ pub fn download_to_cache(&mut self, sid: uuid::Uuid, song: Song) {
+ self.queue.push((sid, song));
+ self.song_cache.insert(sid, DlStatus::Downloading);
+ }
+
+ pub fn download_to_cache_multiple(&mut self, mut songs: Vec<(uuid::Uuid, Song)>) {
+ while let Some((sid, song)) = songs.pop() {
+ self.download_to_cache(sid, song);
+ }
+ }
+
+ pub fn get_cached_song_status(&mut self, sid: &uuid::Uuid) -> Option {
+ Some(self.song_cache.get(sid)?.clone())
+ }
+}
+
+fn start_cache_mv_thread() {
+ std::thread::spawn(|| {
+ loop {
+ {
+ std::thread::sleep(Duration::from_millis(500));
+ let song_format = xmpd_settings::Settings::get().unwrap().tooling.song_format.clone();
+ let mut done_jobs = Vec::new();
+ let mut dlc = downloader::song::SongCacheDl::get().unwrap();
+ for (sid, status) in &dlc.jobs {
+ if *status == SongStatus::Done {
+ let mut cache = CACHE.lock().unwrap();
+ let mut song_p = xmpd_cliargs::CLIARGS.cache_path().clone();
+ song_p.push("songs");
+ song_p.push(sid.clone().to_string());
+ let song_p = song_p.with_extension(&song_format);
+ log::debug!("Found done: {:?}: {}", song_p, song_p.exists());
+ if song_p.exists() {
+ cache.song_cache.insert(sid.clone(), DlStatus::Done(song_p));
+ done_jobs.push(sid.clone());
+ }
+ }
+ }
+ for sid in done_jobs {
+ dlc.jobs.remove(&sid);
+ }
+ }
+
+ {
+ let mut cache = Cache::get().unwrap();
+ let mut dlc = downloader::song::SongCacheDl::get().unwrap();
+ if !dlc.is_job_list_full() {
+ if let Some((sid, song)) = cache.queue.pop() {
+ dlc.download(sid, song).unwrap();
+ }
+ }
+ }
+ }
+ });
+}
diff --git a/xmpd-cli/src/lib.rs b/xmpd-cli/src/lib.rs
deleted file mode 100644
index 9815d27..0000000
--- a/xmpd-cli/src/lib.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-pub fn test() {
- println!("Hello, world!");
-}
diff --git a/xmpd-cli/Cargo.toml b/xmpd-cliargs/Cargo.toml
similarity index 70%
rename from xmpd-cli/Cargo.toml
rename to xmpd-cliargs/Cargo.toml
index 22df51b..8a48ecb 100644
--- a/xmpd-cli/Cargo.toml
+++ b/xmpd-cliargs/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "xmpd-cli"
+name = "xmpd-cliargs"
edition = "2021"
readme="README.md"
version.workspace = true
@@ -18,3 +18,7 @@ crate-type = ["rlib"]
bench = false
[dependencies]
+camino.workspace = true
+clap.workspace = true
+dirs.workspace = true
+lazy_static.workspace = true
diff --git a/xmpd-cliargs/README.md b/xmpd-cliargs/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/xmpd-core/src/cli.rs b/xmpd-cliargs/src/lib.rs
similarity index 88%
rename from xmpd-core/src/cli.rs
rename to xmpd-cliargs/src/lib.rs
index af74445..589fdf5 100644
--- a/xmpd-core/src/cli.rs
+++ b/xmpd-cliargs/src/lib.rs
@@ -1,5 +1,11 @@
-use std::{path::PathBuf, str::FromStr};
+use std::{path::PathBuf, str::FromStr, sync::Arc};
+use camino::Utf8PathBuf;
+use clap::Parser;
+
+lazy_static::lazy_static!(
+ pub static ref CLIARGS: Arc = Arc::new(CliArgs::parse());
+);
#[derive(Debug, clap::Parser)]
pub struct CliArgs {
@@ -24,8 +30,8 @@ impl CliArgs {
pub fn settings_path(&self) -> PathBuf {
self.settings.clone().into_std_path_buf()
}
- pub fn cache_path(&self) -> PathBuf {
- self.cache.clone().into_std_path_buf()
+ pub fn cache_path(&self) -> Utf8PathBuf {
+ self.cache.clone()
}
}
diff --git a/xmpd-core/Cargo.toml b/xmpd-core/Cargo.toml
index b28266b..ec37421 100644
--- a/xmpd-core/Cargo.toml
+++ b/xmpd-core/Cargo.toml
@@ -21,7 +21,7 @@ name="xmpd"
path="src/main.rs"
[dependencies]
-xmpd-cli.path="../xmpd-cli"
+xmpd-cliargs.path="../xmpd-cliargs"
xmpd-gui.path="../xmpd-gui"
xmpd-manifest.path="../xmpd-manifest"
xmpd-settings.path = "../xmpd-settings"
@@ -30,4 +30,3 @@ camino.workspace = true
anyhow.workspace = true
log.workspace = true
env_logger.workspace = true
-dirs.workspace = true
diff --git a/xmpd-core/src/logger.rs b/xmpd-core/src/logger.rs
index 5347cf2..25bbadc 100644
--- a/xmpd-core/src/logger.rs
+++ b/xmpd-core/src/logger.rs
@@ -1,7 +1,5 @@
use log::LevelFilter;
-
-use crate::cli::CliArgs;
-
+use xmpd_cliargs::CliArgs;
pub fn init(cliargs: &CliArgs) {
diff --git a/xmpd-core/src/main.rs b/xmpd-core/src/main.rs
index 6cd9278..bac3260 100644
--- a/xmpd-core/src/main.rs
+++ b/xmpd-core/src/main.rs
@@ -1,15 +1,18 @@
+use std::borrow::BorrowMut;
+
use clap::Parser;
-mod cli;
mod logger;
type Result = anyhow::Result;
fn main() -> Result<()> {
- let cliargs = cli::CliArgs::parse();
+ // NOTE: Parses on first load
+ let cliargs = &xmpd_cliargs::CLIARGS;
logger::init(&cliargs);
- log::debug!("Cli: {cliargs:?}");
+ log::debug!("Initialising settings");
xmpd_settings::Settings::get()?.load(Some(cliargs.settings_path()))?;
- xmpd_gui::start(cliargs.manifest_path())?;
+ log::debug!("Starting gui");
+ xmpd_gui::start()?;
Ok(())
}
diff --git a/xmpd-gui/Cargo.toml b/xmpd-gui/Cargo.toml
index 45b00d6..7d43d71 100644
--- a/xmpd-gui/Cargo.toml
+++ b/xmpd-gui/Cargo.toml
@@ -20,6 +20,8 @@ bench = false
[dependencies]
xmpd-manifest.path = "../xmpd-manifest"
xmpd-settings.path = "../xmpd-settings"
+xmpd-cliargs.path = "../xmpd-cliargs"
+xmpd-cache.path = "../xmpd-cache"
egui.workspace = true
eframe.workspace = true
tokio.workspace = true
@@ -29,3 +31,4 @@ log.workspace = true
egui_extras.workspace = true
egui-aesthetix = "0.2.4"
uuid.workspace = true
+camino.workspace = true
diff --git a/xmpd-gui/src/components/song_list/mod.rs b/xmpd-gui/src/components/song_list/mod.rs
index 13e052c..5f3bc3d 100644
--- a/xmpd-gui/src/components/song_list/mod.rs
+++ b/xmpd-gui/src/components/song_list/mod.rs
@@ -1,5 +1,8 @@
-use egui::{RichText, Vec2};
+use std::fmt::write;
+
+use egui::{Color32, RichText, Sense, Vec2};
use song_list_nav::SearchType;
+use xmpd_cache::DlStatus;
use xmpd_manifest::{song::Song, store::BaseStore};
use super::{CompGetter, CompUi};
@@ -80,34 +83,92 @@ impl CompUi for SongList {
fn display_song_tab(ui: &mut egui::Ui, sid: &uuid::Uuid, song: &Song) {
let theme = handle_error_ui!(xmpd_settings::Settings::get()).theme.clone();
- let rct = ui.horizontal(|ui| {
- ui.add(
+ ui.horizontal(|ui| {
+ let mut clicked = ui.add(
egui::Image::new(crate::data::NOTE_ICON)
.tint(theme.accent_color)
+ .sense(Sense::click())
.fit_to_exact_size(Vec2::new(32.0, 32.0))
- );
+ ).clicked();
+
ui.vertical(|ui| {
let selected_song_id = {handle_error_ui!(SongList::get()).selected_song_id};
- if selected_song_id == *sid {
+ let label = if selected_song_id == *sid {
ui.label(
RichText::new(song.name())
.color(theme.accent_color)
- );
+ )
} else {
ui.label(
RichText::new(song.name())
.color(theme.text_color)
- );
+ )
};
+
+ if label.clicked() {
+ clicked = true;
+ }
ui.monospace(
RichText::new(format!("By {}", song.author()))
.color(theme.dim_text_color)
.size(10.0)
);
+
});
- }).response.rect;
- if ui.interact(rct, format!("song_list_{sid:?}").into(), egui::Sense::click()).clicked() {
- handle_error_ui!(SongList::get()).selected_song_id = sid.clone();
- }
+
+ ui.with_layout(egui::Layout::right_to_left(egui::Align::RIGHT), |ui| {
+ ui.add_space(3.0);
+ let status = {
+ handle_error_ui!(xmpd_cache::Cache::get()).get_cached_song_status(&sid).clone()
+ };
+ match status {
+ Some(DlStatus::Done(p)) => {
+ let img = ui.add(
+ egui::Image::new(crate::data::CHECK_ICON)
+ .tint(Color32::LIGHT_GREEN)
+ .sense(Sense::hover())
+ .fit_to_exact_size(Vec2::new(16.0, 16.0))
+ );
+
+ img.on_hover_ui(|ui| {
+ ui.label(format!("Path: {p}"));
+ });
+ }
+ Some(DlStatus::Downloading) => {
+ ui.add(
+ egui::Spinner::new()
+ .color(theme.accent_color)
+ .size(16.0)
+ );
+ }
+ Some(DlStatus::Error(e)) => {
+ let img = ui.add(
+ egui::Image::new(crate::data::WARN_ICON)
+ .tint(Color32::LIGHT_YELLOW)
+ .sense(Sense::hover())
+ .fit_to_exact_size(Vec2::new(16.0, 16.0))
+ );
+ img.on_hover_ui(|ui| {
+ ui.label(e);
+ });
+ }
+ None => {
+ let img = ui.add(
+ egui::Image::new(crate::data::DL_ICON)
+ .tint(theme.accent_color)
+ .sense(Sense::click())
+ .fit_to_exact_size(Vec2::new(16.0, 16.0))
+ );
+ if img.clicked() {
+ handle_error_ui!(xmpd_cache::Cache::get()).download_to_cache(sid.clone(), song.clone())
+ }
+ }
+ }
+ });
+ if clicked {
+ handle_error_ui!(SongList::get()).selected_song_id = sid.clone();
+ }
+ });
+
ui.separator();
}
diff --git a/xmpd-gui/src/components/song_list/song_list_nav.rs b/xmpd-gui/src/components/song_list/song_list_nav.rs
index a6a159f..1eceb83 100644
--- a/xmpd-gui/src/components/song_list/song_list_nav.rs
+++ b/xmpd-gui/src/components/song_list/song_list_nav.rs
@@ -1,4 +1,7 @@
-use crate::components::{CompGetter, CompUi};
+use uuid::Uuid;
+use xmpd_manifest::store::BaseStore;
+
+use crate::components::{left_nav::LeftNav, CompGetter, CompUi};
#[derive(Debug, Clone)]
pub enum SearchType {
@@ -9,14 +12,16 @@ pub enum SearchType {
#[derive(Debug, Default)]
pub struct SongListNav {
- text: String
+ text: String,
}
component_register!(SongListNav);
impl CompUi for SongListNav {
- fn draw(ui: &mut egui::Ui, _: &mut crate::GuiState) -> crate::Result<()> {
+ fn draw(ui: &mut egui::Ui, state: &mut crate::GuiState) -> crate::Result<()> {
let theme = xmpd_settings::Settings::get()?.theme.clone();
+ let pid = {LeftNav::get()?.selected_playlist_id.clone()};
+
ui.horizontal(|ui| {
let search_icon = egui::Image::new(crate::data::SEARCH_ICON)
.fit_to_exact_size(egui::Vec2::new(16.0, 16.0))
@@ -25,6 +30,31 @@ impl CompUi for SongListNav {
{
ui.text_edit_singleline(&mut handle_error_ui!(SongListNav::get()).text);
}
+
+ ui.with_layout(egui::Layout::right_to_left(egui::Align::RIGHT), |ui| {
+ let img = ui.add(
+ egui::Image::new(crate::data::DL_ICON)
+ .tint(theme.accent_color)
+ .sense(egui::Sense::click())
+ .fit_to_exact_size(egui::Vec2::new(16.0, 16.0))
+ );
+ if img.clicked() {
+ let songs: Vec<_>;
+ match pid {
+ Some(pid) => {
+ songs = state.manifest.store().get_playlist(&pid).unwrap().songs().to_vec();
+ }
+ None => {
+ songs = state.manifest.store().get_songs().keys().cloned().collect();
+ }
+ }
+ for sid in &songs {
+ if let Some(song) = state.manifest.store().get_song(&sid) {
+ handle_error_ui!(xmpd_cache::Cache::get()).download_to_cache(sid.clone(), song.clone())
+ }
+ }
+ }
+ });
});
Ok(())
}
diff --git a/xmpd-gui/src/components/top_nav.rs b/xmpd-gui/src/components/top_nav.rs
index b665c4f..ace61a2 100644
--- a/xmpd-gui/src/components/top_nav.rs
+++ b/xmpd-gui/src/components/top_nav.rs
@@ -14,16 +14,19 @@ impl CompUi for TopNav {
ui.menu_button("File", |ui| {
if ui.button("Settings").clicked() {
state.windows.toggle(&WindowId::Settings, true);
+ ui.close_menu();
}
});
ui.menu_button("Manifest", |ui| {
if ui.button("Save").clicked() {
handle_error_ui!(state.manifest.save());
+ ui.close_menu();
}
});
ui.menu_button("Help", |ui| {
if ui.button("Source").clicked() {
ui.ctx().open_url(egui::OpenUrl::new_tab("https://git.mcorangehq.xyz/XOR64/music"));
+ ui.close_menu();
}
});
diff --git a/xmpd-gui/src/data.rs b/xmpd-gui/src/data.rs
index 8c86217..b1dd09e 100644
--- a/xmpd-gui/src/data.rs
+++ b/xmpd-gui/src/data.rs
@@ -6,3 +6,6 @@ pub const PREV_ICON: egui::ImageSource = egui::include_image!("../../assets/pre
pub const NEXT_ICON: egui::ImageSource = egui::include_image!("../../assets/next.svg");
pub const PLAY_ICON: egui::ImageSource = egui::include_image!("../../assets/play.svg");
pub const PAUSE_ICON: egui::ImageSource = egui::include_image!("../../assets/pause.svg");
+pub const CHECK_ICON: egui::ImageSource = egui::include_image!("../../assets/check.svg");
+pub const DL_ICON: egui::ImageSource = egui::include_image!("../../assets/download.svg");
+pub const WARN_ICON: egui::ImageSource = egui::include_image!("../../assets/warning.svg");
diff --git a/xmpd-gui/src/lib.rs b/xmpd-gui/src/lib.rs
index ef49f07..004e10f 100644
--- a/xmpd-gui/src/lib.rs
+++ b/xmpd-gui/src/lib.rs
@@ -1,6 +1,6 @@
#![feature(async_closure)]
-use std::{path::{Path, PathBuf}, time::Duration};
+use std::time::Duration;
use xmpd_manifest::{store::JsonStore, Manifest};
#[macro_use]
@@ -15,10 +15,10 @@ const W_NAME: &str = "xmpd v2.0.0a";
type Result = anyhow::Result;
-pub fn start(manifest_path: PathBuf) -> Result<()> {
+pub fn start() -> Result<()> {
+ xmpd_cache::Cache::get()?.init();
let options = eframe::NativeOptions::default();
- let mut state = GuiState::new(&manifest_path)?;
- let theme = xmpd_settings::Settings::get()?.theme.clone();
+ let mut state = GuiState::new()?;
let res = eframe::run_simple_native(W_NAME, options, move |ctx, _frame| {
egui_extras::install_image_loaders(ctx);
state.windows.clone().draw_all(ctx, &mut state);
@@ -31,20 +31,15 @@ pub fn start(manifest_path: PathBuf) -> Result<()> {
Ok(())
}
-
-pub enum Message {
-
-}
-
pub struct GuiState {
pub manifest: Manifest,
- pub windows: windows::Windows
+ pub windows: windows::Windows,
}
impl GuiState {
- pub fn new(manifest_path: &Path) -> Result {
+ pub fn new() -> Result {
Ok(Self {
- manifest: Manifest::new(manifest_path)?,
+ manifest: Manifest::new(&xmpd_cliargs::CLIARGS.manifest_path())?,
windows: windows::Windows::new(),
})
}
diff --git a/xmpd-gui/src/main_window.rs b/xmpd-gui/src/main_window.rs
index eb8a8af..fb7a575 100644
--- a/xmpd-gui/src/main_window.rs
+++ b/xmpd-gui/src/main_window.rs
@@ -1,6 +1,6 @@
use xmpd_settings::theme::Theme;
-use crate::{components::CompUi, GuiState};
+use crate::{components::{song_list, CompUi}, GuiState};
pub fn draw(ctx: &egui::Context, state: &mut GuiState) -> crate::Result<()> {
// The central panel the region left after adding TopPanel's and SidePanel's
@@ -22,19 +22,22 @@ pub fn draw(ctx: &egui::Context, state: &mut GuiState) -> crate::Result<()> {
let avail = ui.available_size();
let main_height = avail.y * 0.91;
+ let left_nav_width = (avail.x * 0.25).clamp(0.0, 200.0);
+ let song_list_width = (avail.x - left_nav_width - 35.0);
ui.horizontal(|ui| {
ui.set_height(main_height);
ui.group(|ui| {
ui.set_height(main_height);
- ui.set_max_width((avail.x * 0.25).clamp(0.0, 200.0));
+ ui.set_max_width(left_nav_width);
handle_error_ui!(crate::components::left_nav::LeftNav::draw(ui, state));
});
ui.vertical(|ui| {
ui.group(|ui| {
- ui.set_width(avail.x * 0.75);
+ ui.set_width(song_list_width);
handle_error_ui!(crate::components::song_list::song_list_nav::SongListNav::draw(ui, state));
});
ui.group(|ui| {
+ ui.set_width(song_list_width);
handle_error_ui!(crate::components::song_list::SongList::draw(ui, state));
});
});
@@ -58,7 +61,7 @@ fn get_themed_frame(theme: &Theme) -> egui::Frame {
egui::Frame::none()
.fill(theme.primary_bg_color)
.stroke(egui::Stroke::new(
- 1.0,
+ 5.0,
theme.secondary_bg_color,
))
}
diff --git a/xmpd-gui/src/windows/settings.rs b/xmpd-gui/src/windows/settings.rs
index d831384..922e1aa 100644
--- a/xmpd-gui/src/windows/settings.rs
+++ b/xmpd-gui/src/windows/settings.rs
@@ -1,40 +1,80 @@
+use std::str::FromStr;
+
use super::Window;
#[derive(Debug, Clone)]
pub struct SettingsW {
- accent_color: egui::Color32,
- primary_bg_color: egui::Color32,
- secondary_bg_color: egui::Color32,
- text_color: egui::Color32,
- dim_text_color: egui::Color32,
+ ytdlp_p: String,
+ spotdl_p: String,
+ ffmpeg_p: String,
+ song_fmt: String,
}
impl Default for SettingsW {
fn default() -> Self {
- let def = xmpd_settings::theme::Theme::default();
- Self {
- accent_color: def.accent_color,
- primary_bg_color: def.primary_bg_color,
- secondary_bg_color: def.secondary_bg_color,
- text_color: def.text_color,
- dim_text_color: def.dim_text_color
+ let tooling = xmpd_settings::Settings::get().unwrap().tooling.clone();
+ Self {
+ ytdlp_p: tooling.ytdlp_path.to_string(),
+ spotdl_p: tooling.spotdl_path.to_string(),
+ ffmpeg_p: tooling.ffmpeg_path.to_string(),
+ song_fmt: tooling.song_format
}
}
-
}
+
impl Window for SettingsW {
+ #[allow(irrefutable_let_patterns)]
fn draw(&mut self, ui: &mut egui::Ui, _: &mut crate::GuiState) -> crate::Result<()> {
- let theme = &mut xmpd_settings::Settings::get()?.theme;
ui.group(|ui| {
ui.vertical(|ui| {
- ui.heading("Theme");
- Self::add_theme_button(&mut theme.accent_color, ui, "Accent");
- Self::add_theme_button(&mut theme.primary_bg_color, ui, "Primary BG");
- Self::add_theme_button(&mut theme.secondary_bg_color, ui, "Secondary BG");
- Self::add_theme_button(&mut theme.text_color, ui, "Text");
- Self::add_theme_button(&mut theme.dim_text_color, ui, "Dim Text");
+ ui.horizontal(|ui| {
+ {
+ let theme = &mut handle_error_ui!(xmpd_settings::Settings::get()).theme;
+ ui.group(|ui| {
+ ui.vertical(|ui| {
+ ui.heading("Theme");
+ Self::add_theme_button(&mut theme.accent_color, ui, "Accent");
+ Self::add_theme_button(&mut theme.primary_bg_color, ui, "Primary BG");
+ Self::add_theme_button(&mut theme.secondary_bg_color, ui, "Secondary BG");
+ Self::add_theme_button(&mut theme.text_color, ui, "Text");
+ Self::add_theme_button(&mut theme.dim_text_color, ui, "Dim Text");
+ if ui.button("Reset").clicked() {
+ *theme = xmpd_settings::theme::Theme::default();
+ }
+ });
+ });
+
+ }
+ {
+ ui.group(|ui| {
+ ui.vertical(|ui| {
+ ui.heading("Tooling paths");
+ Self::add_tooling_input(&mut self.ytdlp_p, ui, "stdlp");
+ Self::add_tooling_input(&mut self.spotdl_p, ui, "spotdl");
+ Self::add_tooling_input(&mut self.ffmpeg_p, ui, "ffmpeg");
+ Self::add_tooling_input(&mut self.song_fmt, ui, "Format");
+ });
+ });
+ }
+ });
+ ui.with_layout(egui::Layout::bottom_up(egui::Align::RIGHT), |ui| {
+ if ui.button("Save").clicked() {
+ let mut settings = handle_error_ui!(xmpd_settings::Settings::get());
+ if let Ok(p) = camino::Utf8PathBuf::from_str(&self.ytdlp_p) {
+ settings.tooling.ytdlp_path = p;
+ }
+ if let Ok(p) = camino::Utf8PathBuf::from_str(&self.spotdl_p) {
+ settings.tooling.spotdl_path = p;
+ }
+ if let Ok(p) = camino::Utf8PathBuf::from_str(&self.ffmpeg_p) {
+ settings.tooling.ffmpeg_path = p;
+ }
+ settings.tooling.song_format.clone_from(&self.song_fmt);
+ handle_error_ui!(settings.save(None));
+ }
+ });
});
});
Ok(())
@@ -48,4 +88,10 @@ impl SettingsW {
ui.color_edit_button_srgba(rf);
});
}
+ fn add_tooling_input(inp: &mut String, ui: &mut egui::Ui, name: &str) {
+ ui.horizontal(|ui|{
+ ui.label(format!("{name}: "));
+ ui.text_edit_singleline(inp);
+ });
+ }
}
diff --git a/xmpd-settings/Cargo.toml b/xmpd-settings/Cargo.toml
index ec744d6..ff2c216 100644
--- a/xmpd-settings/Cargo.toml
+++ b/xmpd-settings/Cargo.toml
@@ -8,6 +8,7 @@ authors.workspace = true
[dependencies]
anyhow.workspace = true
+camino.workspace = true
egui.workspace = true
lazy_static.workspace = true
serde.workspace = true
diff --git a/xmpd-settings/src/lib.rs b/xmpd-settings/src/lib.rs
index 36978bf..a065288 100644
--- a/xmpd-settings/src/lib.rs
+++ b/xmpd-settings/src/lib.rs
@@ -1,8 +1,10 @@
use std::{path::PathBuf, sync::{Arc, Mutex, MutexGuard}};
use serde::{Deserialize, Serialize};
use theme::Theme;
+use tooling::Tooling;
pub mod theme;
+pub mod tooling;
lazy_static::lazy_static!(
static ref SETTINGS: Arc> = Arc::new(Mutex::new(Settings::default()));
@@ -14,7 +16,10 @@ pub type Result = anyhow::Result;
pub struct Settings {
#[serde(skip)]
settings_path: PathBuf,
+ #[serde(default)]
pub theme: Theme,
+ #[serde(default)]
+ pub tooling: Tooling,
}
impl Settings {
@@ -27,6 +32,11 @@ impl Settings {
pub fn load(&mut self, path: Option) -> Result<()> {
let path = path.unwrap_or(self.settings_path.clone());
if !path.exists() {
+ let mut dir = path.clone();
+ dir.pop();
+ if !dir.exists() {
+ std::fs::create_dir_all(dir)?;
+ }
std::fs::write(&path, "[theme]")?;
self.save(Some(path.clone()))?;
}
diff --git a/xmpd-settings/src/tooling.rs b/xmpd-settings/src/tooling.rs
new file mode 100644
index 0000000..7475762
--- /dev/null
+++ b/xmpd-settings/src/tooling.rs
@@ -0,0 +1,42 @@
+use std::str::FromStr;
+
+use serde::{Deserialize, Serialize};
+
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Tooling {
+ #[serde(default="Tooling::default_ytdlp_path")]
+ pub ytdlp_path: camino::Utf8PathBuf,
+ #[serde(default="Tooling::default_spotdl_path")]
+ pub spotdl_path: camino::Utf8PathBuf,
+ #[serde(default="Tooling::default_ffmpeg_path")]
+ pub ffmpeg_path: camino::Utf8PathBuf,
+ #[serde(default="Tooling::default_song_format")]
+ pub song_format: String,
+}
+
+impl Default for Tooling {
+ fn default() -> Self {
+ Self {
+ ytdlp_path: Self::default_ytdlp_path(),
+ spotdl_path: Self::default_spotdl_path(),
+ ffmpeg_path: Self::default_ffmpeg_path(),
+ song_format: Self::default_song_format(),
+ }
+ }
+}
+
+impl Tooling {
+ fn default_ytdlp_path() -> camino::Utf8PathBuf {
+ camino::Utf8PathBuf::from_str("yt-dlp").unwrap()
+ }
+ fn default_spotdl_path() -> camino::Utf8PathBuf {
+ camino::Utf8PathBuf::from_str("spotdl").unwrap()
+ }
+ fn default_ffmpeg_path() -> camino::Utf8PathBuf {
+ camino::Utf8PathBuf::from_str("ffmpeg").unwrap()
+ }
+ fn default_song_format() -> String {
+ String::from("flac")
+ }
+}
diff --git a/xmpd-tooling/Cargo.toml b/xmpd-tooling/Cargo.toml
new file mode 100644
index 0000000..e61380a
--- /dev/null
+++ b/xmpd-tooling/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "xmpd-tooling"
+edition = "2021"
+version.workspace = true
+repository.workspace = true
+license.workspace = true
+authors.workspace = true
+
+[dependencies]
diff --git a/xmpd-tooling/src/lib.rs b/xmpd-tooling/src/lib.rs
new file mode 100644
index 0000000..e69de29