Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
60 kB · 2207 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208From b66aac80f433dc3301be26e379f2ecea6fbbf990 Mon Sep 17 00:00:00 2001From: Guillaume Desmottes <guillaume.desmottes@onestream.live>Date: Wed, 15 Dec 2021 17:15:20 +0100Subject: [PATCH] spotify: replace username/password auth with access token.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1801>--- Cargo.lock | 1082 +++++++++++++++++----- audio/spotify/Cargo.toml | 6 +- audio/spotify/README.md | 25 +- audio/spotify/src/common.rs | 141 ++- audio/spotify/src/spotifyaudiosrc/imp.rs | 19 +- docs/plugins/gst_plugins_cache.json | 12 + 6 files changed, 973 insertions(+), 312 deletions(-)
diff --git a/Cargo.lock b/Cargo.lockindex 244256cd..226254e3 100644--- a/Cargo.lock+++ b/Cargo.lock@@ -19,45 +19,13 @@ checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aes"-version = "0.6.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561"-dependencies = [- "aes-soft",- "aesni",- "cipher",-]--[[package]]-name = "aes-ctr"-version = "0.6.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763"-dependencies = [- "aes-soft",- "aesni",- "cipher",- "ctr",-]--[[package]]-name = "aes-soft"-version = "0.6.4"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072"-dependencies = [- "cipher",- "opaque-debug",-]--[[package]]-name = "aesni"-version = "0.10.0"+version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce"+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [+ "cfg-if", "cipher",- "opaque-debug",+ "cpufeatures", ] [[package]]@@ -370,6 +338,29 @@ dependencies = [ "zeroize", ] +[[package]]+name = "aws-lc-rs"+version = "1.13.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "19b756939cb2f8dc900aa6dcd505e6e2428e9cae7ff7b028c49e3946efa70878"+dependencies = [+ "aws-lc-sys",+ "zeroize",+]++[[package]]+name = "aws-lc-sys"+version = "0.28.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "b9f7720b74ed28ca77f90769a71fd8c637a0137f6fae4ae947e1050229cff57f"+dependencies = [+ "bindgen",+ "cc",+ "cmake",+ "dunce",+ "fs_extra",+]+ [[package]] name = "aws-runtime" version = "1.2.0"@@ -461,7 +452,7 @@ dependencies = [ "bytes", "fastrand", "hex",- "hmac 0.12.1",+ "hmac", "http 0.2.12", "http-body 0.4.6", "lru 0.12.5",@@ -603,7 +594,7 @@ dependencies = [ "crypto-bigint 0.5.5", "form_urlencoded", "hex",- "hmac 0.12.1",+ "hmac", "http 0.2.12", "http 1.2.0", "once_cell",@@ -869,6 +860,29 @@ dependencies = [ "serde", ] +[[package]]+name = "bindgen"+version = "0.69.5"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"+dependencies = [+ "bitflags 2.9.0",+ "cexpr",+ "clang-sys",+ "itertools 0.12.1",+ "lazy_static",+ "lazycell",+ "log",+ "prettyplease",+ "proc-macro2",+ "quote",+ "regex",+ "rustc-hash 1.1.0",+ "shlex",+ "syn 2.0.99",+ "which",+]+ [[package]] name = "bitflags" version = "1.3.2"@@ -887,15 +901,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e" -[[package]]-name = "block-buffer"-version = "0.9.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"-dependencies = [- "generic-array",-]- [[package]] name = "block-buffer" version = "0.10.4"@@ -1041,6 +1046,15 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]]+name = "cexpr"+version = "0.6.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"+dependencies = [+ "nom 7.1.3",+]+ [[package]] name = "cfg-expr" version = "0.15.8"@@ -1090,11 +1104,23 @@ dependencies = [ [[package]] name = "cipher"-version = "0.2.5"+version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801"+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [- "generic-array",+ "crypto-common",+ "inout",+]++[[package]]+name = "clang-sys"+version = "1.8.1"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"+dependencies = [+ "glob",+ "libc",+ "libloading", ] [[package]]@@ -1143,6 +1169,15 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" +[[package]]+name = "cmake"+version = "0.1.54"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"+dependencies = [+ "cc",+]+ [[package]] name = "color-name" version = "1.1.0"@@ -1233,6 +1268,16 @@ dependencies = [ "libc", ] +[[package]]+name = "core-foundation"+version = "0.10.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"+dependencies = [+ "core-foundation-sys",+ "libc",+]+ [[package]] name = "core-foundation-sys" version = "0.8.7"@@ -1332,16 +1377,6 @@ dependencies = [ "typenum", ] -[[package]]-name = "crypto-mac"-version = "0.11.0"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"-dependencies = [- "generic-array",- "subtle",-]- [[package]] name = "csound" version = "0.1.8"@@ -1366,9 +1401,9 @@ dependencies = [ [[package]] name = "ctr"-version = "0.6.0"+version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f"+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ "cipher", ]@@ -1434,7 +1469,7 @@ dependencies = [ "iso8601", "lazy_static", "num-traits",- "quick-xml",+ "quick-xml 0.37.2", "regex", "serde", "serde_path_to_error",@@ -1499,6 +1534,17 @@ dependencies = [ "zeroize", ] +[[package]]+name = "der"+version = "0.7.9"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"+dependencies = [+ "const-oid",+ "pem-rfc7468",+ "zeroize",+]+ [[package]] name = "deranged" version = "0.3.11"@@ -1510,27 +1556,50 @@ dependencies = [ ] [[package]]-name = "diff"-version = "0.1.13"+name = "derive_builder"+version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"+dependencies = [+ "derive_builder_macro",+] [[package]]-name = "digest"-version = "0.9.0"+name = "derive_builder_core"+version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [- "generic-array",+ "darling",+ "proc-macro2",+ "quote",+ "syn 2.0.99",+]++[[package]]+name = "derive_builder_macro"+version = "0.20.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"+dependencies = [+ "derive_builder_core",+ "syn 2.0.99", ] +[[package]]+name = "diff"+version = "0.1.13"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"+ [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [- "block-buffer 0.10.4",+ "block-buffer",+ "const-oid", "crypto-common", "subtle", ]@@ -1567,6 +1636,12 @@ dependencies = [ "rgb", ] +[[package]]+name = "dunce"+version = "1.0.5"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"+ [[package]] name = "ebml-iterable" version = "0.6.3"@@ -1614,10 +1689,10 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [- "der",+ "der 0.6.1", "elliptic-curve", "rfc6979",- "signature",+ "signature 1.6.4", ] [[package]]@@ -1626,7 +1701,7 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [- "signature",+ "signature 1.6.4", ] [[package]]@@ -1643,12 +1718,12 @@ checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ "base16ct", "crypto-bigint 0.4.9",- "der",- "digest 0.10.7",+ "der 0.6.1",+ "digest", "ff", "generic-array", "group",- "pkcs8",+ "pkcs8 0.9.0", "rand_core 0.6.4", "sec1", "subtle",@@ -1856,6 +1931,12 @@ dependencies = [ "autocfg", ] +[[package]]+name = "fs_extra"+version = "1.3.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"+ [[package]] name = "fst" version = "0.4.7"@@ -1933,6 +2014,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]]+name = "futures-timer"+version = "3.0.3"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"+ [[package]] name = "futures-util" version = "0.3.31"@@ -2209,6 +2296,24 @@ dependencies = [ "system-deps 7.0.3", ] +[[package]]+name = "governor"+version = "0.6.3"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b"+dependencies = [+ "cfg-if",+ "futures",+ "futures-timer",+ "no-std-compat",+ "nonzero_ext",+ "parking_lot",+ "portable-atomic",+ "rand 0.8.5",+ "smallvec",+ "spinning_top",+]+ [[package]] name = "graphene-rs" version = "0.20.9"@@ -2488,7 +2593,7 @@ dependencies = [ "gstreamer-video", "m3u8-rs", "once_cell",- "quick-xml",+ "quick-xml 0.37.2", "serde", ] @@ -2680,7 +2785,7 @@ dependencies = [ "gstreamer-video", "libloading", "once_cell",- "quick-xml",+ "quick-xml 0.37.2", "smallvec", "thiserror 2.0.12", ]@@ -3763,21 +3868,20 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac"-version = "0.11.0"+version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [- "crypto-mac",- "digest 0.9.0",+ "digest", ] [[package]]-name = "hmac"-version = "0.12.1"+name = "home"+version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"+checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [- "digest 0.10.7",+ "windows-sys 0.59.0", ] [[package]]@@ -3923,18 +4027,24 @@ dependencies = [ ] [[package]]-name = "hyper-proxy"-version = "0.9.1"+name = "hyper-proxy2"+version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc"+checksum = "9043b7b23fb0bc4a1c7014c27b50a4fc42cc76206f71d34fc0dfe5b28ddc3faf" dependencies = [ "bytes",- "futures",- "headers 0.3.9",- "http 0.2.12",- "hyper 0.14.32",+ "futures-util",+ "headers 0.4.0",+ "http 1.2.0",+ "hyper 1.6.0",+ "hyper-rustls 0.26.0",+ "hyper-util",+ "pin-project-lite",+ "rustls-native-certs 0.7.3", "tokio",+ "tokio-rustls 0.25.0", "tower-service",+ "webpki", ] [[package]]@@ -3948,11 +4058,30 @@ dependencies = [ "hyper 0.14.32", "log", "rustls 0.21.12",- "rustls-native-certs",+ "rustls-native-certs 0.6.3", "tokio", "tokio-rustls 0.24.1", ] +[[package]]+name = "hyper-rustls"+version = "0.26.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c"+dependencies = [+ "futures-util",+ "http 1.2.0",+ "hyper 1.6.0",+ "hyper-util",+ "log",+ "rustls 0.22.4",+ "rustls-native-certs 0.7.3",+ "rustls-pki-types",+ "tokio",+ "tokio-rustls 0.25.0",+ "tower-service",+]+ [[package]] name = "hyper-rustls" version = "0.27.5"@@ -3963,7 +4092,9 @@ dependencies = [ "http 1.2.0", "hyper 1.6.0", "hyper-util",+ "log", "rustls 0.23.23",+ "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls 0.26.2",@@ -4052,7 +4183,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen",- "windows-core",+ "windows-core 0.52.0", ] [[package]]@@ -4261,6 +4392,15 @@ dependencies = [ "serde", ] +[[package]]+name = "inout"+version = "0.1.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"+dependencies = [+ "generic-array",+]+ [[package]] name = "interpolate_name" version = "0.2.4"@@ -4372,6 +4512,15 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"+dependencies = [+ "spin",+]++[[package]]+name = "lazycell"+version = "1.3.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lewton"@@ -4380,7 +4529,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" dependencies = [ "byteorder",- "ogg", "tinyvec", ] @@ -4418,108 +4566,141 @@ checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "librespot-audio"-version = "0.4.2"+version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "c176a31355e1ea8e0b9c4ced19df4947bfe4770661c25c142b6fba2365940d9d"+checksum = "5fbda070a5598b32718e497f585f46891f7113e64aff20a13c0f2ba8fe7ccad9" dependencies = [- "aes-ctr",- "byteorder",+ "aes", "bytes",+ "ctr", "futures-util",+ "http-body-util",+ "hyper 1.6.0",+ "hyper-util", "librespot-core", "log",+ "parking_lot", "tempfile",+ "thiserror 1.0.69", "tokio", ] [[package]] name = "librespot-core"-version = "0.4.2"+version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "046349f25888e644bf02d9c5de0164b2a493d29aa4ce18e1ad0b756da9b55d6d"+checksum = "505a5ddd966231755994b60435607a1e8ae1d41c7f1169b078e0511bfb82d931" dependencies = [ "aes",- "base64 0.13.1",+ "base64 0.22.1", "byteorder", "bytes",+ "data-encoding", "form_urlencoded", "futures-core", "futures-util",- "hmac 0.11.0",- "http 0.2.12",+ "governor",+ "hmac",+ "http 1.2.0",+ "http-body-util", "httparse",- "hyper 0.14.32",- "hyper-proxy",+ "hyper 1.6.0",+ "hyper-proxy2",+ "hyper-rustls 0.27.5",+ "hyper-util",+ "librespot-oauth", "librespot-protocol", "log",+ "nonzero_ext", "num-bigint",+ "num-derive", "num-integer", "num-traits", "once_cell",+ "parking_lot", "pbkdf2",+ "pin-project-lite", "priority-queue", "protobuf",+ "quick-xml 0.36.2", "rand 0.8.5",+ "rsa", "serde", "serde_json",- "sha-1",+ "sha1", "shannon",+ "sysinfo", "thiserror 1.0.69",+ "time", "tokio", "tokio-stream",+ "tokio-tungstenite 0.24.0", "tokio-util", "url", "uuid",- "vergen",+ "vergen-gitcl", ] [[package]] name = "librespot-metadata"-version = "0.4.2"+version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "6b80361fcbcb5092056fd47c08c34d5d51b08385d8efb6941c0d3e46d032c21c"+checksum = "6a10ab5a390f65281e763cd09c617b173f0e665994eae3d242526924625fdc66" dependencies = [ "async-trait",- "byteorder",+ "bytes", "librespot-core", "librespot-protocol", "log", "protobuf",+ "serde",+ "serde_json",+ "thiserror 1.0.69",+ "uuid", ] [[package]]-name = "librespot-playback"-version = "0.4.2"+name = "librespot-oauth"+version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "5190a0b9bcc7f70ee4196a6b4a1c731d405ca130d4a6fcd4c561cfdde8b7cfb7"+checksum = "57bda94233b358fb41c04ed15507c61136c80efe876c6e05a10ddb9a182b144e" dependencies = [- "byteorder",- "futures-executor",- "futures-util",- "lewton",- "librespot-audio",- "librespot-core",- "librespot-metadata", "log",- "ogg",+ "oauth2",+ "thiserror 1.0.69",+ "url",+]++[[package]]+name = "librespot-playback"+version = "0.5.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "5b1bcfe1d72c5ac14c798c7e3e1c20e1fb6af2b9c254794545cfcb1f2a4627e2"+dependencies = [+ "futures-util",+ "librespot-audio",+ "librespot-core",+ "librespot-metadata",+ "log",+ "ogg", "parking_lot", "rand 0.8.5", "rand_distr", "shell-words",+ "symphonia", "thiserror 1.0.69", "tokio",- "zerocopy 0.6.6",+ "zerocopy 0.7.35", ] [[package]] name = "librespot-protocol"-version = "0.4.2"+version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "5d6d3ac6196ac0ea67bbe039f56d6730a5d8b31502ef9bce0f504ed729dcb39f"+checksum = "0d6f343f573e0469d3ff8a02b99bbd9789faa01e2ff167332542ac840a8b31e7" dependencies = [- "glob", "protobuf",- "protobuf-codegen-pure",+ "protobuf-codegen", ] [[package]]@@ -4674,7 +4855,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if",- "digest 0.10.7",+ "digest", ] [[package]]@@ -4801,7 +4982,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel",- "security-framework",+ "security-framework 2.11.1", "security-framework-sys", "tempfile", ]@@ -4834,6 +5015,12 @@ dependencies = [ "rustfft", ] +[[package]]+name = "no-std-compat"+version = "0.4.1"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"+ [[package]] name = "nom" version = "7.1.3"@@ -4853,12 +5040,27 @@ dependencies = [ "memchr", ] +[[package]]+name = "nonzero_ext"+version = "0.3.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"+ [[package]] name = "noop_proc_macro" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" +[[package]]+name = "ntapi"+version = "0.4.1"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"+dependencies = [+ "winapi",+]+ [[package]] name = "nu-ansi-term" version = "0.46.0"@@ -4880,6 +5082,23 @@ dependencies = [ "rand 0.8.5", ] +[[package]]+name = "num-bigint-dig"+version = "0.8.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"+dependencies = [+ "byteorder",+ "lazy_static",+ "libm",+ "num-integer",+ "num-iter",+ "num-traits",+ "rand 0.8.5",+ "smallvec",+ "zeroize",+]+ [[package]] name = "num-complex" version = "0.4.6"@@ -4915,6 +5134,17 @@ dependencies = [ "num-traits", ] +[[package]]+name = "num-iter"+version = "0.1.45"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"+dependencies = [+ "autocfg",+ "num-integer",+ "num-traits",+]+ [[package]] name = "num-rational" version = "0.4.2"@@ -4947,6 +5177,35 @@ dependencies = [ "libc", ] +[[package]]+name = "num_threads"+version = "0.1.7"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"+dependencies = [+ "libc",+]++[[package]]+name = "oauth2"+version = "4.4.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "c38841cdd844847e3e7c8d29cef9dcfed8877f8f56f9071f77843ecf3baf937f"+dependencies = [+ "base64 0.13.1",+ "chrono",+ "getrandom 0.2.15",+ "http 0.2.12",+ "rand 0.8.5",+ "reqwest 0.11.27",+ "serde",+ "serde_json",+ "serde_path_to_error",+ "sha2",+ "thiserror 1.0.69",+ "url",+]+ [[package]] name = "object" version = "0.36.7"@@ -4958,9 +5217,9 @@ dependencies = [ [[package]] name = "ogg"-version = "0.8.0"+version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"+checksum = "fdab8dcd8d4052eaacaf8fb07a3ccd9a6e26efadb42878a413c68fc4af1dee2b" dependencies = [ "byteorder", ]@@ -4971,12 +5230,6 @@ version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" -[[package]]-name = "opaque-debug"-version = "0.3.1"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"- [[package]] name = "openssl" version = "0.10.71"@@ -5188,12 +5441,12 @@ dependencies = [ [[package]] name = "pbkdf2"-version = "0.8.0"+version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa"+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [- "crypto-mac",- "hmac 0.11.0",+ "digest",+ "hmac", ] [[package]]@@ -5206,6 +5459,15 @@ dependencies = [ "serde", ] +[[package]]+name = "pem-rfc7468"+version = "0.7.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"+dependencies = [+ "base64ct",+]+ [[package]] name = "percent-encoding" version = "2.3.1"@@ -5254,14 +5516,35 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]]+name = "pkcs1"+version = "0.7.5"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"+dependencies = [+ "der 0.7.9",+ "pkcs8 0.10.2",+ "spki 0.7.3",+]+ [[package]] name = "pkcs8" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [- "der",- "spki",+ "der 0.6.1",+ "spki 0.6.0",+]++[[package]]+name = "pkcs8"+version = "0.10.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"+dependencies = [+ "der 0.7.9",+ "spki 0.7.3", ] [[package]]@@ -5304,6 +5587,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]]+name = "portable-atomic"+version = "1.11.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"+ [[package]] name = "powerfmt" version = "0.2.0"@@ -5350,12 +5639,13 @@ dependencies = [ [[package]] name = "priority-queue"-version = "1.4.0"+version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "a0bda9164fe05bc9225752d54aae413343c36f684380005398a6a8fde95fe785"+checksum = "ef08705fa1589a1a59aa924ad77d14722cb0cd97b67dd5004ed5f4a4873fce8d" dependencies = [ "autocfg",- "indexmap 1.9.3",+ "equivalent",+ "indexmap 2.7.1", ] [[package]]@@ -5474,27 +5764,53 @@ dependencies = [ [[package]] name = "protobuf"-version = "2.28.0"+version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"+checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4"+dependencies = [+ "once_cell",+ "protobuf-support",+ "thiserror 1.0.69",+] [[package]] name = "protobuf-codegen"-version = "2.28.0"+version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "033460afb75cf755fcfc16dfaed20b86468082a2ea24e05ac35ab4a099a017d6"+checksum = "5d3976825c0014bbd2f3b34f0001876604fe87e0c86cd8fa54251530f1544ace" dependencies = [+ "anyhow",+ "once_cell", "protobuf",+ "protobuf-parse",+ "regex",+ "tempfile",+ "thiserror 1.0.69", ] [[package]]-name = "protobuf-codegen-pure"-version = "2.28.0"+name = "protobuf-parse"+version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "95a29399fc94bcd3eeaa951c715f7bea69409b2445356b00519740bcd6ddd865"+checksum = "b4aeaa1f2460f1d348eeaeed86aea999ce98c1bded6f089ff8514c9d9dbdc973" dependencies = [+ "anyhow",+ "indexmap 2.7.1",+ "log", "protobuf",- "protobuf-codegen",+ "protobuf-support",+ "tempfile",+ "thiserror 1.0.69",+ "which",+]++[[package]]+name = "protobuf-support"+version = "3.7.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6"+dependencies = [+ "thiserror 1.0.69", ] [[package]]@@ -5513,6 +5829,16 @@ dependencies = [ "psl-types", ] +[[package]]+name = "quick-xml"+version = "0.36.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe"+dependencies = [+ "memchr",+ "serde",+]+ [[package]] name = "quick-xml" version = "0.37.2"@@ -5533,7 +5859,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp",- "rustc-hash",+ "rustc-hash 2.1.1", "rustls 0.23.23", "socket2", "thiserror 2.0.12",@@ -5551,7 +5877,7 @@ dependencies = [ "getrandom 0.2.15", "rand 0.8.5", "ring",- "rustc-hash",+ "rustc-hash 2.1.1", "rustls 0.23.23", "rustls-pki-types", "slab",@@ -5812,6 +6138,7 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32",+ "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", "js-sys",@@ -5821,6 +6148,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite",+ "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "serde_json",@@ -5829,11 +6157,13 @@ dependencies = [ "system-configuration 0.5.1", "tokio", "tokio-native-tls",+ "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys",+ "webpki-roots", "winreg", ] @@ -5892,7 +6222,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ "crypto-bigint 0.4.9",- "hmac 0.12.1",+ "hmac", "zeroize", ] @@ -5919,6 +6249,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]]+name = "rsa"+version = "0.9.8"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b"+dependencies = [+ "const-oid",+ "digest",+ "num-bigint-dig",+ "num-integer",+ "num-traits",+ "pkcs1",+ "pkcs8 0.10.2",+ "rand_core 0.6.4",+ "signature 2.2.0",+ "spki 0.7.3",+ "subtle",+ "zeroize",+]+ [[package]] name = "rtcp-types" version = "0.1.0"@@ -5968,6 +6318,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]]+name = "rustc-hash"+version = "1.1.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"+ [[package]] name = "rustc-hash" version = "2.1.1"@@ -6032,12 +6388,28 @@ dependencies = [ "sct", ] +[[package]]+name = "rustls"+version = "0.22.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"+dependencies = [+ "log",+ "ring",+ "rustls-pki-types",+ "rustls-webpki 0.102.8",+ "subtle",+ "zeroize",+]+ [[package]] name = "rustls" version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [+ "aws-lc-rs",+ "log", "once_cell", "ring", "rustls-pki-types",@@ -6055,7 +6427,32 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel",- "security-framework",+ "security-framework 2.11.1",+]++[[package]]+name = "rustls-native-certs"+version = "0.7.3"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5"+dependencies = [+ "openssl-probe",+ "rustls-pemfile 2.2.0",+ "rustls-pki-types",+ "schannel",+ "security-framework 2.11.1",+]++[[package]]+name = "rustls-native-certs"+version = "0.8.1"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3"+dependencies = [+ "openssl-probe",+ "rustls-pki-types",+ "schannel",+ "security-framework 3.2.0", ] [[package]]@@ -6101,6 +6498,7 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [+ "aws-lc-rs", "ring", "rustls-pki-types", "untrusted",@@ -6190,9 +6588,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct",- "der",+ "der 0.6.1", "generic-array",- "pkcs8",+ "pkcs8 0.9.0", "subtle", "zeroize", ]@@ -6204,7 +6602,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.9.0",- "core-foundation",+ "core-foundation 0.9.4",+ "core-foundation-sys",+ "libc",+ "security-framework-sys",+]++[[package]]+name = "security-framework"+version = "3.2.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316"+dependencies = [+ "bitflags 2.9.0",+ "core-foundation 0.10.0", "core-foundation-sys", "libc", "security-framework-sys",@@ -6353,19 +6764,6 @@ dependencies = [ "syn 2.0.99", ] -[[package]]-name = "sha-1"-version = "0.9.8"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6"-dependencies = [- "block-buffer 0.9.0",- "cfg-if",- "cpufeatures",- "digest 0.9.0",- "opaque-debug",-]- [[package]] name = "sha1" version = "0.10.6"@@ -6374,7 +6772,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures",- "digest 0.10.7",+ "digest", ] [[package]]@@ -6385,7 +6783,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures",- "digest 0.10.7",+ "digest", ] [[package]]@@ -6443,7 +6841,17 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [- "digest 0.10.7",+ "digest",+ "rand_core 0.6.4",+]++[[package]]+name = "signature"+version = "2.2.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"+dependencies = [+ "digest", "rand_core 0.6.4", ] @@ -6514,6 +6922,15 @@ dependencies = [ "lock_api", ] +[[package]]+name = "spinning_top"+version = "0.3.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300"+dependencies = [+ "lock_api",+]+ [[package]] name = "spki" version = "0.6.0"@@ -6521,7 +6938,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct",- "der",+ "der 0.6.1",+]++[[package]]+name = "spki"+version = "0.7.3"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"+dependencies = [+ "base64ct",+ "der 0.7.9", ] [[package]]@@ -6569,6 +6996,90 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]]+name = "symphonia"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"+dependencies = [+ "lazy_static",+ "symphonia-bundle-mp3",+ "symphonia-codec-vorbis",+ "symphonia-core",+ "symphonia-format-ogg",+ "symphonia-metadata",+]++[[package]]+name = "symphonia-bundle-mp3"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4"+dependencies = [+ "lazy_static",+ "log",+ "symphonia-core",+ "symphonia-metadata",+]++[[package]]+name = "symphonia-codec-vorbis"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "5a98765fb46a0a6732b007f7e2870c2129b6f78d87db7987e6533c8f164a9f30"+dependencies = [+ "log",+ "symphonia-core",+ "symphonia-utils-xiph",+]++[[package]]+name = "symphonia-core"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3"+dependencies = [+ "arrayvec",+ "bitflags 1.3.2",+ "bytemuck",+ "lazy_static",+ "log",+]++[[package]]+name = "symphonia-format-ogg"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "ada3505789516bcf00fc1157c67729eded428b455c27ca370e41f4d785bfa931"+dependencies = [+ "log",+ "symphonia-core",+ "symphonia-metadata",+ "symphonia-utils-xiph",+]++[[package]]+name = "symphonia-metadata"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c"+dependencies = [+ "encoding_rs",+ "lazy_static",+ "log",+ "symphonia-core",+]++[[package]]+name = "symphonia-utils-xiph"+version = "0.5.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "484472580fa49991afda5f6550ece662237b00c6f562c7d9638d1b086ed010fe"+dependencies = [+ "symphonia-core",+ "symphonia-metadata",+]+ [[package]] name = "syn" version = "1.0.109"@@ -6617,6 +7128,19 @@ dependencies = [ "syn 2.0.99", ] +[[package]]+name = "sysinfo"+version = "0.31.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be"+dependencies = [+ "core-foundation-sys",+ "libc",+ "memchr",+ "ntapi",+ "windows",+]+ [[package]] name = "system-configuration" version = "0.5.1"@@ -6624,7 +7148,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2",- "core-foundation",+ "core-foundation 0.9.4", "system-configuration-sys 0.5.0", ] @@ -6635,7 +7159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.9.0",- "core-foundation",+ "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -6819,7 +7343,9 @@ checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa",+ "libc", "num-conv",+ "num_threads", "powerfmt", "serde", "time-core",@@ -6916,6 +7442,17 @@ dependencies = [ "tokio", ] +[[package]]+name = "tokio-rustls"+version = "0.25.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"+dependencies = [+ "rustls 0.22.4",+ "rustls-pki-types",+ "tokio",+]+ [[package]] name = "tokio-rustls" version = "0.26.2"@@ -6963,6 +7500,22 @@ dependencies = [ "tungstenite 0.21.0", ] +[[package]]+name = "tokio-tungstenite"+version = "0.24.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9"+dependencies = [+ "futures-util",+ "log",+ "rustls 0.23.23",+ "rustls-native-certs 0.8.1",+ "rustls-pki-types",+ "tokio",+ "tokio-rustls 0.26.2",+ "tungstenite 0.24.0",+]+ [[package]] name = "tokio-util" version = "0.7.13"@@ -7154,6 +7707,26 @@ dependencies = [ "utf-8", ] +[[package]]+name = "tungstenite"+version = "0.24.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"+dependencies = [+ "byteorder",+ "bytes",+ "data-encoding",+ "http 1.2.0",+ "httparse",+ "log",+ "rand 0.8.5",+ "rustls 0.23.23",+ "rustls-pki-types",+ "sha1",+ "thiserror 1.0.69",+ "utf-8",+]+ [[package]] name = "tungstenite" version = "0.26.2"@@ -7218,6 +7791,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding",+ "serde", ] [[package]]@@ -7266,6 +7840,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1",+ "rand 0.9.0", ] [[package]]@@ -7299,13 +7874,40 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen"-version = "3.2.0"+version = "9.0.4" source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "e7141e445af09c8919f1d5f8a20dae0b20c3b57a45dee0d5823c6ed5d237f15a"+checksum = "e0d2f179f8075b805a43a2a21728a46f0cc2921b3c58695b28fa8817e103cd9a" dependencies = [- "bitflags 1.3.2",- "chrono",- "rustc_version",+ "anyhow",+ "derive_builder",+ "rustversion",+ "time",+ "vergen-lib",+]++[[package]]+name = "vergen-gitcl"+version = "1.0.5"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "b2f89d70a58a4506a6079cedf575c64cf51649ccbb4e02a63dac539b264b7711"+dependencies = [+ "anyhow",+ "derive_builder",+ "rustversion",+ "time",+ "vergen",+ "vergen-lib",+]++[[package]]+name = "vergen-lib"+version = "0.1.6"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166"+dependencies = [+ "anyhow",+ "derive_builder",+ "rustversion", ] [[package]]@@ -7495,12 +8097,40 @@ dependencies = [ "ebml-iterable", ] +[[package]]+name = "webpki"+version = "0.22.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"+dependencies = [+ "ring",+ "untrusted",+]++[[package]]+name = "webpki-roots"+version = "0.25.4"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"+ [[package]] name = "weezl" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" +[[package]]+name = "which"+version = "4.4.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"+dependencies = [+ "either",+ "home",+ "once_cell",+ "rustix",+]+ [[package]] name = "winapi" version = "0.3.9"@@ -7532,6 +8162,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]]+name = "windows"+version = "0.57.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"+dependencies = [+ "windows-core 0.57.0",+ "windows-targets 0.52.6",+]+ [[package]] name = "windows-core" version = "0.52.0"@@ -7541,6 +8181,40 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]]+name = "windows-core"+version = "0.57.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"+dependencies = [+ "windows-implement",+ "windows-interface",+ "windows-result 0.1.2",+ "windows-targets 0.52.6",+]++[[package]]+name = "windows-implement"+version = "0.57.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"+dependencies = [+ "proc-macro2",+ "quote",+ "syn 2.0.99",+]++[[package]]+name = "windows-interface"+version = "0.57.0"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"+dependencies = [+ "proc-macro2",+ "quote",+ "syn 2.0.99",+]+ [[package]] name = "windows-link" version = "0.1.0"@@ -7553,11 +8227,20 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [- "windows-result",+ "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]]+name = "windows-result"+version = "0.1.2"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"+dependencies = [+ "windows-targets 0.52.6",+]+ [[package]] name = "windows-result" version = "0.2.0"@@ -7573,7 +8256,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [- "windows-result",+ "windows-result 0.2.0", "windows-targets 0.52.6", ] @@ -7836,16 +8519,6 @@ dependencies = [ "synstructure", ] -[[package]]-name = "zerocopy"-version = "0.6.6"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6"-dependencies = [- "byteorder",- "zerocopy-derive 0.6.6",-]- [[package]] name = "zerocopy" version = "0.7.35"@@ -7865,17 +8538,6 @@ dependencies = [ "zerocopy-derive 0.8.21", ] -[[package]]-name = "zerocopy-derive"-version = "0.6.6"-source = "registry+https://github.com/rust-lang/crates.io-index"-checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91"-dependencies = [- "proc-macro2",- "quote",- "syn 2.0.99",-]- [[package]] name = "zerocopy-derive" version = "0.7.35"diff --git a/audio/spotify/Cargo.toml b/audio/spotify/Cargo.tomlindex 387785cd..b063b8ca 100644--- a/audio/spotify/Cargo.toml+++ b/audio/spotify/Cargo.toml@@ -11,9 +11,9 @@ rust-version.workspace = true [dependencies] gst.workspace = true gst-base.workspace = true-librespot-core = "0.4"-librespot-playback = "0.4"-tokio = { version = "1", features = ["rt-multi-thread"] }+librespot-core = "0.5"+librespot-playback = { version = "0.5", features = ['passthrough-decoder'] }+tokio = { version = "1.0", features = ["rt-multi-thread"] } futures = "0.3" anyhow = "1.0" url = "2.3"diff --git a/audio/spotify/README.md b/audio/spotify/README.mdindex 98237747..2e364926 100644--- a/audio/spotify/README.md+++ b/audio/spotify/README.md@@ -9,23 +9,36 @@ to respect their legal/licensing restrictions. ## Spotify Credentials This plugin requires a [Spotify Premium](https://www.spotify.com/premium/) account.-If your account is linked with Facebook, you'll need to setup-a [device username and password](https://www.spotify.com/us/account/set-device-password/). -Those username and password are then set using the `username` and `password` properties.+Provide a Spotify access token with 'streaming' scope using the `access-token` property. Such a token can be obtained by completing+[Spotify's OAuth flow](https://developer.spotify.com/documentation/web-api/concepts/authorization) or using the facility on their+[Web SDK getting started guide](https://developer.spotify.com/documentation/web-playback-sdk/tutorials/getting-started).+A token can also be obtained using [librespot-oauth](https://github.com/librespot-org/librespot/blob/dev/oauth/examples/oauth.rs): -You may also want to cache credentials and downloaded files, see the `cache-` properties on the element.+```console+cargo install librespot-oauth --example oauth && oauth+```++Note, Spotify access tokens are only valid for 1 hour and must be [refreshed](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens)+for usage beyond that.++It is therefore advisable to also use the `cache-credentials` property. On first usage, your access token is exchanged for a reusable credentials blob and+stored at the location specified by this property. Once obtained, that credentials blob is used for login and any provided `access-token` is ignored.+Unlike Spotify access tokens, the user's credentials blob does not expire. Avoiding handling token refresh greatly simplifies plugin usage.+If you do not set `cache-credentials`, you must manage refreshing your Spotify access token so it's valid for login when the element starts.++You may also want to cache downloaded files, see the `cache-files` property. ## spotifyaudiosrc The `spotifyaudiosrc` element can be used to play a song from Spotify using its [Spotify URI](https://community.spotify.com/t5/FAQs/What-s-a-Spotify-URI/ta-p/919201). ```-gst-launch-1.0 spotifyaudiosrc username=$USERNAME password=$PASSWORD track=spotify:track:3i3P1mGpV9eRlfKccjDjwi ! oggdemux ! vorbisdec ! audioconvert ! autoaudiosink+gst-launch-1.0 spotifyaudiosrc access-token=$ACCESS_TOKEN track=spotify:track:3i3P1mGpV9eRlfKccjDjwi ! oggdemux ! vorbisdec ! audioconvert ! autoaudiosink ``` The element also implements an URI handler which accepts credentials and cache settings as URI parameters: ```console-gst-launch-1.0 playbin3 uri=spotify:track:3i3P1mGpV9eRlfKccjDjwi?username=$USERNAME\&password=$PASSWORD\&cache-credentials=cache\&cache-files=cache+gst-launch-1.0 playbin3 uri=spotify:track:3i3P1mGpV9eRlfKccjDjwi?access-token=$ACCESS_TOKEN\&cache-credentials=cache\&cache-files=cache ```\ No newline at end of filediff --git a/audio/spotify/src/common.rs b/audio/spotify/src/common.rsindex ed77dcc6..a5764ef8 100644--- a/audio/spotify/src/common.rs+++ b/audio/spotify/src/common.rs@@ -18,8 +18,7 @@ use librespot_core::{ #[derive(Default, Debug, Clone)] pub struct Settings {- username: String,- password: String,+ access_token: String, cache_credentials: String, cache_files: String, cache_max_size: u64,@@ -28,52 +27,46 @@ pub struct Settings { impl Settings { pub fn properties() -> Vec<glib::ParamSpec> {- vec![glib::ParamSpecString::builder("username")- .nick("Username")- .blurb("Spotify username, Facebook accounts need a device username from https://www.spotify.com/us/account/set-device-password/")- .default_value(Some(""))- .mutable_ready()- .build(),- glib::ParamSpecString::builder("password")- .nick("Password")- .blurb("Spotify password, Facebook accounts need a device password from https://www.spotify.com/us/account/set-device-password/")- .default_value(Some(""))- .mutable_ready()- .build(),- glib::ParamSpecString::builder("cache-credentials")- .nick("Credentials cache")- .blurb("Directory where to cache Spotify credentials")- .default_value(Some(""))- .mutable_ready()- .build(),- glib::ParamSpecString::builder("cache-files")- .nick("Files cache")- .blurb("Directory where to cache downloaded files from Spotify")- .default_value(Some(""))- .mutable_ready()- .build(),- glib::ParamSpecUInt64::builder("cache-max-size")- .nick("Cache max size")- .blurb("The max allowed size of the cache, in bytes, or 0 to disable the cache limit")- .default_value(0)- .mutable_ready()- .build(),- glib::ParamSpecString::builder("track")- .nick("Spotify URI")- .blurb("Spotify track URI, in the form 'spotify:track:$SPOTIFY_ID'")- .default_value(Some(""))- .mutable_ready()- .build(),- ]+ vec![+ glib::ParamSpecString::builder("access-token")+ .nick("Access token")+ .blurb("Spotify access token, requires 'streaming' scope")+ .default_value(Some(""))+ .mutable_ready()+ .build(),+ glib::ParamSpecString::builder("cache-credentials")+ .nick("Credentials cache")+ .blurb("Directory where to cache Spotify credentials")+ .default_value(Some(""))+ .mutable_ready()+ .build(),+ glib::ParamSpecString::builder("cache-files")+ .nick("Files cache")+ .blurb("Directory where to cache downloaded files from Spotify")+ .default_value(Some(""))+ .mutable_ready()+ .build(),+ glib::ParamSpecUInt64::builder("cache-max-size")+ .nick("Cache max size")+ .blurb(+ "The max allowed size of the cache, in bytes, or 0 to disable the cache limit",+ )+ .default_value(0)+ .mutable_ready()+ .build(),+ glib::ParamSpecString::builder("track")+ .nick("Spotify URI")+ .blurb("Spotify track URI, in the form 'spotify:track:$SPOTIFY_ID'")+ .default_value(Some(""))+ .mutable_ready()+ .build(),+ ] } pub fn set_property(&mut self, value: &glib::Value, pspec: &glib::ParamSpec) { match pspec.name() {- "username" => {- self.username = value.get().expect("type checked upstream");- }- "password" => {- self.password = value.get().expect("type checked upstream");+ "access-token" => {+ self.access_token = value.get().expect("type checked upstream"); } "cache-credentials" => { self.cache_credentials = value.get().expect("type checked upstream");@@ -93,8 +86,7 @@ impl Settings { pub fn property(&self, pspec: &glib::ParamSpec) -> glib::Value { match pspec.name() {- "username" => self.username.to_value(),- "password" => self.password.to_value(),+ "access-token" => self.access_token.to_value(), "cache-credentials" => self.cache_credentials.to_value(), "cache-files" => self.cache_files.to_value(), "cache-max-size" => self.cache_max_size.to_value(),@@ -132,32 +124,20 @@ impl Settings { let cache = Cache::new(credentials_cache, None, files_cache, max_size)?; if let Some(cached_cred) = cache.credentials() {- if !self.username.is_empty() && self.username != cached_cred.username {- gst::debug!(- cat,- obj = &src,- "ignore cached credentials for user {} which mismatch user {}",- cached_cred.username,- self.username- );- } else {- gst::debug!(- cat,- obj = &src,- "reuse cached credentials for user {}",- cached_cred.username- );- if let Ok((session, _credentials)) = Session::connect(- SessionConfig::default(),- cached_cred,- Some(cache.clone()),- true,- )- .await- {- return Ok(session);- }- }+ let cached_username = cached_cred+ .username+ .as_ref()+ .map_or("UNKNOWN", |s| s.as_str());+ gst::debug!(+ cat,+ obj = &src,+ "reuse cached credentials for user {}",+ cached_username+ );++ let session = Session::new(SessionConfig::default(), Some(cache));+ session.connect(cached_cred, true).await?;+ return Ok(session); } gst::debug!(@@ -166,17 +146,14 @@ impl Settings { "credentials not in cache or cached credentials invalid", ); - if self.username.is_empty() {- bail!("username is not set and credentials are not in cache");- }- if self.password.is_empty() {- bail!("password is not set and credentials are not in cache");+ if self.access_token.is_empty() {+ bail!("access-token is not set and credentials are not in cache"); } - let cred = Credentials::with_password(&self.username, &self.password);+ let cred = Credentials::with_access_token(&self.access_token); - let (session, _credentials) =- Session::connect(SessionConfig::default(), cred, Some(cache), true).await?;+ let session = Session::new(SessionConfig::default(), Some(cache));+ session.connect(cred, true).await?; Ok(session) }@@ -185,9 +162,7 @@ impl Settings { if self.track.is_empty() { bail!("track is not set"); }- let track = SpotifyId::from_uri(&self.track).map_err(|_| {- anyhow::anyhow!("failed to create Spotify URI from track {}", self.track)- })?;+ let track = SpotifyId::from_uri(&self.track)?; Ok(track) }diff --git a/audio/spotify/src/spotifyaudiosrc/imp.rs b/audio/spotify/src/spotifyaudiosrc/imp.rsindex 6f429682..932f5a9f 100644--- a/audio/spotify/src/spotifyaudiosrc/imp.rs+++ b/audio/spotify/src/spotifyaudiosrc/imp.rs@@ -52,7 +52,7 @@ enum Message { } struct State {- player: Player,+ player: Arc<Player>, /// receiver sending buffer to streaming thread receiver: mpsc::Receiver<Message>,@@ -321,11 +321,10 @@ struct BufferSink { impl Sink for BufferSink { fn write(&mut self, packet: AudioPacket, _converter: &mut Converter) -> SinkResult<()> {- let oggdata = match packet {- AudioPacket::OggData(data) => data,- AudioPacket::Samples(_) => unimplemented!(),+ let buffer = match packet {+ AudioPacket::Samples(_) => unreachable!(),+ AudioPacket::Raw(ogg) => gst::Buffer::from_slice(ogg), };- let buffer = gst::Buffer::from_slice(oggdata); // ignore if sending fails as that means the source element is being shutdown let _ = self.sender.send(Message::Buffer(buffer));@@ -360,7 +359,7 @@ impl URIHandlerImpl for SpotifyAudioSrc { // allow to configure auth and cache settings from the URI for (key, value) in url.query_pairs() { match key.as_ref() {- "username" | "password" | "cache-credentials" | "cache-files" => {+ "access-token" | "cache-credentials" | "cache-files" => { self.obj().set_property(&key, value.as_ref()); } _ => {@@ -435,10 +434,10 @@ impl SpotifyAudioSrc { let (sender, receiver) = mpsc::sync_channel(2); let sender_clone = sender.clone(); - let (mut player, mut player_event_channel) =- Player::new(player_config, session, Box::new(NoOpVolume), || {- Box::new(BufferSink { sender })- });+ let player = Player::new(player_config, session, Box::new(NoOpVolume), || {+ Box::new(BufferSink { sender })+ });+ let mut player_event_channel = player.get_player_event_channel(); player.load(track, true, 0); diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.jsonindex 4e2a1361..73aba5b9 100644--- a/docs/plugins/gst_plugins_cache.json+++ b/docs/plugins/gst_plugins_cache.json@@ -11472,6 +11472,18 @@ } }, "properties": {+ "access-token": {+ "blurb": "Spotify access token, requires 'streaming' scope",+ "conditionally-available": false,+ "construct": false,+ "construct-only": false,+ "controllable": false,+ "default": "",+ "mutable": "ready",+ "readable": true,+ "type": "gchararray",+ "writable": true+ }, "bitrate": { "blurb": "Spotify audio bitrate in kbit/s", "conditionally-available": false,-- 2.48.1