mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-19 19:49:28 +02:00
Compare commits
3 commits
dc834e9b6f
...
1ea90d2d2b
Author | SHA1 | Date | |
---|---|---|---|
|
1ea90d2d2b | ||
|
329f696b55 | ||
|
5f9c0f24ab |
6 changed files with 124 additions and 115 deletions
17
go.mod
17
go.mod
|
@ -2,7 +2,7 @@ module go.uploadedlobster.com/scotty
|
||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.23.8
|
toolchain go1.24.2
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Xuanwo/go-locale v1.1.3
|
github.com/Xuanwo/go-locale v1.1.3
|
||||||
|
@ -14,15 +14,15 @@ require (
|
||||||
github.com/go-resty/resty/v2 v2.16.5
|
github.com/go-resty/resty/v2 v2.16.5
|
||||||
github.com/jarcoal/httpmock v1.3.1
|
github.com/jarcoal/httpmock v1.3.1
|
||||||
github.com/manifoldco/promptui v0.9.0
|
github.com/manifoldco/promptui v0.9.0
|
||||||
github.com/pelletier/go-toml/v2 v2.2.3
|
github.com/pelletier/go-toml/v2 v2.2.4
|
||||||
github.com/shkh/lastfm-go v0.0.0-20191215035245-89a801c244e0
|
github.com/shkh/lastfm-go v0.0.0-20191215035245-89a801c244e0
|
||||||
github.com/spf13/cast v1.7.1
|
github.com/spf13/cast v1.7.1
|
||||||
github.com/spf13/cobra v1.9.1
|
github.com/spf13/cobra v1.9.1
|
||||||
github.com/spf13/viper v1.20.1
|
github.com/spf13/viper v1.20.1
|
||||||
github.com/stretchr/testify v1.10.0
|
github.com/stretchr/testify v1.10.0
|
||||||
github.com/vbauerster/mpb/v8 v8.9.3
|
github.com/vbauerster/mpb/v8 v8.9.3
|
||||||
go.uploadedlobster.com/mbtypes v0.2.0
|
go.uploadedlobster.com/mbtypes v0.4.0
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
|
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0
|
||||||
golang.org/x/oauth2 v0.29.0
|
golang.org/x/oauth2 v0.29.0
|
||||||
golang.org/x/text v0.24.0
|
golang.org/x/text v0.24.0
|
||||||
gorm.io/datatypes v1.2.5
|
gorm.io/datatypes v1.2.5
|
||||||
|
@ -38,7 +38,7 @@ require (
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||||
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
||||||
github.com/go-sql-driver/mysql v1.9.1 // indirect
|
github.com/go-sql-driver/mysql v1.9.2 // indirect
|
||||||
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
|
@ -57,8 +57,11 @@ require (
|
||||||
github.com/spf13/pflag v1.0.6 // indirect
|
github.com/spf13/pflag v1.0.6 // indirect
|
||||||
github.com/subosito/gotenv v1.6.0 // indirect
|
github.com/subosito/gotenv v1.6.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
golang.org/x/net v0.38.0 // indirect
|
golang.org/x/mod v0.24.0 // indirect
|
||||||
|
golang.org/x/net v0.39.0 // indirect
|
||||||
|
golang.org/x/sync v0.13.0 // indirect
|
||||||
golang.org/x/sys v0.32.0 // indirect
|
golang.org/x/sys v0.32.0 // indirect
|
||||||
|
golang.org/x/tools v0.32.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
gorm.io/driver/mysql v1.5.7 // indirect
|
gorm.io/driver/mysql v1.5.7 // indirect
|
||||||
modernc.org/libc v1.62.1 // indirect
|
modernc.org/libc v1.62.1 // indirect
|
||||||
|
@ -66,3 +69,5 @@ require (
|
||||||
modernc.org/memory v1.9.1 // indirect
|
modernc.org/memory v1.9.1 // indirect
|
||||||
modernc.org/sqlite v1.37.0 // indirect
|
modernc.org/sqlite v1.37.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
|
tool golang.org/x/text/cmd/gotext
|
||||||
|
|
28
go.sum
28
go.sum
|
@ -43,8 +43,8 @@ github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7b
|
||||||
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
|
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
|
||||||
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
|
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
|
||||||
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||||
github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI=
|
github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU=
|
||||||
github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
||||||
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
|
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
|
||||||
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
|
||||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
||||||
|
@ -93,8 +93,8 @@ github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP
|
||||||
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
|
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
|
||||||
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
||||||
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
|
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
|
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||||
|
@ -129,16 +129,16 @@ github.com/vbauerster/mpb/v8 v8.9.3 h1:PnMeF+sMvYv9u23l6DO6Q3+Mdj408mjLRXIzmUmU2
|
||||||
github.com/vbauerster/mpb/v8 v8.9.3/go.mod h1:hxS8Hz4C6ijnppDSIX6LjG8FYJSoPo9iIOcE53Zik0c=
|
github.com/vbauerster/mpb/v8 v8.9.3/go.mod h1:hxS8Hz4C6ijnppDSIX6LjG8FYJSoPo9iIOcE53Zik0c=
|
||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
go.uploadedlobster.com/mbtypes v0.2.0 h1:sV9WM5fY8KnnKwKKVRaU3JBEKP4zD7aUX0XQfNZvEdo=
|
go.uploadedlobster.com/mbtypes v0.4.0 h1:D5asCgHsRWufj4Yn5u0IuH2J9z1UuYImYkYIp1Z1Q7s=
|
||||||
go.uploadedlobster.com/mbtypes v0.2.0/go.mod h1:/ZpwXc8oRpDa7EWeGI9xEY+nGhMIVHhTruikZWD4Krg=
|
go.uploadedlobster.com/mbtypes v0.4.0/go.mod h1:Bu1K1Hl77QTAE2Z7QKiW/JAp9KqYWQebkRRfG02dlZM=
|
||||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
||||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
|
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM=
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
|
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8=
|
||||||
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
|
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
|
||||||
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
||||||
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
|
||||||
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
|
||||||
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
|
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
|
||||||
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
|
||||||
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
||||||
|
@ -152,8 +152,8 @@ golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
|
||||||
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
||||||
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
|
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
|
||||||
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||||
golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
|
golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
|
||||||
golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
|
golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|
|
@ -42,56 +42,56 @@ var messageKeyToIndex = map[string]int{
|
||||||
"\tbackend: %v": 11,
|
"\tbackend: %v": 11,
|
||||||
"\texport: %s": 0,
|
"\texport: %s": 0,
|
||||||
"\timport: %s\n": 1,
|
"\timport: %s\n": 1,
|
||||||
"%v: %v": 52,
|
"%v: %v": 47,
|
||||||
"Aborted": 8,
|
"Aborted": 8,
|
||||||
"Access token": 19,
|
"Access token": 19,
|
||||||
"Access token received, you can use %v now.\n": 28,
|
"Access token received, you can use %v now.\n": 33,
|
||||||
"Append to file": 21,
|
"Append to file": 21,
|
||||||
"Backend": 36,
|
"Backend": 41,
|
||||||
"Check for duplicate listens on import (slower)": 45,
|
"Check for duplicate listens on import (slower)": 24,
|
||||||
"Client ID": 15,
|
"Client ID": 15,
|
||||||
"Client secret": 16,
|
"Client secret": 16,
|
||||||
"Delete the service configuration \"%v\"?": 7,
|
"Delete the service configuration \"%v\"?": 7,
|
||||||
"Directory path": 47,
|
"Directory path": 27,
|
||||||
"Disable auto correction of submitted listens": 24,
|
"Disable auto correction of submitted listens": 25,
|
||||||
"Error: OAuth state mismatch": 27,
|
"Error: OAuth state mismatch": 32,
|
||||||
"Failed reading config: %v": 2,
|
"Failed reading config: %v": 2,
|
||||||
"File path": 20,
|
"File path": 20,
|
||||||
"From timestamp: %v (%v)": 38,
|
"From timestamp: %v (%v)": 43,
|
||||||
"Ignore listens in incognito mode": 48,
|
"Ignore listens in incognito mode": 28,
|
||||||
"Ignore skipped listens": 49,
|
"Ignore skipped listens": 29,
|
||||||
"Ignored duplicate listen %v: \"%v\" by %v (%v)": 46,
|
"Ignored duplicate listen %v: \"%v\" by %v (%v)": 53,
|
||||||
"Import failed, last reported timestamp was %v (%s)": 39,
|
"Import failed, last reported timestamp was %v (%s)": 44,
|
||||||
"Import log:": 51,
|
"Import log:": 46,
|
||||||
"Imported %v of %v %s into %v.": 40,
|
"Imported %v of %v %s into %v.": 45,
|
||||||
"Include skipped listens": 25,
|
"Include skipped listens": 26,
|
||||||
"Latest timestamp: %v (%v)": 41,
|
"Latest timestamp: %v (%v)": 49,
|
||||||
"Minimum playback duration for skipped tracks (seconds)": 50,
|
"Minimum playback duration for skipped tracks (seconds)": 30,
|
||||||
"No": 33,
|
"No": 38,
|
||||||
"Playlist title": 22,
|
"Playlist title": 22,
|
||||||
"Saved service %v using backend %v": 5,
|
"Saved service %v using backend %v": 5,
|
||||||
"Server URL": 17,
|
"Server URL": 17,
|
||||||
"Service": 35,
|
"Service": 40,
|
||||||
"Service \"%v\" deleted\n": 9,
|
"Service \"%v\" deleted\n": 9,
|
||||||
"Service name": 3,
|
"Service name": 3,
|
||||||
"The backend %v requires authentication. Authenticate now?": 6,
|
"The backend %v requires authentication. Authenticate now?": 6,
|
||||||
"Token received, you can close this window now.": 12,
|
"Token received, you can close this window now.": 12,
|
||||||
"Transferring %s from %s to %s...": 37,
|
"Transferring %s from %s to %s...": 42,
|
||||||
"Unique playlist identifier": 23,
|
"Unique playlist identifier": 23,
|
||||||
"Updated service %v using backend %v\n": 10,
|
"Updated service %v using backend %v\n": 10,
|
||||||
"User name": 18,
|
"User name": 18,
|
||||||
"Visit the URL for authorization: %v": 26,
|
"Visit the URL for authorization: %v": 31,
|
||||||
"Yes": 32,
|
"Yes": 37,
|
||||||
"a service with this name already exists": 4,
|
"a service with this name already exists": 4,
|
||||||
"backend %s does not implement %s": 13,
|
"backend %s does not implement %s": 13,
|
||||||
"done": 31,
|
"done": 36,
|
||||||
"exporting": 29,
|
"exporting": 34,
|
||||||
"importing": 30,
|
"importing": 35,
|
||||||
"invalid timestamp string \"%v\"": 53,
|
"invalid timestamp string \"%v\"": 48,
|
||||||
"key must only consist of A-Za-z0-9_-": 43,
|
"key must only consist of A-Za-z0-9_-": 51,
|
||||||
"no configuration file defined, cannot write config": 42,
|
"no configuration file defined, cannot write config": 50,
|
||||||
"no existing service configurations": 34,
|
"no existing service configurations": 39,
|
||||||
"no service configuration \"%v\"": 44,
|
"no service configuration \"%v\"": 52,
|
||||||
"unknown backend \"%s\"": 14,
|
"unknown backend \"%s\"": 14,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,18 +103,18 @@ var deIndex = []uint32{ // 55 elements
|
||||||
0x000001ac, 0x000001e7, 0x00000213, 0x00000233,
|
0x000001ac, 0x000001e7, 0x00000213, 0x00000233,
|
||||||
0x0000023d, 0x0000024b, 0x00000256, 0x00000263,
|
0x0000023d, 0x0000024b, 0x00000256, 0x00000263,
|
||||||
0x00000271, 0x0000027b, 0x0000028e, 0x000002a1,
|
0x00000271, 0x0000027b, 0x0000028e, 0x000002a1,
|
||||||
0x000002b8, 0x000002ec, 0x0000030d, 0x00000333,
|
0x000002b8, 0x000002ed, 0x00000321, 0x00000342,
|
||||||
0x0000035d, 0x0000039d, 0x000003a8, 0x000003b3,
|
0x00000352, 0x00000378, 0x0000039a, 0x000003d8,
|
||||||
// Entry 20 - 3F
|
// Entry 20 - 3F
|
||||||
0x000003ba, 0x000003bd, 0x000003c2, 0x000003eb,
|
0x000003fe, 0x00000428, 0x00000468, 0x00000473,
|
||||||
0x000003f3, 0x000003fb, 0x00000424, 0x00000442,
|
0x0000047e, 0x00000485, 0x00000488, 0x0000048d,
|
||||||
0x0000047f, 0x000004aa, 0x000004cd, 0x0000051e,
|
0x000004b6, 0x000004be, 0x000004c6, 0x000004ef,
|
||||||
0x00000555, 0x0000057c, 0x0000057c, 0x0000057c,
|
0x0000050d, 0x0000054a, 0x00000575, 0x00000580,
|
||||||
0x0000057c, 0x0000057c, 0x0000057c, 0x0000057c,
|
0x0000058d, 0x000005b1, 0x000005d4, 0x00000625,
|
||||||
0x0000057c, 0x0000057c, 0x0000057c,
|
0x0000065c, 0x00000683, 0x00000683,
|
||||||
} // Size: 244 bytes
|
} // Size: 244 bytes
|
||||||
|
|
||||||
const deData string = "" + // Size: 1404 bytes
|
const deData string = "" + // Size: 1667 bytes
|
||||||
"\x04\x01\x09\x00\x0e\x02Export: %[1]s\x04\x01\x09\x01\x0a\x0e\x02Import:" +
|
"\x04\x01\x09\x00\x0e\x02Export: %[1]s\x04\x01\x09\x01\x0a\x0e\x02Import:" +
|
||||||
" %[1]s\x02Fehler beim Lesen der Konfiguration: %[1]v\x02Servicename\x02e" +
|
" %[1]s\x02Fehler beim Lesen der Konfiguration: %[1]v\x02Servicename\x02e" +
|
||||||
"in Service mit diesem Namen existiert bereits\x02Service %[1]v mit dem B" +
|
"in Service mit diesem Namen existiert bereits\x02Service %[1]v mit dem B" +
|
||||||
|
@ -126,18 +126,22 @@ const deData string = "" + // Size: 1404 bytes
|
||||||
" geschlossen werden.\x02das backend %[1]s implementiert %[2]s nicht\x02u" +
|
" geschlossen werden.\x02das backend %[1]s implementiert %[2]s nicht\x02u" +
|
||||||
"nbekanntes Backend „%[1]s“\x02Client-ID\x02Client-Secret\x02Server-URL" +
|
"nbekanntes Backend „%[1]s“\x02Client-ID\x02Client-Secret\x02Server-URL" +
|
||||||
"\x02Benutzername\x02Zugriffstoken\x02Dateipfad\x02An Datei anhängen\x02T" +
|
"\x02Benutzername\x02Zugriffstoken\x02Dateipfad\x02An Datei anhängen\x02T" +
|
||||||
"itel der Playlist\x02Eindeutige Playlist-ID\x02Autokorrektur für übermit" +
|
"itel der Playlist\x02Eindeutige Playlist-ID\x02Beim Import auf Listen-Du" +
|
||||||
"telte Titel deaktivieren\x02Übersprungene Titel einbeziehen\x02URL für A" +
|
"plikate prüfen (langsamer)\x02Autokorrektur für übermittelte Titel deakt" +
|
||||||
"utorisierung öffnen: %[1]v\x02Fehler: OAuth-State stimmt nicht überein" +
|
"ivieren\x02Übersprungene Titel einbeziehen\x02Verzeichnispfad\x02Listens" +
|
||||||
"\x04\x00\x01\x0a;\x02Zugriffstoken erhalten, %[1]v kann jetzt verwendet " +
|
" im Inkognito-Modus ignorieren\x02Übersprungene Listens ignorieren\x02Mi" +
|
||||||
"werden.\x02exportiere\x02importiere\x02fertig\x02Ja\x02Nein\x02keine bes" +
|
"nimale Wiedergabedauer für übersprungene Titel (Sekunden)\x02URL für Aut" +
|
||||||
"tehenden Servicekonfigurationen\x02Service\x02Backend\x02Übertrage %[1]s" +
|
"orisierung öffnen: %[1]v\x02Fehler: OAuth-State stimmt nicht überein\x04" +
|
||||||
" von %[2]s nach %[3]s...\x02Ab Zeitstempel: %[1]v (%[2]v)\x02Import fehl" +
|
"\x00\x01\x0a;\x02Zugriffstoken erhalten, %[1]v kann jetzt verwendet werd" +
|
||||||
"geschlagen, letzter Zeitstempel war %[1]v (%[2]s)\x02%[1]v von %[2]v %[3" +
|
"en.\x02exportiere\x02importiere\x02fertig\x02Ja\x02Nein\x02keine bestehe" +
|
||||||
"]s in %[4]v importiert.\x02Letzter Zeitstempel: %[1]v (%[2]v)\x02keine K" +
|
"nden Servicekonfigurationen\x02Service\x02Backend\x02Übertrage %[1]s von" +
|
||||||
"onfigurationsdatei definiert, Konfiguration kann nicht geschrieben werde" +
|
" %[2]s nach %[3]s...\x02Ab Zeitstempel: %[1]v (%[2]v)\x02Import fehlgesc" +
|
||||||
"n\x02Schlüssel darf nur die Zeichen A-Za-z0-9_- beinhalten\x02keine Serv" +
|
"hlagen, letzter Zeitstempel war %[1]v (%[2]s)\x02%[1]v von %[2]v %[3]s i" +
|
||||||
"icekonfiguration „%[1]v“"
|
"n %[4]v importiert.\x02Importlog:\x02%[1]v: %[2]v\x02ungültiger Zeitstem" +
|
||||||
|
"pel „%[1]v“\x02Letzter Zeitstempel: %[1]v (%[2]v)\x02keine Konfiguration" +
|
||||||
|
"sdatei definiert, Konfiguration kann nicht geschrieben werden\x02Schlüss" +
|
||||||
|
"el darf nur die Zeichen A-Za-z0-9_- beinhalten\x02keine Servicekonfigura" +
|
||||||
|
"tion „%[1]v“"
|
||||||
|
|
||||||
var enIndex = []uint32{ // 55 elements
|
var enIndex = []uint32{ // 55 elements
|
||||||
// Entry 0 - 1F
|
// Entry 0 - 1F
|
||||||
|
@ -147,15 +151,15 @@ var enIndex = []uint32{ // 55 elements
|
||||||
0x00000170, 0x0000019f, 0x000001c6, 0x000001de,
|
0x00000170, 0x0000019f, 0x000001c6, 0x000001de,
|
||||||
0x000001e8, 0x000001f6, 0x00000201, 0x0000020b,
|
0x000001e8, 0x000001f6, 0x00000201, 0x0000020b,
|
||||||
0x00000218, 0x00000222, 0x00000231, 0x00000240,
|
0x00000218, 0x00000222, 0x00000231, 0x00000240,
|
||||||
0x0000025b, 0x00000288, 0x000002a0, 0x000002c7,
|
0x0000025b, 0x0000028a, 0x000002b7, 0x000002cf,
|
||||||
0x000002e3, 0x00000316, 0x00000320, 0x0000032a,
|
0x000002de, 0x000002ff, 0x00000316, 0x0000034d,
|
||||||
// Entry 20 - 3F
|
// Entry 20 - 3F
|
||||||
0x0000032f, 0x00000333, 0x00000336, 0x00000359,
|
0x00000374, 0x00000390, 0x000003c3, 0x000003cd,
|
||||||
0x00000361, 0x00000369, 0x00000393, 0x000003b1,
|
0x000003d7, 0x000003dc, 0x000003e0, 0x000003e3,
|
||||||
0x000003ea, 0x00000414, 0x00000434, 0x00000467,
|
0x00000406, 0x0000040e, 0x00000416, 0x00000440,
|
||||||
0x0000048c, 0x000004ad, 0x000004dc, 0x00000515,
|
0x0000045e, 0x00000497, 0x000004c1, 0x000004cd,
|
||||||
0x00000524, 0x00000545, 0x0000055c, 0x00000593,
|
0x000004da, 0x000004fb, 0x0000051b, 0x0000054e,
|
||||||
0x0000059f, 0x000005ac, 0x000005cd,
|
0x00000573, 0x00000594, 0x000005cd,
|
||||||
} // Size: 244 bytes
|
} // Size: 244 bytes
|
||||||
|
|
||||||
const enData string = "" + // Size: 1485 bytes
|
const enData string = "" + // Size: 1485 bytes
|
||||||
|
@ -169,20 +173,20 @@ const enData string = "" + // Size: 1485 bytes
|
||||||
"eceived, you can close this window now.\x02backend %[1]s does not implem" +
|
"eceived, you can close this window now.\x02backend %[1]s does not implem" +
|
||||||
"ent %[2]s\x02unknown backend \x22%[1]s\x22\x02Client ID\x02Client secret" +
|
"ent %[2]s\x02unknown backend \x22%[1]s\x22\x02Client ID\x02Client secret" +
|
||||||
"\x02Server URL\x02User name\x02Access token\x02File path\x02Append to fi" +
|
"\x02Server URL\x02User name\x02Access token\x02File path\x02Append to fi" +
|
||||||
"le\x02Playlist title\x02Unique playlist identifier\x02Disable auto corre" +
|
"le\x02Playlist title\x02Unique playlist identifier\x02Check for duplicat" +
|
||||||
"ction of submitted listens\x02Include skipped listens\x02Visit the URL f" +
|
"e listens on import (slower)\x02Disable auto correction of submitted lis" +
|
||||||
"or authorization: %[1]v\x02Error: OAuth state mismatch\x04\x00\x01\x0a." +
|
"tens\x02Include skipped listens\x02Directory path\x02Ignore listens in i" +
|
||||||
"\x02Access token received, you can use %[1]v now.\x02exporting\x02import" +
|
"ncognito mode\x02Ignore skipped listens\x02Minimum playback duration for" +
|
||||||
"ing\x02done\x02Yes\x02No\x02no existing service configurations\x02Servic" +
|
" skipped tracks (seconds)\x02Visit the URL for authorization: %[1]v\x02E" +
|
||||||
"e\x02Backend\x02Transferring %[1]s from %[2]s to %[3]s...\x02From timest" +
|
"rror: OAuth state mismatch\x04\x00\x01\x0a.\x02Access token received, yo" +
|
||||||
"amp: %[1]v (%[2]v)\x02Import failed, last reported timestamp was %[1]v (" +
|
"u can use %[1]v now.\x02exporting\x02importing\x02done\x02Yes\x02No\x02n" +
|
||||||
"%[2]s)\x02Imported %[1]v of %[2]v %[3]s into %[4]v.\x02Latest timestamp:" +
|
"o existing service configurations\x02Service\x02Backend\x02Transferring " +
|
||||||
" %[1]v (%[2]v)\x02no configuration file defined, cannot write config\x02" +
|
"%[1]s from %[2]s to %[3]s...\x02From timestamp: %[1]v (%[2]v)\x02Import " +
|
||||||
"key must only consist of A-Za-z0-9_-\x02no service configuration \x22%[1" +
|
"failed, last reported timestamp was %[1]v (%[2]s)\x02Imported %[1]v of %" +
|
||||||
"]v\x22\x02Check for duplicate listens on import (slower)\x02Ignored dupl" +
|
"[2]v %[3]s into %[4]v.\x02Import log:\x02%[1]v: %[2]v\x02invalid timesta" +
|
||||||
"icate listen %[1]v: \x22%[2]v\x22 by %[3]v (%[4]v)\x02Directory path\x02" +
|
"mp string \x22%[1]v\x22\x02Latest timestamp: %[1]v (%[2]v)\x02no configu" +
|
||||||
"Ignore listens in incognito mode\x02Ignore skipped listens\x02Minimum pl" +
|
"ration file defined, cannot write config\x02key must only consist of A-Z" +
|
||||||
"ayback duration for skipped tracks (seconds)\x02Import log:\x02%[1]v: %[" +
|
"a-z0-9_-\x02no service configuration \x22%[1]v\x22\x02Ignored duplicate " +
|
||||||
"2]v\x02invalid timestamp string \x22%[1]v\x22"
|
"listen %[1]v: \x22%[2]v\x22 by %[3]v (%[4]v)"
|
||||||
|
|
||||||
// Total table size 3377 bytes (3KiB); checksum: 6715024
|
// Total table size 3640 bytes (3KiB); checksum: 719A868A
|
||||||
|
|
|
@ -258,11 +258,11 @@
|
||||||
{
|
{
|
||||||
"id": "Check for duplicate listens on import (slower)",
|
"id": "Check for duplicate listens on import (slower)",
|
||||||
"message": "Check for duplicate listens on import (slower)",
|
"message": "Check for duplicate listens on import (slower)",
|
||||||
"translation": ""
|
"translation": "Beim Import auf Listen-Duplikate prüfen (langsamer)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})",
|
"id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})",
|
||||||
"message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})",
|
"message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})",
|
||||||
"translation": "",
|
"translation": "",
|
||||||
"placeholders": [
|
"placeholders": [
|
||||||
{
|
{
|
||||||
|
@ -290,12 +290,12 @@
|
||||||
"expr": "l.ArtistName()"
|
"expr": "l.ArtistName()"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "RecordingMbid",
|
"id": "RecordingMBID",
|
||||||
"string": "%[4]v",
|
"string": "%[4]v",
|
||||||
"type": "go.uploadedlobster.com/scotty/internal/models.MBID",
|
"type": "go.uploadedlobster.com/mbtypes.MBID",
|
||||||
"underlyingType": "string",
|
"underlyingType": "string",
|
||||||
"argNum": 4,
|
"argNum": 4,
|
||||||
"expr": "l.RecordingMbid"
|
"expr": "l.RecordingMBID"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -312,22 +312,22 @@
|
||||||
{
|
{
|
||||||
"id": "Directory path",
|
"id": "Directory path",
|
||||||
"message": "Directory path",
|
"message": "Directory path",
|
||||||
"translation": ""
|
"translation": "Verzeichnispfad"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Ignore listens in incognito mode",
|
"id": "Ignore listens in incognito mode",
|
||||||
"message": "Ignore listens in incognito mode",
|
"message": "Ignore listens in incognito mode",
|
||||||
"translation": ""
|
"translation": "Listens im Inkognito-Modus ignorieren"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Ignore skipped listens",
|
"id": "Ignore skipped listens",
|
||||||
"message": "Ignore skipped listens",
|
"message": "Ignore skipped listens",
|
||||||
"translation": ""
|
"translation": "Übersprungene Listens ignorieren"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Minimum playback duration for skipped tracks (seconds)",
|
"id": "Minimum playback duration for skipped tracks (seconds)",
|
||||||
"message": "Minimum playback duration for skipped tracks (seconds)",
|
"message": "Minimum playback duration for skipped tracks (seconds)",
|
||||||
"translation": ""
|
"translation": "Minimale Wiedergabedauer für übersprungene Titel (Sekunden)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Visit the URL for authorization: {Url}",
|
"id": "Visit the URL for authorization: {Url}",
|
||||||
|
@ -525,12 +525,12 @@
|
||||||
{
|
{
|
||||||
"id": "Import log:",
|
"id": "Import log:",
|
||||||
"message": "Import log:",
|
"message": "Import log:",
|
||||||
"translation": ""
|
"translation": "Importlog:"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "{Type}: {Message}",
|
"id": "{Type}: {Message}",
|
||||||
"message": "{Type}: {Message}",
|
"message": "{Type}: {Message}",
|
||||||
"translation": "",
|
"translation": "{Type}: {Message}",
|
||||||
"placeholders": [
|
"placeholders": [
|
||||||
{
|
{
|
||||||
"id": "Type",
|
"id": "Type",
|
||||||
|
@ -553,7 +553,7 @@
|
||||||
{
|
{
|
||||||
"id": "invalid timestamp string \"{FlagValue}\"",
|
"id": "invalid timestamp string \"{FlagValue}\"",
|
||||||
"message": "invalid timestamp string \"{FlagValue}\"",
|
"message": "invalid timestamp string \"{FlagValue}\"",
|
||||||
"translation": "",
|
"translation": "ungültiger Zeitstempel „{FlagValue}“",
|
||||||
"placeholders": [
|
"placeholders": [
|
||||||
{
|
{
|
||||||
"id": "FlagValue",
|
"id": "FlagValue",
|
||||||
|
|
|
@ -311,9 +311,9 @@
|
||||||
"fuzzy": true
|
"fuzzy": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})",
|
"id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})",
|
||||||
"message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})",
|
"message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})",
|
||||||
"translation": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})",
|
"translation": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})",
|
||||||
"translatorComment": "Copied from source.",
|
"translatorComment": "Copied from source.",
|
||||||
"placeholders": [
|
"placeholders": [
|
||||||
{
|
{
|
||||||
|
@ -341,12 +341,12 @@
|
||||||
"expr": "l.ArtistName()"
|
"expr": "l.ArtistName()"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "RecordingMbid",
|
"id": "RecordingMBID",
|
||||||
"string": "%[4]v",
|
"string": "%[4]v",
|
||||||
"type": "go.uploadedlobster.com/scotty/internal/models.MBID",
|
"type": "go.uploadedlobster.com/mbtypes.MBID",
|
||||||
"underlyingType": "string",
|
"underlyingType": "string",
|
||||||
"argNum": 4,
|
"argNum": 4,
|
||||||
"expr": "l.RecordingMbid"
|
"expr": "l.RecordingMBID"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"fuzzy": true
|
"fuzzy": true
|
||||||
|
|
|
@ -6,4 +6,4 @@ package are published under the conditions of CC0 1.0 Universal (CC0 1.0)
|
||||||
|
|
||||||
package translations
|
package translations
|
||||||
|
|
||||||
//go:generate gotext -srclang=en update -out=catalog.go -lang=en,de go.uploadedlobster.com/scotty
|
//go:generate go tool gotext -srclang=en update -out=catalog.go -lang=en,de go.uploadedlobster.com/scotty
|
||||||
|
|
Loading…
Add table
Reference in a new issue