Skip to content
This repository was archived by the owner on Dec 15, 2024. It is now read-only.

Commit 6668fdb

Browse files
committed
fix
1 parent b3ffec2 commit 6668fdb

File tree

184 files changed

+5950
-2445
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

184 files changed

+5950
-2445
lines changed

go.mod

+10-9
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ require (
2626
github.com/zmb3/spotify/v2 v2.3.1
2727
go.etcd.io/bbolt v1.3.7
2828
golang.org/x/mod v0.8.0
29-
golang.org/x/oauth2 v0.7.0
30-
golang.org/x/text v0.13.0
29+
golang.org/x/oauth2 v0.10.0
30+
golang.org/x/text v0.14.0
3131
)
3232

3333
require (
@@ -59,21 +59,22 @@ require (
5959
github.com/sahilm/fuzzy v0.1.0 // indirect
6060
github.com/vcaesar/keycode v0.10.1 // indirect
6161
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
62-
golang.org/x/crypto v0.12.0 // indirect
63-
golang.org/x/net v0.14.0 // indirect
62+
golang.org/x/crypto v0.21.0 // indirect
63+
golang.org/x/net v0.23.0 // indirect
6464
golang.org/x/sync v0.6.0 // indirect
65-
golang.org/x/sys v0.17.0 // indirect
66-
golang.org/x/term v0.17.0 // indirect
65+
golang.org/x/sys v0.18.0 // indirect
66+
golang.org/x/term v0.18.0 // indirect
6767
google.golang.org/appengine v1.6.7 // indirect
6868
google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect
69-
google.golang.org/grpc v1.57.0 // indirect
70-
google.golang.org/protobuf v1.31.0 // indirect
69+
google.golang.org/grpc v1.58.3 // indirect
70+
google.golang.org/protobuf v1.33.0 // indirect
7171
zenhack.net/go/util v0.0.0-20230607025951-8b02fee814ae // indirect
7272
)
7373

7474
replace (
7575
capnproto.org/go/capnp/v3 v3.0.0-alpha-29 => capnproto.org/go/capnp/v3 v3.0.0-alpha.29
76-
github.com/arcspace/go-librespot v0.0.0-20230811173922-2e901b172fbe => github.com/go-musicfox/go-librespot v0.1.0
76+
// github.com/arcspace/go-librespot v0.0.0-20230811173922-2e901b172fbe => github.com/go-musicfox/go-librespot v0.1.0
77+
github.com/arcspace/go-librespot v0.0.0-20230811173922-2e901b172fbe => ../go-librespot
7778
github.com/charmbracelet/bubbletea v0.25.0 => github.com/go-musicfox/bubbletea v0.25.0-foxful
7879
github.com/gookit/gcli/v2 v2.3.4 => github.com/anhoder/gcli/v2 v2.3.5
7980
github.com/gopxl/beep v1.4.0 => github.com/go-musicfox/beep v1.4.1

go.sum

+16-18
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ github.com/go-musicfox/beep v1.4.1 h1:1U7nnypAez/OgEBy+Kf9pnxL4ZYBk4OFASGKIi5nhu
8484
github.com/go-musicfox/beep v1.4.1/go.mod h1:FLIgNbvzfm53Fe9yu6PEeEGbdFiA6ubejExj5dp2ctI=
8585
github.com/go-musicfox/bubbletea v0.25.0-foxful h1:HRvsptwgdgK7ltKFfddIcgRQezMA9Gagi0QD8hlMkFo=
8686
github.com/go-musicfox/bubbletea v0.25.0-foxful/go.mod h1:0d493G5q9s3TvUgvzfo1h8S4aGTyfyqQwyCSB088uwU=
87-
github.com/go-musicfox/go-librespot v0.1.0 h1:7BCcmyBrTkRXjHkMB9DRE3td9LmWmlg483t5IJIv1Pw=
88-
github.com/go-musicfox/go-librespot v0.1.0/go.mod h1:XQ3of3y1Pq5c6iRT+SqrWjD42FlGuBvMDWx5iePKwhc=
8987
github.com/go-musicfox/go-mp3 v0.3.3 h1:xBfUaYhbG6LipvPLDSlawLSO1A5z3InSJz8vB3+3bHc=
9088
github.com/go-musicfox/go-mp3 v0.3.3/go.mod h1:fRtZraRFcWb0pu7ok0LqyFhCUrPeMsGRSVop0eemFmo=
9189
github.com/go-musicfox/lastfm-go v0.0.2 h1:S/jXVK/bSi9JGZGm7ynQWY3nQ8gvMzbpHf2yKZ9ge+g=
@@ -258,8 +256,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
258256
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
259257
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
260258
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
261-
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
262-
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
259+
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
260+
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
263261
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
264262
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
265263
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -328,16 +326,16 @@ golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qx
328326
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
329327
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
330328
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
331-
golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
332-
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
329+
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
330+
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
333331
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
334332
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
335333
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
336334
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
337335
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
338336
golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
339-
golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g=
340-
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
337+
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
338+
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
341339
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
342340
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
343341
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -389,14 +387,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
389387
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
390388
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
391389
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
392-
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
393-
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
390+
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
391+
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
394392
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
395393
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
396394
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
397395
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
398-
golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
399-
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
396+
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
397+
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
400398
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
401399
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
402400
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -407,8 +405,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
407405
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
408406
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
409407
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
410-
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
411-
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
408+
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
409+
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
412410
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
413411
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
414412
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -527,8 +525,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa
527525
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
528526
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
529527
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
530-
google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
531-
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
528+
google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ=
529+
google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0=
532530
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
533531
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
534532
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -542,8 +540,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
542540
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
543541
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
544542
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
545-
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
546-
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
543+
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
544+
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
547545
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
548546
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
549547
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=

internal/configs/registry.go

+18-12
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,14 @@ func NewRegistryWithDefault() *Registry {
5252
},
5353
Progress: ProgressOptions{
5454
ProgressOptions: model.ProgressOptions{
55-
FirstEmptyChar: []rune(types.ProgressEmptyChar)[0],
56-
EmptyChar: []rune(types.ProgressEmptyChar)[0],
57-
LastEmptyChar: []rune(types.ProgressEmptyChar)[0],
58-
FirstFullChar: []rune(types.ProgressFullChar)[0],
59-
FullChar: []rune(types.ProgressFullChar)[0],
60-
LastFullChar: []rune(types.ProgressFullChar)[0],
55+
EmptyChar: []rune(types.ProgressEmptyChar)[0],
56+
EmptyCharWhenFirst: []rune(types.ProgressEmptyChar)[0],
57+
EmptyCharWhenLast: []rune(types.ProgressEmptyChar)[0],
58+
FirstEmptyChar: []rune(types.ProgressEmptyChar)[0],
59+
FullChar: []rune(types.ProgressFullChar)[0],
60+
FullCharWhenFirst: []rune(types.ProgressFullChar)[0],
61+
FullCharWhenLast: []rune(types.ProgressFullChar)[0],
62+
LastFullChar: []rune(types.ProgressFullChar)[0],
6163
},
6264
},
6365
Main: MainOptions{
@@ -100,17 +102,21 @@ func NewRegistryFromIniFile(filepath string) *Registry {
100102

101103
emptyChar := ini.String("progress.emptyChar", types.ProgressEmptyChar)
102104
registry.Progress.EmptyChar = firstCharOrDefault(emptyChar, types.ProgressEmptyChar)
105+
emptyCharWhenFirst := ini.String("progress.emptyCharWhenFirst", types.ProgressEmptyChar)
106+
registry.Progress.EmptyCharWhenFirst = firstCharOrDefault(emptyCharWhenFirst, types.ProgressEmptyChar)
107+
emptyCharWhenLast := ini.String("progress.emptyCharWhenLast", types.ProgressEmptyChar)
108+
registry.Progress.EmptyCharWhenLast = firstCharOrDefault(emptyCharWhenLast, types.ProgressEmptyChar)
103109
firstEmptyChar := ini.String("progress.firstEmptyChar", types.ProgressEmptyChar)
104110
registry.Progress.FirstEmptyChar = firstCharOrDefault(firstEmptyChar, types.ProgressEmptyChar)
105-
lastEmptyChar := ini.String("progress.lastEmptyChar", types.ProgressEmptyChar)
106-
registry.Progress.LastEmptyChar = firstCharOrDefault(lastEmptyChar, types.ProgressEmptyChar)
107111

108112
fullChar := ini.String("progress.fullChar", types.ProgressFullChar)
109113
registry.Progress.FullChar = firstCharOrDefault(fullChar, types.ProgressFullChar)
110-
firstFullChar := ini.String("progress.firstFullChar", types.ProgressFullChar)
111-
registry.Progress.FirstFullChar = firstCharOrDefault(firstFullChar, types.ProgressFullChar)
112-
lastFullChar := ini.String("progress.lastFullChar", types.ProgressFullChar)
113-
registry.Progress.LastFullChar = firstCharOrDefault(lastFullChar, types.ProgressFullChar)
114+
fullCharWhenFirst := ini.String("progress.fullCharWhenFirst", types.ProgressFullChar)
115+
registry.Progress.FullCharWhenFirst = firstCharOrDefault(fullCharWhenFirst, types.ProgressFullChar)
116+
fullCharWhenLast := ini.String("progress.fullCharWhenLast", types.ProgressFullChar)
117+
registry.Progress.FullCharWhenLast = firstCharOrDefault(fullCharWhenLast, types.ProgressFullChar)
118+
lastFullChar := ini.String("progress.lastFullChar", types.ProgressEmptyChar)
119+
registry.Progress.LastFullChar = firstCharOrDefault(lastFullChar, types.ProgressEmptyChar)
114120

115121
registry.Spotify.ClientId = types.SpotifyClientId
116122
if clientId := ini.Get("spotify.clientId"); clientId != "" {

internal/player/beep_player.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import (
99
"sync"
1010
"time"
1111

12-
"github.com/go-musicfox/spotifox/utils"
12+
"github.com/arcspace/go-arc-sdk/stdlib/task"
1313
"github.com/gopxl/beep"
1414
"github.com/gopxl/beep/effects"
1515
"github.com/gopxl/beep/speaker"
1616
"github.com/zmb3/spotify/v2"
17+
18+
"github.com/go-musicfox/spotifox/utils"
1719
)
1820

1921
const (
@@ -72,11 +74,11 @@ func NewBeepPlayer() *beepPlayer {
7274
func (p *beepPlayer) listen() {
7375
var (
7476
done = make(chan struct{})
75-
resp *http.Response
7677
reader io.ReadCloser
7778
err error
7879
ctx context.Context
7980
cancel context.CancelFunc
81+
taskCtx task.Context
8082
prevSongId spotify.ID
8183
doneHandle = func() {
8284
select {
@@ -110,9 +112,15 @@ func (p *beepPlayer) listen() {
110112
if cancel != nil {
111113
cancel()
112114
}
115+
if taskCtx != nil {
116+
_ = taskCtx.Close()
117+
}
113118
p.reset()
114119
if prevSongId != p.curMusic.SongInfo.ID || !utils.FileOrDirExists(cacheFile) {
115120
ctx, cancel = context.WithCancel(context.Background())
121+
taskCtx, _ = task.Start(nil)
122+
123+
p.curMusic.OnStart(taskCtx)
116124

117125
// FIXME No other optimization methods found
118126
if p.cacheReader, err = os.OpenFile(cacheFile, os.O_CREATE|os.O_TRUNC|os.O_RDONLY, 0666); err != nil {
@@ -126,8 +134,6 @@ func (p *beepPlayer) listen() {
126134
utils.Logger().Printf("new asset reader err: %+v", err)
127135
p.stopNoLock()
128136
goto nextLoop
129-
} else {
130-
reader = resp.Body
131137
}
132138

133139
// 边下载边播放
@@ -168,7 +174,7 @@ func (p *beepPlayer) listen() {
168174
}
169175
}(ctx, p.cacheWriter, reader)
170176

171-
var N = 512
177+
N := 512
172178
if err = utils.WaitForNBytes(p.cacheReader, N, time.Millisecond*100, 50); err != nil {
173179
utils.Logger().Printf("WaitForNBytes err: %+v", err)
174180
p.stopNoLock()
@@ -442,7 +448,7 @@ func (p *beepPlayer) streamer(samples [][2]float64) (n int, ok bool) {
442448
}
443449
p.pausedNoLock()
444450

445-
var retry = 4
451+
retry := 4
446452
for !ok && retry > 0 {
447453
utils.ResetError(p.curStreamer)
448454

0 commit comments

Comments
 (0)