Browse and listen to thousands of radio stations across the globe right from your terminal ๐ŸŒŽ ๐Ÿ“ป ๐ŸŽตโœจ
radio rust tokio web-radio command-line-tool tui

add provider trait and two impl: radiobrowser and tunein providers

+786 -104
Cargo.lock
··· 1 1 # This file is automatically @generated by Cargo. 2 2 # It is not intended for manual editing. 3 - version = 3 3 + version = 4 4 4 5 5 [[package]] 6 6 name = "aead" ··· 97 97 ] 98 98 99 99 [[package]] 100 + name = "android-tzdata" 101 + version = "0.1.1" 102 + source = "registry+https://github.com/rust-lang/crates.io-index" 103 + checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 104 + 105 + [[package]] 106 + name = "android_system_properties" 107 + version = "0.1.5" 108 + source = "registry+https://github.com/rust-lang/crates.io-index" 109 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 110 + dependencies = [ 111 + "libc", 112 + ] 113 + 114 + [[package]] 100 115 name = "anyhow" 101 116 version = "1.0.69" 102 117 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 113 128 version = "0.7.2" 114 129 source = "registry+https://github.com/rust-lang/crates.io-index" 115 130 checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 131 + 132 + [[package]] 133 + name = "async-attributes" 134 + version = "1.1.2" 135 + source = "registry+https://github.com/rust-lang/crates.io-index" 136 + checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" 137 + dependencies = [ 138 + "quote", 139 + "syn 1.0.107", 140 + ] 116 141 117 142 [[package]] 118 143 name = "async-channel" ··· 162 187 "blocking", 163 188 "futures-lite", 164 189 "once_cell", 190 + "tokio", 165 191 ] 166 192 167 193 [[package]] ··· 195 221 "parking", 196 222 "polling", 197 223 "slab", 198 - "socket2", 224 + "socket2 0.4.7", 199 225 "waker-fn", 200 226 "windows-sys 0.42.0", 201 227 ] ··· 211 237 ] 212 238 213 239 [[package]] 240 + name = "async-process" 241 + version = "1.7.0" 242 + source = "registry+https://github.com/rust-lang/crates.io-index" 243 + checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" 244 + dependencies = [ 245 + "async-io", 246 + "async-lock", 247 + "autocfg", 248 + "blocking", 249 + "cfg-if", 250 + "event-listener", 251 + "futures-lite", 252 + "rustix", 253 + "signal-hook", 254 + "windows-sys 0.48.0", 255 + ] 256 + 257 + [[package]] 214 258 name = "async-std" 215 259 version = "1.12.0" 216 260 source = "registry+https://github.com/rust-lang/crates.io-index" 217 261 checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 218 262 dependencies = [ 263 + "async-attributes", 219 264 "async-channel", 220 265 "async-global-executor", 221 266 "async-io", 222 267 "async-lock", 268 + "async-process", 223 269 "crossbeam-utils", 224 270 "futures-channel", 225 271 "futures-core", ··· 237 283 ] 238 284 239 285 [[package]] 286 + name = "async-std-resolver" 287 + version = "0.24.2" 288 + source = "registry+https://github.com/rust-lang/crates.io-index" 289 + checksum = "fa5ee46ec0c518414838d2fdc7dd18f6ba7d934b6e728005c958621da450682d" 290 + dependencies = [ 291 + "async-std", 292 + "async-trait", 293 + "futures-io", 294 + "futures-util", 295 + "hickory-resolver", 296 + "pin-utils", 297 + "socket2 0.5.8", 298 + ] 299 + 300 + [[package]] 240 301 name = "async-stream" 241 302 version = "0.3.4" 242 303 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 273 334 "futures-core", 274 335 "futures-io", 275 336 "rustls 0.18.1", 276 - "webpki 0.21.4", 337 + "webpki", 277 338 "webpki-roots 0.20.0", 278 339 ] 279 340 280 341 [[package]] 281 342 name = "async-trait" 282 - version = "0.1.64" 343 + version = "0.1.85" 283 344 source = "registry+https://github.com/rust-lang/crates.io-index" 284 - checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" 345 + checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" 285 346 dependencies = [ 286 347 "proc-macro2", 287 348 "quote", 288 - "syn 1.0.107", 349 + "syn 2.0.51", 289 350 ] 290 351 291 352 [[package]] ··· 329 390 "matchit", 330 391 "memchr", 331 392 "mime", 332 - "percent-encoding 2.2.0", 393 + "percent-encoding 2.3.1", 333 394 "pin-project-lite", 334 395 "rustversion", 335 396 "serde", ··· 506 567 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 507 568 508 569 [[package]] 570 + name = "chrono" 571 + version = "0.4.39" 572 + source = "registry+https://github.com/rust-lang/crates.io-index" 573 + checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" 574 + dependencies = [ 575 + "android-tzdata", 576 + "iana-time-zone", 577 + "js-sys", 578 + "num-traits", 579 + "serde", 580 + "wasm-bindgen", 581 + "windows-targets 0.52.6", 582 + ] 583 + 584 + [[package]] 509 585 name = "cipher" 510 586 version = "0.2.5" 511 587 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 620 696 "base64 0.13.1", 621 697 "hkdf", 622 698 "hmac", 623 - "percent-encoding 2.2.0", 699 + "percent-encoding 2.3.1", 624 700 "rand 0.8.5", 625 701 "sha2", 626 702 "time", ··· 628 704 ] 629 705 630 706 [[package]] 707 + name = "core-foundation" 708 + version = "0.9.3" 709 + source = "registry+https://github.com/rust-lang/crates.io-index" 710 + checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 711 + dependencies = [ 712 + "core-foundation-sys", 713 + "libc", 714 + ] 715 + 716 + [[package]] 631 717 name = "core-foundation-sys" 632 718 version = "0.8.3" 633 719 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 743 829 dependencies = [ 744 830 "generic-array", 745 831 "subtle", 746 - ] 747 - 748 - [[package]] 749 - name = "ctor" 750 - version = "0.1.26" 751 - source = "registry+https://github.com/rust-lang/crates.io-index" 752 - checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 753 - dependencies = [ 754 - "quote", 755 - "syn 1.0.107", 756 832 ] 757 833 758 834 [[package]] ··· 784 860 ] 785 861 786 862 [[package]] 863 + name = "data-encoding" 864 + version = "2.7.0" 865 + source = "registry+https://github.com/rust-lang/crates.io-index" 866 + checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" 867 + 868 + [[package]] 787 869 name = "deadpool" 788 870 version = "0.7.0" 789 871 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 826 908 checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" 827 909 828 910 [[package]] 911 + name = "displaydoc" 912 + version = "0.2.5" 913 + source = "registry+https://github.com/rust-lang/crates.io-index" 914 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 915 + dependencies = [ 916 + "proc-macro2", 917 + "quote", 918 + "syn 2.0.51", 919 + ] 920 + 921 + [[package]] 829 922 name = "either" 830 923 version = "1.8.1" 831 924 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 841 934 ] 842 935 843 936 [[package]] 937 + name = "enum-as-inner" 938 + version = "0.6.1" 939 + source = "registry+https://github.com/rust-lang/crates.io-index" 940 + checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" 941 + dependencies = [ 942 + "heck 0.5.0", 943 + "proc-macro2", 944 + "quote", 945 + "syn 2.0.51", 946 + ] 947 + 948 + [[package]] 949 + name = "errno" 950 + version = "0.3.10" 951 + source = "registry+https://github.com/rust-lang/crates.io-index" 952 + checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 953 + dependencies = [ 954 + "libc", 955 + "windows-sys 0.59.0", 956 + ] 957 + 958 + [[package]] 844 959 name = "event-listener" 845 960 version = "2.5.3" 846 961 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 869 984 870 985 [[package]] 871 986 name = "form_urlencoded" 872 - version = "1.1.0" 987 + version = "1.2.1" 873 988 source = "registry+https://github.com/rust-lang/crates.io-index" 874 - checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 989 + checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 875 990 dependencies = [ 876 - "percent-encoding 2.2.0", 991 + "percent-encoding 2.3.1", 877 992 ] 878 993 879 994 [[package]] ··· 1082 1197 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1083 1198 1084 1199 [[package]] 1200 + name = "heck" 1201 + version = "0.5.0" 1202 + source = "registry+https://github.com/rust-lang/crates.io-index" 1203 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1204 + 1205 + [[package]] 1085 1206 name = "hermit-abi" 1086 1207 version = "0.1.19" 1087 1208 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1100 1221 ] 1101 1222 1102 1223 [[package]] 1224 + name = "hermit-abi" 1225 + version = "0.3.9" 1226 + source = "registry+https://github.com/rust-lang/crates.io-index" 1227 + checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1228 + 1229 + [[package]] 1230 + name = "hickory-proto" 1231 + version = "0.24.2" 1232 + source = "registry+https://github.com/rust-lang/crates.io-index" 1233 + checksum = "447afdcdb8afb9d0a852af6dc65d9b285ce720ed7a59e42a8bf2e931c67bc1b5" 1234 + dependencies = [ 1235 + "async-trait", 1236 + "cfg-if", 1237 + "data-encoding", 1238 + "enum-as-inner", 1239 + "futures-channel", 1240 + "futures-io", 1241 + "futures-util", 1242 + "idna 1.0.3", 1243 + "ipnet", 1244 + "once_cell", 1245 + "rand 0.8.5", 1246 + "thiserror", 1247 + "tinyvec", 1248 + "tracing", 1249 + "url 2.5.4", 1250 + ] 1251 + 1252 + [[package]] 1253 + name = "hickory-resolver" 1254 + version = "0.24.2" 1255 + source = "registry+https://github.com/rust-lang/crates.io-index" 1256 + checksum = "0a2e2aba9c389ce5267d31cf1e4dace82390ae276b0b364ea55630b1fa1b44b4" 1257 + dependencies = [ 1258 + "cfg-if", 1259 + "futures-util", 1260 + "hickory-proto", 1261 + "ipconfig", 1262 + "lru-cache", 1263 + "once_cell", 1264 + "parking_lot", 1265 + "rand 0.8.5", 1266 + "resolv-conf", 1267 + "smallvec", 1268 + "thiserror", 1269 + "tracing", 1270 + ] 1271 + 1272 + [[package]] 1103 1273 name = "hkdf" 1104 1274 version = "0.10.0" 1105 1275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1117 1287 dependencies = [ 1118 1288 "crypto-mac", 1119 1289 "digest", 1290 + ] 1291 + 1292 + [[package]] 1293 + name = "hostname" 1294 + version = "0.3.1" 1295 + source = "registry+https://github.com/rust-lang/crates.io-index" 1296 + checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" 1297 + dependencies = [ 1298 + "libc", 1299 + "match_cfg", 1300 + "winapi", 1120 1301 ] 1121 1302 1122 1303 [[package]] ··· 1191 1372 "serde_json", 1192 1373 "serde_qs", 1193 1374 "serde_urlencoded", 1194 - "url 2.3.1", 1375 + "url 2.5.4", 1195 1376 ] 1196 1377 1197 1378 [[package]] ··· 1223 1404 "httpdate", 1224 1405 "itoa", 1225 1406 "pin-project-lite", 1226 - "socket2", 1407 + "socket2 0.4.7", 1227 1408 "tokio", 1228 1409 "tower-service", 1229 1410 "tracing", ··· 1232 1413 1233 1414 [[package]] 1234 1415 name = "hyper-rustls" 1235 - version = "0.23.2" 1416 + version = "0.24.2" 1236 1417 source = "registry+https://github.com/rust-lang/crates.io-index" 1237 - checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" 1418 + checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1238 1419 dependencies = [ 1420 + "futures-util", 1239 1421 "http", 1240 1422 "hyper", 1241 - "rustls 0.20.9", 1423 + "rustls 0.21.12", 1242 1424 "tokio", 1243 1425 "tokio-rustls", 1244 1426 ] ··· 1256 1438 ] 1257 1439 1258 1440 [[package]] 1441 + name = "iana-time-zone" 1442 + version = "0.1.61" 1443 + source = "registry+https://github.com/rust-lang/crates.io-index" 1444 + checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" 1445 + dependencies = [ 1446 + "android_system_properties", 1447 + "core-foundation-sys", 1448 + "iana-time-zone-haiku", 1449 + "js-sys", 1450 + "wasm-bindgen", 1451 + "windows-core", 1452 + ] 1453 + 1454 + [[package]] 1455 + name = "iana-time-zone-haiku" 1456 + version = "0.1.2" 1457 + source = "registry+https://github.com/rust-lang/crates.io-index" 1458 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1459 + dependencies = [ 1460 + "cc", 1461 + ] 1462 + 1463 + [[package]] 1464 + name = "icu_collections" 1465 + version = "1.5.0" 1466 + source = "registry+https://github.com/rust-lang/crates.io-index" 1467 + checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 1468 + dependencies = [ 1469 + "displaydoc", 1470 + "yoke", 1471 + "zerofrom", 1472 + "zerovec", 1473 + ] 1474 + 1475 + [[package]] 1476 + name = "icu_locid" 1477 + version = "1.5.0" 1478 + source = "registry+https://github.com/rust-lang/crates.io-index" 1479 + checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 1480 + dependencies = [ 1481 + "displaydoc", 1482 + "litemap", 1483 + "tinystr", 1484 + "writeable", 1485 + "zerovec", 1486 + ] 1487 + 1488 + [[package]] 1489 + name = "icu_locid_transform" 1490 + version = "1.5.0" 1491 + source = "registry+https://github.com/rust-lang/crates.io-index" 1492 + checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 1493 + dependencies = [ 1494 + "displaydoc", 1495 + "icu_locid", 1496 + "icu_locid_transform_data", 1497 + "icu_provider", 1498 + "tinystr", 1499 + "zerovec", 1500 + ] 1501 + 1502 + [[package]] 1503 + name = "icu_locid_transform_data" 1504 + version = "1.5.0" 1505 + source = "registry+https://github.com/rust-lang/crates.io-index" 1506 + checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" 1507 + 1508 + [[package]] 1509 + name = "icu_normalizer" 1510 + version = "1.5.0" 1511 + source = "registry+https://github.com/rust-lang/crates.io-index" 1512 + checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 1513 + dependencies = [ 1514 + "displaydoc", 1515 + "icu_collections", 1516 + "icu_normalizer_data", 1517 + "icu_properties", 1518 + "icu_provider", 1519 + "smallvec", 1520 + "utf16_iter", 1521 + "utf8_iter", 1522 + "write16", 1523 + "zerovec", 1524 + ] 1525 + 1526 + [[package]] 1527 + name = "icu_normalizer_data" 1528 + version = "1.5.0" 1529 + source = "registry+https://github.com/rust-lang/crates.io-index" 1530 + checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" 1531 + 1532 + [[package]] 1533 + name = "icu_properties" 1534 + version = "1.5.1" 1535 + source = "registry+https://github.com/rust-lang/crates.io-index" 1536 + checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" 1537 + dependencies = [ 1538 + "displaydoc", 1539 + "icu_collections", 1540 + "icu_locid_transform", 1541 + "icu_properties_data", 1542 + "icu_provider", 1543 + "tinystr", 1544 + "zerovec", 1545 + ] 1546 + 1547 + [[package]] 1548 + name = "icu_properties_data" 1549 + version = "1.5.0" 1550 + source = "registry+https://github.com/rust-lang/crates.io-index" 1551 + checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" 1552 + 1553 + [[package]] 1554 + name = "icu_provider" 1555 + version = "1.5.0" 1556 + source = "registry+https://github.com/rust-lang/crates.io-index" 1557 + checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 1558 + dependencies = [ 1559 + "displaydoc", 1560 + "icu_locid", 1561 + "icu_provider_macros", 1562 + "stable_deref_trait", 1563 + "tinystr", 1564 + "writeable", 1565 + "yoke", 1566 + "zerofrom", 1567 + "zerovec", 1568 + ] 1569 + 1570 + [[package]] 1571 + name = "icu_provider_macros" 1572 + version = "1.5.0" 1573 + source = "registry+https://github.com/rust-lang/crates.io-index" 1574 + checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 1575 + dependencies = [ 1576 + "proc-macro2", 1577 + "quote", 1578 + "syn 2.0.51", 1579 + ] 1580 + 1581 + [[package]] 1259 1582 name = "idna" 1260 1583 version = "0.1.5" 1261 1584 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1268 1591 1269 1592 [[package]] 1270 1593 name = "idna" 1271 - version = "0.3.0" 1594 + version = "1.0.3" 1272 1595 source = "registry+https://github.com/rust-lang/crates.io-index" 1273 - checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1596 + checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 1597 + dependencies = [ 1598 + "idna_adapter", 1599 + "smallvec", 1600 + "utf8_iter", 1601 + ] 1602 + 1603 + [[package]] 1604 + name = "idna_adapter" 1605 + version = "1.2.0" 1606 + source = "registry+https://github.com/rust-lang/crates.io-index" 1607 + checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" 1274 1608 dependencies = [ 1275 - "unicode-bidi", 1276 - "unicode-normalization", 1609 + "icu_normalizer", 1610 + "icu_properties", 1277 1611 ] 1278 1612 1279 1613 [[package]] ··· 1305 1639 checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1306 1640 dependencies = [ 1307 1641 "cfg-if", 1642 + ] 1643 + 1644 + [[package]] 1645 + name = "io-lifetimes" 1646 + version = "1.0.11" 1647 + source = "registry+https://github.com/rust-lang/crates.io-index" 1648 + checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" 1649 + dependencies = [ 1650 + "hermit-abi 0.3.9", 1651 + "libc", 1652 + "windows-sys 0.48.0", 1653 + ] 1654 + 1655 + [[package]] 1656 + name = "ipconfig" 1657 + version = "0.3.2" 1658 + source = "registry+https://github.com/rust-lang/crates.io-index" 1659 + checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" 1660 + dependencies = [ 1661 + "socket2 0.5.8", 1662 + "widestring", 1663 + "windows-sys 0.48.0", 1664 + "winreg", 1308 1665 ] 1309 1666 1310 1667 [[package]] ··· 1368 1725 1369 1726 [[package]] 1370 1727 name = "js-sys" 1371 - version = "0.3.61" 1728 + version = "0.3.77" 1372 1729 source = "registry+https://github.com/rust-lang/crates.io-index" 1373 - checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 1730 + checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1374 1731 dependencies = [ 1732 + "once_cell", 1375 1733 "wasm-bindgen", 1376 1734 ] 1377 1735 ··· 1422 1780 1423 1781 [[package]] 1424 1782 name = "libc" 1425 - version = "0.2.139" 1783 + version = "0.2.169" 1426 1784 source = "registry+https://github.com/rust-lang/crates.io-index" 1427 - checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" 1785 + checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" 1428 1786 1429 1787 [[package]] 1430 1788 name = "libloading" ··· 1437 1795 ] 1438 1796 1439 1797 [[package]] 1798 + name = "linked-hash-map" 1799 + version = "0.5.6" 1800 + source = "registry+https://github.com/rust-lang/crates.io-index" 1801 + checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1802 + 1803 + [[package]] 1804 + name = "linux-raw-sys" 1805 + version = "0.3.8" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" 1808 + 1809 + [[package]] 1810 + name = "litemap" 1811 + version = "0.7.4" 1812 + source = "registry+https://github.com/rust-lang/crates.io-index" 1813 + checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" 1814 + 1815 + [[package]] 1440 1816 name = "lock_api" 1441 1817 version = "0.4.9" 1442 1818 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1448 1824 1449 1825 [[package]] 1450 1826 name = "log" 1451 - version = "0.4.17" 1827 + version = "0.4.25" 1452 1828 source = "registry+https://github.com/rust-lang/crates.io-index" 1453 - checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1829 + checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" 1454 1830 dependencies = [ 1455 - "cfg-if", 1456 1831 "value-bag", 1457 1832 ] 1458 1833 ··· 1466 1841 ] 1467 1842 1468 1843 [[package]] 1844 + name = "lru-cache" 1845 + version = "0.1.2" 1846 + source = "registry+https://github.com/rust-lang/crates.io-index" 1847 + checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 1848 + dependencies = [ 1849 + "linked-hash-map", 1850 + ] 1851 + 1852 + [[package]] 1469 1853 name = "m3u" 1470 1854 version = "1.0.0" 1471 1855 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1482 1866 dependencies = [ 1483 1867 "libc", 1484 1868 ] 1869 + 1870 + [[package]] 1871 + name = "match_cfg" 1872 + version = "0.1.0" 1873 + source = "registry+https://github.com/rust-lang/crates.io-index" 1874 + checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" 1485 1875 1486 1876 [[package]] 1487 1877 name = "matches" ··· 1844 2234 1845 2235 [[package]] 1846 2236 name = "percent-encoding" 1847 - version = "2.2.0" 2237 + version = "2.3.1" 1848 2238 source = "registry+https://github.com/rust-lang/crates.io-index" 1849 - checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 2239 + checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1850 2240 1851 2241 [[package]] 1852 2242 name = "petgraph" ··· 1997 2387 checksum = "2c828f93f5ca4826f97fedcbd3f9a536c16b12cff3dbbb4a007f932bbad95b12" 1998 2388 dependencies = [ 1999 2389 "bytes", 2000 - "heck", 2390 + "heck 0.4.1", 2001 2391 "itertools 0.10.5", 2002 2392 "lazy_static", 2003 2393 "log", ··· 2035 2425 ] 2036 2426 2037 2427 [[package]] 2428 + name = "quick-error" 2429 + version = "1.2.3" 2430 + source = "registry+https://github.com/rust-lang/crates.io-index" 2431 + checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 2432 + 2433 + [[package]] 2038 2434 name = "quote" 2039 2435 version = "1.0.35" 2040 2436 source = "registry+https://github.com/rust-lang/crates.io-index" 2041 2437 checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 2042 2438 dependencies = [ 2043 2439 "proc-macro2", 2440 + ] 2441 + 2442 + [[package]] 2443 + name = "radiobrowser" 2444 + version = "0.6.1" 2445 + source = "registry+https://github.com/rust-lang/crates.io-index" 2446 + checksum = "763ad5f847e3d2e3221dac4e87370297a970e3f9eb8f2760b915001b9c79023b" 2447 + dependencies = [ 2448 + "async-std", 2449 + "async-std-resolver", 2450 + "chrono", 2451 + "log", 2452 + "rand 0.8.5", 2453 + "reqwest", 2454 + "serde", 2044 2455 ] 2045 2456 2046 2457 [[package]] ··· 2187 2598 2188 2599 [[package]] 2189 2600 name = "reqwest" 2190 - version = "0.11.14" 2601 + version = "0.11.27" 2191 2602 source = "registry+https://github.com/rust-lang/crates.io-index" 2192 - checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" 2603 + checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 2193 2604 dependencies = [ 2194 2605 "base64 0.21.0", 2195 2606 "bytes", ··· 2206 2617 "log", 2207 2618 "mime", 2208 2619 "once_cell", 2209 - "percent-encoding 2.2.0", 2620 + "percent-encoding 2.3.1", 2210 2621 "pin-project-lite", 2211 - "rustls 0.20.9", 2622 + "rustls 0.21.12", 2212 2623 "rustls-pemfile", 2213 2624 "serde", 2214 2625 "serde_json", 2215 2626 "serde_urlencoded", 2627 + "sync_wrapper", 2628 + "system-configuration", 2216 2629 "tokio", 2217 2630 "tokio-rustls", 2218 2631 "tower-service", 2219 - "url 2.3.1", 2632 + "url 2.5.4", 2220 2633 "wasm-bindgen", 2221 2634 "wasm-bindgen-futures", 2222 2635 "web-sys", 2223 - "webpki-roots 0.22.6", 2636 + "webpki-roots 0.25.4", 2224 2637 "winreg", 2638 + ] 2639 + 2640 + [[package]] 2641 + name = "resolv-conf" 2642 + version = "0.7.0" 2643 + source = "registry+https://github.com/rust-lang/crates.io-index" 2644 + checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" 2645 + dependencies = [ 2646 + "hostname", 2647 + "quick-error", 2225 2648 ] 2226 2649 2227 2650 [[package]] ··· 2309 2732 "strength_reduce", 2310 2733 "transpose", 2311 2734 "version_check", 2735 + ] 2736 + 2737 + [[package]] 2738 + name = "rustix" 2739 + version = "0.37.28" 2740 + source = "registry+https://github.com/rust-lang/crates.io-index" 2741 + checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" 2742 + dependencies = [ 2743 + "bitflags 1.3.2", 2744 + "errno", 2745 + "io-lifetimes", 2746 + "libc", 2747 + "linux-raw-sys", 2748 + "windows-sys 0.48.0", 2312 2749 ] 2313 2750 2314 2751 [[package]] ··· 2321 2758 "log", 2322 2759 "ring 0.16.20", 2323 2760 "sct 0.6.1", 2324 - "webpki 0.21.4", 2761 + "webpki", 2325 2762 ] 2326 2763 2327 2764 [[package]] 2328 2765 name = "rustls" 2329 - version = "0.20.9" 2766 + version = "0.21.12" 2330 2767 source = "registry+https://github.com/rust-lang/crates.io-index" 2331 - checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" 2768 + checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 2332 2769 dependencies = [ 2333 2770 "log", 2334 - "ring 0.16.20", 2771 + "ring 0.17.3", 2772 + "rustls-webpki", 2335 2773 "sct 0.7.1", 2336 - "webpki 0.22.4", 2337 2774 ] 2338 2775 2339 2776 [[package]] ··· 2346 2783 ] 2347 2784 2348 2785 [[package]] 2786 + name = "rustls-webpki" 2787 + version = "0.101.7" 2788 + source = "registry+https://github.com/rust-lang/crates.io-index" 2789 + checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 2790 + dependencies = [ 2791 + "ring 0.17.3", 2792 + "untrusted 0.9.0", 2793 + ] 2794 + 2795 + [[package]] 2349 2796 name = "rustversion" 2350 2797 version = "1.0.11" 2351 2798 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2450 2897 source = "registry+https://github.com/rust-lang/crates.io-index" 2451 2898 checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" 2452 2899 dependencies = [ 2453 - "percent-encoding 2.2.0", 2900 + "percent-encoding 2.3.1", 2454 2901 "serde", 2455 2902 "thiserror", 2456 2903 ] ··· 2562 3009 2563 3010 [[package]] 2564 3011 name = "smallvec" 2565 - version = "1.10.0" 3012 + version = "1.13.2" 2566 3013 source = "registry+https://github.com/rust-lang/crates.io-index" 2567 - checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 3014 + checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 2568 3015 2569 3016 [[package]] 2570 3017 name = "socket2" ··· 2577 3024 ] 2578 3025 2579 3026 [[package]] 3027 + name = "socket2" 3028 + version = "0.5.8" 3029 + source = "registry+https://github.com/rust-lang/crates.io-index" 3030 + checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 3031 + dependencies = [ 3032 + "libc", 3033 + "windows-sys 0.52.0", 3034 + ] 3035 + 3036 + [[package]] 2580 3037 name = "spin" 2581 3038 version = "0.5.2" 2582 3039 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2597 3054 "quote", 2598 3055 "syn 1.0.107", 2599 3056 ] 3057 + 3058 + [[package]] 3059 + name = "stable_deref_trait" 3060 + version = "1.2.0" 3061 + source = "registry+https://github.com/rust-lang/crates.io-index" 3062 + checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2600 3063 2601 3064 [[package]] 2602 3065 name = "standback" ··· 2689 3152 source = "registry+https://github.com/rust-lang/crates.io-index" 2690 3153 checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" 2691 3154 dependencies = [ 2692 - "heck", 3155 + "heck 0.4.1", 2693 3156 "proc-macro2", 2694 3157 "quote", 2695 3158 "rustversion", ··· 2936 3399 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 2937 3400 2938 3401 [[package]] 3402 + name = "synstructure" 3403 + version = "0.13.1" 3404 + source = "registry+https://github.com/rust-lang/crates.io-index" 3405 + checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 3406 + dependencies = [ 3407 + "proc-macro2", 3408 + "quote", 3409 + "syn 2.0.51", 3410 + ] 3411 + 3412 + [[package]] 3413 + name = "system-configuration" 3414 + version = "0.5.1" 3415 + source = "registry+https://github.com/rust-lang/crates.io-index" 3416 + checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 3417 + dependencies = [ 3418 + "bitflags 1.3.2", 3419 + "core-foundation", 3420 + "system-configuration-sys", 3421 + ] 3422 + 3423 + [[package]] 3424 + name = "system-configuration-sys" 3425 + version = "0.5.0" 3426 + source = "registry+https://github.com/rust-lang/crates.io-index" 3427 + checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 3428 + dependencies = [ 3429 + "core-foundation-sys", 3430 + "libc", 3431 + ] 3432 + 3433 + [[package]] 2939 3434 name = "tempfile" 2940 3435 version = "3.3.0" 2941 3436 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3035 3530 ] 3036 3531 3037 3532 [[package]] 3533 + name = "tinystr" 3534 + version = "0.7.6" 3535 + source = "registry+https://github.com/rust-lang/crates.io-index" 3536 + checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 3537 + dependencies = [ 3538 + "displaydoc", 3539 + "zerovec", 3540 + ] 3541 + 3542 + [[package]] 3038 3543 name = "tinyvec" 3039 3544 version = "1.6.0" 3040 3545 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3062 3567 "mio", 3063 3568 "num_cpus", 3064 3569 "pin-project-lite", 3065 - "socket2", 3570 + "socket2 0.4.7", 3066 3571 "tokio-macros", 3067 3572 "windows-sys 0.42.0", 3068 3573 ] ··· 3090 3595 3091 3596 [[package]] 3092 3597 name = "tokio-rustls" 3093 - version = "0.23.4" 3598 + version = "0.24.1" 3094 3599 source = "registry+https://github.com/rust-lang/crates.io-index" 3095 - checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" 3600 + checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 3096 3601 dependencies = [ 3097 - "rustls 0.20.9", 3602 + "rustls 0.21.12", 3098 3603 "tokio", 3099 - "webpki 0.22.4", 3100 3604 ] 3101 3605 3102 3606 [[package]] ··· 3159 3663 "http-body", 3160 3664 "hyper", 3161 3665 "hyper-timeout", 3162 - "percent-encoding 2.2.0", 3666 + "percent-encoding 2.3.1", 3163 3667 "pin-project", 3164 3668 "prost", 3165 3669 "prost-derive", ··· 3334 3838 version = "0.2.6" 3335 3839 dependencies = [ 3336 3840 "anyhow", 3841 + "async-trait", 3337 3842 "clap", 3338 3843 "cpal", 3339 3844 "crossterm", ··· 3346 3851 "owo-colors", 3347 3852 "pls", 3348 3853 "prost", 3854 + "radiobrowser", 3349 3855 "ratatui", 3350 3856 "reqwest", 3351 3857 "rodio", ··· 3360 3866 "tonic-build", 3361 3867 "tonic-web", 3362 3868 "tunein", 3363 - "url 2.3.1", 3869 + "url 2.5.4", 3364 3870 ] 3365 3871 3366 3872 [[package]] ··· 3446 3952 3447 3953 [[package]] 3448 3954 name = "url" 3449 - version = "2.3.1" 3955 + version = "2.5.4" 3450 3956 source = "registry+https://github.com/rust-lang/crates.io-index" 3451 - checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 3957 + checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 3452 3958 dependencies = [ 3453 3959 "form_urlencoded", 3454 - "idna 0.3.0", 3455 - "percent-encoding 2.2.0", 3960 + "idna 1.0.3", 3961 + "percent-encoding 2.3.1", 3456 3962 "serde", 3457 3963 ] 3458 3964 3459 3965 [[package]] 3966 + name = "utf16_iter" 3967 + version = "1.0.5" 3968 + source = "registry+https://github.com/rust-lang/crates.io-index" 3969 + checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 3970 + 3971 + [[package]] 3972 + name = "utf8_iter" 3973 + version = "1.0.4" 3974 + source = "registry+https://github.com/rust-lang/crates.io-index" 3975 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 3976 + 3977 + [[package]] 3460 3978 name = "value-bag" 3461 - version = "1.0.0-alpha.9" 3979 + version = "1.10.0" 3462 3980 source = "registry+https://github.com/rust-lang/crates.io-index" 3463 - checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 3464 - dependencies = [ 3465 - "ctor", 3466 - "version_check", 3467 - ] 3981 + checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" 3468 3982 3469 3983 [[package]] 3470 3984 name = "version_check" ··· 3513 4027 3514 4028 [[package]] 3515 4029 name = "wasm-bindgen" 3516 - version = "0.2.84" 4030 + version = "0.2.100" 3517 4031 source = "registry+https://github.com/rust-lang/crates.io-index" 3518 - checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 4032 + checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 3519 4033 dependencies = [ 3520 4034 "cfg-if", 4035 + "once_cell", 4036 + "rustversion", 3521 4037 "wasm-bindgen-macro", 3522 4038 ] 3523 4039 3524 4040 [[package]] 3525 4041 name = "wasm-bindgen-backend" 3526 - version = "0.2.84" 4042 + version = "0.2.100" 3527 4043 source = "registry+https://github.com/rust-lang/crates.io-index" 3528 - checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 4044 + checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 3529 4045 dependencies = [ 3530 4046 "bumpalo", 3531 4047 "log", 3532 - "once_cell", 3533 4048 "proc-macro2", 3534 4049 "quote", 3535 - "syn 1.0.107", 4050 + "syn 2.0.51", 3536 4051 "wasm-bindgen-shared", 3537 4052 ] 3538 4053 ··· 3550 4065 3551 4066 [[package]] 3552 4067 name = "wasm-bindgen-macro" 3553 - version = "0.2.84" 4068 + version = "0.2.100" 3554 4069 source = "registry+https://github.com/rust-lang/crates.io-index" 3555 - checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 4070 + checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 3556 4071 dependencies = [ 3557 4072 "quote", 3558 4073 "wasm-bindgen-macro-support", ··· 3560 4075 3561 4076 [[package]] 3562 4077 name = "wasm-bindgen-macro-support" 3563 - version = "0.2.84" 4078 + version = "0.2.100" 3564 4079 source = "registry+https://github.com/rust-lang/crates.io-index" 3565 - checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 4080 + checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 3566 4081 dependencies = [ 3567 4082 "proc-macro2", 3568 4083 "quote", 3569 - "syn 1.0.107", 4084 + "syn 2.0.51", 3570 4085 "wasm-bindgen-backend", 3571 4086 "wasm-bindgen-shared", 3572 4087 ] 3573 4088 3574 4089 [[package]] 3575 4090 name = "wasm-bindgen-shared" 3576 - version = "0.2.84" 4091 + version = "0.2.100" 3577 4092 source = "registry+https://github.com/rust-lang/crates.io-index" 3578 - checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 4093 + checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 4094 + dependencies = [ 4095 + "unicode-ident", 4096 + ] 3579 4097 3580 4098 [[package]] 3581 4099 name = "web-sys" ··· 3598 4116 ] 3599 4117 3600 4118 [[package]] 3601 - name = "webpki" 3602 - version = "0.22.4" 3603 - source = "registry+https://github.com/rust-lang/crates.io-index" 3604 - checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" 3605 - dependencies = [ 3606 - "ring 0.17.3", 3607 - "untrusted 0.9.0", 3608 - ] 3609 - 3610 - [[package]] 3611 4119 name = "webpki-roots" 3612 4120 version = "0.20.0" 3613 4121 source = "registry+https://github.com/rust-lang/crates.io-index" 3614 4122 checksum = "0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f" 3615 4123 dependencies = [ 3616 - "webpki 0.21.4", 4124 + "webpki", 3617 4125 ] 3618 4126 3619 4127 [[package]] 3620 4128 name = "webpki-roots" 3621 - version = "0.22.6" 4129 + version = "0.25.4" 3622 4130 source = "registry+https://github.com/rust-lang/crates.io-index" 3623 - checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" 3624 - dependencies = [ 3625 - "webpki 0.22.4", 3626 - ] 4131 + checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 3627 4132 3628 4133 [[package]] 3629 4134 name = "wepoll-ffi" ··· 3646 4151 ] 3647 4152 3648 4153 [[package]] 4154 + name = "widestring" 4155 + version = "1.1.0" 4156 + source = "registry+https://github.com/rust-lang/crates.io-index" 4157 + checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" 4158 + 4159 + [[package]] 3649 4160 name = "winapi" 3650 4161 version = "0.3.9" 3651 4162 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3690 4201 ] 3691 4202 3692 4203 [[package]] 4204 + name = "windows-core" 4205 + version = "0.52.0" 4206 + source = "registry+https://github.com/rust-lang/crates.io-index" 4207 + checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 4208 + dependencies = [ 4209 + "windows-targets 0.52.6", 4210 + ] 4211 + 4212 + [[package]] 3693 4213 name = "windows-sys" 3694 4214 version = "0.42.0" 3695 4215 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3723 4243 ] 3724 4244 3725 4245 [[package]] 4246 + name = "windows-sys" 4247 + version = "0.52.0" 4248 + source = "registry+https://github.com/rust-lang/crates.io-index" 4249 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4250 + dependencies = [ 4251 + "windows-targets 0.52.6", 4252 + ] 4253 + 4254 + [[package]] 4255 + name = "windows-sys" 4256 + version = "0.59.0" 4257 + source = "registry+https://github.com/rust-lang/crates.io-index" 4258 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 4259 + dependencies = [ 4260 + "windows-targets 0.52.6", 4261 + ] 4262 + 4263 + [[package]] 3726 4264 name = "windows-targets" 3727 4265 version = "0.42.1" 3728 4266 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3753 4291 ] 3754 4292 3755 4293 [[package]] 4294 + name = "windows-targets" 4295 + version = "0.52.6" 4296 + source = "registry+https://github.com/rust-lang/crates.io-index" 4297 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4298 + dependencies = [ 4299 + "windows_aarch64_gnullvm 0.52.6", 4300 + "windows_aarch64_msvc 0.52.6", 4301 + "windows_i686_gnu 0.52.6", 4302 + "windows_i686_gnullvm", 4303 + "windows_i686_msvc 0.52.6", 4304 + "windows_x86_64_gnu 0.52.6", 4305 + "windows_x86_64_gnullvm 0.52.6", 4306 + "windows_x86_64_msvc 0.52.6", 4307 + ] 4308 + 4309 + [[package]] 3756 4310 name = "windows_aarch64_gnullvm" 3757 4311 version = "0.42.1" 3758 4312 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3765 4319 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3766 4320 3767 4321 [[package]] 4322 + name = "windows_aarch64_gnullvm" 4323 + version = "0.52.6" 4324 + source = "registry+https://github.com/rust-lang/crates.io-index" 4325 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4326 + 4327 + [[package]] 3768 4328 name = "windows_aarch64_msvc" 3769 4329 version = "0.37.0" 3770 4330 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3783 4343 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3784 4344 3785 4345 [[package]] 4346 + name = "windows_aarch64_msvc" 4347 + version = "0.52.6" 4348 + source = "registry+https://github.com/rust-lang/crates.io-index" 4349 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4350 + 4351 + [[package]] 3786 4352 name = "windows_i686_gnu" 3787 4353 version = "0.37.0" 3788 4354 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3801 4367 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3802 4368 3803 4369 [[package]] 4370 + name = "windows_i686_gnu" 4371 + version = "0.52.6" 4372 + source = "registry+https://github.com/rust-lang/crates.io-index" 4373 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4374 + 4375 + [[package]] 4376 + name = "windows_i686_gnullvm" 4377 + version = "0.52.6" 4378 + source = "registry+https://github.com/rust-lang/crates.io-index" 4379 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4380 + 4381 + [[package]] 3804 4382 name = "windows_i686_msvc" 3805 4383 version = "0.37.0" 3806 4384 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3817 4395 version = "0.48.5" 3818 4396 source = "registry+https://github.com/rust-lang/crates.io-index" 3819 4397 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4398 + 4399 + [[package]] 4400 + name = "windows_i686_msvc" 4401 + version = "0.52.6" 4402 + source = "registry+https://github.com/rust-lang/crates.io-index" 4403 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 3820 4404 3821 4405 [[package]] 3822 4406 name = "windows_x86_64_gnu" ··· 3837 4421 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3838 4422 3839 4423 [[package]] 4424 + name = "windows_x86_64_gnu" 4425 + version = "0.52.6" 4426 + source = "registry+https://github.com/rust-lang/crates.io-index" 4427 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4428 + 4429 + [[package]] 3840 4430 name = "windows_x86_64_gnullvm" 3841 4431 version = "0.42.1" 3842 4432 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3849 4439 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3850 4440 3851 4441 [[package]] 4442 + name = "windows_x86_64_gnullvm" 4443 + version = "0.52.6" 4444 + source = "registry+https://github.com/rust-lang/crates.io-index" 4445 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4446 + 4447 + [[package]] 3852 4448 name = "windows_x86_64_msvc" 3853 4449 version = "0.37.0" 3854 4450 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3867 4463 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3868 4464 3869 4465 [[package]] 4466 + name = "windows_x86_64_msvc" 4467 + version = "0.52.6" 4468 + source = "registry+https://github.com/rust-lang/crates.io-index" 4469 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4470 + 4471 + [[package]] 3870 4472 name = "winreg" 3871 - version = "0.10.1" 4473 + version = "0.50.0" 4474 + source = "registry+https://github.com/rust-lang/crates.io-index" 4475 + checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 4476 + dependencies = [ 4477 + "cfg-if", 4478 + "windows-sys 0.48.0", 4479 + ] 4480 + 4481 + [[package]] 4482 + name = "write16" 4483 + version = "1.0.0" 4484 + source = "registry+https://github.com/rust-lang/crates.io-index" 4485 + checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 4486 + 4487 + [[package]] 4488 + name = "writeable" 4489 + version = "0.5.5" 4490 + source = "registry+https://github.com/rust-lang/crates.io-index" 4491 + checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 4492 + 4493 + [[package]] 4494 + name = "yoke" 4495 + version = "0.7.5" 4496 + source = "registry+https://github.com/rust-lang/crates.io-index" 4497 + checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 4498 + dependencies = [ 4499 + "serde", 4500 + "stable_deref_trait", 4501 + "yoke-derive", 4502 + "zerofrom", 4503 + ] 4504 + 4505 + [[package]] 4506 + name = "yoke-derive" 4507 + version = "0.7.5" 3872 4508 source = "registry+https://github.com/rust-lang/crates.io-index" 3873 - checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 4509 + checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 3874 4510 dependencies = [ 3875 - "winapi", 4511 + "proc-macro2", 4512 + "quote", 4513 + "syn 2.0.51", 4514 + "synstructure", 3876 4515 ] 3877 4516 3878 4517 [[package]] ··· 3894 4533 "quote", 3895 4534 "syn 2.0.51", 3896 4535 ] 4536 + 4537 + [[package]] 4538 + name = "zerofrom" 4539 + version = "0.1.5" 4540 + source = "registry+https://github.com/rust-lang/crates.io-index" 4541 + checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" 4542 + dependencies = [ 4543 + "zerofrom-derive", 4544 + ] 4545 + 4546 + [[package]] 4547 + name = "zerofrom-derive" 4548 + version = "0.1.5" 4549 + source = "registry+https://github.com/rust-lang/crates.io-index" 4550 + checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" 4551 + dependencies = [ 4552 + "proc-macro2", 4553 + "quote", 4554 + "syn 2.0.51", 4555 + "synstructure", 4556 + ] 4557 + 4558 + [[package]] 4559 + name = "zerovec" 4560 + version = "0.10.4" 4561 + source = "registry+https://github.com/rust-lang/crates.io-index" 4562 + checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" 4563 + dependencies = [ 4564 + "yoke", 4565 + "zerofrom", 4566 + "zerovec-derive", 4567 + ] 4568 + 4569 + [[package]] 4570 + name = "zerovec-derive" 4571 + version = "0.10.3" 4572 + source = "registry+https://github.com/rust-lang/crates.io-index" 4573 + checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" 4574 + dependencies = [ 4575 + "proc-macro2", 4576 + "quote", 4577 + "syn 2.0.51", 4578 + ]
+2
Cargo.toml
··· 24 24 25 25 [dependencies] 26 26 anyhow = "1.0.69" 27 + async-trait = "0.1.85" 27 28 clap = "3.2.20" 28 29 cpal = "0.14.0" 29 30 crossterm = "0.27.0" ··· 36 37 owo-colors = "3.5.0" 37 38 pls = "0.2.2" 38 39 prost = "0.11.8" 40 + radiobrowser = { version = "0.6.1", features = ["default-rustls"], default-features = false } 39 41 ratatui = "0.26.1" 40 42 reqwest = {version = "0.11.14", features = ["blocking", "rustls-tls"], default-features = false} 41 43 rodio = {version = "0.16"}
+2
src/main.rs
··· 10 10 mod music; 11 11 mod play; 12 12 mod player; 13 + mod provider; 13 14 mod search; 14 15 mod server; 15 16 mod tui; 17 + mod types; 16 18 mod visualization; 17 19 18 20 fn cli() -> Command<'static> {
+13
src/provider/mod.rs
··· 1 + pub mod radiobrowser; 2 + pub mod tunein; 3 + 4 + use crate::types::Station; 5 + use anyhow::Error; 6 + use async_trait::async_trait; 7 + 8 + #[async_trait] 9 + pub trait Provider { 10 + async fn search(&self, name: String) -> Result<Vec<Station>, Error>; 11 + async fn get_station(&self, id: String) -> Result<(), Error>; 12 + async fn browse(&self, category: String) -> Result<Vec<Station>, Error>; 13 + }
+97
src/provider/radiobrowser.rs
··· 1 + use crate::types::Station; 2 + 3 + use super::Provider; 4 + use anyhow::Error; 5 + use async_trait::async_trait; 6 + use radiobrowser::RadioBrowserAPI; 7 + use std::process::exit; 8 + 9 + pub struct Radiobrowser { 10 + client: RadioBrowserAPI, 11 + } 12 + 13 + impl Radiobrowser { 14 + pub async fn new() -> Self { 15 + let client = RadioBrowserAPI::new().await; 16 + 17 + if client.is_err() { 18 + eprintln!("Failed to create a RadioBrowserAPI client"); 19 + exit(1); 20 + } 21 + 22 + let client = client.unwrap(); 23 + Self { client } 24 + } 25 + } 26 + 27 + #[async_trait] 28 + impl Provider for Radiobrowser { 29 + async fn search(&self, name: String) -> Result<Vec<Station>, Error> { 30 + let stations = self 31 + .client 32 + .get_stations() 33 + .name(&name) 34 + .send() 35 + .await 36 + .map_err(|e| anyhow::anyhow!(format!("{}", e)))?; 37 + let stations = stations.into_iter().map(|x| Station::from(x)).collect(); 38 + Ok(stations) 39 + } 40 + 41 + async fn get_station(&self, name: String) -> Result<(), Error> { 42 + let station = self 43 + .client 44 + .get_stations() 45 + .name(&name) 46 + .name_exact(true) 47 + .send() 48 + .await 49 + .map_err(|e| anyhow::anyhow!(format!("{}", e)))?; 50 + println!("Station: {:#?}", station); 51 + Ok(()) 52 + } 53 + 54 + async fn browse(&self, category: String) -> Result<Vec<Station>, Error> { 55 + let stations = self 56 + .client 57 + .get_stations() 58 + .tag(&category) 59 + .limit("20") 60 + .send() 61 + .await 62 + .map_err(|e| anyhow::anyhow!(format!("{}", e)))?; 63 + let stations = stations.into_iter().map(|x| Station::from(x)).collect(); 64 + Ok(stations) 65 + } 66 + } 67 + 68 + #[cfg(test)] 69 + mod tests { 70 + use super::*; 71 + 72 + #[tokio::test] 73 + pub async fn test_search() { 74 + let provider = Radiobrowser::new().await; 75 + let name = "alternativeradio"; 76 + let stations = provider.search(name.to_string()).await.unwrap(); 77 + assert!(stations.len() == 1) 78 + } 79 + 80 + #[tokio::test] 81 + pub async fn test_get_station() { 82 + let provider = Radiobrowser::new().await; 83 + let name = "alternariveradio.us".to_string(); 84 + provider.get_station(name).await.unwrap(); 85 + } 86 + 87 + #[tokio::test] 88 + pub async fn test_browse() { 89 + let provider = Radiobrowser::new().await; 90 + let stations = provider.browse("music".to_string()).await.unwrap(); 91 + let stations = stations 92 + .into_iter() 93 + .map(|x| Station::from(x)) 94 + .collect::<Vec<Station>>(); 95 + assert!(stations.len() == 20) 96 + } 97 + }
+22
src/provider/tunein.rs
··· 1 + use crate::types::Station; 2 + 3 + use super::Provider; 4 + use anyhow::Error; 5 + use async_trait::async_trait; 6 + 7 + pub struct Tunein {} 8 + 9 + #[async_trait] 10 + impl Provider for Tunein { 11 + async fn search(&self, name: String) -> Result<Vec<Station>, Error> { 12 + Ok(vec![]) 13 + } 14 + 15 + async fn get_station(&self, id: String) -> Result<(), Error> { 16 + Ok(()) 17 + } 18 + 19 + async fn browse(&self, category: String) -> Result<Vec<Station>, Error> { 20 + Ok(vec![]) 21 + } 22 + }
+22
src/types.rs
··· 1 + use radiobrowser::ApiStation; 2 + 3 + #[derive(Debug, Clone)] 4 + pub struct Station { 5 + pub id: String, 6 + pub name: String, 7 + pub codec: String, 8 + pub bitrate: u32, 9 + pub stream_url: String, 10 + } 11 + 12 + impl From<ApiStation> for Station { 13 + fn from(station: ApiStation) -> Station { 14 + Station { 15 + id: station.stationuuid, 16 + name: station.name, 17 + codec: station.codec, 18 + bitrate: station.bitrate, 19 + stream_url: station.url_resolved, 20 + } 21 + } 22 + }