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

Initial Commit

+2
.gitignore
···
··· 1 + /target 2 +
+132
CODE_OF_CONDUCT.md
···
··· 1 + # Contributor Covenant Code of Conduct 2 + 3 + ## Our Pledge 4 + 5 + We as members, contributors, and leaders pledge to make participation in our 6 + community a harassment-free experience for everyone, regardless of age, body 7 + size, visible or invisible disability, ethnicity, sex characteristics, gender 8 + identity and expression, level of experience, education, socio-economic status, 9 + nationality, personal appearance, race, caste, color, religion, or sexual 10 + identity and orientation. 11 + 12 + We pledge to act and interact in ways that contribute to an open, welcoming, 13 + diverse, inclusive, and healthy community. 14 + 15 + ## Our Standards 16 + 17 + Examples of behavior that contributes to a positive environment for our 18 + community include: 19 + 20 + * Demonstrating empathy and kindness toward other people 21 + * Being respectful of differing opinions, viewpoints, and experiences 22 + * Giving and gracefully accepting constructive feedback 23 + * Accepting responsibility and apologizing to those affected by our mistakes, 24 + and learning from the experience 25 + * Focusing on what is best not just for us as individuals, but for the overall 26 + community 27 + 28 + Examples of unacceptable behavior include: 29 + 30 + * The use of sexualized language or imagery, and sexual attention or advances of 31 + any kind 32 + * Trolling, insulting or derogatory comments, and personal or political attacks 33 + * Public or private harassment 34 + * Publishing others' private information, such as a physical or email address, 35 + without their explicit permission 36 + * Other conduct which could reasonably be considered inappropriate in a 37 + professional setting 38 + 39 + ## Enforcement Responsibilities 40 + 41 + Community leaders are responsible for clarifying and enforcing our standards of 42 + acceptable behavior and will take appropriate and fair corrective action in 43 + response to any behavior that they deem inappropriate, threatening, offensive, 44 + or harmful. 45 + 46 + Community leaders have the right and responsibility to remove, edit, or reject 47 + comments, commits, code, wiki edits, issues, and other contributions that are 48 + not aligned to this Code of Conduct, and will communicate reasons for moderation 49 + decisions when appropriate. 50 + 51 + ## Scope 52 + 53 + This Code of Conduct applies within all community spaces, and also applies when 54 + an individual is officially representing the community in public spaces. 55 + Examples of representing our community include using an official e-mail address, 56 + posting via an official social media account, or acting as an appointed 57 + representative at an online or offline event. 58 + 59 + ## Enforcement 60 + 61 + Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 + reported to the community leaders responsible for enforcement at 63 + [GitHub Issues](https://github.com/tsirysndr/tunein-cli/issues). 64 + All complaints will be reviewed and investigated promptly and fairly. 65 + 66 + All community leaders are obligated to respect the privacy and security of the 67 + reporter of any incident. 68 + 69 + ## Enforcement Guidelines 70 + 71 + Community leaders will follow these Community Impact Guidelines in determining 72 + the consequences for any action they deem in violation of this Code of Conduct: 73 + 74 + ### 1. Correction 75 + 76 + **Community Impact**: Use of inappropriate language or other behavior deemed 77 + unprofessional or unwelcome in the community. 78 + 79 + **Consequence**: A private, written warning from community leaders, providing 80 + clarity around the nature of the violation and an explanation of why the 81 + behavior was inappropriate. A public apology may be requested. 82 + 83 + ### 2. Warning 84 + 85 + **Community Impact**: A violation through a single incident or series of 86 + actions. 87 + 88 + **Consequence**: A warning with consequences for continued behavior. No 89 + interaction with the people involved, including unsolicited interaction with 90 + those enforcing the Code of Conduct, for a specified period of time. This 91 + includes avoiding interactions in community spaces as well as external channels 92 + like social media. Violating these terms may lead to a temporary or permanent 93 + ban. 94 + 95 + ### 3. Temporary Ban 96 + 97 + **Community Impact**: A serious violation of community standards, including 98 + sustained inappropriate behavior. 99 + 100 + **Consequence**: A temporary ban from any sort of interaction or public 101 + communication with the community for a specified period of time. No public or 102 + private interaction with the people involved, including unsolicited interaction 103 + with those enforcing the Code of Conduct, is allowed during this period. 104 + Violating these terms may lead to a permanent ban. 105 + 106 + ### 4. Permanent Ban 107 + 108 + **Community Impact**: Demonstrating a pattern of violation of community 109 + standards, including sustained inappropriate behavior, harassment of an 110 + individual, or aggression toward or disparagement of classes of individuals. 111 + 112 + **Consequence**: A permanent ban from any sort of public interaction within the 113 + community. 114 + 115 + ## Attribution 116 + 117 + This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 + version 2.1, available at 119 + [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 + 121 + Community Impact Guidelines were inspired by 122 + [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 + 124 + For answers to common questions about this code of conduct, see the FAQ at 125 + [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at 126 + [https://www.contributor-covenant.org/translations][translations]. 127 + 128 + [homepage]: https://www.contributor-covenant.org 129 + [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 + [Mozilla CoC]: https://github.com/mozilla/diversity 131 + [FAQ]: https://www.contributor-covenant.org/faq 132 + [translations]: https://www.contributor-covenant.org/translations
+53
CONTRIBUTING.md
···
··· 1 + # Contributing Guidelines 2 + 3 + Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional 4 + documentation, we greatly value feedback and contributions from our community. 5 + 6 + Please read through this document before submitting any issues or pull requests to ensure we have all the necessary 7 + information to effectively respond to your bug report or contribution. 8 + 9 + 10 + ## Reporting Bugs/Feature Requests 11 + 12 + We welcome you to use the GitHub issue tracker to report bugs or suggest features. 13 + 14 + When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already 15 + reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: 16 + 17 + * A reproducible test case or series of steps 18 + * The version of our code being used 19 + * Any modifications you've made relevant to the bug 20 + * Anything unusual about your environment or deployment 21 + 22 + 23 + ## Contributing via Pull Requests 24 + Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: 25 + 26 + 1. You are working against the latest source on the *master* branch. 27 + 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. 28 + 3. You open an issue to discuss any significant work - we would hate for your time to be wasted. 29 + 30 + To send us a pull request, please: 31 + 32 + 1. Fork the repository. 33 + 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. 34 + 3. Ensure local tests pass. 35 + 4. Commit to your fork using clear commit messages. 36 + 5. Send us a pull request, answering any default questions in the pull request interface. 37 + 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. 38 + 39 + GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and 40 + [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 41 + 42 + 43 + ## Finding contributions to work on 44 + Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. 45 + 46 + 47 + ## Code of Conduct 48 + This project has adopted the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. 49 + 50 + 51 + ## Licensing 52 + 53 + See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
+1941
Cargo.lock
···
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 3 4 + 5 + [[package]] 6 + name = "aead" 7 + version = "0.3.2" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" 10 + dependencies = [ 11 + "generic-array", 12 + ] 13 + 14 + [[package]] 15 + name = "aes" 16 + version = "0.6.0" 17 + source = "registry+https://github.com/rust-lang/crates.io-index" 18 + checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" 19 + dependencies = [ 20 + "aes-soft", 21 + "aesni", 22 + "cipher", 23 + ] 24 + 25 + [[package]] 26 + name = "aes-gcm" 27 + version = "0.8.0" 28 + source = "registry+https://github.com/rust-lang/crates.io-index" 29 + checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" 30 + dependencies = [ 31 + "aead", 32 + "aes", 33 + "cipher", 34 + "ctr", 35 + "ghash", 36 + "subtle", 37 + ] 38 + 39 + [[package]] 40 + name = "aes-soft" 41 + version = "0.6.4" 42 + source = "registry+https://github.com/rust-lang/crates.io-index" 43 + checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" 44 + dependencies = [ 45 + "cipher", 46 + "opaque-debug", 47 + ] 48 + 49 + [[package]] 50 + name = "aesni" 51 + version = "0.10.0" 52 + source = "registry+https://github.com/rust-lang/crates.io-index" 53 + checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" 54 + dependencies = [ 55 + "cipher", 56 + "opaque-debug", 57 + ] 58 + 59 + [[package]] 60 + name = "anyhow" 61 + version = "1.0.69" 62 + source = "registry+https://github.com/rust-lang/crates.io-index" 63 + checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" 64 + 65 + [[package]] 66 + name = "arrayvec" 67 + version = "0.5.2" 68 + source = "registry+https://github.com/rust-lang/crates.io-index" 69 + checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" 70 + 71 + [[package]] 72 + name = "async-channel" 73 + version = "1.8.0" 74 + source = "registry+https://github.com/rust-lang/crates.io-index" 75 + checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" 76 + dependencies = [ 77 + "concurrent-queue", 78 + "event-listener", 79 + "futures-core", 80 + ] 81 + 82 + [[package]] 83 + name = "async-dup" 84 + version = "1.2.2" 85 + source = "registry+https://github.com/rust-lang/crates.io-index" 86 + checksum = "7427a12b8dc09291528cfb1da2447059adb4a257388c2acd6497a79d55cf6f7c" 87 + dependencies = [ 88 + "futures-io", 89 + "simple-mutex", 90 + ] 91 + 92 + [[package]] 93 + name = "async-executor" 94 + version = "1.5.0" 95 + source = "registry+https://github.com/rust-lang/crates.io-index" 96 + checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" 97 + dependencies = [ 98 + "async-lock", 99 + "async-task", 100 + "concurrent-queue", 101 + "fastrand", 102 + "futures-lite", 103 + "slab", 104 + ] 105 + 106 + [[package]] 107 + name = "async-global-executor" 108 + version = "2.3.1" 109 + source = "registry+https://github.com/rust-lang/crates.io-index" 110 + checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" 111 + dependencies = [ 112 + "async-channel", 113 + "async-executor", 114 + "async-io", 115 + "async-lock", 116 + "blocking", 117 + "futures-lite", 118 + "once_cell", 119 + ] 120 + 121 + [[package]] 122 + name = "async-h1" 123 + version = "2.3.3" 124 + source = "registry+https://github.com/rust-lang/crates.io-index" 125 + checksum = "8101020758a4fc3a7c326cb42aa99e9fa77cbfb76987c128ad956406fe1f70a7" 126 + dependencies = [ 127 + "async-channel", 128 + "async-dup", 129 + "async-std", 130 + "futures-core", 131 + "http-types", 132 + "httparse", 133 + "log", 134 + "pin-project", 135 + ] 136 + 137 + [[package]] 138 + name = "async-io" 139 + version = "1.12.0" 140 + source = "registry+https://github.com/rust-lang/crates.io-index" 141 + checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" 142 + dependencies = [ 143 + "async-lock", 144 + "autocfg", 145 + "concurrent-queue", 146 + "futures-lite", 147 + "libc", 148 + "log", 149 + "parking", 150 + "polling", 151 + "slab", 152 + "socket2", 153 + "waker-fn", 154 + "windows-sys 0.42.0", 155 + ] 156 + 157 + [[package]] 158 + name = "async-lock" 159 + version = "2.6.0" 160 + source = "registry+https://github.com/rust-lang/crates.io-index" 161 + checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" 162 + dependencies = [ 163 + "event-listener", 164 + "futures-lite", 165 + ] 166 + 167 + [[package]] 168 + name = "async-std" 169 + version = "1.12.0" 170 + source = "registry+https://github.com/rust-lang/crates.io-index" 171 + checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 172 + dependencies = [ 173 + "async-channel", 174 + "async-global-executor", 175 + "async-io", 176 + "async-lock", 177 + "crossbeam-utils", 178 + "futures-channel", 179 + "futures-core", 180 + "futures-io", 181 + "futures-lite", 182 + "gloo-timers", 183 + "kv-log-macro", 184 + "log", 185 + "memchr", 186 + "once_cell", 187 + "pin-project-lite", 188 + "pin-utils", 189 + "slab", 190 + "wasm-bindgen-futures", 191 + ] 192 + 193 + [[package]] 194 + name = "async-task" 195 + version = "4.3.0" 196 + source = "registry+https://github.com/rust-lang/crates.io-index" 197 + checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" 198 + 199 + [[package]] 200 + name = "async-tls" 201 + version = "0.10.0" 202 + source = "registry+https://github.com/rust-lang/crates.io-index" 203 + checksum = "d85a97c4a0ecce878efd3f945f119c78a646d8975340bca0398f9bb05c30cc52" 204 + dependencies = [ 205 + "futures-core", 206 + "futures-io", 207 + "rustls", 208 + "webpki", 209 + "webpki-roots", 210 + ] 211 + 212 + [[package]] 213 + name = "async-trait" 214 + version = "0.1.64" 215 + source = "registry+https://github.com/rust-lang/crates.io-index" 216 + checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" 217 + dependencies = [ 218 + "proc-macro2", 219 + "quote", 220 + "syn", 221 + ] 222 + 223 + [[package]] 224 + name = "atomic-waker" 225 + version = "1.1.0" 226 + source = "registry+https://github.com/rust-lang/crates.io-index" 227 + checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" 228 + 229 + [[package]] 230 + name = "atty" 231 + version = "0.2.14" 232 + source = "registry+https://github.com/rust-lang/crates.io-index" 233 + checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 234 + dependencies = [ 235 + "hermit-abi 0.1.19", 236 + "libc", 237 + "winapi", 238 + ] 239 + 240 + [[package]] 241 + name = "autocfg" 242 + version = "1.1.0" 243 + source = "registry+https://github.com/rust-lang/crates.io-index" 244 + checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 245 + 246 + [[package]] 247 + name = "base-x" 248 + version = "0.2.11" 249 + source = "registry+https://github.com/rust-lang/crates.io-index" 250 + checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 251 + 252 + [[package]] 253 + name = "base64" 254 + version = "0.12.3" 255 + source = "registry+https://github.com/rust-lang/crates.io-index" 256 + checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 257 + 258 + [[package]] 259 + name = "base64" 260 + version = "0.13.1" 261 + source = "registry+https://github.com/rust-lang/crates.io-index" 262 + checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 263 + 264 + [[package]] 265 + name = "bitflags" 266 + version = "1.3.2" 267 + source = "registry+https://github.com/rust-lang/crates.io-index" 268 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 269 + 270 + [[package]] 271 + name = "block-buffer" 272 + version = "0.9.0" 273 + source = "registry+https://github.com/rust-lang/crates.io-index" 274 + checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 275 + dependencies = [ 276 + "generic-array", 277 + ] 278 + 279 + [[package]] 280 + name = "blocking" 281 + version = "1.3.0" 282 + source = "registry+https://github.com/rust-lang/crates.io-index" 283 + checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" 284 + dependencies = [ 285 + "async-channel", 286 + "async-lock", 287 + "async-task", 288 + "atomic-waker", 289 + "fastrand", 290 + "futures-lite", 291 + ] 292 + 293 + [[package]] 294 + name = "bumpalo" 295 + version = "3.12.0" 296 + source = "registry+https://github.com/rust-lang/crates.io-index" 297 + checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 298 + 299 + [[package]] 300 + name = "cc" 301 + version = "1.0.79" 302 + source = "registry+https://github.com/rust-lang/crates.io-index" 303 + checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 304 + 305 + [[package]] 306 + name = "cfg-if" 307 + version = "1.0.0" 308 + source = "registry+https://github.com/rust-lang/crates.io-index" 309 + checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 310 + 311 + [[package]] 312 + name = "cipher" 313 + version = "0.2.5" 314 + source = "registry+https://github.com/rust-lang/crates.io-index" 315 + checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" 316 + dependencies = [ 317 + "generic-array", 318 + ] 319 + 320 + [[package]] 321 + name = "clap" 322 + version = "3.2.23" 323 + source = "registry+https://github.com/rust-lang/crates.io-index" 324 + checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" 325 + dependencies = [ 326 + "atty", 327 + "bitflags", 328 + "clap_lex", 329 + "indexmap", 330 + "strsim", 331 + "termcolor", 332 + "textwrap", 333 + ] 334 + 335 + [[package]] 336 + name = "clap_lex" 337 + version = "0.2.4" 338 + source = "registry+https://github.com/rust-lang/crates.io-index" 339 + checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" 340 + dependencies = [ 341 + "os_str_bytes", 342 + ] 343 + 344 + [[package]] 345 + name = "concurrent-queue" 346 + version = "2.1.0" 347 + source = "registry+https://github.com/rust-lang/crates.io-index" 348 + checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" 349 + dependencies = [ 350 + "crossbeam-utils", 351 + ] 352 + 353 + [[package]] 354 + name = "config" 355 + version = "0.10.1" 356 + source = "registry+https://github.com/rust-lang/crates.io-index" 357 + checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3" 358 + dependencies = [ 359 + "lazy_static", 360 + "nom", 361 + "serde", 362 + ] 363 + 364 + [[package]] 365 + name = "const_fn" 366 + version = "0.4.9" 367 + source = "registry+https://github.com/rust-lang/crates.io-index" 368 + checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" 369 + 370 + [[package]] 371 + name = "cookie" 372 + version = "0.14.4" 373 + source = "registry+https://github.com/rust-lang/crates.io-index" 374 + checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" 375 + dependencies = [ 376 + "aes-gcm", 377 + "base64 0.13.1", 378 + "hkdf", 379 + "hmac", 380 + "percent-encoding 2.2.0", 381 + "rand 0.8.5", 382 + "sha2", 383 + "time", 384 + "version_check", 385 + ] 386 + 387 + [[package]] 388 + name = "cpufeatures" 389 + version = "0.2.5" 390 + source = "registry+https://github.com/rust-lang/crates.io-index" 391 + checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 392 + dependencies = [ 393 + "libc", 394 + ] 395 + 396 + [[package]] 397 + name = "cpuid-bool" 398 + version = "0.2.0" 399 + source = "registry+https://github.com/rust-lang/crates.io-index" 400 + checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" 401 + 402 + [[package]] 403 + name = "crossbeam-queue" 404 + version = "0.3.8" 405 + source = "registry+https://github.com/rust-lang/crates.io-index" 406 + checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" 407 + dependencies = [ 408 + "cfg-if", 409 + "crossbeam-utils", 410 + ] 411 + 412 + [[package]] 413 + name = "crossbeam-utils" 414 + version = "0.8.14" 415 + source = "registry+https://github.com/rust-lang/crates.io-index" 416 + checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" 417 + dependencies = [ 418 + "cfg-if", 419 + ] 420 + 421 + [[package]] 422 + name = "crypto-mac" 423 + version = "0.10.1" 424 + source = "registry+https://github.com/rust-lang/crates.io-index" 425 + checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" 426 + dependencies = [ 427 + "generic-array", 428 + "subtle", 429 + ] 430 + 431 + [[package]] 432 + name = "ctor" 433 + version = "0.1.26" 434 + source = "registry+https://github.com/rust-lang/crates.io-index" 435 + checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 436 + dependencies = [ 437 + "quote", 438 + "syn", 439 + ] 440 + 441 + [[package]] 442 + name = "ctr" 443 + version = "0.6.0" 444 + source = "registry+https://github.com/rust-lang/crates.io-index" 445 + checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" 446 + dependencies = [ 447 + "cipher", 448 + ] 449 + 450 + [[package]] 451 + name = "dashmap" 452 + version = "5.4.0" 453 + source = "registry+https://github.com/rust-lang/crates.io-index" 454 + checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" 455 + dependencies = [ 456 + "cfg-if", 457 + "hashbrown", 458 + "lock_api", 459 + "once_cell", 460 + "parking_lot_core", 461 + ] 462 + 463 + [[package]] 464 + name = "deadpool" 465 + version = "0.7.0" 466 + source = "registry+https://github.com/rust-lang/crates.io-index" 467 + checksum = "3d126179d86aee4556e54f5f3c6bf6d9884e7cc52cef82f77ee6f90a7747616d" 468 + dependencies = [ 469 + "async-trait", 470 + "config", 471 + "crossbeam-queue", 472 + "num_cpus", 473 + "serde", 474 + "tokio", 475 + ] 476 + 477 + [[package]] 478 + name = "digest" 479 + version = "0.9.0" 480 + source = "registry+https://github.com/rust-lang/crates.io-index" 481 + checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 482 + dependencies = [ 483 + "generic-array", 484 + ] 485 + 486 + [[package]] 487 + name = "discard" 488 + version = "1.0.4" 489 + source = "registry+https://github.com/rust-lang/crates.io-index" 490 + checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" 491 + 492 + [[package]] 493 + name = "event-listener" 494 + version = "2.5.3" 495 + source = "registry+https://github.com/rust-lang/crates.io-index" 496 + checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 497 + 498 + [[package]] 499 + name = "fastrand" 500 + version = "1.9.0" 501 + source = "registry+https://github.com/rust-lang/crates.io-index" 502 + checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 503 + dependencies = [ 504 + "instant", 505 + ] 506 + 507 + [[package]] 508 + name = "form_urlencoded" 509 + version = "1.1.0" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 512 + dependencies = [ 513 + "percent-encoding 2.2.0", 514 + ] 515 + 516 + [[package]] 517 + name = "futures" 518 + version = "0.3.26" 519 + source = "registry+https://github.com/rust-lang/crates.io-index" 520 + checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" 521 + dependencies = [ 522 + "futures-channel", 523 + "futures-core", 524 + "futures-executor", 525 + "futures-io", 526 + "futures-sink", 527 + "futures-task", 528 + "futures-util", 529 + ] 530 + 531 + [[package]] 532 + name = "futures-channel" 533 + version = "0.3.26" 534 + source = "registry+https://github.com/rust-lang/crates.io-index" 535 + checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" 536 + dependencies = [ 537 + "futures-core", 538 + "futures-sink", 539 + ] 540 + 541 + [[package]] 542 + name = "futures-core" 543 + version = "0.3.26" 544 + source = "registry+https://github.com/rust-lang/crates.io-index" 545 + checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" 546 + 547 + [[package]] 548 + name = "futures-executor" 549 + version = "0.3.26" 550 + source = "registry+https://github.com/rust-lang/crates.io-index" 551 + checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" 552 + dependencies = [ 553 + "futures-core", 554 + "futures-task", 555 + "futures-util", 556 + ] 557 + 558 + [[package]] 559 + name = "futures-io" 560 + version = "0.3.26" 561 + source = "registry+https://github.com/rust-lang/crates.io-index" 562 + checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" 563 + 564 + [[package]] 565 + name = "futures-lite" 566 + version = "1.12.0" 567 + source = "registry+https://github.com/rust-lang/crates.io-index" 568 + checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" 569 + dependencies = [ 570 + "fastrand", 571 + "futures-core", 572 + "futures-io", 573 + "memchr", 574 + "parking", 575 + "pin-project-lite", 576 + "waker-fn", 577 + ] 578 + 579 + [[package]] 580 + name = "futures-macro" 581 + version = "0.3.26" 582 + source = "registry+https://github.com/rust-lang/crates.io-index" 583 + checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" 584 + dependencies = [ 585 + "proc-macro2", 586 + "quote", 587 + "syn", 588 + ] 589 + 590 + [[package]] 591 + name = "futures-sink" 592 + version = "0.3.26" 593 + source = "registry+https://github.com/rust-lang/crates.io-index" 594 + checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" 595 + 596 + [[package]] 597 + name = "futures-task" 598 + version = "0.3.26" 599 + source = "registry+https://github.com/rust-lang/crates.io-index" 600 + checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" 601 + 602 + [[package]] 603 + name = "futures-util" 604 + version = "0.3.26" 605 + source = "registry+https://github.com/rust-lang/crates.io-index" 606 + checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" 607 + dependencies = [ 608 + "futures-channel", 609 + "futures-core", 610 + "futures-io", 611 + "futures-macro", 612 + "futures-sink", 613 + "futures-task", 614 + "memchr", 615 + "pin-project-lite", 616 + "pin-utils", 617 + "slab", 618 + ] 619 + 620 + [[package]] 621 + name = "generic-array" 622 + version = "0.14.6" 623 + source = "registry+https://github.com/rust-lang/crates.io-index" 624 + checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 625 + dependencies = [ 626 + "typenum", 627 + "version_check", 628 + ] 629 + 630 + [[package]] 631 + name = "getrandom" 632 + version = "0.1.16" 633 + source = "registry+https://github.com/rust-lang/crates.io-index" 634 + checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 635 + dependencies = [ 636 + "cfg-if", 637 + "libc", 638 + "wasi 0.9.0+wasi-snapshot-preview1", 639 + ] 640 + 641 + [[package]] 642 + name = "getrandom" 643 + version = "0.2.8" 644 + source = "registry+https://github.com/rust-lang/crates.io-index" 645 + checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 646 + dependencies = [ 647 + "cfg-if", 648 + "libc", 649 + "wasi 0.11.0+wasi-snapshot-preview1", 650 + ] 651 + 652 + [[package]] 653 + name = "ghash" 654 + version = "0.3.1" 655 + source = "registry+https://github.com/rust-lang/crates.io-index" 656 + checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" 657 + dependencies = [ 658 + "opaque-debug", 659 + "polyval", 660 + ] 661 + 662 + [[package]] 663 + name = "gloo-timers" 664 + version = "0.2.6" 665 + source = "registry+https://github.com/rust-lang/crates.io-index" 666 + checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" 667 + dependencies = [ 668 + "futures-channel", 669 + "futures-core", 670 + "js-sys", 671 + "wasm-bindgen", 672 + ] 673 + 674 + [[package]] 675 + name = "hashbrown" 676 + version = "0.12.3" 677 + source = "registry+https://github.com/rust-lang/crates.io-index" 678 + checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 679 + 680 + [[package]] 681 + name = "hermit-abi" 682 + version = "0.1.19" 683 + source = "registry+https://github.com/rust-lang/crates.io-index" 684 + checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 685 + dependencies = [ 686 + "libc", 687 + ] 688 + 689 + [[package]] 690 + name = "hermit-abi" 691 + version = "0.2.6" 692 + source = "registry+https://github.com/rust-lang/crates.io-index" 693 + checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 694 + dependencies = [ 695 + "libc", 696 + ] 697 + 698 + [[package]] 699 + name = "hkdf" 700 + version = "0.10.0" 701 + source = "registry+https://github.com/rust-lang/crates.io-index" 702 + checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" 703 + dependencies = [ 704 + "digest", 705 + "hmac", 706 + ] 707 + 708 + [[package]] 709 + name = "hmac" 710 + version = "0.10.1" 711 + source = "registry+https://github.com/rust-lang/crates.io-index" 712 + checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" 713 + dependencies = [ 714 + "crypto-mac", 715 + "digest", 716 + ] 717 + 718 + [[package]] 719 + name = "http-client" 720 + version = "6.5.3" 721 + source = "registry+https://github.com/rust-lang/crates.io-index" 722 + checksum = "1947510dc91e2bf586ea5ffb412caad7673264e14bb39fb9078da114a94ce1a5" 723 + dependencies = [ 724 + "async-h1", 725 + "async-std", 726 + "async-tls", 727 + "async-trait", 728 + "cfg-if", 729 + "dashmap", 730 + "deadpool", 731 + "futures", 732 + "http-types", 733 + "log", 734 + "rustls", 735 + ] 736 + 737 + [[package]] 738 + name = "http-types" 739 + version = "2.12.0" 740 + source = "registry+https://github.com/rust-lang/crates.io-index" 741 + checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" 742 + dependencies = [ 743 + "anyhow", 744 + "async-channel", 745 + "async-std", 746 + "base64 0.13.1", 747 + "cookie", 748 + "futures-lite", 749 + "infer", 750 + "pin-project-lite", 751 + "rand 0.7.3", 752 + "serde", 753 + "serde_json", 754 + "serde_qs", 755 + "serde_urlencoded", 756 + "url 2.3.1", 757 + ] 758 + 759 + [[package]] 760 + name = "httparse" 761 + version = "1.8.0" 762 + source = "registry+https://github.com/rust-lang/crates.io-index" 763 + checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 764 + 765 + [[package]] 766 + name = "idna" 767 + version = "0.1.5" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 770 + dependencies = [ 771 + "matches", 772 + "unicode-bidi", 773 + "unicode-normalization", 774 + ] 775 + 776 + [[package]] 777 + name = "idna" 778 + version = "0.3.0" 779 + source = "registry+https://github.com/rust-lang/crates.io-index" 780 + checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 781 + dependencies = [ 782 + "unicode-bidi", 783 + "unicode-normalization", 784 + ] 785 + 786 + [[package]] 787 + name = "indexmap" 788 + version = "1.9.2" 789 + source = "registry+https://github.com/rust-lang/crates.io-index" 790 + checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 791 + dependencies = [ 792 + "autocfg", 793 + "hashbrown", 794 + ] 795 + 796 + [[package]] 797 + name = "infer" 798 + version = "0.2.3" 799 + source = "registry+https://github.com/rust-lang/crates.io-index" 800 + checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" 801 + 802 + [[package]] 803 + name = "instant" 804 + version = "0.1.12" 805 + source = "registry+https://github.com/rust-lang/crates.io-index" 806 + checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 807 + dependencies = [ 808 + "cfg-if", 809 + ] 810 + 811 + [[package]] 812 + name = "itoa" 813 + version = "1.0.5" 814 + source = "registry+https://github.com/rust-lang/crates.io-index" 815 + checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" 816 + 817 + [[package]] 818 + name = "js-sys" 819 + version = "0.3.61" 820 + source = "registry+https://github.com/rust-lang/crates.io-index" 821 + checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 822 + dependencies = [ 823 + "wasm-bindgen", 824 + ] 825 + 826 + [[package]] 827 + name = "kv-log-macro" 828 + version = "1.0.7" 829 + source = "registry+https://github.com/rust-lang/crates.io-index" 830 + checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 831 + dependencies = [ 832 + "log", 833 + ] 834 + 835 + [[package]] 836 + name = "lazy_static" 837 + version = "1.4.0" 838 + source = "registry+https://github.com/rust-lang/crates.io-index" 839 + checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 840 + 841 + [[package]] 842 + name = "lexical-core" 843 + version = "0.7.6" 844 + source = "registry+https://github.com/rust-lang/crates.io-index" 845 + checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" 846 + dependencies = [ 847 + "arrayvec", 848 + "bitflags", 849 + "cfg-if", 850 + "ryu", 851 + "static_assertions", 852 + ] 853 + 854 + [[package]] 855 + name = "libc" 856 + version = "0.2.139" 857 + source = "registry+https://github.com/rust-lang/crates.io-index" 858 + checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" 859 + 860 + [[package]] 861 + name = "lock_api" 862 + version = "0.4.9" 863 + source = "registry+https://github.com/rust-lang/crates.io-index" 864 + checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 865 + dependencies = [ 866 + "autocfg", 867 + "scopeguard", 868 + ] 869 + 870 + [[package]] 871 + name = "log" 872 + version = "0.4.17" 873 + source = "registry+https://github.com/rust-lang/crates.io-index" 874 + checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 875 + dependencies = [ 876 + "cfg-if", 877 + "value-bag", 878 + ] 879 + 880 + [[package]] 881 + name = "m3u" 882 + version = "1.0.0" 883 + source = "registry+https://github.com/rust-lang/crates.io-index" 884 + checksum = "ca48bebf6a7397a81aa8b9dcc8a7cfcbacab3e15a28f49d2aabaa9e3c06def4d" 885 + dependencies = [ 886 + "url 1.7.2", 887 + ] 888 + 889 + [[package]] 890 + name = "matches" 891 + version = "0.1.10" 892 + source = "registry+https://github.com/rust-lang/crates.io-index" 893 + checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 894 + 895 + [[package]] 896 + name = "memchr" 897 + version = "2.5.0" 898 + source = "registry+https://github.com/rust-lang/crates.io-index" 899 + checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 900 + 901 + [[package]] 902 + name = "mime" 903 + version = "0.3.16" 904 + source = "registry+https://github.com/rust-lang/crates.io-index" 905 + checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 906 + 907 + [[package]] 908 + name = "mime_guess" 909 + version = "2.0.4" 910 + source = "registry+https://github.com/rust-lang/crates.io-index" 911 + checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" 912 + dependencies = [ 913 + "mime", 914 + "unicase", 915 + ] 916 + 917 + [[package]] 918 + name = "nom" 919 + version = "5.1.2" 920 + source = "registry+https://github.com/rust-lang/crates.io-index" 921 + checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" 922 + dependencies = [ 923 + "lexical-core", 924 + "memchr", 925 + "version_check", 926 + ] 927 + 928 + [[package]] 929 + name = "num_cpus" 930 + version = "1.15.0" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 933 + dependencies = [ 934 + "hermit-abi 0.2.6", 935 + "libc", 936 + ] 937 + 938 + [[package]] 939 + name = "once_cell" 940 + version = "1.17.1" 941 + source = "registry+https://github.com/rust-lang/crates.io-index" 942 + checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 943 + 944 + [[package]] 945 + name = "opaque-debug" 946 + version = "0.3.0" 947 + source = "registry+https://github.com/rust-lang/crates.io-index" 948 + checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 949 + 950 + [[package]] 951 + name = "os_str_bytes" 952 + version = "6.4.1" 953 + source = "registry+https://github.com/rust-lang/crates.io-index" 954 + checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" 955 + 956 + [[package]] 957 + name = "owo-colors" 958 + version = "3.5.0" 959 + source = "registry+https://github.com/rust-lang/crates.io-index" 960 + checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" 961 + 962 + [[package]] 963 + name = "parking" 964 + version = "2.0.0" 965 + source = "registry+https://github.com/rust-lang/crates.io-index" 966 + checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 967 + 968 + [[package]] 969 + name = "parking_lot_core" 970 + version = "0.9.7" 971 + source = "registry+https://github.com/rust-lang/crates.io-index" 972 + checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 973 + dependencies = [ 974 + "cfg-if", 975 + "libc", 976 + "redox_syscall", 977 + "smallvec", 978 + "windows-sys 0.45.0", 979 + ] 980 + 981 + [[package]] 982 + name = "percent-encoding" 983 + version = "1.0.1" 984 + source = "registry+https://github.com/rust-lang/crates.io-index" 985 + checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 986 + 987 + [[package]] 988 + name = "percent-encoding" 989 + version = "2.2.0" 990 + source = "registry+https://github.com/rust-lang/crates.io-index" 991 + checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 992 + 993 + [[package]] 994 + name = "pin-project" 995 + version = "1.0.12" 996 + source = "registry+https://github.com/rust-lang/crates.io-index" 997 + checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" 998 + dependencies = [ 999 + "pin-project-internal", 1000 + ] 1001 + 1002 + [[package]] 1003 + name = "pin-project-internal" 1004 + version = "1.0.12" 1005 + source = "registry+https://github.com/rust-lang/crates.io-index" 1006 + checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" 1007 + dependencies = [ 1008 + "proc-macro2", 1009 + "quote", 1010 + "syn", 1011 + ] 1012 + 1013 + [[package]] 1014 + name = "pin-project-lite" 1015 + version = "0.2.9" 1016 + source = "registry+https://github.com/rust-lang/crates.io-index" 1017 + checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1018 + 1019 + [[package]] 1020 + name = "pin-utils" 1021 + version = "0.1.0" 1022 + source = "registry+https://github.com/rust-lang/crates.io-index" 1023 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1024 + 1025 + [[package]] 1026 + name = "pls" 1027 + version = "0.2.2" 1028 + source = "registry+https://github.com/rust-lang/crates.io-index" 1029 + checksum = "3fa4b7fc7e288a7e43658f494dda9b9ee01cbcfc4a99931e90191cccbc5f2b45" 1030 + dependencies = [ 1031 + "rust-ini", 1032 + ] 1033 + 1034 + [[package]] 1035 + name = "polling" 1036 + version = "2.5.2" 1037 + source = "registry+https://github.com/rust-lang/crates.io-index" 1038 + checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" 1039 + dependencies = [ 1040 + "autocfg", 1041 + "cfg-if", 1042 + "libc", 1043 + "log", 1044 + "wepoll-ffi", 1045 + "windows-sys 0.42.0", 1046 + ] 1047 + 1048 + [[package]] 1049 + name = "polyval" 1050 + version = "0.4.5" 1051 + source = "registry+https://github.com/rust-lang/crates.io-index" 1052 + checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" 1053 + dependencies = [ 1054 + "cpuid-bool", 1055 + "opaque-debug", 1056 + "universal-hash", 1057 + ] 1058 + 1059 + [[package]] 1060 + name = "ppv-lite86" 1061 + version = "0.2.17" 1062 + source = "registry+https://github.com/rust-lang/crates.io-index" 1063 + checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1064 + 1065 + [[package]] 1066 + name = "proc-macro-hack" 1067 + version = "0.5.20+deprecated" 1068 + source = "registry+https://github.com/rust-lang/crates.io-index" 1069 + checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 1070 + 1071 + [[package]] 1072 + name = "proc-macro2" 1073 + version = "1.0.51" 1074 + source = "registry+https://github.com/rust-lang/crates.io-index" 1075 + checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" 1076 + dependencies = [ 1077 + "unicode-ident", 1078 + ] 1079 + 1080 + [[package]] 1081 + name = "quote" 1082 + version = "1.0.23" 1083 + source = "registry+https://github.com/rust-lang/crates.io-index" 1084 + checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" 1085 + dependencies = [ 1086 + "proc-macro2", 1087 + ] 1088 + 1089 + [[package]] 1090 + name = "rand" 1091 + version = "0.7.3" 1092 + source = "registry+https://github.com/rust-lang/crates.io-index" 1093 + checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1094 + dependencies = [ 1095 + "getrandom 0.1.16", 1096 + "libc", 1097 + "rand_chacha 0.2.2", 1098 + "rand_core 0.5.1", 1099 + "rand_hc", 1100 + ] 1101 + 1102 + [[package]] 1103 + name = "rand" 1104 + version = "0.8.5" 1105 + source = "registry+https://github.com/rust-lang/crates.io-index" 1106 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1107 + dependencies = [ 1108 + "libc", 1109 + "rand_chacha 0.3.1", 1110 + "rand_core 0.6.4", 1111 + ] 1112 + 1113 + [[package]] 1114 + name = "rand_chacha" 1115 + version = "0.2.2" 1116 + source = "registry+https://github.com/rust-lang/crates.io-index" 1117 + checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1118 + dependencies = [ 1119 + "ppv-lite86", 1120 + "rand_core 0.5.1", 1121 + ] 1122 + 1123 + [[package]] 1124 + name = "rand_chacha" 1125 + version = "0.3.1" 1126 + source = "registry+https://github.com/rust-lang/crates.io-index" 1127 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1128 + dependencies = [ 1129 + "ppv-lite86", 1130 + "rand_core 0.6.4", 1131 + ] 1132 + 1133 + [[package]] 1134 + name = "rand_core" 1135 + version = "0.5.1" 1136 + source = "registry+https://github.com/rust-lang/crates.io-index" 1137 + checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1138 + dependencies = [ 1139 + "getrandom 0.1.16", 1140 + ] 1141 + 1142 + [[package]] 1143 + name = "rand_core" 1144 + version = "0.6.4" 1145 + source = "registry+https://github.com/rust-lang/crates.io-index" 1146 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1147 + dependencies = [ 1148 + "getrandom 0.2.8", 1149 + ] 1150 + 1151 + [[package]] 1152 + name = "rand_hc" 1153 + version = "0.2.0" 1154 + source = "registry+https://github.com/rust-lang/crates.io-index" 1155 + checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1156 + dependencies = [ 1157 + "rand_core 0.5.1", 1158 + ] 1159 + 1160 + [[package]] 1161 + name = "redox_syscall" 1162 + version = "0.2.16" 1163 + source = "registry+https://github.com/rust-lang/crates.io-index" 1164 + checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1165 + dependencies = [ 1166 + "bitflags", 1167 + ] 1168 + 1169 + [[package]] 1170 + name = "ring" 1171 + version = "0.16.20" 1172 + source = "registry+https://github.com/rust-lang/crates.io-index" 1173 + checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1174 + dependencies = [ 1175 + "cc", 1176 + "libc", 1177 + "once_cell", 1178 + "spin", 1179 + "untrusted", 1180 + "web-sys", 1181 + "winapi", 1182 + ] 1183 + 1184 + [[package]] 1185 + name = "rust-ini" 1186 + version = "0.10.3" 1187 + source = "registry+https://github.com/rust-lang/crates.io-index" 1188 + checksum = "8a654c5bda722c699be6b0fe4c0d90de218928da5b724c3e467fc48865c37263" 1189 + 1190 + [[package]] 1191 + name = "rustc_version" 1192 + version = "0.2.3" 1193 + source = "registry+https://github.com/rust-lang/crates.io-index" 1194 + checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1195 + dependencies = [ 1196 + "semver", 1197 + ] 1198 + 1199 + [[package]] 1200 + name = "rustls" 1201 + version = "0.18.1" 1202 + source = "registry+https://github.com/rust-lang/crates.io-index" 1203 + checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" 1204 + dependencies = [ 1205 + "base64 0.12.3", 1206 + "log", 1207 + "ring", 1208 + "sct", 1209 + "webpki", 1210 + ] 1211 + 1212 + [[package]] 1213 + name = "ryu" 1214 + version = "1.0.12" 1215 + source = "registry+https://github.com/rust-lang/crates.io-index" 1216 + checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" 1217 + 1218 + [[package]] 1219 + name = "scopeguard" 1220 + version = "1.1.0" 1221 + source = "registry+https://github.com/rust-lang/crates.io-index" 1222 + checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1223 + 1224 + [[package]] 1225 + name = "sct" 1226 + version = "0.6.1" 1227 + source = "registry+https://github.com/rust-lang/crates.io-index" 1228 + checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" 1229 + dependencies = [ 1230 + "ring", 1231 + "untrusted", 1232 + ] 1233 + 1234 + [[package]] 1235 + name = "semver" 1236 + version = "0.9.0" 1237 + source = "registry+https://github.com/rust-lang/crates.io-index" 1238 + checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1239 + dependencies = [ 1240 + "semver-parser", 1241 + ] 1242 + 1243 + [[package]] 1244 + name = "semver-parser" 1245 + version = "0.7.0" 1246 + source = "registry+https://github.com/rust-lang/crates.io-index" 1247 + checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1248 + 1249 + [[package]] 1250 + name = "serde" 1251 + version = "1.0.152" 1252 + source = "registry+https://github.com/rust-lang/crates.io-index" 1253 + checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" 1254 + dependencies = [ 1255 + "serde_derive", 1256 + ] 1257 + 1258 + [[package]] 1259 + name = "serde_derive" 1260 + version = "1.0.152" 1261 + source = "registry+https://github.com/rust-lang/crates.io-index" 1262 + checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" 1263 + dependencies = [ 1264 + "proc-macro2", 1265 + "quote", 1266 + "syn", 1267 + ] 1268 + 1269 + [[package]] 1270 + name = "serde_json" 1271 + version = "1.0.93" 1272 + source = "registry+https://github.com/rust-lang/crates.io-index" 1273 + checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" 1274 + dependencies = [ 1275 + "itoa", 1276 + "ryu", 1277 + "serde", 1278 + ] 1279 + 1280 + [[package]] 1281 + name = "serde_qs" 1282 + version = "0.8.5" 1283 + source = "registry+https://github.com/rust-lang/crates.io-index" 1284 + checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" 1285 + dependencies = [ 1286 + "percent-encoding 2.2.0", 1287 + "serde", 1288 + "thiserror", 1289 + ] 1290 + 1291 + [[package]] 1292 + name = "serde_urlencoded" 1293 + version = "0.7.1" 1294 + source = "registry+https://github.com/rust-lang/crates.io-index" 1295 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1296 + dependencies = [ 1297 + "form_urlencoded", 1298 + "itoa", 1299 + "ryu", 1300 + "serde", 1301 + ] 1302 + 1303 + [[package]] 1304 + name = "sha1" 1305 + version = "0.6.1" 1306 + source = "registry+https://github.com/rust-lang/crates.io-index" 1307 + checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" 1308 + dependencies = [ 1309 + "sha1_smol", 1310 + ] 1311 + 1312 + [[package]] 1313 + name = "sha1_smol" 1314 + version = "1.0.0" 1315 + source = "registry+https://github.com/rust-lang/crates.io-index" 1316 + checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" 1317 + 1318 + [[package]] 1319 + name = "sha2" 1320 + version = "0.9.9" 1321 + source = "registry+https://github.com/rust-lang/crates.io-index" 1322 + checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 1323 + dependencies = [ 1324 + "block-buffer", 1325 + "cfg-if", 1326 + "cpufeatures", 1327 + "digest", 1328 + "opaque-debug", 1329 + ] 1330 + 1331 + [[package]] 1332 + name = "simple-mutex" 1333 + version = "1.1.5" 1334 + source = "registry+https://github.com/rust-lang/crates.io-index" 1335 + checksum = "38aabbeafa6f6dead8cebf246fe9fae1f9215c8d29b3a69f93bd62a9e4a3dcd6" 1336 + dependencies = [ 1337 + "event-listener", 1338 + ] 1339 + 1340 + [[package]] 1341 + name = "slab" 1342 + version = "0.4.8" 1343 + source = "registry+https://github.com/rust-lang/crates.io-index" 1344 + checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 1345 + dependencies = [ 1346 + "autocfg", 1347 + ] 1348 + 1349 + [[package]] 1350 + name = "smallvec" 1351 + version = "1.10.0" 1352 + source = "registry+https://github.com/rust-lang/crates.io-index" 1353 + checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 1354 + 1355 + [[package]] 1356 + name = "socket2" 1357 + version = "0.4.7" 1358 + source = "registry+https://github.com/rust-lang/crates.io-index" 1359 + checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" 1360 + dependencies = [ 1361 + "libc", 1362 + "winapi", 1363 + ] 1364 + 1365 + [[package]] 1366 + name = "spin" 1367 + version = "0.5.2" 1368 + source = "registry+https://github.com/rust-lang/crates.io-index" 1369 + checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1370 + 1371 + [[package]] 1372 + name = "standback" 1373 + version = "0.2.17" 1374 + source = "registry+https://github.com/rust-lang/crates.io-index" 1375 + checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" 1376 + dependencies = [ 1377 + "version_check", 1378 + ] 1379 + 1380 + [[package]] 1381 + name = "static_assertions" 1382 + version = "1.1.0" 1383 + source = "registry+https://github.com/rust-lang/crates.io-index" 1384 + checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 1385 + 1386 + [[package]] 1387 + name = "stdweb" 1388 + version = "0.4.20" 1389 + source = "registry+https://github.com/rust-lang/crates.io-index" 1390 + checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" 1391 + dependencies = [ 1392 + "discard", 1393 + "rustc_version", 1394 + "stdweb-derive", 1395 + "stdweb-internal-macros", 1396 + "stdweb-internal-runtime", 1397 + "wasm-bindgen", 1398 + ] 1399 + 1400 + [[package]] 1401 + name = "stdweb-derive" 1402 + version = "0.5.3" 1403 + source = "registry+https://github.com/rust-lang/crates.io-index" 1404 + checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" 1405 + dependencies = [ 1406 + "proc-macro2", 1407 + "quote", 1408 + "serde", 1409 + "serde_derive", 1410 + "syn", 1411 + ] 1412 + 1413 + [[package]] 1414 + name = "stdweb-internal-macros" 1415 + version = "0.2.9" 1416 + source = "registry+https://github.com/rust-lang/crates.io-index" 1417 + checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" 1418 + dependencies = [ 1419 + "base-x", 1420 + "proc-macro2", 1421 + "quote", 1422 + "serde", 1423 + "serde_derive", 1424 + "serde_json", 1425 + "sha1", 1426 + "syn", 1427 + ] 1428 + 1429 + [[package]] 1430 + name = "stdweb-internal-runtime" 1431 + version = "0.1.5" 1432 + source = "registry+https://github.com/rust-lang/crates.io-index" 1433 + checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" 1434 + 1435 + [[package]] 1436 + name = "strsim" 1437 + version = "0.10.0" 1438 + source = "registry+https://github.com/rust-lang/crates.io-index" 1439 + checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 1440 + 1441 + [[package]] 1442 + name = "subtle" 1443 + version = "2.4.1" 1444 + source = "registry+https://github.com/rust-lang/crates.io-index" 1445 + checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 1446 + 1447 + [[package]] 1448 + name = "surf" 1449 + version = "2.3.2" 1450 + source = "registry+https://github.com/rust-lang/crates.io-index" 1451 + checksum = "718b1ae6b50351982dedff021db0def601677f2120938b070eadb10ba4038dd7" 1452 + dependencies = [ 1453 + "async-std", 1454 + "async-trait", 1455 + "cfg-if", 1456 + "futures-util", 1457 + "getrandom 0.2.8", 1458 + "http-client", 1459 + "http-types", 1460 + "log", 1461 + "mime_guess", 1462 + "once_cell", 1463 + "pin-project-lite", 1464 + "rustls", 1465 + "serde", 1466 + "serde_json", 1467 + ] 1468 + 1469 + [[package]] 1470 + name = "syn" 1471 + version = "1.0.107" 1472 + source = "registry+https://github.com/rust-lang/crates.io-index" 1473 + checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" 1474 + dependencies = [ 1475 + "proc-macro2", 1476 + "quote", 1477 + "unicode-ident", 1478 + ] 1479 + 1480 + [[package]] 1481 + name = "termcolor" 1482 + version = "1.2.0" 1483 + source = "registry+https://github.com/rust-lang/crates.io-index" 1484 + checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" 1485 + dependencies = [ 1486 + "winapi-util", 1487 + ] 1488 + 1489 + [[package]] 1490 + name = "textwrap" 1491 + version = "0.16.0" 1492 + source = "registry+https://github.com/rust-lang/crates.io-index" 1493 + checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" 1494 + 1495 + [[package]] 1496 + name = "thiserror" 1497 + version = "1.0.38" 1498 + source = "registry+https://github.com/rust-lang/crates.io-index" 1499 + checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" 1500 + dependencies = [ 1501 + "thiserror-impl", 1502 + ] 1503 + 1504 + [[package]] 1505 + name = "thiserror-impl" 1506 + version = "1.0.38" 1507 + source = "registry+https://github.com/rust-lang/crates.io-index" 1508 + checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" 1509 + dependencies = [ 1510 + "proc-macro2", 1511 + "quote", 1512 + "syn", 1513 + ] 1514 + 1515 + [[package]] 1516 + name = "time" 1517 + version = "0.2.27" 1518 + source = "registry+https://github.com/rust-lang/crates.io-index" 1519 + checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" 1520 + dependencies = [ 1521 + "const_fn", 1522 + "libc", 1523 + "standback", 1524 + "stdweb", 1525 + "time-macros", 1526 + "version_check", 1527 + "winapi", 1528 + ] 1529 + 1530 + [[package]] 1531 + name = "time-macros" 1532 + version = "0.1.1" 1533 + source = "registry+https://github.com/rust-lang/crates.io-index" 1534 + checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" 1535 + dependencies = [ 1536 + "proc-macro-hack", 1537 + "time-macros-impl", 1538 + ] 1539 + 1540 + [[package]] 1541 + name = "time-macros-impl" 1542 + version = "0.1.2" 1543 + source = "registry+https://github.com/rust-lang/crates.io-index" 1544 + checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" 1545 + dependencies = [ 1546 + "proc-macro-hack", 1547 + "proc-macro2", 1548 + "quote", 1549 + "standback", 1550 + "syn", 1551 + ] 1552 + 1553 + [[package]] 1554 + name = "tinyvec" 1555 + version = "1.6.0" 1556 + source = "registry+https://github.com/rust-lang/crates.io-index" 1557 + checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1558 + dependencies = [ 1559 + "tinyvec_macros", 1560 + ] 1561 + 1562 + [[package]] 1563 + name = "tinyvec_macros" 1564 + version = "0.1.1" 1565 + source = "registry+https://github.com/rust-lang/crates.io-index" 1566 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1567 + 1568 + [[package]] 1569 + name = "tokio" 1570 + version = "1.25.0" 1571 + source = "registry+https://github.com/rust-lang/crates.io-index" 1572 + checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" 1573 + dependencies = [ 1574 + "autocfg", 1575 + "num_cpus", 1576 + "pin-project-lite", 1577 + "tokio-macros", 1578 + "windows-sys 0.42.0", 1579 + ] 1580 + 1581 + [[package]] 1582 + name = "tokio-macros" 1583 + version = "1.8.2" 1584 + source = "registry+https://github.com/rust-lang/crates.io-index" 1585 + checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" 1586 + dependencies = [ 1587 + "proc-macro2", 1588 + "quote", 1589 + "syn", 1590 + ] 1591 + 1592 + [[package]] 1593 + name = "tunein" 1594 + version = "0.1.1" 1595 + source = "registry+https://github.com/rust-lang/crates.io-index" 1596 + checksum = "73c127a62950bbb9f65e846c9603367e58e17b514d7f3b5957991c8068269fb0" 1597 + dependencies = [ 1598 + "anyhow", 1599 + "m3u", 1600 + "pls", 1601 + "serde", 1602 + "serde_json", 1603 + "surf", 1604 + "tokio", 1605 + ] 1606 + 1607 + [[package]] 1608 + name = "tunein-cli" 1609 + version = "0.1.0" 1610 + dependencies = [ 1611 + "anyhow", 1612 + "clap", 1613 + "owo-colors", 1614 + "tokio", 1615 + "tunein", 1616 + ] 1617 + 1618 + [[package]] 1619 + name = "typenum" 1620 + version = "1.16.0" 1621 + source = "registry+https://github.com/rust-lang/crates.io-index" 1622 + checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 1623 + 1624 + [[package]] 1625 + name = "unicase" 1626 + version = "2.6.0" 1627 + source = "registry+https://github.com/rust-lang/crates.io-index" 1628 + checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" 1629 + dependencies = [ 1630 + "version_check", 1631 + ] 1632 + 1633 + [[package]] 1634 + name = "unicode-bidi" 1635 + version = "0.3.10" 1636 + source = "registry+https://github.com/rust-lang/crates.io-index" 1637 + checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" 1638 + 1639 + [[package]] 1640 + name = "unicode-ident" 1641 + version = "1.0.6" 1642 + source = "registry+https://github.com/rust-lang/crates.io-index" 1643 + checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" 1644 + 1645 + [[package]] 1646 + name = "unicode-normalization" 1647 + version = "0.1.22" 1648 + source = "registry+https://github.com/rust-lang/crates.io-index" 1649 + checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1650 + dependencies = [ 1651 + "tinyvec", 1652 + ] 1653 + 1654 + [[package]] 1655 + name = "universal-hash" 1656 + version = "0.4.1" 1657 + source = "registry+https://github.com/rust-lang/crates.io-index" 1658 + checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" 1659 + dependencies = [ 1660 + "generic-array", 1661 + "subtle", 1662 + ] 1663 + 1664 + [[package]] 1665 + name = "untrusted" 1666 + version = "0.7.1" 1667 + source = "registry+https://github.com/rust-lang/crates.io-index" 1668 + checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1669 + 1670 + [[package]] 1671 + name = "url" 1672 + version = "1.7.2" 1673 + source = "registry+https://github.com/rust-lang/crates.io-index" 1674 + checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 1675 + dependencies = [ 1676 + "idna 0.1.5", 1677 + "matches", 1678 + "percent-encoding 1.0.1", 1679 + ] 1680 + 1681 + [[package]] 1682 + name = "url" 1683 + version = "2.3.1" 1684 + source = "registry+https://github.com/rust-lang/crates.io-index" 1685 + checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 1686 + dependencies = [ 1687 + "form_urlencoded", 1688 + "idna 0.3.0", 1689 + "percent-encoding 2.2.0", 1690 + "serde", 1691 + ] 1692 + 1693 + [[package]] 1694 + name = "value-bag" 1695 + version = "1.0.0-alpha.9" 1696 + source = "registry+https://github.com/rust-lang/crates.io-index" 1697 + checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 1698 + dependencies = [ 1699 + "ctor", 1700 + "version_check", 1701 + ] 1702 + 1703 + [[package]] 1704 + name = "version_check" 1705 + version = "0.9.4" 1706 + source = "registry+https://github.com/rust-lang/crates.io-index" 1707 + checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1708 + 1709 + [[package]] 1710 + name = "waker-fn" 1711 + version = "1.1.0" 1712 + source = "registry+https://github.com/rust-lang/crates.io-index" 1713 + checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 1714 + 1715 + [[package]] 1716 + name = "wasi" 1717 + version = "0.9.0+wasi-snapshot-preview1" 1718 + source = "registry+https://github.com/rust-lang/crates.io-index" 1719 + checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1720 + 1721 + [[package]] 1722 + name = "wasi" 1723 + version = "0.11.0+wasi-snapshot-preview1" 1724 + source = "registry+https://github.com/rust-lang/crates.io-index" 1725 + checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1726 + 1727 + [[package]] 1728 + name = "wasm-bindgen" 1729 + version = "0.2.84" 1730 + source = "registry+https://github.com/rust-lang/crates.io-index" 1731 + checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 1732 + dependencies = [ 1733 + "cfg-if", 1734 + "wasm-bindgen-macro", 1735 + ] 1736 + 1737 + [[package]] 1738 + name = "wasm-bindgen-backend" 1739 + version = "0.2.84" 1740 + source = "registry+https://github.com/rust-lang/crates.io-index" 1741 + checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 1742 + dependencies = [ 1743 + "bumpalo", 1744 + "log", 1745 + "once_cell", 1746 + "proc-macro2", 1747 + "quote", 1748 + "syn", 1749 + "wasm-bindgen-shared", 1750 + ] 1751 + 1752 + [[package]] 1753 + name = "wasm-bindgen-futures" 1754 + version = "0.4.34" 1755 + source = "registry+https://github.com/rust-lang/crates.io-index" 1756 + checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" 1757 + dependencies = [ 1758 + "cfg-if", 1759 + "js-sys", 1760 + "wasm-bindgen", 1761 + "web-sys", 1762 + ] 1763 + 1764 + [[package]] 1765 + name = "wasm-bindgen-macro" 1766 + version = "0.2.84" 1767 + source = "registry+https://github.com/rust-lang/crates.io-index" 1768 + checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 1769 + dependencies = [ 1770 + "quote", 1771 + "wasm-bindgen-macro-support", 1772 + ] 1773 + 1774 + [[package]] 1775 + name = "wasm-bindgen-macro-support" 1776 + version = "0.2.84" 1777 + source = "registry+https://github.com/rust-lang/crates.io-index" 1778 + checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 1779 + dependencies = [ 1780 + "proc-macro2", 1781 + "quote", 1782 + "syn", 1783 + "wasm-bindgen-backend", 1784 + "wasm-bindgen-shared", 1785 + ] 1786 + 1787 + [[package]] 1788 + name = "wasm-bindgen-shared" 1789 + version = "0.2.84" 1790 + source = "registry+https://github.com/rust-lang/crates.io-index" 1791 + checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 1792 + 1793 + [[package]] 1794 + name = "web-sys" 1795 + version = "0.3.61" 1796 + source = "registry+https://github.com/rust-lang/crates.io-index" 1797 + checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" 1798 + dependencies = [ 1799 + "js-sys", 1800 + "wasm-bindgen", 1801 + ] 1802 + 1803 + [[package]] 1804 + name = "webpki" 1805 + version = "0.21.4" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" 1808 + dependencies = [ 1809 + "ring", 1810 + "untrusted", 1811 + ] 1812 + 1813 + [[package]] 1814 + name = "webpki-roots" 1815 + version = "0.20.0" 1816 + source = "registry+https://github.com/rust-lang/crates.io-index" 1817 + checksum = "0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f" 1818 + dependencies = [ 1819 + "webpki", 1820 + ] 1821 + 1822 + [[package]] 1823 + name = "wepoll-ffi" 1824 + version = "0.1.2" 1825 + source = "registry+https://github.com/rust-lang/crates.io-index" 1826 + checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" 1827 + dependencies = [ 1828 + "cc", 1829 + ] 1830 + 1831 + [[package]] 1832 + name = "winapi" 1833 + version = "0.3.9" 1834 + source = "registry+https://github.com/rust-lang/crates.io-index" 1835 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1836 + dependencies = [ 1837 + "winapi-i686-pc-windows-gnu", 1838 + "winapi-x86_64-pc-windows-gnu", 1839 + ] 1840 + 1841 + [[package]] 1842 + name = "winapi-i686-pc-windows-gnu" 1843 + version = "0.4.0" 1844 + source = "registry+https://github.com/rust-lang/crates.io-index" 1845 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1846 + 1847 + [[package]] 1848 + name = "winapi-util" 1849 + version = "0.1.5" 1850 + source = "registry+https://github.com/rust-lang/crates.io-index" 1851 + checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1852 + dependencies = [ 1853 + "winapi", 1854 + ] 1855 + 1856 + [[package]] 1857 + name = "winapi-x86_64-pc-windows-gnu" 1858 + version = "0.4.0" 1859 + source = "registry+https://github.com/rust-lang/crates.io-index" 1860 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1861 + 1862 + [[package]] 1863 + name = "windows-sys" 1864 + version = "0.42.0" 1865 + source = "registry+https://github.com/rust-lang/crates.io-index" 1866 + checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 1867 + dependencies = [ 1868 + "windows_aarch64_gnullvm", 1869 + "windows_aarch64_msvc", 1870 + "windows_i686_gnu", 1871 + "windows_i686_msvc", 1872 + "windows_x86_64_gnu", 1873 + "windows_x86_64_gnullvm", 1874 + "windows_x86_64_msvc", 1875 + ] 1876 + 1877 + [[package]] 1878 + name = "windows-sys" 1879 + version = "0.45.0" 1880 + source = "registry+https://github.com/rust-lang/crates.io-index" 1881 + checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 1882 + dependencies = [ 1883 + "windows-targets", 1884 + ] 1885 + 1886 + [[package]] 1887 + name = "windows-targets" 1888 + version = "0.42.1" 1889 + source = "registry+https://github.com/rust-lang/crates.io-index" 1890 + checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" 1891 + dependencies = [ 1892 + "windows_aarch64_gnullvm", 1893 + "windows_aarch64_msvc", 1894 + "windows_i686_gnu", 1895 + "windows_i686_msvc", 1896 + "windows_x86_64_gnu", 1897 + "windows_x86_64_gnullvm", 1898 + "windows_x86_64_msvc", 1899 + ] 1900 + 1901 + [[package]] 1902 + name = "windows_aarch64_gnullvm" 1903 + version = "0.42.1" 1904 + source = "registry+https://github.com/rust-lang/crates.io-index" 1905 + checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" 1906 + 1907 + [[package]] 1908 + name = "windows_aarch64_msvc" 1909 + version = "0.42.1" 1910 + source = "registry+https://github.com/rust-lang/crates.io-index" 1911 + checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" 1912 + 1913 + [[package]] 1914 + name = "windows_i686_gnu" 1915 + version = "0.42.1" 1916 + source = "registry+https://github.com/rust-lang/crates.io-index" 1917 + checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" 1918 + 1919 + [[package]] 1920 + name = "windows_i686_msvc" 1921 + version = "0.42.1" 1922 + source = "registry+https://github.com/rust-lang/crates.io-index" 1923 + checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" 1924 + 1925 + [[package]] 1926 + name = "windows_x86_64_gnu" 1927 + version = "0.42.1" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" 1930 + 1931 + [[package]] 1932 + name = "windows_x86_64_gnullvm" 1933 + version = "0.42.1" 1934 + source = "registry+https://github.com/rust-lang/crates.io-index" 1935 + checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" 1936 + 1937 + [[package]] 1938 + name = "windows_x86_64_msvc" 1939 + version = "0.42.1" 1940 + source = "registry+https://github.com/rust-lang/crates.io-index" 1941 + checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+17
Cargo.toml
···
··· 1 + [package] 2 + name = "tunein-cli" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + [[bin]] 7 + name = "tunein" 8 + path = "src/main.rs" 9 + 10 + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 11 + 12 + [dependencies] 13 + anyhow = "1.0.69" 14 + clap = "3.2.20" 15 + owo-colors = "3.5.0" 16 + tunein = "0.1.1" 17 + tokio = { version = "1.24.2", features = ["tokio-macros", "macros", "rt", "rt-multi-thread"] }
+19
LICENSE
···
··· 1 + Copyright (c) 2023 Tsiry Sandratraina <tsiry.sndr@aol.com> 2 + 3 + Permission is hereby granted, free of charge, to any person obtaining a copy 4 + of this software and associated documentation files (the "Software"), to deal 5 + in the Software without restriction, including without limitation the rights 6 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 + copies of the Software, and to permit persons to whom the Software is 8 + furnished to do so, subject to the following conditions: 9 + 10 + The above copyright notice and this permission notice shall be included in all 11 + copies or substantial portions of the Software. 12 + 13 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 + SOFTWARE.
+30
README.md
···
··· 1 + # TuneIn CLI 2 + 3 + A command line interface for [TuneIn Radio](https://tunein.com).<br /> 4 + You can search for stations, play them, and see what's currently playing. 5 + 6 + ## ๐Ÿšš Installation 7 + ```bash 8 + git clone https://github.com/tsirysndr/tunein-cli 9 + cd tunein-cli 10 + cargo install --path . 11 + ``` 12 + 13 + ## ๐Ÿš€ Usage 14 + ``` 15 + USAGE: 16 + tunein <SUBCOMMAND> 17 + 18 + OPTIONS: 19 + -h, --help Print help information 20 + -V, --version Print version information 21 + 22 + SUBCOMMANDS: 23 + browse Browse radio stations 24 + help Print this message or the help of the given subcommand(s) 25 + play Play a radio station 26 + search Search for a radio station 27 + ``` 28 + 29 + ## ๐Ÿ“ License 30 + [MIT](LICENSE)
+75
src/browse.rs
···
··· 1 + use std::str::FromStr; 2 + 3 + use anyhow::Error; 4 + use owo_colors::OwoColorize; 5 + use tunein::{types::Category, TuneInClient}; 6 + 7 + pub async fn exec(category: Option<&str>) -> Result<(), Error> { 8 + let client = TuneInClient::new(); 9 + 10 + if category.is_some() && Category::from_str(category.unwrap_or_default()).is_err() { 11 + let id = category.unwrap_or_default(); 12 + let results = client 13 + .browse_by_id(id) 14 + .await 15 + .map_err(|e| Error::msg(e.to_string()))?; 16 + for result in results { 17 + println!("{}", result.text); 18 + if let Some(children) = result.children { 19 + for child in children { 20 + match child.playing { 21 + Some(playing) => println!(" {} | {}", child.text.magenta(), playing), 22 + None => println!(" {} | {}", child.text.magenta(), child.url.unwrap()), 23 + } 24 + } 25 + } 26 + } 27 + return Ok(()); 28 + } 29 + 30 + let results = match category { 31 + Some(category) => match Category::from_str(category) { 32 + Ok(category) => client 33 + .browse(Some(category)) 34 + .await 35 + .map_err(|e| Error::msg(e.to_string()))?, 36 + Err(_) => { 37 + println!("Invalid category"); 38 + return Ok(()); 39 + } 40 + }, 41 + None => client 42 + .browse(None) 43 + .await 44 + .map_err(|e| Error::msg(e.to_string()))?, 45 + }; 46 + 47 + for result in results { 48 + match result.guide_id { 49 + Some(_) => println!( 50 + "{} | id: {}", 51 + result.text.magenta(), 52 + result.guide_id.unwrap() 53 + ), 54 + None => println!("{}", result.text), 55 + } 56 + if let Some(children) = result.children { 57 + for child in children { 58 + match child.playing { 59 + Some(playing) => println!( 60 + " {} | {} | id: {}", 61 + child.text.magenta(), 62 + playing, 63 + child.guide_id.unwrap() 64 + ), 65 + None => println!( 66 + " {} | id: {}", 67 + child.text.magenta(), 68 + child.guide_id.unwrap() 69 + ), 70 + } 71 + } 72 + } 73 + } 74 + Ok(()) 75 + }
+61
src/main.rs
···
··· 1 + use anyhow::Error; 2 + use clap::{arg, Command}; 3 + 4 + mod browse; 5 + mod play; 6 + mod search; 7 + 8 + fn cli() -> Command<'static> { 9 + const VESRION: &str = env!("CARGO_PKG_VERSION"); 10 + Command::new("tunein") 11 + .version(VESRION) 12 + .author("Tsiry Sandratraina <tsiry.sndr@aol.com>") 13 + .about( 14 + r#" 15 + ______ ____ _______ ____ 16 + /_ __/_ _____ ___ / _/__ / ___/ / / _/ 17 + / / / // / _ \/ -_)/ // _ \ / /__/ /___/ / 18 + /_/ \_,_/_//_/\__/___/_//_/ \___/____/___/ 19 + 20 + A simple CLI to listen to radio stations"#, 21 + ) 22 + .subcommand_required(true) 23 + .subcommand( 24 + Command::new("search") 25 + .about("Search for a radio station") 26 + .arg(arg!(<query> "The query to search for")), 27 + ) 28 + .subcommand( 29 + Command::new("play") 30 + .about("Play a radio station") 31 + .arg(arg!(<station> "The station to play")), 32 + ) 33 + .subcommand( 34 + Command::new("browse") 35 + .about("Browse radio stations") 36 + .arg(arg!([category] "The category (category name or id) to browse")), 37 + ) 38 + } 39 + 40 + #[tokio::main] 41 + async fn main() -> Result<(), Error> { 42 + let matches = cli().get_matches(); 43 + 44 + match matches.subcommand() { 45 + Some(("search", args)) => { 46 + let query = args.value_of("query").unwrap(); 47 + search::exec(query).await?; 48 + } 49 + Some(("play", args)) => { 50 + let station = args.value_of("station").unwrap(); 51 + play::exec(station).await?; 52 + } 53 + Some(("browse", args)) => { 54 + let category = args.value_of("category"); 55 + browse::exec(category).await?; 56 + } 57 + _ => unreachable!(), 58 + } 59 + 60 + Ok(()) 61 + }
+7
src/play.rs
···
··· 1 + use anyhow::Error; 2 + use tunein::TuneInClient; 3 + 4 + pub async fn exec(_station: &str) -> Result<(), Error> { 5 + let _client = TuneInClient::new(); 6 + todo!() 7 + }
+30
src/search.rs
···
··· 1 + use anyhow::Error; 2 + use owo_colors::OwoColorize; 3 + use tunein::TuneInClient; 4 + 5 + pub async fn exec(query: &str) -> Result<(), Error> { 6 + let client = TuneInClient::new(); 7 + let results = client 8 + .search(query) 9 + .await 10 + .map_err(|e| Error::msg(e.to_string()))?; 11 + let query = format!("\"{}\"", query); 12 + println!("Results for {}:", query.bright_green()); 13 + 14 + let results = results 15 + .into_iter() 16 + .filter(|r| Some("audio".to_string()) == r.r#type) 17 + .collect::<Vec<_>>(); 18 + 19 + if results.is_empty() { 20 + println!("No results found"); 21 + return Ok(()); 22 + } 23 + 24 + for result in results { 25 + if Some("audio".to_string()) == result.r#type { 26 + println!("{} | {}", result.text, result.subtext.unwrap_or_default()); 27 + } 28 + } 29 + Ok(()) 30 + }