mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-03-09 21:03:55 +00:00
Compare commits
7 Commits
4b3a8daf46
...
9d404bb0cc
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d404bb0cc | |||
| 4a4c0fe055 | |||
| fd9ae2c23d | |||
| b6d2bcd42f | |||
| 021972520a | |||
| 90e949d4e9 | |||
| 208e57bdd3 |
@ -67,7 +67,7 @@
|
||||
"@electron-toolkit/tsconfig": "2.0.0",
|
||||
"@electron/remote": "2.1.3",
|
||||
"@ffmpeg.wasm/core-mt": "0.12.0",
|
||||
"@ffmpeg.wasm/main": "0.12.0",
|
||||
"@ffmpeg.wasm/main": "0.13.1",
|
||||
"@floating-ui/dom": "1.7.5",
|
||||
"@foobar404/wave": "2.0.5",
|
||||
"@ghostery/adblocker-electron": "2.13.4",
|
||||
@ -89,6 +89,7 @@
|
||||
"bgutils-js": "3.2.0",
|
||||
"butterchurn": "3.0.0-beta.5",
|
||||
"butterchurn-presets": "3.0.0-beta.4",
|
||||
"chinese-conv": "^4.0.0",
|
||||
"color": "5.0.3",
|
||||
"conf": "15.0.2",
|
||||
"custom-electron-prompt": "1.6.1",
|
||||
@ -121,6 +122,7 @@
|
||||
"node-html-parser": "7.0.2",
|
||||
"node-id3": "0.2.9",
|
||||
"peerjs": "1.5.5",
|
||||
"pinyin-pro": "^3.27.0",
|
||||
"semver": "7.7.3",
|
||||
"serve": "14.2.5",
|
||||
"socks": "2.8.7",
|
||||
@ -129,7 +131,6 @@
|
||||
"solid-js": "1.9.11",
|
||||
"solid-styled-components": "0.28.5",
|
||||
"solid-transition-group": "0.3.0",
|
||||
"tiny-pinyin": "1.3.2",
|
||||
"tinyld": "1.3.4",
|
||||
"virtua": "0.48.5",
|
||||
"vudio": "2.1.1",
|
||||
|
||||
117
pnpm-lock.yaml
generated
117
pnpm-lock.yaml
generated
@ -49,8 +49,8 @@ importers:
|
||||
specifier: 0.12.0
|
||||
version: 0.12.0
|
||||
'@ffmpeg.wasm/main':
|
||||
specifier: 0.12.0
|
||||
version: 0.12.0
|
||||
specifier: 0.13.1
|
||||
version: 0.13.1
|
||||
'@floating-ui/dom':
|
||||
specifier: 1.7.5
|
||||
version: 1.7.5
|
||||
@ -114,6 +114,9 @@ importers:
|
||||
butterchurn-presets:
|
||||
specifier: 3.0.0-beta.4
|
||||
version: 3.0.0-beta.4
|
||||
chinese-conv:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
color:
|
||||
specifier: 5.0.3
|
||||
version: 5.0.3
|
||||
@ -210,6 +213,9 @@ importers:
|
||||
peerjs:
|
||||
specifier: 1.5.5
|
||||
version: 1.5.5
|
||||
pinyin-pro:
|
||||
specifier: ^3.27.0
|
||||
version: 3.27.0
|
||||
semver:
|
||||
specifier: 7.7.3
|
||||
version: 7.7.3
|
||||
@ -234,9 +240,6 @@ importers:
|
||||
solid-transition-group:
|
||||
specifier: 0.3.0
|
||||
version: 0.3.0(solid-js@1.9.11)
|
||||
tiny-pinyin:
|
||||
specifier: 1.3.2
|
||||
version: 1.3.2
|
||||
tinyld:
|
||||
specifier: 1.3.4
|
||||
version: 1.3.4
|
||||
@ -761,9 +764,9 @@ packages:
|
||||
'@ffmpeg.wasm/core-mt@0.12.0':
|
||||
resolution: {integrity: sha512-M9pjL7JQX4AYl3WI8vGcPGPTz/O7JmhW8ac/fHA3oXTxoRAPwYSY/OsY1N9C0XahIM0+fxa1QSLN9Ekz8sBM/Q==}
|
||||
|
||||
'@ffmpeg.wasm/main@0.12.0':
|
||||
resolution: {integrity: sha512-LILAKTrU3Rga2iXLsF9jeFxe2hNQFjWlrKuXPWSdCFeQ7Kg69fO4WwjNJ0CzjOyO6qtndRQMNKqf//N4fLYUBA==}
|
||||
engines: {node: '>=12.16.1'}
|
||||
'@ffmpeg.wasm/main@0.13.1':
|
||||
resolution: {integrity: sha512-WoEd9xp/N9VWddZ3y1cdRK/el52ZKLoqOS+BNQZcsbLQpkQuHrFG93+zY4VjMZ0aWno4pQG4TSgLzsexpukpHw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
|
||||
'@floating-ui/core@1.7.4':
|
||||
resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==}
|
||||
@ -1306,9 +1309,6 @@ packages:
|
||||
'@types/node@24.10.9':
|
||||
resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
|
||||
|
||||
'@types/node@25.1.0':
|
||||
resolution: {integrity: sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==}
|
||||
|
||||
'@types/node@25.2.0':
|
||||
resolution: {integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==}
|
||||
|
||||
@ -1830,6 +1830,10 @@ packages:
|
||||
resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==}
|
||||
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
||||
|
||||
chinese-conv@4.0.0:
|
||||
resolution: {integrity: sha512-PVBMzvv6CtX1cubaDXfxYscIdbOAHPuY/E2vnfJIzOACX+xIW4NRKRlNsZVI2p5KxGsXyUp7tVHfvQlqZ4yx/w==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
|
||||
chownr@3.0.0:
|
||||
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
|
||||
engines: {node: '>=18'}
|
||||
@ -1993,10 +1997,6 @@ packages:
|
||||
electron:
|
||||
optional: true
|
||||
|
||||
data-uri-to-buffer@4.0.1:
|
||||
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
|
||||
engines: {node: '>= 12'}
|
||||
|
||||
data-view-buffer@1.0.2:
|
||||
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -2545,10 +2545,6 @@ packages:
|
||||
picomatch:
|
||||
optional: true
|
||||
|
||||
fetch-blob@3.2.0:
|
||||
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
|
||||
engines: {node: ^12.20 || >= 14.13}
|
||||
|
||||
fflate@0.8.2:
|
||||
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
|
||||
|
||||
@ -2598,10 +2594,6 @@ packages:
|
||||
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
formdata-polyfill@4.0.10:
|
||||
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
|
||||
from@0.1.7:
|
||||
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
|
||||
|
||||
@ -2701,16 +2693,16 @@ packages:
|
||||
glob@11.1.0:
|
||||
resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==}
|
||||
engines: {node: 20 || >=22}
|
||||
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
hasBin: true
|
||||
|
||||
glob@13.0.0:
|
||||
resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==}
|
||||
engines: {node: 20 || >=22}
|
||||
hasBin: true
|
||||
|
||||
glob@7.2.3:
|
||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||
deprecated: Glob versions prior to v9 are no longer supported
|
||||
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
|
||||
global-agent@3.0.0:
|
||||
resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
|
||||
@ -3038,9 +3030,6 @@ packages:
|
||||
resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
is-url@1.2.4:
|
||||
resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
|
||||
|
||||
is-weakmap@2.0.2:
|
||||
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -3514,15 +3503,6 @@ packages:
|
||||
node-api-version@0.2.1:
|
||||
resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==}
|
||||
|
||||
node-domexception@1.0.0:
|
||||
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
|
||||
engines: {node: '>=10.5.0'}
|
||||
deprecated: Use your platform's native DOMException instead
|
||||
|
||||
node-fetch@3.3.2:
|
||||
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
||||
node-gyp-build@4.8.4:
|
||||
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
|
||||
hasBin: true
|
||||
@ -3740,6 +3720,9 @@ packages:
|
||||
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
pinyin-pro@3.27.0:
|
||||
resolution: {integrity: sha512-Osdgjwe7Rm17N2paDMM47yW+jUIUH3+0RGo8QP39ZTLpTaJVDK0T58hOLaMQJbcMmAebVuK2ePunTEVEx1clNQ==}
|
||||
|
||||
pixelmatch@5.3.0:
|
||||
resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==}
|
||||
hasBin: true
|
||||
@ -3863,9 +3846,6 @@ packages:
|
||||
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
regenerator-runtime@0.13.11:
|
||||
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
|
||||
|
||||
regexp.prototype.flags@1.5.4:
|
||||
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -4294,6 +4274,7 @@ packages:
|
||||
tar@7.5.7:
|
||||
resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
|
||||
engines: {node: '>=18'}
|
||||
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
|
||||
temp-file@3.4.0:
|
||||
resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==}
|
||||
@ -4308,9 +4289,6 @@ packages:
|
||||
tiny-async-pool@1.3.0:
|
||||
resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==}
|
||||
|
||||
tiny-pinyin@1.3.2:
|
||||
resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==}
|
||||
|
||||
tiny-typed-emitter@2.1.0:
|
||||
resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==}
|
||||
|
||||
@ -4565,10 +4543,6 @@ packages:
|
||||
wcwidth@1.0.1:
|
||||
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
|
||||
|
||||
web-streams-polyfill@3.3.3:
|
||||
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
webrtc-adapter@9.0.3:
|
||||
resolution: {integrity: sha512-5fALBcroIl31OeXAdd1YUntxiZl1eHlZZWzNg3U4Fn+J9/cGL3eT80YlrsWGvj2ojuz1rZr2OXkgCzIxAZ7vRQ==}
|
||||
engines: {node: '>=6.0.0', npm: '>=3.10.0'}
|
||||
@ -5126,11 +5100,7 @@ snapshots:
|
||||
|
||||
'@ffmpeg.wasm/core-mt@0.12.0': {}
|
||||
|
||||
'@ffmpeg.wasm/main@0.12.0':
|
||||
dependencies:
|
||||
is-url: 1.2.4
|
||||
node-fetch: 3.3.2
|
||||
regenerator-runtime: 0.13.11
|
||||
'@ffmpeg.wasm/main@0.13.1': {}
|
||||
|
||||
'@floating-ui/core@1.7.4':
|
||||
dependencies:
|
||||
@ -5716,7 +5686,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/http-cache-semantics': 4.2.0
|
||||
'@types/keyv': 3.1.4
|
||||
'@types/node': 25.1.0
|
||||
'@types/node': 25.2.0
|
||||
'@types/responselike': 1.0.3
|
||||
|
||||
'@types/debug@4.1.12':
|
||||
@ -5747,7 +5717,7 @@ snapshots:
|
||||
|
||||
'@types/keyv@3.1.4':
|
||||
dependencies:
|
||||
'@types/node': 25.1.0
|
||||
'@types/node': 25.2.0
|
||||
|
||||
'@types/ms@2.1.0': {}
|
||||
|
||||
@ -5757,10 +5727,6 @@ snapshots:
|
||||
dependencies:
|
||||
undici-types: 7.16.0
|
||||
|
||||
'@types/node@25.1.0':
|
||||
dependencies:
|
||||
undici-types: 7.16.0
|
||||
|
||||
'@types/node@25.2.0':
|
||||
dependencies:
|
||||
undici-types: 7.16.0
|
||||
@ -5773,7 +5739,7 @@ snapshots:
|
||||
|
||||
'@types/responselike@1.0.3':
|
||||
dependencies:
|
||||
'@types/node': 25.1.0
|
||||
'@types/node': 25.2.0
|
||||
|
||||
'@types/semver@7.7.1': {}
|
||||
|
||||
@ -5790,7 +5756,7 @@ snapshots:
|
||||
|
||||
'@types/yauzl@2.10.3':
|
||||
dependencies:
|
||||
'@types/node': 25.1.0
|
||||
'@types/node': 25.2.0
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
|
||||
@ -6359,6 +6325,8 @@ snapshots:
|
||||
|
||||
chalk@5.0.1: {}
|
||||
|
||||
chinese-conv@4.0.0: {}
|
||||
|
||||
chownr@3.0.0: {}
|
||||
|
||||
chromium-pickle-js@0.2.0: {}
|
||||
@ -6517,8 +6485,6 @@ snapshots:
|
||||
optionalDependencies:
|
||||
electron: 40.1.0
|
||||
|
||||
data-uri-to-buffer@4.0.1: {}
|
||||
|
||||
data-view-buffer@1.0.2:
|
||||
dependencies:
|
||||
call-bound: 1.0.4
|
||||
@ -7261,11 +7227,6 @@ snapshots:
|
||||
optionalDependencies:
|
||||
picomatch: 4.0.3
|
||||
|
||||
fetch-blob@3.2.0:
|
||||
dependencies:
|
||||
node-domexception: 1.0.0
|
||||
web-streams-polyfill: 3.3.3
|
||||
|
||||
fflate@0.8.2: {}
|
||||
|
||||
file-entry-cache@8.0.0:
|
||||
@ -7321,10 +7282,6 @@ snapshots:
|
||||
hasown: 2.0.2
|
||||
mime-types: 2.1.35
|
||||
|
||||
formdata-polyfill@4.0.10:
|
||||
dependencies:
|
||||
fetch-blob: 3.2.0
|
||||
|
||||
from@0.1.7: {}
|
||||
|
||||
fs-extra@10.1.0:
|
||||
@ -7789,8 +7746,6 @@ snapshots:
|
||||
|
||||
is-unicode-supported@0.1.0: {}
|
||||
|
||||
is-url@1.2.4: {}
|
||||
|
||||
is-weakmap@2.0.2: {}
|
||||
|
||||
is-weakref@1.1.1:
|
||||
@ -8226,14 +8181,6 @@ snapshots:
|
||||
dependencies:
|
||||
semver: 7.7.3
|
||||
|
||||
node-domexception@1.0.0: {}
|
||||
|
||||
node-fetch@3.3.2:
|
||||
dependencies:
|
||||
data-uri-to-buffer: 4.0.1
|
||||
fetch-blob: 3.2.0
|
||||
formdata-polyfill: 4.0.10
|
||||
|
||||
node-gyp-build@4.8.4: {}
|
||||
|
||||
node-gyp@12.2.0:
|
||||
@ -8458,6 +8405,8 @@ snapshots:
|
||||
|
||||
picomatch@4.0.3: {}
|
||||
|
||||
pinyin-pro@3.27.0: {}
|
||||
|
||||
pixelmatch@5.3.0:
|
||||
dependencies:
|
||||
pngjs: 6.0.0
|
||||
@ -8587,8 +8536,6 @@ snapshots:
|
||||
get-proto: 1.0.1
|
||||
which-builtin-type: 1.2.1
|
||||
|
||||
regenerator-runtime@0.13.11: {}
|
||||
|
||||
regexp.prototype.flags@1.5.4:
|
||||
dependencies:
|
||||
call-bind: 1.0.8
|
||||
@ -9070,8 +9017,6 @@ snapshots:
|
||||
dependencies:
|
||||
semver: 5.7.2
|
||||
|
||||
tiny-pinyin@1.3.2: {}
|
||||
|
||||
tiny-typed-emitter@2.1.0: {}
|
||||
|
||||
tinycolor2@1.6.0: {}
|
||||
@ -9345,8 +9290,6 @@ snapshots:
|
||||
dependencies:
|
||||
defaults: 1.0.4
|
||||
|
||||
web-streams-polyfill@3.3.3: {}
|
||||
|
||||
webrtc-adapter@9.0.3:
|
||||
dependencies:
|
||||
sdp: 3.2.1
|
||||
|
||||
@ -891,6 +891,24 @@
|
||||
"show-time-codes": {
|
||||
"label": "Show time codes",
|
||||
"tooltip": "Show the time codes next to the lyrics"
|
||||
},
|
||||
"convert-chinese-character": {
|
||||
"label": "Convert Chinese character",
|
||||
"submenu": {
|
||||
"disabled": {
|
||||
"label": "Disabled",
|
||||
"tooltip": "Disable Chinese character conversion"
|
||||
},
|
||||
"simplified-to-traditional": {
|
||||
"label": "Simplified to Traditional",
|
||||
"tooltip": "Convert Simplified Chinese to Traditional Chinese"
|
||||
},
|
||||
"traditional-to-simplified": {
|
||||
"label": "Traditional to Simplified",
|
||||
"tooltip": "Convert Traditional Chinese to Simplified Chinese"
|
||||
}
|
||||
},
|
||||
"tooltip": "Convert Chinese character to Traditional or Simplified"
|
||||
}
|
||||
},
|
||||
"name": "Synced Lyrics",
|
||||
|
||||
@ -161,7 +161,8 @@
|
||||
"default": "Predeterminado",
|
||||
"force-show": "Forzar la visualización",
|
||||
"hide": "Ocultar",
|
||||
"label": "Botones de \"Me Gusta\""
|
||||
"label": "Botones de \"Me Gusta\"",
|
||||
"swap": "Intercambiar el orden de los botones de \"Me Gusta\""
|
||||
},
|
||||
"remove-upgrade-button": "Eliminar el botón de Actualización",
|
||||
"theme": {
|
||||
@ -322,10 +323,10 @@
|
||||
"label": "Nombre del host"
|
||||
},
|
||||
"https": {
|
||||
"label": "HTTPS & Certificados",
|
||||
"label": "HTTPS y Certificados",
|
||||
"submenu": {
|
||||
"cert": {
|
||||
"dialogTitle": "Selecciona el archivo de certificado HTTPS",
|
||||
"dialogTitle": "Seleccione el archivo de certificado HTTPS",
|
||||
"label": "Archivo de certificado (.crt/.pem)"
|
||||
},
|
||||
"enable-https": {
|
||||
@ -412,6 +413,17 @@
|
||||
"no-captions": "Sin subtítulos para ésta canción"
|
||||
}
|
||||
},
|
||||
"clock": {
|
||||
"description": "Añade un reloj a la barra de navegación",
|
||||
"menu": {
|
||||
"format": {
|
||||
"24-hour-format": "Formato 24 horas",
|
||||
"display-seconds": "Mostrar segundos",
|
||||
"label": "Formato"
|
||||
}
|
||||
},
|
||||
"name": "Reloj"
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Establecer siempre la barra lateral en modo compacto",
|
||||
"name": "Barra lateral compacta"
|
||||
@ -830,6 +842,24 @@
|
||||
"not-found": "⚠️ No se han encontrado letras para esta canción."
|
||||
},
|
||||
"menu": {
|
||||
"convert-chinese-character": {
|
||||
"label": "Convertir carácter Chino",
|
||||
"submenu": {
|
||||
"disabled": {
|
||||
"label": "Deshabilitado",
|
||||
"tooltip": "Deshabilitar conversión de caracteres Chinos"
|
||||
},
|
||||
"simplified-to-traditional": {
|
||||
"label": "Simplificar a Tradicional",
|
||||
"tooltip": "Convertir Chino Simplifcado en Chino Tradicional"
|
||||
},
|
||||
"traditional-to-simplified": {
|
||||
"label": "Tradicional a Simplificado",
|
||||
"tooltip": "Convertir Chino Tradicional a Chino Simplificado"
|
||||
}
|
||||
},
|
||||
"tooltip": "Convertir carácter Chino a Tradicional o Simplificado"
|
||||
},
|
||||
"default-text-string": {
|
||||
"label": "Carácter predeterminado entre letras",
|
||||
"tooltip": "Elige el carácter predeterminado que se utilizará para el espacio entre letras"
|
||||
|
||||
@ -842,6 +842,24 @@
|
||||
"not-found": "⚠️ Aucune paroles trouvées pour ce titre."
|
||||
},
|
||||
"menu": {
|
||||
"convert-chinese-character": {
|
||||
"label": "Convertir les caractères Chinois",
|
||||
"submenu": {
|
||||
"disabled": {
|
||||
"label": "Désactivé",
|
||||
"tooltip": "Désactiver la conversion des caractères Chinois"
|
||||
},
|
||||
"simplified-to-traditional": {
|
||||
"label": "Simplifié a Traditionnel",
|
||||
"tooltip": "Convertir le Chinois Simplifié au Chinois Traditionnel"
|
||||
},
|
||||
"traditional-to-simplified": {
|
||||
"label": "Traditionnel a Simplifié",
|
||||
"tooltip": "Convertir le Chinois Traditionnel au Chinois Simplifié"
|
||||
}
|
||||
},
|
||||
"tooltip": "Convertir les caractères Chinois en Traditionnel ou Simplifié"
|
||||
},
|
||||
"default-text-string": {
|
||||
"label": "Caractère par défaut entre les paroles",
|
||||
"tooltip": "Choisi le caractère par défaut à utiliser pour les blancs entre les paroles"
|
||||
|
||||
@ -842,6 +842,24 @@
|
||||
"not-found": "⚠️ Nenhuma letra encontrada para esta música."
|
||||
},
|
||||
"menu": {
|
||||
"convert-chinese-character": {
|
||||
"label": "Converter caracteres Chineses",
|
||||
"submenu": {
|
||||
"disabled": {
|
||||
"label": "Desativado",
|
||||
"tooltip": "Desativar conversão de caracteres Chineses"
|
||||
},
|
||||
"simplified-to-traditional": {
|
||||
"label": "Simplificado para Tradicional",
|
||||
"tooltip": "Converter Chinês Simplificado para Chinês Tradicional"
|
||||
},
|
||||
"traditional-to-simplified": {
|
||||
"label": "Tradicional para Simplificado",
|
||||
"tooltip": "Converter Chinês Tradicional para Chinês Simplificado"
|
||||
}
|
||||
},
|
||||
"tooltip": "Converter caractere Chinês para Tradicional ou Simplificado"
|
||||
},
|
||||
"default-text-string": {
|
||||
"label": "Caractere padrão entre letras",
|
||||
"tooltip": "Escolha o caractere padrão a ser usado para o intervalo entre as letras"
|
||||
|
||||
@ -842,6 +842,24 @@
|
||||
"not-found": "⚠️ 未找到此歌曲的歌词。"
|
||||
},
|
||||
"menu": {
|
||||
"convert-chinese-character": {
|
||||
"label": "转换中文字符",
|
||||
"submenu": {
|
||||
"disabled": {
|
||||
"label": "已停用",
|
||||
"tooltip": "禁用中文字符转换"
|
||||
},
|
||||
"simplified-to-traditional": {
|
||||
"label": "简体到繁体",
|
||||
"tooltip": "转换简体中文到繁体中文"
|
||||
},
|
||||
"traditional-to-simplified": {
|
||||
"label": "繁体到简体",
|
||||
"tooltip": "转换繁体中文到简体中文"
|
||||
}
|
||||
},
|
||||
"tooltip": "转换简繁体中文字符"
|
||||
},
|
||||
"default-text-string": {
|
||||
"label": "默认的歌词行间字符",
|
||||
"tooltip": "选择在歌词间隙期间默认显示的字符"
|
||||
|
||||
@ -161,7 +161,8 @@
|
||||
"default": "預設",
|
||||
"force-show": "強制顯示",
|
||||
"hide": "隱藏",
|
||||
"label": "按讚按鈕"
|
||||
"label": "按讚按鈕",
|
||||
"swap": "交換讚及倒讚的按鈕位置"
|
||||
},
|
||||
"remove-upgrade-button": "移除升級按鈕",
|
||||
"theme": {
|
||||
@ -321,6 +322,22 @@
|
||||
"hostname": {
|
||||
"label": "主機名稱"
|
||||
},
|
||||
"https": {
|
||||
"label": "HTTPS 及 憑證",
|
||||
"submenu": {
|
||||
"cert": {
|
||||
"dialogTitle": "選擇憑證檔案",
|
||||
"label": "憑證檔案(.crt/.pem)"
|
||||
},
|
||||
"enable-https": {
|
||||
"label": "啟用 HTTPS"
|
||||
},
|
||||
"key": {
|
||||
"dialogTitle": "選擇私人金鑰檔案",
|
||||
"label": "私人金鑰檔案(.key/.pem)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"port": {
|
||||
"label": "連接埠"
|
||||
}
|
||||
@ -396,6 +413,17 @@
|
||||
"no-captions": "該首歌曲無可用的字幕"
|
||||
}
|
||||
},
|
||||
"clock": {
|
||||
"description": "新增時鐘至應用程式上方",
|
||||
"menu": {
|
||||
"format": {
|
||||
"24-hour-format": "24 小時制",
|
||||
"display-seconds": "顯示秒數",
|
||||
"label": "時間格式"
|
||||
}
|
||||
},
|
||||
"name": "時鐘"
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "永遠讓側邊欄保持收合狀態",
|
||||
"name": "收合側邊欄"
|
||||
@ -462,8 +490,8 @@
|
||||
"set-status-display-type": {
|
||||
"label": "狀態樣式",
|
||||
"submenu": {
|
||||
"artist": "正在聆聽 {artist} 的歌曲",
|
||||
"application": "正在聆聽 {{applicationName}}",
|
||||
"artist": "正在聆聽 {artist} 的歌曲",
|
||||
"title": "正在聆聽 {song title}"
|
||||
}
|
||||
}
|
||||
|
||||
@ -153,6 +153,62 @@ export const menu = async (
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
label: t('plugins.synced-lyrics.menu.convert-chinese-character.label'),
|
||||
toolTip: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.tooltip',
|
||||
),
|
||||
type: 'submenu',
|
||||
submenu: [
|
||||
{
|
||||
label: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.disabled.label',
|
||||
),
|
||||
toolTip: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.disabled.tooltip',
|
||||
),
|
||||
type: 'radio',
|
||||
checked:
|
||||
config.convertChineseCharacter === 'disabled' ||
|
||||
config.convertChineseCharacter === undefined,
|
||||
click() {
|
||||
ctx.setConfig({
|
||||
convertChineseCharacter: 'disabled',
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
label: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.simplified-to-traditional.label',
|
||||
),
|
||||
toolTip: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.simplified-to-traditional.tooltip',
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.convertChineseCharacter === 'simplifiedToTraditional',
|
||||
click() {
|
||||
ctx.setConfig({
|
||||
convertChineseCharacter: 'simplifiedToTraditional',
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
label: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.traditional-to-simplified.label',
|
||||
),
|
||||
toolTip: t(
|
||||
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.traditional-to-simplified.tooltip',
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.convertChineseCharacter === 'traditionalToSimplified',
|
||||
click() {
|
||||
ctx.setConfig({
|
||||
convertChineseCharacter: 'traditionalToSimplified',
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('plugins.synced-lyrics.menu.show-time-codes.label'),
|
||||
toolTip: t('plugins.synced-lyrics.menu.show-time-codes.tooltip'),
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import { createEffect, createSignal, Show } from 'solid-js';
|
||||
import { createEffect, createMemo, createSignal, Show } from 'solid-js';
|
||||
|
||||
import { canonicalize, romanize, simplifyUnicode } from '../utils';
|
||||
import {
|
||||
canonicalize,
|
||||
convertChineseCharacter,
|
||||
romanize,
|
||||
simplifyUnicode,
|
||||
} from '../utils';
|
||||
import { config } from '../renderer';
|
||||
|
||||
interface PlainLyricsProps {
|
||||
@ -9,11 +14,19 @@ interface PlainLyricsProps {
|
||||
|
||||
export const PlainLyrics = (props: PlainLyricsProps) => {
|
||||
const [romanization, setRomanization] = createSignal('');
|
||||
const text = createMemo(() => {
|
||||
let line = props.line;
|
||||
const convertChineseText = config()?.convertChineseCharacter;
|
||||
if (convertChineseText && convertChineseText !== 'disabled') {
|
||||
line = convertChineseCharacter(line, convertChineseText);
|
||||
}
|
||||
return line;
|
||||
});
|
||||
|
||||
createEffect(() => {
|
||||
if (!config()?.romanization) return;
|
||||
|
||||
const input = canonicalize(props.line);
|
||||
const input = canonicalize(text());
|
||||
romanize(input).then((result) => {
|
||||
setRomanization(canonicalize(result));
|
||||
});
|
||||
@ -31,13 +44,13 @@ export const PlainLyrics = (props: PlainLyricsProps) => {
|
||||
>
|
||||
<yt-formatted-string
|
||||
text={{
|
||||
runs: [{ text: props.line }],
|
||||
runs: [{ text: text() }],
|
||||
}}
|
||||
/>
|
||||
<Show
|
||||
when={
|
||||
config()?.romanization &&
|
||||
simplifyUnicode(props.line) !== simplifyUnicode(romanization())
|
||||
simplifyUnicode(text()) !== simplifyUnicode(romanization())
|
||||
}
|
||||
>
|
||||
<yt-formatted-string
|
||||
|
||||
@ -7,7 +7,12 @@ import { type LineLyrics } from '@/plugins/synced-lyrics/types';
|
||||
import { config, currentTime } from '../renderer';
|
||||
import { _ytAPI } from '..';
|
||||
|
||||
import { canonicalize, romanize, simplifyUnicode } from '../utils';
|
||||
import {
|
||||
canonicalize,
|
||||
convertChineseCharacter,
|
||||
romanize,
|
||||
simplifyUnicode,
|
||||
} from '../utils';
|
||||
|
||||
interface SyncedLineProps {
|
||||
scroller: VirtualizerHandle;
|
||||
@ -81,7 +86,14 @@ const EmptyLine = (props: SyncedLineProps) => {
|
||||
};
|
||||
|
||||
export const SyncedLine = (props: SyncedLineProps) => {
|
||||
const text = createMemo(() => props.line.text.trim());
|
||||
const text = createMemo(() => {
|
||||
let line = props.line.text;
|
||||
const convertChineseText = config()?.convertChineseCharacter;
|
||||
if (convertChineseText && convertChineseText !== 'disabled') {
|
||||
line = convertChineseCharacter(line, convertChineseText);
|
||||
}
|
||||
return line.trim();
|
||||
});
|
||||
|
||||
const [romanization, setRomanization] = createSignal('');
|
||||
createEffect(() => {
|
||||
|
||||
@ -3,10 +3,11 @@ import KuromojiAnalyzer from 'kuroshiro-analyzer-kuromoji';
|
||||
import Kuroshiro from 'kuroshiro';
|
||||
import { romanize as esHangulRomanize } from 'es-hangul';
|
||||
import hanja from 'hanja';
|
||||
import * as pinyin from 'tiny-pinyin';
|
||||
import { pinyin } from 'pinyin-pro';
|
||||
import { romanize as romanizeThaiFrag } from '@dehoist/romanize-thai';
|
||||
import { lazy } from 'lazy-var';
|
||||
import { detect } from 'tinyld';
|
||||
import { sify, tify } from 'chinese-conv';
|
||||
import Sanscript from '@indic-transliteration/sanscript';
|
||||
|
||||
import { waitForElement } from '@/utils/wait-for-element';
|
||||
@ -85,6 +86,20 @@ export const canonicalize = (text: string) => {
|
||||
);
|
||||
};
|
||||
|
||||
export const convertChineseCharacter = (
|
||||
text: string,
|
||||
mode: 'simplifiedToTraditional' | 'traditionalToSimplified',
|
||||
) => {
|
||||
if (!hasChinese([text])) return text;
|
||||
|
||||
switch (mode) {
|
||||
case 'simplifiedToTraditional':
|
||||
return tify(text);
|
||||
case 'traditionalToSimplified':
|
||||
return sify(text);
|
||||
}
|
||||
};
|
||||
|
||||
export const simplifyUnicode = (text?: string) =>
|
||||
text
|
||||
? text
|
||||
@ -172,9 +187,9 @@ export const romanizeHangul = (line: string) =>
|
||||
esHangulRomanize(hanja.translate(line, 'SUBSTITUTION'));
|
||||
|
||||
export const romanizeChinese = (line: string) => {
|
||||
return line.replaceAll(/[\u4E00-\u9FFF]+/g, (match) =>
|
||||
pinyin.convertToPinyin(match, ' ', true),
|
||||
);
|
||||
return line.replaceAll(/[\u4E00-\u9FFF]+/g, (match) => {
|
||||
return pinyin(match, { separator: ' ' });
|
||||
});
|
||||
};
|
||||
|
||||
const thaiSegmenter = Intl.Segmenter.supportedLocalesOf('th').includes('th')
|
||||
|
||||
@ -10,6 +10,10 @@ export type SyncedLyricsPluginConfig = {
|
||||
showLyricsEvenIfInexact: boolean;
|
||||
lineEffect: LineEffect;
|
||||
romanization: boolean;
|
||||
convertChineseCharacter?:
|
||||
| 'simplifiedToTraditional'
|
||||
| 'traditionalToSimplified'
|
||||
| 'disabled';
|
||||
};
|
||||
|
||||
export type LineLyricsStatus = 'previous' | 'current' | 'upcoming';
|
||||
|
||||
Reference in New Issue
Block a user