diff --git a/Cargo.lock b/Cargo.lock index 565513b..0277f88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,12 +18,95 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher", +] + +[[package]] +name = "aes-ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763" +dependencies = [ + "aes-soft", + "aesni", + "cipher", + "ctr", +] + +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher", + "opaque-debug", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alsa" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5915f52fe2cf65e83924d037b6c5290b7cee097c6b5c8700746e6168a343fd6b" +dependencies = [ + "alsa-sys", + "bitflags 1.3.2", + "libc", + "nix 0.23.2", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + [[package]] name = "android-activity" version = "0.4.3" @@ -36,9 +119,9 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk", + "ndk 0.7.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.6.1", ] @@ -48,6 +131,21 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "arrayref" version = "0.3.7" @@ -60,12 +158,61 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "beonew-5" version = "0.1.0" @@ -76,12 +223,34 @@ dependencies = [ "glutin-winit", "image", "instant", + "librespot", + "mpd", "nix 0.28.0", "raw-window-handle", "resource", "winit", ] +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.5.0", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.60", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -106,6 +275,24 @@ dependencies = [ "wyz", ] +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "block-sys" version = "0.1.0-beta.1" @@ -125,6 +312,12 @@ dependencies = [ "objc2-encode", ] +[[package]] +name = "bufstream" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" + [[package]] name = "bumpalo" version = "3.16.0" @@ -143,6 +336,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" + [[package]] name = "calloop" version = "0.10.6" @@ -159,13 +358,27 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.96" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" +checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" dependencies = [ "jobserver", "libc", - "once_cell", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -189,12 +402,56 @@ dependencies = [ "libc", ] +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.5", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.3", +] + [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -235,6 +492,59 @@ dependencies = [ "libc", ] +[[package]] +name = "coreaudio-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88" +dependencies = [ + "bitflags 1.3.2", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74117836a5124f3629e4b474eed03e479abaf98988b4bb317e29f08cfe0e4116" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "jni", + "js-sys", + "lazy_static", + "libc", + "mach", + "ndk 0.6.0", + "ndk-glue", + "nix 0.23.2", + "oboe", + "parking_lot 0.11.2", + "stdweb", + "thiserror", + "web-sys", + "winapi", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.4.0" @@ -244,6 +554,89 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -265,12 +658,40 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "termcolor", +] + [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "evdev" version = "0.12.1" @@ -284,6 +705,12 @@ dependencies = [ "thiserror", ] +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + [[package]] name = "fdeflate" version = "0.3.4" @@ -315,6 +742,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.30" @@ -346,12 +779,146 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + [[package]] name = "funty" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + [[package]] name = "gl_generator" version = "0.14.0" @@ -363,6 +930,12 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "glow" version = "0.13.1" @@ -439,12 +1012,211 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.7", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-proxy" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" +dependencies = [ + "bytes", + "futures", + "headers", + "http", + "hyper", + "tokio", + "tower-service", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if-addrs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "image" version = "0.24.9" @@ -465,6 +1237,16 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.2.6" @@ -472,7 +1254,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -487,6 +1269,35 @@ dependencies = [ "web-sys", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jni" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -529,6 +1340,23 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + [[package]] name = "libc" version = "0.2.154" @@ -555,6 +1383,32 @@ dependencies = [ "windows-targets 0.52.5", ] +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libmdns" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b04ae6b56b3b19ade26f0e7e7c1360a1713514f326c5ed0797cf2c109c9e010" +dependencies = [ + "byteorder", + "futures-util", + "hostname", + "if-addrs", + "log", + "multimap", + "nix 0.23.2", + "rand", + "socket2 0.4.10", + "thiserror", + "tokio", + "winapi", +] + [[package]] name = "libredox" version = "0.0.2" @@ -566,6 +1420,200 @@ dependencies = [ "redox_syscall 0.4.1", ] +[[package]] +name = "librespot" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea4c9952ef48968f8184a4a87f8576982426ebe623342d5a28f7d9c4978e4a44" +dependencies = [ + "base64 0.13.1", + "env_logger", + "futures-util", + "getopts", + "hex", + "hyper", + "librespot-audio", + "librespot-connect", + "librespot-core", + "librespot-discovery", + "librespot-metadata", + "librespot-playback", + "librespot-protocol", + "log", + "rpassword", + "sha-1", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "librespot-audio" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c176a31355e1ea8e0b9c4ced19df4947bfe4770661c25c142b6fba2365940d9d" +dependencies = [ + "aes-ctr", + "byteorder", + "bytes", + "futures-util", + "librespot-core", + "log", + "tempfile", + "tokio", +] + +[[package]] +name = "librespot-connect" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffafb6a443e9445ccb3d5d591573b5b1da3c89a9b8846c63ba2c3710210d3ec" +dependencies = [ + "form_urlencoded", + "futures-util", + "librespot-core", + "librespot-discovery", + "librespot-playback", + "librespot-protocol", + "log", + "protobuf", + "rand", + "serde", + "serde_json", + "tokio", + "tokio-stream", +] + +[[package]] +name = "librespot-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046349f25888e644bf02d9c5de0164b2a493d29aa4ce18e1ad0b756da9b55d6d" +dependencies = [ + "aes", + "base64 0.13.1", + "byteorder", + "bytes", + "form_urlencoded", + "futures-core", + "futures-util", + "hmac", + "http", + "httparse", + "hyper", + "hyper-proxy", + "librespot-protocol", + "log", + "num-bigint", + "num-integer", + "num-traits", + "once_cell", + "pbkdf2", + "priority-queue", + "protobuf", + "rand", + "serde", + "serde_json", + "sha-1", + "shannon", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "url", + "uuid", + "vergen", +] + +[[package]] +name = "librespot-discovery" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aa877d18f6150364012cb4be5682d62d7c712c88bae2d0d01720fd7c15e2f06" +dependencies = [ + "aes-ctr", + "base64 0.13.1", + "form_urlencoded", + "futures-core", + "hmac", + "hyper", + "libmdns", + "librespot-core", + "log", + "rand", + "serde_json", + "sha-1", + "thiserror", + "tokio", +] + +[[package]] +name = "librespot-metadata" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b80361fcbcb5092056fd47c08c34d5d51b08385d8efb6941c0d3e46d032c21c" +dependencies = [ + "async-trait", + "byteorder", + "librespot-core", + "librespot-protocol", + "log", + "protobuf", +] + +[[package]] +name = "librespot-playback" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5190a0b9bcc7f70ee4196a6b4a1c731d405ca130d4a6fcd4c561cfdde8b7cfb7" +dependencies = [ + "byteorder", + "cpal", + "futures-executor", + "futures-util", + "lewton", + "librespot-audio", + "librespot-core", + "librespot-metadata", + "log", + "ogg", + "parking_lot 0.12.3", + "rand", + "rand_distr", + "rodio", + "shell-words", + "thiserror", + "tokio", + "zerocopy 0.6.6", +] + +[[package]] +name = "librespot-protocol" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d3ac6196ac0ea67bbe039f56d6730a5d8b31502ef9bce0f504ed729dcb39f" +dependencies = [ + "glob", + "protobuf", + "protobuf-codegen-pure", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.21" @@ -578,6 +1626,21 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + [[package]] name = "memchr" version = "2.7.2" @@ -602,6 +1665,18 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.2" @@ -624,6 +1699,49 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "mpd" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e12cace5746cb0aa78faa6cd2caec9f9c01882fc0e6b54d34685a2d3303ea34" +dependencies = [ + "bufstream", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags 1.3.2", + "jni-sys", + "ndk-sys 0.3.0", + "num_enum 0.5.11", + "thiserror", +] + [[package]] name = "ndk" version = "0.7.0" @@ -632,7 +1750,7 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", - "ndk-sys", + "ndk-sys 0.4.1+23.1.7779620", "num_enum 0.5.11", "raw-window-handle", "thiserror", @@ -644,6 +1762,43 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" +[[package]] +name = "ndk-glue" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk 0.6.0", + "ndk-context", + "ndk-macro", + "ndk-sys 0.3.0", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + [[package]] name = "ndk-sys" version = "0.4.1+23.1.7779620" @@ -703,6 +1858,47 @@ dependencies = [ "libc", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.18" @@ -710,6 +1906,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -780,12 +1977,59 @@ dependencies = [ "objc-sys", ] +[[package]] +name = "object" +version = "0.36.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +dependencies = [ + "memchr", +] + +[[package]] +name = "oboe" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f63c358b4fa0fbcfefd7c8be5cfc39c08ce2389f5325687e7762a48d30a5c1" +dependencies = [ + "jni", + "ndk 0.6.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3370abb7372ed744232c12954d920d1a40f1c4686de9e79e800021ef492294bd" +dependencies = [ + "cc", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "orbclient" version = "0.3.47" @@ -804,12 +2048,95 @@ dependencies = [ "ttf-parser", ] +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.10", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "backtrace", + "cfg-if", + "libc", + "petgraph", + "redox_syscall 0.5.3", + "smallvec", + "thread-id", + "windows-targets 0.52.5", +] + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkg-config" version = "0.3.30" @@ -829,6 +2156,25 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy 0.7.35", +] + +[[package]] +name = "priority-queue" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bda9164fe05bc9225752d54aae413343c36f684380005398a6a8fde95fe785" +dependencies = [ + "autocfg", + "indexmap 1.9.3", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -848,6 +2194,31 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "protobuf-codegen" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "033460afb75cf755fcfc16dfaed20b86468082a2ea24e05ac35ab4a099a017d6" +dependencies = [ + "protobuf", +] + +[[package]] +name = "protobuf-codegen-pure" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a29399fc94bcd3eeaa951c715f7bea69409b2445356b00519740bcd6ddd865" +dependencies = [ + "protobuf", + "protobuf-codegen", +] + [[package]] name = "quote" version = "1.0.36" @@ -863,12 +2234,61 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "raw-window-handle" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_syscall" version = "0.3.5" @@ -887,6 +2307,44 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + [[package]] name = "resource" version = "0.5.0" @@ -902,6 +2360,61 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "rodio" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0939e9f626e6c6f1989adb6226a039c855ca483053f0ee7c98b90e41cf731e" +dependencies = [ + "cpal", +] + +[[package]] +name = "rpassword" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf099a1888612545b683d2661a1940089f6c2e5a8e38979b2159da876bfd956" +dependencies = [ + "libc", + "serde", + "serde_json", + "winapi", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + [[package]] name = "rustybuzz" version = "0.13.0" @@ -918,12 +2431,33 @@ dependencies = [ "unicode-script", ] +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "sctk-adwaita" version = "0.5.4" @@ -937,12 +2471,113 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.205" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.205" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "shannon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561" +dependencies = [ + "byteorder", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "slotmap" version = "1.0.7" @@ -977,12 +2612,50 @@ dependencies = [ "wayland-protocols", ] +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" + [[package]] name = "strict-num" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + [[package]] name = "syn" version = "1.0.109" @@ -1011,6 +2684,28 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tempfile" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.59" @@ -1031,6 +2726,16 @@ dependencies = [ "syn 2.0.60", ] +[[package]] +name = "thread-id" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "tiny-skia" version = "0.8.4" @@ -1056,6 +2761,74 @@ dependencies = [ "strict-num", ] +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 1.0.1", + "parking_lot 0.12.3", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.7", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml_datetime" version = "0.6.5" @@ -1068,17 +2841,54 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.2.6", "toml_datetime", "winnow", ] +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "ttf-parser" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -1103,6 +2913,15 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-properties" version = "0.1.1" @@ -1121,18 +2940,74 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +dependencies = [ + "getrandom", +] + [[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +[[package]] +name = "vergen" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7141e445af09c8919f1d5f8a20dae0b20c3b57a45dee0d5823c6ed5d237f15a" +dependencies = [ + "bitflags 1.3.2", + "chrono", + "rustc_version", +] + [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1304,12 +3179,30 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -1328,6 +3221,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -1521,8 +3423,8 @@ dependencies = [ "instant", "libc", "log", - "mio", - "ndk", + "mio 0.8.11", + "ndk 0.7.0", "objc2", "once_cell", "orbclient", @@ -1581,3 +3483,45 @@ name = "xml-rs" version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zerocopy" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +dependencies = [ + "byteorder", + "zerocopy-derive 0.6.6", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy-derive" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] diff --git a/Cargo.toml b/Cargo.toml index 535af91..a9fe6a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,3 +18,5 @@ image = { version = "0.24.0", default-features = false, features = [ "png", ] } nix = { version = "0.28.0", features = ["event", "fs"] } +librespot = "0.4.2" +mpd = "0.1.0" diff --git a/radios.txt b/radios.txt new file mode 100644 index 0000000..b1ab7cb --- /dev/null +++ b/radios.txt @@ -0,0 +1,523 @@ +_ 101.4 YOUNG FM∞https://canli.arabeskinmerkezi.com/9180/stream +. Al quran radio ∞https://n0a.radiojar.com/0tpy1h0kxtzuv?rj-ttl=5&rj-tok=AAABhdgGORQA-2acfyF3_4WY2g +1.FM - A List 80s∞http://strm112.1.fm/back280s_mobile_mp3 +1.FM - A List 80s∞http://strm112.1.fm/back280s_mobile_mp3 +1.FM - Absolute 70's Pop Radio∞http://sc-70s.1.fm:8658/ +1.FM - Absolute 70's Pop Radio∞http://strm112.1.fm/70s_mobile_mp3 +1.FM - Absolute 90s Party Zone Radio∞http://strm112.1.fm/partyzone90s_mobile_mp3 +1.FM - Absolute Country Hits Radio∞http://strm112.1.fm/acountry_mobile_mp3 +1.FM - Absolute Pop Latino Radio∞http://strm112.1.fm/latino_mobile_mp3 +1.FM - Absolute TOP 40 Radio∞http://sc-t40.1.fm:7016/ +1.FM - Absolute TOP 40 Radio∞http://strm112.1.fm/top40_mobile_mp3 +1.FM - Absolute Trance (Euro) Radio∞http://strm112.1.fm/trance_mobile_mp3 +1.FM - Acappella Radio∞http://strm112.1.fm/acpl_mobile_mp3 +1.FM - Adore Jazz Radio∞http://strm112.1.fm/ajazz_mobile_mp3 +1.FM - Adore Jazz Radio∞http://strm112.1.fm/ajazz_mobile_mp3 +1.FM - Adult Urban Hits Choice Radio∞http://strm112.1.fm/oldschool_mobile_mp3 +1.FM - Afterbeat Electronica Radio∞http://strm112.1.fm/electronica_mobile_mp3 +1.FM - All Euro 80's Radio∞http://strm112.1.fm/80s_90s_mobile_mp3 +1.FM - All Times & Urban Gospel Radio∞http://strm112.1.fm/gospel_mobile_mp3 +1.FM - All Times Hits∞http://185.33.21.111/allmixedup_mobile_mp3 +1.FM - Alternative Rock X Hits Radio∞http://strm112.1.fm/x_mobile_mp3 +1.FM - Always-Christmas Radio∞http://strm112.1.fm/christmas_mobile_mp3 +1.FM - Ambient Psychill∞http://strm112.1.fm/ambientpsy_mobile_mp3 +1.FM - America's Best Ballads Radio∞http://strm112.1.fm/onelive_mobile_mp3 +1.FM - Amsterdam Trance Radio∞http://strm112.1.fm/atr_mobile_mp3 +1.FM - Back To The 50's & 60's Radio∞http://strm112.1.fm/60s_70s_mobile_mp3 +1.FM - Bay Smooth Jazz Radio∞http://strm112.1.fm/smoothjazz_mobile_mp3 +1.FM - Blues Radio∞http://strm112.1.fm/blues_mobile_mp3 +1.FM - BOM Psytrance Radio∞http://strm112.1.fm/psytrance_mobile_mp3 +1.FM - Bombay Beats India Radio∞http://strm112.1.fm/bombaybeats_mobile_mp3 +1.FM - Bossa Nova Hits∞http://strm112.1.fm/bossanova_mobile_mp3 +1.FM - Cafe Radio∞http://strm112.1.fm/caferadio_mobile_mp3 +1.FM - Chillout Lounge Radio∞http://strm112.1.fm/chilloutlounge_mobile_mp3 +1.FM - Chillout Lounge Radio∞http://strm112.1.fm/chilloutlounge_mobile_mp3 +1.FM - Circuit Pride Radio∞http://strm112.1.fm/circuitpride_mobile_mp3 +1.FM - Classic Country Radio∞http://strm112.1.fm/ccountry_mobile_mp3 +1.FM - Classic Rock Replay Radio∞http://strm112.1.fm/crock_mobile_mp3 +1.FM - Classic Rock Replay Radio∞http://strm112.1.fm/crock_mobile_mp3 +1.FM - Classic Rock Replay Radio∞http://strm112.1.fm/crock_mobile_mp3 +1.FM - Club 1 Radio∞http://strm112.1.fm/club_mobile_mp3 +1.FM - Costa Del Mar∞http://strm112.1.fm/costadelmarchillout_mobile_mp3 +1.FM - Country One Radio∞http://strm112.1.fm/country_mobile_mp3 +1.FM - Dance One Radio∞http://strm112.1.fm/dance_mobile_mp3 +1.FM - Deep House Radio∞http://strm112.1.fm/deephouse_mobile_mp3 +1.FM - Deep Techno & Deep House∞http://strm112.1.fm/deeptech_mobile_mp3 +1.FM - Destination: SPA Radio∞http://strm112.1.fm/spa_mobile_mp3 +1.FM - Disco Ball 70's-80's Radio∞http://strm112.1.fm/disco_mobile_mp3 +1.FM - Dubstep Forward Radio∞http://strm112.1.fm/dubstep_mobile_mp3 +1.FM - Eternal Praise & Worship Radio∞http://strm112.1.fm/praise_mobile_mp3 +1.FM - Exitos del Ayer Radio∞http://strm112.1.fm/spanisholdies_mobile_mp3 +1.FM - Funky Express Radio∞http://185.33.22.15:11121/ +1.FM - Gorilla FM Radio∞http://strm112.1.fm/gorillafm_mobile_mp3 +1.FM - High Voltage Radio∞http://strm112.1.fm/highvoltage_mobile_mp3 +1.FM - Ibiza Chill Tropical∞http://strm112.1.fm/ibizachill_mobile_mp3?aw_0_req.gdpr=true +1.FM - Italia On Air Radio∞http://strm112.1.fm/italiaonair_mobile_mp3 +1.FM - Jamz Radio∞http://strm112.1.fm/jamz_mobile_mp3 +1.FM - Kids FM Radio∞http://strm112.1.fm/kidsfm_mobile_mp3 +1.FM - Love Classics Radio∞http://strm112.1.fm/loveclassics_mobile_mp3 +1.FM - Magic 80 Radio∞http://strm112.1.fm/magic80_mobile_mp3 +1.FM - Movie Soundtrack∞http://strm112.1.fm/moviesoundtracks_mobile_mp3 +1.FM - MPB Hits Radio∞http://strm112.1.fm/mpb_mobile_mp3 +1.FM - Otto's Baroque Music Radio∞http://strm112.1.fm/baroque_mobile_mp3 +1.FM - Otto's Opera House∞http://strm112.1.fm/opera_mobile_mp3 +1.FM - Otto's Opera House Music Radio∞http://strm112.1.fm/opera_mobile_mp3 +1.FM - Radio Gaia∞http://strm112.1.fm/radiogaia_mobile_mp3 +1.FM - ReggaeTrade Radio∞http://strm112.1.fm/reggae_mobile_mp3 +1.FM - Rock Classics Radio∞http://strm112.1.fm/rockclassics_mobile_mp3 +1.FM - Samba Hits Brazil Radio∞http://strm112.1.fm/samba_mobile_mp3 +1.FM - Samba Rock Radio∞http://strm112.1.fm/sambarock_mobile_mp3 +1.FM - Sax4Love∞http://strm112.1.fm/sax4ever_mobile_mp3 +1.FM - Sertaneja Hits Radio∞http://strm112.1.fm/sertanejo_mobile_mp3 +1.FM - Slow Jamz Radio∞http://strm112.1.fm/slowjamz_mobile_mp3 +1.FM - Sunshine∞https://strm112.1.fm/allmixedup_mobile_mp3? +1.FM - Top Fiesta Radio∞http://strm112.1.fm/spanishparty_mobile_mp3 +1.FM - Total Hits En Español Radio∞http://strm112.1.fm/spanishtophits_mobile_mp3 +1.fm Back To The 50's ∞https://strm112.1.fm/60s_70s_mobile_mp3? +1.FM Beloved Ballads∞https://strm112.1.fm/onelive_mobile_mp3? +1.FM Essential Classical∞http://strm112.1.fm/polskafm_mobile_mp3 +1.FM Essential Classical Polska FM∞http://strm112.1.fm/polskafm_mobile_mp3 +1.FM Essential classical polska FM∞http://strm112.1.fm/polskafm_mobile_mp3 +1.fm Movie Soundtrack Hits∞https://strm112.1.fm/moviesoundtracks_mobile_mp3? +1.fm Otto's Baroque music∞http://strm112.1.fm/baroque_mobile_aac +1.fm Otto's Classical music∞https://strm112.1.fm/classical_mobile_aac +1.fm Otto's Classical music (http/mp3)∞http://strm112.1.fm/classical_mobile_mp3 +1.FM Reggae∞http://strm112.1.fm/reggae_mobile_mp3 +1.fm top rap∞https://strm112.1.fm/jamz_mobile_mp3?aw_0_req.gdpr=true&listenerid=bc625eb7aaf609dd3942dc610e46ed40&awparams=companionAds%3Atrue +80ies dot radio∞https://stream.radiojar.com/6cbvkaa1mrruv?1643199882 +80s Forever - We Keep The 80s Alive∞http://azuracast.ssl-stream.com/radio/8050/256.mp3 +80s Forever - We Keep The 80s Alive∞https://premium.shoutcastsolutions.com/radio/8050/256.mp3 +abc∞https://lounge-radio.com/aacplus.m3u +ABSOLUTE 90'S RADIO∞http://sc1.1.fm:8065/ +Adonia-KidsRadio∞http://puma.streemlion.com:1930/stream +Adonia-KidsRadio∞http://puma.streemlion.com:1930/stream +aebisland∞https://aebisland.ice.infomaniak.ch/aebisland-128.mp3 +aebisland∞https://aebisland.ice.infomaniak.ch/aebisland-128.mp3 +aebisland∞https://aebisland.ice.infomaniak.ch/aebisland-64.aac +Ahuga laut.fm∞http://stream.laut.fm/ahuga +Ambi Nature Radio∞https://nature-rex.radioca.st/stream +Arc Musique∞https://arcmusique.ice.infomaniak.ch/arcmusique-128.mp3 +Audioasyl∞http://stream.audioasyl.net:8000/audioasyl +Barix Radio∞http://barix.streamguys.net/barix_hi.m3u +Basspistol Radio∞https://radio.basspistol.com/radio.mp3 +Break Radio∞https://breakradio.ice.infomaniak.ch/breakradio-192.mp3 +BurningStation.com∞https://server1.streamserver-unlimited.de:2199/tunein/iu245.pls +Canal3 deutsch∞https://radio.upstream-cloud.ch/canal3allemand-192.aac +Christmas Radio∞http://xmasfm1.dmd2streaming.com/christmasradiofm-128.mp3 +Classic | Radio Swiss∞https://stream.srg-ssr.ch/m/rsc_de/mp3_128 +Classic Rock∞https://chmedia.streamabc.net/79-classicrock-mp3-192-6577748?sABC=655o94o7%230%239906209q5qoq5po487r1668p80q43331%23qverp&aw_0_1st.playerid=direc&amsparams=playerid:direc;skey:1700500663 +Couleur3∞http://stream.srg-ssr.ch/m/couleur3/aacp_96 +Country Radio Switzerland (CRS)∞http://stream.countryradio.ch/crs-128.mp3 +DIKS ДИКС ∞https://icecast.correctiv.net/sacharow +Dream Sequence∞https://www.radioking.com/play/dream-sequence/508976 +driftFM∞https://s4.radio.co/s5729f2e59/listen +Electro Radio∞https://www.electroradio.fm/stream.m3u +Electrons Libres∞https://api.radioking.io/radio/427889/listen.m3u +electroradio.fm∞http://n05.radiojar.com/fkyxx4q35k0uv +Energy Basel (NRJ)∞https://energybasel.ice.infomaniak.ch/energybasel-high.mp3 +Energy Bern∞https://energybern.ice.infomaniak.ch/energybern-high.mp3 +Energy Bern (NRJ)∞http://broadcast.infomaniak.ch/energybern-high.mp3 +Energy Blick Trendz∞http://energyzuerich.ice.infomaniak.ch/energyzuerich-high.mp3 +Energy Luzern∞https://energyluzern.ice.infomaniak.ch/energyluzern-high.mp3 +Energy St. Gallen (NRJ)∞https://energystgallen.ice.infomaniak.ch/energystgallen-high.mp3 +Energy Zürich (NRJ)∞http://broadcast.infomaniak.ch/energyzuerich-high.mp3 +FLASHBACK FM∞https://flashback.streambase.ch/001 +FLASHBACK FM∞https://flashback.streambase.ch/001 +Framboase∞http://framboase.ice.infomaniak.ch/framboase-128.mp3 +GDS.FM∞http://gdsfm.out.airtime.pro:8000/gdsfm_a +Glaubenskampf Bibel Radio∞https://streams.radio.co/s06c02a443/listen +Global FM∞http://globalfm.ice.infomaniak.ch/globalfm-high.mp3 +Global Sport - Vaud∞http://live9.avf.ch:8000/globalfmdabvd +Global Sport - Genève∞http://live9.avf.ch:8000/globalfmdabge +Global Sport - Suisse∞http://live9.avf.ch:8000/globalfm160 +Global Sport NFBJ∞http://live9.avf.ch:8000/globalfmdabne +Global Sport SUISSE∞http://live7.avf.ch:8000/globalfm +Gnu Radio - Metal FM∞https://fluxfm.streamabc.net/flx-metalfm-mp3-320-9154971?sABC=61s83r32%230%2389nqs1p1q8rrq2q126260sp7877or6oo%23fgernzf.syhksz.qr&amsparams=playerid:streams.fluxfm.de;skey:1643658802 +GOAT Radio∞https://20min.dmd2streaming.com/20minuten_radio_64.aac +Gorilla.fm∞https://strm112.1.fm/gorillafm_mobile_mp3 +Gottes Radio∞http://stream.laut.fm/gottesradio.m3u +GRRIF∞https://rjb.ice.infomaniak.ch/rjb-high.mp3 +Happy Radio∞https://uksoutha.streaming.broadcast.radio/stream/11340/gtradio?1672903939995 +IP music∞http://live9.avf.ch:8000/ipmusicaacplus96 +IP music∞http://live9.avf.ch:8000/ipmusicaacplus96 +ip music 320∞http://live7.avf.ch:8000/ipmusic320 +IP Music Slow∞http://live7.avf.ch:8000/ipmusicslow256 +IP music SLOW - aacPlus@96 Kb/s∞https://live9.avf.ch/ipmusicslowaacp96 +IP music slow (128 kbps AAC)∞http://live7.avf.ch:8000/ipmusicslowaacp128 +IP music slow (96 kbps AAC)∞http://live7.avf.ch:8000/ipmusicslowaacp96 +JAMES FM∞https://jamesfm.ice.infomaniak.ch/jamesfm.mp3 +Jazz | Radio Swiss∞https://stream.srg-ssr.ch/m/rsj/mp3_128 +Jazz Black Music∞http://jazzblackmusic.ice.infomaniak.ch/jazzblackmusic-high.aac +Jazz Radio∞http://broadcast.infomaniak.ch/jazzlounge-high.mp3 +Jazz Radio Lounge∞http://jazzlounge.ice.infomaniak.ch/jazzlounge-high.aac +Jazzology Radio∞https://c2.radioboss.fm:18094/stream +Jukebox - Nonstop Music,(AutoDJ)∞https://kreuzbergswiss.sp.radio.fm/stream +Jukebox - Nonstop Music,(AutoDJ)∞https://kreuzbergswiss.sp.radio.fm/stream +Jukebox - Nonstop Music,(AutoDJ)∞https://kreuzbergswiss.sp.radio.fm/stream +Jukebox - Nonstop Music,My Station name∞https://kreuzbergswiss.sp.radio.fm/stream +Jukebox - Nonstop Music,My Station name∞https://kreuzbergswiss.sp.radio.fm/stream +Kanal Bethesda∞http://162.13.25.174/a2dd2q0kb +Kanal K∞https://play.kanalk.ch/kanalk/mp3-192/webseite +Kanal K∞https://play.kanalk.ch/kanalk/mp3-192/webstream +kanalk∞https://play.kanalk.ch/kanalk/mp3-192/ +Kiss Collector Radio∞https://dr2101.ice.infomaniak.ch/dr2101.mp3 +Kontrafunk∞https://s5.radio.co/sca4082ebb/listen +Kontrafunk∞https://s5.radio.co/sca4082ebb/listen +Kontrafunk∞https://s5.radio.co/sca4082ebb/listen +Kontrafunk∞https://s5.radio.co/sca4082ebb/listen +Kontrafunk (AAC 64)∞https://s5.radio.co/sca4082ebb/low +Kontrafunk (MP3 192)∞https://stream.kontrafunk.radio/listen/kontrafunk/radio.mp3 +Kontrafunk News∞https://stream.kontrafunk.radio/listen/kontrafunk/radio.mp3 +KTFM / Global Sport∞http://live9.avf.ch:8000/globalfmdabge +KTfm Geneva - THE BEST OF 70'S AND 80'S∞https://ktfm.ice.infomaniak.ch/ktfm-high.mp3 +LFM∞http://lausannefm.ice.infomaniak.ch/lausannefm-high.mp3 +Lounge Radio∞http://de1.streamhosting.ch/ +lounge-radio.com∞https://fr1.streamhosting.ch/lounge128.mp3 +Loungemain Radio Jazz-Chill-Funk∞http://185.238.128.191:8002/live +LUX RADIO∞https://fluxradio.ice.infomaniak.ch/fluxradio-32.aac +M La Radio∞https://mlaradio.ice.infomaniak.ch/mlaradio.mp3 +Musikwälle∞https://stream.srg-ssr.ch/drsmw/mp3_128.m3u +my105 - All The Hits∞http://stream01.my105.ch/my105allthehits.mp3 +my105 - Charts∞http://stream01.my105.ch/my105charts.mp3 +my105 - Chill∞http://stream01.my105.ch/my105chill.mp3 +my105 - Dance∞http://stream01.my105.ch/my105dance.mp3 +my105 - Deep∞http://stream01.my105.ch/my105deep.mp3 +my105 - Deluxe∞http://stream01.my105.ch/my105deluxe.mp3 +my105 - DJ Mixes∞http://stream01.my105.ch/my105djnights.mp3 +my105 - Dreist∞http://stream01.my105.ch/my105dreist.mp3 +my105 - Fresh∞http://stream01.my105.ch/my105fresh.mp3 +my105 - Love∞http://stream01.my105.ch/my105love.mp3 +my105 - Mashup∞http://stream01.my105.ch/my105mashup.mp3 +my105 - Original∞http://stream01.my105.ch/my105original.mp3 +my105 - Party∞http://stream01.my105.ch/my105party.mp3 +my105 - Ritmo Latino∞http://stream01.my105.ch/my105ritmolatino.mp3 +my105 - Rock∞http://stream01.my105.ch/my105rock.mp3 +my105 - The Battle∞http://stream01.my105.ch/my105thebattle.mp3 +my105 X-MAS∞https://stream01.my105.ch/my105xmas.mp3 +my105 X-MAS Radio (AAC)∞https://stream01.my105.ch/my105xmas-aac.mp3 +Neo1∞https://neo1.ice.infomaniak.ch/neo1.mp3 +Neo1∞https://neo1.ice.infomaniak.ch/neo1.mp3 +New Clear Radio∞http://live.ncradio.fm/320 +NRJ Léman 103,6 FM∞http://cdn.nrjaudio.fm/audio1/ch/50001/mp3_128.mp3 +One Dance Ticino∞https://ice15.fluidstream.net/onedancech.aac +One FM∞http://onefm.ice.infomaniak.ch/onefm-high.mp3 +One FM 2000s∞https://webradio0009.ice.infomaniak.ch/webradio0009-128.mp3 +One FM 90s∞https://webradio0006.ice.infomaniak.ch/webradio0006-128.mp3 +One FM New-Hits∞https://webradio0001.ice.infomaniak.ch/webradio0001-128.mp3 +open broadcast radio∞http://stream.openbroadcast.ch/320.mp3 +Option Musique∞http://stream.srg-ssr.ch/m/option-musique/mp3_128 +Pineapple Juice∞http://stream.laut.fm/pineapplejuice +Pineapplejuice∞http://stream.laut.fm/pineapplejuice +Piratenradio∞http://piratenradioch.ice.infomaniak.ch/piratenradioch-128.mp3 +Planet Ambi HD∞http://philae.shoutca.st:9019/stream +Pop | Radio Swiss∞https://stream.srg-ssr.ch/m/rsp/mp3_128 +Powerup Radio∞http://stream.powerup.ch/powerupradio-192.mp3 +Public Domain Classical∞http://relay.publicdomainradio.org/classical.mp3 +Public Domain Jazz and Swing∞http://relay.publicdomainproject.org/jazz_swing.mp3 +Public Domain Swiss Schlager∞http://relay.publicdomainradio.org/swiss_schlager.mp3 +R102∞http://94.23.66.155:9334/listen.pls +RaBe Radio Bern Switzerland∞http://stream.rabe.ch:8000/livestream/rabe-mid.mp3 +RaBe Radio Bern Switzerland∞http://stream.rabe.ch/livestream/rabe-mid.mp3 +Radio 1∞http://stream.radio1.ch/128k.m3u +Radio 1∞http://stream.radio1.ch/128k.m3u +Radio 1 - FM 93.6∞https://stream.radio1.ch/128k +Radio 32∞https://stream.streambase.ch/radio32/mp3-192/chmedia-today-web +Radio 32 Goldies∞https://stream.streambase.ch/r32goldies/mp3-192/direct/ +Radio 3FACH∞http://stream01.3fach.ch:8001/live +Radio Argovia∞https://stream.streambase.ch/argovia/mp3-192/radiobrowser/ +RADIO ARGOVIA∞https://stream.streambase.ch/argovia/mp3-192/direct/ +Radio Argovia∞https://stream.streambase.ch/argovia/mp3-192/direct/ +Radio Argovia Classic Rock∞https://stream.streambase.ch/crock/mp3-192/radiobrowser/ +Radio Barix AAC∞http://barix.streamguys.net/barix_aacp +Radio Basilisk∞http://radiobasilisk-64.ice.infomaniak.ch/radiobasilisk-64-128-2.mp3 +Radio BeO∞http://stream11.radiobeo.ch:8000/radiobeo.mp3 +RADIO BERN1∞https://stream.streambase.ch/radiobern1/mp3-192/direct/ +Radio Bollwerk∞https://radiobollwerk.out.airtime.pro/radiobollwerk_a +Radio Central∞https://stream.streambase.ch/rcentral/mp3-192/direct/ +Radio Chablais∞http://radiochablais.ice.infomaniak.ch/radiochablais-high.mp3 +Radio Chablais - 100% Français∞http://stream.radiochablais.ch/chablais-100francais.mp3 +Radio Drachenblut∞http://radio-drachenblut.ch:8000/stream/3/ +Radio Electrons Libres∞https://api.radioking.io/radio/427889/listen.m3u +Radio Eviva∞https://stream.streambase.ch/reviva/mp3-192/direct/ +Radio FM1∞https://chmedia.streamabc.net/79-fm1-mp3-192-7523806?sABC=6499o8o6%230%230016or1p1r381r4485n244q3016qs660%23qverpg&aw_0_1st.playerid=direct&amsparams=playerid:direct;skey:1687795894 +Radio FM1∞https://chmedia.streamabc.net/79-fm1-mp3-192-7523806?sABC=6499oos8%230%230016or1p1r381r4485n244q3016qs660%23qverpg&aw_0_1st.playerid=direct&amsparams=playerid:direct;skey:1687796728 +RADIO FM1∞https://chmedia.streamabc.net/79-fm1-mp3-192-7523806?sABC=6499oos8%230%230016or1p1r381r4485n244q3016qs660%23qverpg&aw_0_1st.playerid=direct&amsparams=playerid:direct;skey:1687796728 +RADIO FM1∞https://chmedia.streamabc.net/79-fm1-mp3-192-7523806?sABC=6499oos8%230%230016or1p1r381r4485n244q3016qs660%23qverpg&aw_0_1st.playerid=direct&amsparams=playerid:direct;skey:1687796728 +RADIO FM1∞https://chmedia.streamabc.net/79-fm1-mp3-192-7523806?sABC=6499oos8%230%230016or1p1r381r4485n244q3016qs660%23qverpg&aw_0_1st.playerid=direct&amsparams=playerid:direct;skey:1687796728 +Radio Freundesdienst Deutsch∞http://radiofd.ice.infomaniak.ch/radiofd.mp3 +Radio Freundesdienst Schweiz∞http://radiofdch.ice.infomaniak.ch/radiofdch.mp3 +Radio Fribourg∞https://radiofribourg.ice.infomaniak.ch/radiofribourg-high.mp3 +Radio Gaba Switzerland∞http://radio-gaba.ddns.net:8000/play.ogg +Radio Gloria∞https://ch-be06-ice.dmd2streaming.com/radiogloria_lo +Radio grenzenlos∞http://stream.grenzenlos.ch/ +Radio Gugelhopf∞http://uk3.internet-radio.com:8113/stream +Radio Henri Dès∞https://19013.live.streamtheworld.com/SP_R2329710.mp3 +Radio Kaiseregg∞http://kaiseregg.ice.infomaniak.ch/stream128k.mp3 +Radio Lac∞https://radiolac.ice.infomaniak.ch/radiolac-high.mp3 +Radio LAC∞https://radiolac.ice.infomaniak.ch/radiolac-high.mp3 +Radio LoRa∞https://livestream.lora.ch/lora.mp3 +Radio LoRa 97.5∞https://livestream.lora.ch/lora.mp3 +Radio Maria Schweiz∞http://streaming2.elitecomunicacion.es:9000/radiomaria_lo +RADIO MARIA SWITZERLAND∞http://dreamsiteradiocp2.com:8106/stream +Radio Maria Switzerland∞http://dreamsiteradiocp.com:8020/stream +Radio Maxxima∞https://maxxima.mine.nu/maxxima.mp3 +Radio Melody∞https://chmedia.streamabc.net/79-rm-mp3-192-7754268?sABC=64726ssr%230%23565o8622n9638n515p1pqq82pnq6q099%23zlghare&aw_0_1st.playerid=mytuner&amsparams=playerid:mytuner;skey:1685221374 +Radio Melody Schweiz∞https://stream.streambase.ch/rm/mp3-192/mytuner/ +Radio Merak∞http://79.143.187.96:8092/ +Radio Morcote International∞http://streaming.radiomorcoteinternational.com:8000/; +Radio Neue Hoffnung∞https://stream.mnr.ch/rnh-mp3 +Radio Neue Hoffnung∞https://stream.mnr.ch/rnh-mp3 +Radio Niesen∞https://login.streamplus.de/app.php/streamserver/public/31677.m3u +Radio Onyx∞http://nr4.newradio.it:9432/listen.pls +Radio Ouistiti∞http://radioouistiti2.ice.infomaniak.ch/radioouistiti-high.mp3 +Radio Pilatus∞https://stream.streambase.ch/radiopilatus/mp3-192/direct/ +Radio Pilatus∞https://stream.streambase.ch/radiopilatus/mp3-192/chmedia/ +Radio R∞http://radior.ice.infomaniak.ch/radior-128.mp3 +Radio R∞http://radior.ice.infomaniak.ch/radior-128.mp3 +Radio R Louange∞https://radiorlouange.ice.infomaniak.ch/radiorlouange-96.aac?ver=666978 +Radio R Louange∞https://radiorlouange.ice.infomaniak.ch/radiorlouange-96.aac +Radio Radius (AAC)∞http://relay.radio.ethz.ch/sender.aac.m3u +Radio Radius (mp3)∞http://relay.radio.ethz.ch/sender.mp3.m3u +Radio Radius (ogg)∞http://relay.radio.ethz.ch/sender.ogg.m3u +Radio Rasa Schaffhausen∞https://radio.upstream-cloud.ch/radiorasa-128.mp3 +Radio Rocket∞https://i9.streams.ovh/sc/radioroc/stream +RADIO ROTATION∞http://stream.laut.fm/radio-rotation +Radio Rotblau ∞https://rotblaustream.ch:8443/live +Radio RTR∞https://stream.srg-ssr.ch/rr/aacp_96.m3u +Radio Rumantsch∞http://stream.srg-ssr.ch/m/rr/mp3_128 +Radio S∞https://stream.radio-s.ch/stream +Radio Sans Chaine∞http://radio-sans-chaine.ice.infomaniak.ch/radiosanschaine.aac +Radio SRF 1∞http://stream.srg-ssr.ch/drs1/aacp_32.m3u +Radio SRF 1 Aargau Solothurn∞http://stream.srg-ssr.ch/regi_ag_so/aacp_32.m3u +Radio SRF 1 Basel Baselland∞http://stream.srg-ssr.ch/regi_bs_bl/aacp_32.m3u +Radio SRF 1 Basel Baselland∞http://stream.srg-ssr.ch/m/regi_bs_bl/aacp_96 +Radio SRF 1 Bern Freibourg Wallis∞http://stream.srg-ssr.ch/regi_be_fr_vs/aacp_32.m3u +Radio SRF 1 HLS 96∞http://lsaplus.swisstxt.ch/audio/drs1_96.stream/chunklist_DVR.m3u8 +Radio SRF 1 Ostschweiz∞http://stream.srg-ssr.ch/regi_ost/aacp_32.m3u +Radio SRF 1 Regionaljournal Aargau, Solothurn∞http://stream.srg-ssr.ch/m/regi_ag_so/mp3_128 +Radio SRF 1 Regionaljournal Basel, Baselland∞http://stream.srg-ssr.ch/m/regi_bs_bl/mp3_128 +Radio SRF 1 Regionaljournal Bern, Freiburg, Wallis∞http://stream.srg-ssr.ch/m/regi_be_fr_vs/mp3_128 +Radio SRF 1 Regionaljournal Graubünden∞http://stream.srg-ssr.ch/m/regi_gr/mp3_128 +Radio SRF 1 Regionaljournal Ostschweiz∞http://stream.srg-ssr.ch/m/regi_ost/mp3_128 +Radio SRF 1 Regionaljournal Zürich, Schaffhausen∞http://stream.srg-ssr.ch/m/regi_zh_sh/mp3_128 +Radio SRF 1 Zentralschweiz∞http://stream.srg-ssr.ch/m/regi_zentr/mp3_128 +Radio SRF 1 Zentralschweiz∞http://stream.srg-ssr.ch/regi_zentr/aacp_32.m3u +Radio SRF 1 Zürich Schaffhausen∞http://stream.srg-ssr.ch/regi_zh_sh/aacp_32.m3u +Radio SRF 2 Kultur∞http://stream.srg-ssr.ch/drs2/aacp_32.m3u +Radio SRF 2 Kultur∞http://stream.srg-ssr.ch/drs2/mp3_128.m3u +Radio SRF 2 Kultur∞http://stream.srg-ssr.ch/m/drs2/mp3_128 +Radio SRF 2 Kultur∞https://stream.srg-ssr.ch/m/drs2/aacp_32 +Radio SRF 2 Kultur∞https://stream.srg-ssr.ch/m/drs2/aacp_96 +Radio SRF 2 Kultur HLS 96∞http://lsaplus.swisstxt.ch/audio/drs2_96.stream/chunklist_DVR.m3u8 +Radio SRF 3∞http://stream.srg-ssr.ch/drs3/aacp_32.m3u +Radio SRF 3∞https://stream.srg-ssr.ch/m/drs3/aacp_32 +Radio SRF 3∞https://stream.srg-ssr.ch/m/drs3/aacp_96 +Radio SRF 3 HLS 96∞http://lsaplus.swisstxt.ch/audio/drs3_96.stream/chunklist_DVR.m3u8 +Radio SRF 4 News∞https://stream.srg-ssr.ch/m/drs4news/aacp_32 +Radio SRF 4 News∞https://stream.srg-ssr.ch/m/drs4news/aacp_96 +Radio SRF 4 News∞http://stream.srg-ssr.ch/drs4news/aacp_32.m3u +Radio SRF 4 News∞http://stream.srg-ssr.ch/drs3/aacp_96.ram +Radio SRF 4 News HLS 96∞http://lsaplus.swisstxt.ch/audio/drs4news_96.stream/chunklist_DVR.m3u8 +Radio SRF Musikwelle∞https://stream.srg-ssr.ch/drsmw/mp3_128.m3u +Radio SRF Musikwelle∞http://stream.srg-ssr.ch/m/drsmw/aacp_96 +Radio SRF Musikwelle∞http://stream.srg-ssr.ch/drsmw/aacp_32.m3u +Radio SRF Musikwelle HLS 96∞http://lsaplus.swisstxt.ch/audio/drsmw_96.stream/chunklist_DVR.m3u8 +Radio SRF Virus∞http://stream.srg-ssr.ch/drsvirus/aacp_32.m3u +Radio SRF Virus∞http://stream.srg-ssr.ch/drsvirus/aacp_96.ram +Radio SRF Virus - Indie Rock∞http://streaming.swisstxt.ch/m/drsvirus/mp3_128 +Radio Stadtfilter Winterthur∞http://stream.stadtfilter.net:8406/stadtfilter.mp3 +Radio Suisse Classique∞http://www.surfmusik.de/m3u/station/radio-suisse-classique,16403.m3u +Radio Suisse Classique∞http://stream.srg-ssr.ch/rsc_fr/aacp_96.asx +Radio Suisse Classique∞http://stream.srg-ssr.ch/m/rsc_fr/mp3_128 +Radio Summernight∞https://stream.laut.fm/radiosummernight +Radio Svizzera Classica∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +Radio Svizzera Classica∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +Radio Svizzera Classica∞http://stream.srg-ssr.ch/m/rsc_it/mp3_128 +Radio Swiss Classic∞https://stream.srg-ssr.ch/rsc_de/aacp_96.m3u +Radio Swiss Classic∞http://stream.srg-ssr.ch/m/rsc_de/aacp_32 +Radio Swiss Classic∞http://stream.srg-ssr.ch/m/rsc_de/mp3_128 +Radio Swiss Classic∞http://stream.srg-ssr.ch/m/rsc_it/mp3_128 +Radio Swiss Classic∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +Radio Swiss Classic∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +Radio Swiss Classic∞http://www.radioswissclassic.ch/de/live/aacp.m3u +Radio Swiss Classic∞http://stream.srg-ssr.ch/m/rsc_de/aacp_96 +Radio Swiss Classic DE HLS 96∞http://lsaplus.swisstxt.ch/audio/rsc_de_96.stream/chunklist_DVR.m3u8 +Radio Swiss Classic French∞http://www.radioswissclassic.ch/fr/live/aacp.m3u +Radio Swiss Classic French∞http://www.radioswissclassic.ch/fr/live/aacp32.m3u +Radio Swiss Classic German∞http://stream.srg-ssr.ch/m/rsc_de/mp3_128 +Radio Swiss Classic German∞http://www.radioswissclassic.ch/de/live/aacp32.m3u +Radio Swiss Classic Italian∞http://www.radioswissclassic.ch/it/live/aacp32.m3u +Radio Swiss Classic Italian∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +Radio Swiss Classic Italian∞http://www.radioswissclassic.ch/it/live/aacp.m3u +RADIO SWISS CLASSICA ITALIA∞https://stream.srg-ssr.ch/rsc_it/aacp_96.m3u +RADIO SWISS CLASSICA ITALIA∞https://stream.srg-ssr.ch/rsc_it/mp3_128.m3u +RADIO SWISS CLASSICA ITALIA∞https://stream.srg-ssr.ch/m/rsc_it/mp3_128 +Radio Swiss Jazz∞http://stream.srg-ssr.ch/m/rsj/aacp_96 +Radio Swiss Jazz∞https://stream.srg-ssr.ch/rsj/aacp_96.m3u +Radio Swiss Jazz∞http://stream.srg-ssr.ch/m/rsj/aacp_32 +Radio Swiss Jazz∞https://stream.srg-ssr.ch/rsj/aacp_96.m3u +Radio Swiss Jazz∞http://stream.srg-ssr.ch/m/rsj/mp3_128 +Radio Swiss Jazz∞http://www.radioswissjazz.ch/live/aacp32.m3u +Radio Swiss Jazz∞http://stream.srg-ssr.ch/m/rsj/aacp_96 +Radio Swiss Jazz HLS 96∞http://lsaplus.swisstxt.ch/audio/rsj_96.stream/chunklist_DVR.m3u8 +Radio Swiss Pop∞http://stream.srg-ssr.ch/m/rsp/aacp_96 +Radio Swiss Pop∞https://stream.srg-ssr.ch/rsp/mp3_128.m3u +Radio Swiss Pop∞https://stream.srg-ssr.ch/rsp/aacp_96.m3u +Radio Swiss Pop∞http://stream.srg-ssr.ch/m/rsp/aacp_32 +Radio Swiss Pop∞http://stream.srg-ssr.ch/m/rsp/mp3_128 +Radio Swiss Pop∞http://www.radioswisspop.ch/live/aacp32.m3u +Radio Swiss Pop HLS 96∞http://lsaplus.swisstxt.ch/audio/rsp_96.stream/chunklist_DVR.m3u8 +Radio Tell∞http://stream.radiotell.ch/radiotell.mp3 +Radio Top (Ostschweiz)∞https://radiotop.ice.infomaniak.ch/radiotop96.aac +Radio Top Two∞http://77.109.144.109:8000/twosrp128 +Radio Vihor∞https://r.name.ba:7500/ +Radio Vostok∞http://radiovostok.ice.infomaniak.ch/radiovostok.aac +Radio X Basel (MP3 Stream)∞http://mp3.radiox.ch:8000/standard.mp3.m3u +Radio X Basel (OGG Stream)∞http://mp3.radiox.ch:8000/standard.ogg.m3u +Radio Zuerisee∞http://mp3.radio.ch/radiozuerisee128k +Radio Zuerisee∞http://mp3.radio.ch/radiozuerisee256k +Radio Zürisee∞http://mp3.radio.ch/radiozuerisee128k +Radio-Drachenblut∞https://radio-drachenblut.ch/stream.m3u +Radio1∞http://stream.radio1.ch/128k.m3u +Radio1.ch∞https://stream.radio1.ch/128k +Radio15.ch∞http://radio15.ice.infomaniak.ch/radio15-192kbps.mp3?fbclid=IwAR1RgI4qFLCInWkcBZBlod__-7UXEufqWJJl2BnOT1s_xnkTuUQg8BG4avc +Radio24∞https://stream.streambase.ch/radio24/mp3-192/direct/ +Radio3i∞https://vstream-cdn.ch/hls/radio3i.m3u8 +Radio4TNG∞http://radio4tng.ice.infomaniak.ch/radio4tng-live-web.mp3 +RadioFr. Freiburg∞http://radiofreiburg.ice.infomaniak.ch/radiofreiburg-high.mp3 +RadioFr. Fribourg∞http://radiofribourg.ice.infomaniak.ch/radiofribourg-high.mp3 +Radionet+∞http://radionetplus.ice.infomaniak.ch/radionetplus-high.mp3 +RADIONET+∞https://radionetplus.ice.infomaniak.ch/radionetplus-high.mp3 +Radiopolis∞http://rs01.swissnwx.ch:20080/stream +RadioPolis∞http://rs01.swissnwx.ch:20080/stream +RadioSouvenir.com∞http://www.radiosouvenir.com/radio.m3u +Radioswiss ∞http://stream.laut.fm/radioswiss +RFJ∞https://rfj.ice.infomaniak.ch/rfj-high.mp3 +Rhône FM∞http://rhonefm.ice.infomaniak.ch/rhonefm-high.aac +Rhône FM∞http://rhonefm.ice.infomaniak.ch/rhonefm-high.mp3 +RJB∞https://rjb.ice.infomaniak.ch/rjb-high.mp3 +Rock The Blues∞http://stream.laut.fm/rock-the-blues +Rock the Blues∞http://stream.laut.fm/rock-the-blues +ROCKSTATION∞https://radio2.stream24.net:8130/live.mp3 +ROCKSTATION's Broadcast∞http://radio2.stream24.net:8130/live.mp3 +Rouge∞http://rougefm.ice.infomaniak.ch/rougefm-high.aac +Rouge FM 90s∞http://rouge-90.ice.infomaniak.ch/rouge-90-128.mp3 +Rouge FM Latino∞http://rouge-latino.ice.infomaniak.ch/rouge-latino-128.mp3 +Rouge FM Lounge∞http://rougefm.ice.infomaniak.ch/rougefm-high.mp3 +Rouge FM Suisse∞http://rouge-suisse.ice.infomaniak.ch/rouge-suisse-128.mp3 +Rouge Reggae∞http://rouge-reggae.ice.infomaniak.ch/rouge-reggae-128.mp3 +RSI Rete Due∞http://stream.srg-ssr.ch/retedue/aacp_32.m3u +RSI Rete Due∞http://stream.srg-ssr.ch/m/retedue/mp3_128 +RSI Rete Tre∞http://stream.srg-ssr.ch/retetre/aacp_32.m3u +RSI Rete Tre∞http://stream.srg-ssr.ch/m/retetre/mp3_128 +RSI Rete Uno∞http://stream.srg-ssr.ch/reteuno/aacp_32.m3u +RSI Rete Uno∞http://stream.srg-ssr.ch/m/reteuno/mp3_128 +RSR Couleur 3∞http://stream.srg-ssr.ch/couleur3/aacp_32.m3u +RSR Espace 2∞http://stream.srg-ssr.ch/espace-2/aacp_32.m3u +RSR La Premiere∞http://stream.srg-ssr.ch/la-1ere/aacp_32.m3u +RSR Option Musique∞http://stream.srg-ssr.ch/option-musique/aacp_32.m3u +RTN∞https://rtn.ice.infomaniak.ch/rtn-high.mp3 +RTS Couleur 3∞http://stream.srg-ssr.ch/m/couleur3/mp3_128 +RTS Couleur 3∞http://stream.srg-ssr.ch/m/couleur3/mp3_128 +RTS Couleur 3∞http://stream.srg-ssr.ch/m/couleur3/mp3_128 +RTS Couleur 3∞http://stream.srg-ssr.ch/m/couleur3/mp3_128 +RTS Espace 2∞http://stream.srg-ssr.ch/m/espace-2/aacp_96 +RTS Espace 2∞http://stream.srg-ssr.ch/espace-2/mp3_128.m3u +RTS La Première∞http://stream.srg-ssr.ch/m/la-1ere/mp3_128 +RTS Option Musique∞http://stream.srg-ssr.ch/option-musique/mp3_128.m3u +RTS Option Musique∞http://stream.srg-ssr.ch/option-musique/mp3_128.m3u +Rundfunk FM∞http://rundfunk.ice.infomaniak.ch/rundfunk-192.mp3 +Skuizz Hits 90s-00s∞https://traxx024.ice.infomaniak.ch/traxx024-1.mp3 +Soul Club Radio∞https://a1.asurahosting.com:8430/radio.mp3 +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd.mp3 +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio∞http://spoonradio.ice.infomaniak.ch/spoonradio-hd +Spoon Radio - Acoustic Rock∞https://spoonradioacousticrock.ice.infomaniak.ch/spoon-acousticrock-hd.aac +Spoon Radio - Acoustic Rock∞https://spoonradioacousticrock.ice.infomaniak.ch/spoon-acousticrock-hd.aac +Spoon Radio - Alternative Rock∞https://spoonradioalternativerock.ice.infomaniak.ch/spoon-alternativerock-hd.aac +Spoon Radio - Alternative Rock∞https://spoonradioalternativerock.ice.infomaniak.ch/spoon-alternativerock-hd.aac +Spoon Radio - Classic Rock∞https://spoonradioclassicrock.ice.infomaniak.ch/spoon-classicrock-hd.aac +Spoon Radio - Classic Rock∞https://spoonradioclassicrock.ice.infomaniak.ch/spoon-classicrock-hd.aac +Spoon Radio - Classic Rock∞https://spoonradioclassicrock.ice.infomaniak.ch/spoon-classicrock-hd.aac +Spoon Radio - Hard Rock∞https://spoonradiohardrock.ice.infomaniak.ch/spoon-hardrock-hd.aac +Spoon Radio - Hard Rock∞https://spoonradiohardrock.ice.infomaniak.ch/spoon-hardrock-hd.aac +Spoon Radio - Modern Rock∞https://spoonradiomodernrock.ice.infomaniak.ch/spoon-modernrock-hd.aac +Spoon Radio - Modern Rock∞https://spoonradiomodernrock.ice.infomaniak.ch/spoon-modernrock-hd.aac +Spoon Radio - Rock Ballads∞https://spoonradiorockballads.ice.infomaniak.ch/spoon-rockballads-hd.aac +Spoon Radio - Rock Ballads∞https://spoonradiorockballads.ice.infomaniak.ch/spoon-rockballads-hd.aac +Spoon Radio Modern Rock∞https://spoonradiomodernrock.ice.infomaniak.ch/spoon-modernrock-hd.aac +Spoon Radio Modern Rock∞https://spoonradiomodernrock.ice.infomaniak.ch/spoon-modernrock-hd.aac +SRF 1∞http://stream.srg-ssr.ch/m/drs1/mp3_128 +SRF 2∞http://stream.srg-ssr.ch/drs2/mp3_128.m3u +SRF 3∞http://stream.srg-ssr.ch/m/drs3/mp3_128 +SRF 4 News∞http://stream.srg-ssr.ch/m/drs4news/mp3_128 +SRF Musikwelle∞http://stream.srg-ssr.ch/drsmw/mp3_128.m3u +SRF Virus∞http://stream.srg-ssr.ch/drsvirus/mp3_128.m3u +SRF1 Radio∞http://stream.srg-ssr.ch/drs1/aacp_96.m3u +SRF1 Regionaljournal Aargau Solothurn∞http://stream.srg-ssr.ch/regi_ag_so/aacp_96.m3u +Sunshine Radio (Switzerland)∞https://stream.streambase.ch/rsunshine/mp3-192/chmedia-radio-web/1699795900047_8633080 +SWISS GROOVE∞https://relay2.swissgroove.ch/; +Swiss Groove∞https://relay1.swissgroove.ch/ +Swiss Jazz Room∞https://stream.srg-ssr.ch/m/rsj/mp3_128 +Swiss Pop∞http://www.radioswisspop.ch/live/aacp.m3u +SWISSCLASSICA ITALIA∞https://stream.srg-ssr.ch/rsc_it/mp3_128.m3u +SwissGroove∞http://158.69.74.203/ +swissradio classical ∞http://relay.publicdomainproject.org/classical.mp3 +swissradio jazz & swing∞http://relay.publicdomainproject.org/jazz_swing.mp3 +Ta Radio∞https://stream.taradio.ch/dab +TA RADIO∞http://stream.taradio.ch/dab +TeleBielingue.TV∞http://livevideo.infomaniak.com/streaming/livecast/telebielinguech/playlist.m3u8 +toxic.fm∞http://toxicfm.ice.infomaniak.ch/toxicfm-128 +Traxx FM - Ambient∞http://traxx011.ice.infomaniak.ch/traxx011-low.mp3 +Traxx FM - Classic∞http://traxx012.ice.infomaniak.ch/traxx012-low.mp3 +Traxx FM - Cool Jam∞http://traxx005.ice.infomaniak.ch/traxx005-low.mp3 +Traxx FM - Deep∞http://traxx013.ice.infomaniak.ch/traxx013-low.mp3 +Traxx FM - Deluxe∞http://traxx001.ice.infomaniak.ch/traxx001-low.mp3 +Traxx FM - France∞http://traxx025.ice.infomaniak.ch/traxx025-1.mp3 +Traxx FM - Funk∞http://traxx016.ice.infomaniak.ch/traxx016-low.mp3 +Traxx FM - Golden Oldies∞http://traxx023.ice.infomaniak.ch/traxx023-1.mp3 +Traxx FM - House∞http://traxx002.ice.infomaniak.ch/traxx002-low.mp3 +Traxx FM - Italia∞http://traxx021.ice.infomaniak.ch/traxx021-1.mp3 +Traxx FM - Jazz∞http://traxx014.ice.infomaniak.ch/traxx014-low.mp3 +Traxx FM - Latino∞http://traxx008.ice.infomaniak.ch/traxx008-low.mp3 +Traxx FM - Latino Pop∞http://traxx022.ice.infomaniak.ch/traxx022-1.mp3 +Traxx FM - Lounge∞http://traxx004.ice.infomaniak.ch/traxx004-low.mp3 +Traxx FM - Pop∞http://traxx009.ice.infomaniak.ch/traxx009-low.mp3 +Traxx FM - Rap∞http://traxx015.ice.infomaniak.ch/traxx015-low.mp3 +Traxx FM - RnB∞http://traxx007.ice.infomaniak.ch/traxx007-low.mp3 +Traxx FM - Rock∞http://traxx019.ice.infomaniak.ch/traxx019-low.mp3 +Traxx FM - Soul∞http://traxx006.ice.infomaniak.ch/traxx006-low.mp3 +Traxx FM - Tech Minimal∞http://traxx020.ice.infomaniak.ch/traxx020-low.mp3 +True House Chill∞http://www.truehouse.net/chill.m3u +True House Radio∞http://www.truehouse.net/house.m3u +Truehouse Chill∞http://www.truehouse.net/chill.m3u +TVM 3 TV∞http://tvm3.vedge.infomaniak.com/livecast/tvm3/playlist.m3u8 +TVM3.TV∞http://livevideo.infomaniak.com/streaming/livecast/tvm3/playlist.m3u8 +URBN Radio∞https://dr2101.ice.infomaniak.ch/dr2103.mp3 +UZIC.CH :: TECHNO - MINIMAL∞http://stream.uzic.ch:9010/ +Vertical Radio∞http://verticalradio.ice.infomaniak.ch/verticalradio-128.mp3 +Vibración Latina∞http://vibration.stream2net.eu:8410/;stream/1 +Vibration 108∞http://vibration108-high.ice.infomaniak.ch/vibration108-high.mp3 +Vibration Chanson Française∞http://vibration.stream2net.eu:8510/;stream/1 +Vibration FM∞http://vibration-aac.stream2net.eu:8040/listen.pls +Vibration Gayradio∞http://vibration.stream2net.eu:8480/;stream/1 +Vibration Poprock∞http://vibrationpoprock.ice.infomaniak.ch/vibrationpoprock-high.mp3 +Vibration Poprock∞http://vibrationpoprock.stream2net.eu:8030/listen.pls +Vibration Soft Hits∞http://vibration.stream2net.eu:8350/;stream/1 +Vibration Vintage∞http://vibrationvintage-high.ice.infomaniak.ch/vibration-vintage.mp3 +Vibration Zen Relax∞http://vibration.stream2net.eu:8220/;stream/1 +Vintage Radio∞https://vintageradio.ice.infomaniak.ch/vintageradio-high.mp3 +Virgin Radio Switzerland∞https://stream.streambase.ch/vrock/mp3-192/direct/ +VirginRadio∞https://stream.streambase.ch/vrock/mp3-192/direct/ +VOXINOX∞http://voxinox.ice.infomaniak.ch/voxinox-128 +WALTS WELT∞https://waltswelt.out.airtime.pro/waltswelt_a?_ga=2.33964516.474222732.1669644968-446937151.1669306237 +World Radio Switzerland∞https://uksouth.streaming.broadcast.radio:10290/wrs +WRS "Swiss Radio in English"∞https://uksouth.streaming.broadcast.radio:10290/wrs?_=443217 +ஊரி தமிழ் வானொலி URI TAMIL RADIO∞http://stream.zenolive.com/u8nt64f6sfeuv diff --git a/src/apps.rs b/src/apps.rs index 887a8f5..468a794 100644 --- a/src/apps.rs +++ b/src/apps.rs @@ -1,4 +1,6 @@ +mod radio; use crate::spotify::Spotify; +use radio::Radio; pub struct BeoApps { pub apps: Vec>, @@ -10,6 +12,12 @@ pub struct Title { //pub image… } +pub struct TitleEntry { + pub title: String, + pub img: + pub id: usize, +} + #[derive(Debug)] pub struct AppView { pub title: String, @@ -26,6 +34,6 @@ pub trait BeoApp { } pub fn get_beo_apps() -> BeoApps { - let apps: Vec> = vec![Box::new(Spotify::new())]; + let apps: Vec> = vec![Box::new(Spotify::new()), Box::new(Radio::new())]; BeoApps { apps } } diff --git a/src/apps/radio.rs b/src/apps/radio.rs new file mode 100644 index 0000000..fc181f7 --- /dev/null +++ b/src/apps/radio.rs @@ -0,0 +1,173 @@ +use crate::apps::BeoApp; + +use mpd::{Client, Song}; +use std::net::TcpStream; + +use std::fs::read_to_string; + +#[derive(Debug, Clone, PartialEq)] +enum RadioMenuState { + Root, + Playing, + Genres, + Genre(String), // (name) + Playlists, + Playlist(String), // (name +} + +#[derive(Debug)] +pub struct Radio { + i: i32, + state: RadioMenuState, + breadcrumb_states: Vec, + mpd_client: Option>, + current_view: Option, + + online_radios: Vec, +} + +#[derive(Debug)] +struct OnlineRadio { + name: String, + url: String, +} + +fn get_radios() -> Vec { + let radios = read_to_string("radios.txt").unwrap(); + let mut result = vec![]; + for line in radios.lines() { + let parts: Vec<&str> = line.split("∞").collect(); + result.push(OnlineRadio { + name: parts[0].to_string(), + url: parts[1].to_string(), + }); + } + result +} + +impl Radio { + pub fn new() -> Self { + let conn = Client::connect("127.0.0.1:6600").unwrap(); + //conn.volume(100).unwrap(); + //conn.load("My Lounge Playlist", ..).unwrap(); + //conn.play().unwrap(); + Radio { + i: 0, + mpd_client: Some(conn), + state: RadioMenuState::Root, + breadcrumb_states: vec![], + current_view: None, + online_radios: get_radios(), + } + } +} + +impl BeoApp for Radio { + fn name(&self) -> &str { + "Radio" + } + + fn enter_menu(&mut self, menu_id: usize) { + self.breadcrumb_states.push(self.state.clone()); + match (&self.state, menu_id) { + (RadioMenuState::Root, _) => { + let url = &self.online_radios[menu_id].url; + // Tell mpd to play this specific radio url: + if self.mpd_client.as_mut().unwrap().status().unwrap().state == mpd::State::Play { + self.mpd_client.as_mut().unwrap().stop(); + } + self.mpd_client.as_mut().unwrap().clear().unwrap(); + self.mpd_client + .as_mut() + .unwrap() + .push(Song { + file: url.clone(), + ..Default::default() + }) + .unwrap(); + self.mpd_client.as_mut().unwrap().play().unwrap(); + + self.state = RadioMenuState::Playing; + } + (RadioMenuState::Root, 1) => { + //France Info + self.state = RadioMenuState::Playing; + self.mpd_client.as_mut().unwrap().toggle_pause().unwrap(); + } + (RadioMenuState::Root, 2) => { + //Couleur3 + self.state = RadioMenuState::Genres; + } + (RadioMenuState::Genres, i) => { + self.state = RadioMenuState::Genre(format!("{}", i)); + } + (RadioMenuState::Root, 1) => { + self.state = RadioMenuState::Playlists; + } + (RadioMenuState::Playlists, i) => { + self.state = RadioMenuState::Playlist(format!("{}", i)); + } + (RadioMenuState::Genre(i), 0) => { + self.state = RadioMenuState::Genres; + } + _ => { + println!("Invalid state transition"); + } + } + println!("Radio2 entered"); + println!("Radio2 state: {:?}", self.state); + self.i += 1; + } + + fn exit_menu(&mut self) { + println!("Radio2 exited"); + println!("Previous states: {:?}", self.breadcrumb_states); + self.i -= 1; + + if let Some(previous_state) = self.breadcrumb_states.pop() { + println!("Setting state to {:?}", previous_state); + self.state = previous_state; + } + } + + fn go(&mut self, _menu_id: usize) { + println!("Radio2 go"); + self.mpd_client.as_mut().unwrap().stop().unwrap(); + } + + fn get_current_view(&self) -> crate::apps::AppView { + match self.state { + RadioMenuState::Root => { + let mut menus = vec![]; + for radio in &self.online_radios { + menus.push(crate::apps::Title { + title: radio.name.clone(), + }); + } + return crate::apps::AppView { + title: "Radio".to_string(), + menus, + }; + } + RadioMenuState::Genres => { + return crate::apps::AppView { + title: "Genres".to_string(), + menus: vec![ + crate::apps::Title { + title: "RNB".to_string(), + }, + crate::apps::Title { + title: "POP".to_string(), + }, + ], + }; + } + _ => { + return crate::apps::AppView { + title: "Got lost somehow".to_string(), + menus: vec![], + }; + } + } + } +} diff --git a/src/spotify.rs b/src/spotify.rs index 970198f..9b642dd 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -14,6 +14,7 @@ pub struct Spotify { i: i32, state: SpotifyMenuState, breadcrumb_states: Vec, + current_view: Option, } impl Spotify { @@ -22,6 +23,7 @@ impl Spotify { i: 0, state: SpotifyMenuState::Root, breadcrumb_states: vec![], + current_view: None, } } }