mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 18:41:47 +00:00
Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aa29a0fa65 | |||
| a8469d7d8d | |||
| d09858cbec | |||
| 855f67bb1e | |||
| 8508620e53 | |||
| e9fbfe36cc | |||
| f158a7865a | |||
| 74860edc6e | |||
| 1712b70fb5 | |||
| 4a57cc5ee9 | |||
| 4db0f72864 | |||
| bfe624dc57 | |||
| 994fdaf436 | |||
| 9ac9146d78 | |||
| fbbfc540c2 | |||
| ac3f42d507 | |||
| 993655fdee | |||
| eff2f550c6 | |||
| aef03ab9fd | |||
| f822373c30 | |||
| 19313f9cc9 | |||
| c3b64b097f | |||
| 6668d735a0 | |||
| e2d801168e | |||
| 86f5223350 | |||
| 9ee6940856 | |||
| bffea06343 | |||
| e0ab14b4ea | |||
| 1cb5f628c8 | |||
| 1ac9704cf4 | |||
| 7ebcc51646 | |||
| f4ccde2734 | |||
| e6d7c5cdfc | |||
| 9e3f32a233 | |||
| 8ed813427f | |||
| 2db0d79af6 | |||
| 28ba662d6f | |||
| e041a83121 | |||
| 42185e59d5 | |||
| 975e9719ad | |||
| 31e51a67db | |||
| d5f829d8d0 | |||
| 0dbf0295b8 | |||
| daaf48f453 | |||
| 1d9e021681 | |||
| 6dd36c74e0 | |||
| b933218762 | |||
| 26f8814a97 | |||
| 236ba7536e | |||
| faaf996b16 | |||
| 5a637fd6e7 | |||
| aca1d30d2f | |||
| 5c3eecb3fd | |||
| 9da3ad2fb7 | |||
| d45d597136 | |||
| 2495d5da99 | |||
| 33aeafd19c | |||
| 374d0ce5e7 | |||
| 371805334b | |||
| 47dbeff0d0 | |||
| 17652b5b77 | |||
| 9608c2a7fc | |||
| 8abe2823d7 | |||
| dbc7f23ab8 | |||
| 357bd935e4 | |||
| f99ca53a6d | |||
| 8700c1a110 | |||
| c5e37b791c | |||
| 307f6387ab | |||
| 652a150a0a | |||
| 2c59badb46 | |||
| 69087bbf1f | |||
| af78f1596a | |||
| fca936a698 | |||
| 54b70f6b3e | |||
| 62f7d440fa |
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@ -61,6 +61,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
|
sudo snap install snapcraft --classic
|
||||||
pnpm release:linux
|
pnpm release:linux
|
||||||
|
|
||||||
- name: Build and release on Windows
|
- name: Build and release on Windows
|
||||||
|
|||||||
20
changelog.md
20
changelog.md
@ -2,8 +2,28 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [v3.3.5](https://github.com/th-ch/youtube-music/compare/v3.3.4...v3.3.5)
|
||||||
|
|
||||||
|
- chore(deps): update dependency node-gyp to v10.1.0 [`#1885`](https://github.com/th-ch/youtube-music/pull/1885)
|
||||||
|
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.4.0 [`#1886`](https://github.com/th-ch/youtube-music/pull/1886)
|
||||||
|
- chore(deps): update dependency vite to v5.2.6 [`#1883`](https://github.com/th-ch/youtube-music/pull/1883)
|
||||||
|
- fix(style): resolve #1887 [`#1887`](https://github.com/th-ch/youtube-music/issues/1887)
|
||||||
|
- chore(i18n): Translated using Weblate (Swedish) [`69087bb`](https://github.com/th-ch/youtube-music/commit/69087bbf1fac1ba58e992146deb1d6f1706b1e3c)
|
||||||
|
- chore(i18n): Translated using Weblate (French) [`af78f15`](https://github.com/th-ch/youtube-music/commit/af78f1596ab8db2fa7069fdb1c4f078099ce4446)
|
||||||
|
- Update changelog for v3.3.4 [`62f7d44`](https://github.com/th-ch/youtube-music/commit/62f7d440fab5bdbe9f49a3a5f8c32e7aaf2f28f6)
|
||||||
|
|
||||||
|
#### [v3.3.4](https://github.com/th-ch/youtube-music/compare/v3.3.3...v3.3.4)
|
||||||
|
|
||||||
|
> 24 March 2024
|
||||||
|
|
||||||
|
- Update changelog for v3.3.3 [`9769544`](https://github.com/th-ch/youtube-music/commit/97695444affbacb71dd73ae7107d4c987e285a37)
|
||||||
|
- fix(style): fix fullscreen style and in-app-menu [`ed700c2`](https://github.com/th-ch/youtube-music/commit/ed700c2916cc7e6ccd2010d0c552364af116eb4f)
|
||||||
|
- fix(style): fix miniplayer style [`a8bc539`](https://github.com/th-ch/youtube-music/commit/a8bc53912d1f4137008ecb2d9d5d9d9eb06ee2a8)
|
||||||
|
|
||||||
#### [v3.3.3](https://github.com/th-ch/youtube-music/compare/v3.3.2...v3.3.3)
|
#### [v3.3.3](https://github.com/th-ch/youtube-music/compare/v3.3.2...v3.3.3)
|
||||||
|
|
||||||
|
> 24 March 2024
|
||||||
|
|
||||||
- chore(deps): update dependency electron to v29.1.5 [`#1876`](https://github.com/th-ch/youtube-music/pull/1876)
|
- chore(deps): update dependency electron to v29.1.5 [`#1876`](https://github.com/th-ch/youtube-music/pull/1876)
|
||||||
- chore(deps): update dependency typescript to v5.4.3 [`#1877`](https://github.com/th-ch/youtube-music/pull/1877)
|
- chore(deps): update dependency typescript to v5.4.3 [`#1877`](https://github.com/th-ch/youtube-music/pull/1877)
|
||||||
- chore(deps): update dependency discord-api-types to v0.37.76 [`#1878`](https://github.com/th-ch/youtube-music/pull/1878)
|
- chore(deps): update dependency discord-api-types to v0.37.76 [`#1878`](https://github.com/th-ch/youtube-music/pull/1878)
|
||||||
|
|||||||
45
package.json
45
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "youtube-music",
|
"name": "youtube-music",
|
||||||
"productName": "YouTube Music",
|
"productName": "YouTube Music",
|
||||||
"version": "3.3.4",
|
"version": "3.3.6",
|
||||||
"description": "YouTube Music Desktop App - including custom plugins",
|
"description": "YouTube Music Desktop App - including custom plugins",
|
||||||
"main": "./dist/main/index.js",
|
"main": "./dist/main/index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -124,20 +124,21 @@
|
|||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"usocket": "1.0.1",
|
"usocket": "1.0.1",
|
||||||
"node-gyp": "10.0.1",
|
"node-gyp": "10.1.0",
|
||||||
"xml2js": "0.6.2",
|
"xml2js": "0.6.2",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
"@electron/universal": "2.0.1",
|
"@electron/universal": "2.0.1",
|
||||||
"@babel/runtime": "7.23.8"
|
"@babel/runtime": "7.24.4"
|
||||||
},
|
},
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
|
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
|
||||||
"@xhayper/discord-rpc@1.1.2": "patches/@xhayper__discord-rpc@1.1.2.patch"
|
"@xhayper/discord-rpc@1.1.2": "patches/@xhayper__discord-rpc@1.1.2.patch",
|
||||||
|
"app-builder-lib@24.13.3": "patches/app-builder-lib@24.13.3.patch"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cliqz/adblocker-electron": "1.26.16",
|
"@cliqz/adblocker-electron": "1.27.1",
|
||||||
"@cliqz/adblocker-electron-preload": "1.26.16",
|
"@cliqz/adblocker-electron-preload": "1.27.1",
|
||||||
"@electron-toolkit/tsconfig": "1.0.1",
|
"@electron-toolkit/tsconfig": "1.0.1",
|
||||||
"@electron/remote": "2.1.2",
|
"@electron/remote": "2.1.2",
|
||||||
"@ffmpeg.wasm/core-mt": "0.12.0",
|
"@ffmpeg.wasm/core-mt": "0.12.0",
|
||||||
@ -166,10 +167,10 @@
|
|||||||
"filenamify": "6.0.0",
|
"filenamify": "6.0.0",
|
||||||
"howler": "2.2.4",
|
"howler": "2.2.4",
|
||||||
"html-to-text": "9.0.5",
|
"html-to-text": "9.0.5",
|
||||||
"i18next": "23.10.1",
|
"i18next": "23.11.1",
|
||||||
"keyboardevent-from-electron-accelerator": "2.0.0",
|
"keyboardevent-from-electron-accelerator": "2.0.0",
|
||||||
"keyboardevents-areequal": "0.2.2",
|
"keyboardevents-areequal": "0.2.2",
|
||||||
"node-html-parser": "6.1.12",
|
"node-html-parser": "6.1.13",
|
||||||
"node-id3": "0.2.6",
|
"node-id3": "0.2.6",
|
||||||
"peerjs": "1.5.2",
|
"peerjs": "1.5.2",
|
||||||
"semver": "7.6.0",
|
"semver": "7.6.0",
|
||||||
@ -182,39 +183,39 @@
|
|||||||
"ts-morph": "22.0.0",
|
"ts-morph": "22.0.0",
|
||||||
"vudio": "2.1.1",
|
"vudio": "2.1.1",
|
||||||
"x11": "2.3.0",
|
"x11": "2.3.0",
|
||||||
"youtubei.js": "9.1.0"
|
"youtubei.js": "9.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@playwright/test": "1.42.1",
|
"@playwright/test": "1.43.1",
|
||||||
"@total-typescript/ts-reset": "0.5.1",
|
"@total-typescript/ts-reset": "0.5.1",
|
||||||
"@types/color": "3.0.6",
|
"@types/color": "3.0.6",
|
||||||
"@types/electron-localshortcut": "3.1.3",
|
"@types/electron-localshortcut": "3.1.3",
|
||||||
"@types/howler": "2.2.11",
|
"@types/howler": "2.2.11",
|
||||||
"@types/html-to-text": "9.0.4",
|
"@types/html-to-text": "9.0.4",
|
||||||
"@types/semver": "7.5.8",
|
"@types/semver": "7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "7.3.1",
|
"@typescript-eslint/eslint-plugin": "7.6.0",
|
||||||
"bufferutil": "4.0.8",
|
"bufferutil": "4.0.8",
|
||||||
"builtin-modules": "3.3.0",
|
"builtin-modules": "3.3.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"del-cli": "5.1.0",
|
"del-cli": "5.1.0",
|
||||||
"discord-api-types": "0.37.76",
|
"discord-api-types": "0.37.79",
|
||||||
"electron": "29.1.5",
|
"electron": "29.3.0",
|
||||||
"electron-builder": "24.9.1",
|
"electron-builder": "24.13.3",
|
||||||
"electron-devtools-installer": "3.2.0",
|
"electron-devtools-installer": "3.2.0",
|
||||||
"electron-vite": "2.1.0",
|
"electron-vite": "2.1.0",
|
||||||
"esbuild": "0.20.2",
|
"esbuild": "0.20.2",
|
||||||
"eslint": "8.57.0",
|
"eslint": "9.0.0",
|
||||||
"eslint-import-resolver-exports": "1.0.0-beta.5",
|
"eslint-import-resolver-exports": "1.0.0-beta.5",
|
||||||
"eslint-import-resolver-typescript": "3.6.1",
|
"eslint-import-resolver-typescript": "3.6.1",
|
||||||
"eslint-plugin-import": "2.29.1",
|
"eslint-plugin-import": "2.29.1",
|
||||||
"eslint-plugin-prettier": "5.1.3",
|
"eslint-plugin-prettier": "5.1.3",
|
||||||
"glob": "10.3.10",
|
"glob": "10.3.12",
|
||||||
"node-gyp": "10.0.1",
|
"node-gyp": "10.1.0",
|
||||||
"playwright": "1.42.1",
|
"playwright": "1.43.1",
|
||||||
"rollup": "4.13.0",
|
"rollup": "4.14.2",
|
||||||
"typescript": "5.4.3",
|
"typescript": "5.4.5",
|
||||||
"utf-8-validate": "6.0.3",
|
"utf-8-validate": "6.0.3",
|
||||||
"vite": "5.2.4",
|
"vite": "5.2.8",
|
||||||
"vite-plugin-inspect": "0.8.3",
|
"vite-plugin-inspect": "0.8.3",
|
||||||
"vite-plugin-resolve": "2.5.1",
|
"vite-plugin-resolve": "2.5.1",
|
||||||
"vite-plugin-solid": "2.10.2",
|
"vite-plugin-solid": "2.10.2",
|
||||||
@ -226,5 +227,5 @@
|
|||||||
"unreleased": true,
|
"unreleased": true,
|
||||||
"output": "changelog.md"
|
"output": "changelog.md"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.15.5"
|
"packageManager": "pnpm@8.15.6"
|
||||||
}
|
}
|
||||||
|
|||||||
21
patches/app-builder-lib@24.13.3.patch
Normal file
21
patches/app-builder-lib@24.13.3.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff --git a/out/targets/snap.js b/out/targets/snap.js
|
||||||
|
index f72c36355d27cd2d69fc5fdf2d8bb2451db0287f..baae112fe25ebb49ab8e25aaa48efd6bc43b598f 100644
|
||||||
|
--- a/out/targets/snap.js
|
||||||
|
+++ b/out/targets/snap.js
|
||||||
|
@@ -212,14 +212,14 @@ class SnapTarget extends core_1.Target {
|
||||||
|
args.push("--template-url", `electron4:${snapArch}`);
|
||||||
|
}
|
||||||
|
await (0, builder_util_1.executeAppBuilder)(args);
|
||||||
|
- const publishConfig = findSnapPublishConfig(this.packager.config);
|
||||||
|
+
|
||||||
|
await packager.info.callArtifactBuildCompleted({
|
||||||
|
file: artifactPath,
|
||||||
|
safeArtifactName: packager.computeSafeArtifactName(artifactName, "snap", arch, false),
|
||||||
|
target: this,
|
||||||
|
arch,
|
||||||
|
packager,
|
||||||
|
- publishConfig: publishConfig == null ? { provider: "snapStore" } : publishConfig,
|
||||||
|
+ publishConfig: options.publish == null ? { provider: "snapStore" } : null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
isElectronVersionGreaterOrEqualThan(version) {
|
||||||
1093
pnpm-lock.yaml
generated
1093
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -105,7 +105,7 @@
|
|||||||
"label": "Définir un proxy",
|
"label": "Définir un proxy",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
"label": "Entrez l'adresse proxy : (laissez vide pour désactiver)",
|
"label": "Entrez l'adresse proxy : (laissez vide pour désactiver)",
|
||||||
"placeholder": "Exemple: socks5://127.0.0.1:9999",
|
"placeholder": "Exemple: SOCKS5://127.0.0.1:9999",
|
||||||
"title": "Définir un proxy"
|
"title": "Définir un proxy"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -212,10 +212,18 @@
|
|||||||
},
|
},
|
||||||
"album-color-theme": {
|
"album-color-theme": {
|
||||||
"description": "Applique un thème dynamique et des effets visuels basés sur la palette des couleurs de l'album",
|
"description": "Applique un thème dynamique et des effets visuels basés sur la palette des couleurs de l'album",
|
||||||
|
"menu": {
|
||||||
|
"color-mix-ratio": {
|
||||||
|
"label": "Ratio de mélange des couleurs",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{ratio}}%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"name": "Thème de couleur d'album"
|
"name": "Thème de couleur d'album"
|
||||||
},
|
},
|
||||||
"ambient-mode": {
|
"ambient-mode": {
|
||||||
"description": "Applique un effet d'éclairage en jetant des couleurs douces de la vidéo, dans le fond de votre écran.",
|
"description": "Applique un effet d'éclairage en jetant des couleurs douces de la vidéo, dans le fond de votre écran",
|
||||||
"menu": {
|
"menu": {
|
||||||
"blur-amount": {
|
"blur-amount": {
|
||||||
"label": "Quantité de flou",
|
"label": "Quantité de flou",
|
||||||
@ -302,8 +310,8 @@
|
|||||||
"prompt": {
|
"prompt": {
|
||||||
"options": {
|
"options": {
|
||||||
"multi-input": {
|
"multi-input": {
|
||||||
"fade-in-duration": "Durée du fondu (millisecondes)",
|
"fade-in-duration": "Durée du début du fondu (ms)",
|
||||||
"fade-out-duration": "Durée du fondu (millisecondes)",
|
"fade-out-duration": "Durée de sortie du fondu (ms)",
|
||||||
"fade-scaling": {
|
"fade-scaling": {
|
||||||
"label": "Mise à l'échelle du fondu",
|
"label": "Mise à l'échelle du fondu",
|
||||||
"linear": "Linéaire",
|
"linear": "Linéaire",
|
||||||
|
|||||||
1
src/i18n/resources/he.json
Normal file
1
src/i18n/resources/he.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/resources/ms.json
Normal file
1
src/i18n/resources/ms.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@ -2,42 +2,460 @@
|
|||||||
"common": {
|
"common": {
|
||||||
"console": {
|
"console": {
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"execute-failed": "Kan plug-in {{pluginName}}::{{contextName}} niet uitvoeren",
|
"execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren",
|
||||||
"executed-at-ms": "Plug-in {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
|
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
|
||||||
"initialize-failed": "Kan plug-in \"{{pluginName}}\" niet laden",
|
"initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt",
|
||||||
"load-all": "Alle plug-ins laden",
|
"load-all": "Alle plugins laden",
|
||||||
"load-failed": "Kan plug-in \"{{pluginName}}\" niet laden",
|
"load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden",
|
||||||
"loaded": "Plug-in \"{{pluginName}}\" geladen",
|
"loaded": "Plugin \"{{pluginName}}\" geladen",
|
||||||
"unload-failed": "Kan plug-in \"{{pluginName}}\" niet verwijderen",
|
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te lossen",
|
||||||
"unloaded": "Plug-in \"{{pluginName}}\" geladen"
|
"unloaded": "Plugin \"{{pluginName}}\" gelost"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"code": "nl",
|
"code": "nl",
|
||||||
"local-name": "Nederlands",
|
"local-name": "Nederlands",
|
||||||
"name": "Dutch"
|
"name": "Nederlands"
|
||||||
},
|
},
|
||||||
"main": {
|
"main": {
|
||||||
"console": {
|
"console": {
|
||||||
"did-finish-load": {
|
"did-finish-load": {
|
||||||
"dev-tools": "Klaar met laden, DevTools geopend"
|
"dev-tools": "Laden voltooid. DevTools geopend"
|
||||||
},
|
},
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"loaded": "i18n geladen"
|
"loaded": "i18n geladen"
|
||||||
},
|
},
|
||||||
"second-instance": {
|
"second-instance": {
|
||||||
"receive-command": "Ontvangen commando via protocol: \"{{command}}\""
|
"receive-command": "Commando ontvangen via protocol: \"{{command}}\""
|
||||||
},
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"css-file-not-found": "CSS bestand \"{{cssFile}}\" niet gevonden"
|
"css-file-not-found": "CSS-bestand \"{{cssFile}}\" bestaat niet, wordt genegeerd"
|
||||||
},
|
},
|
||||||
"unresponsive": {
|
"unresponsive": {
|
||||||
"details": "Niet reagerend door fout:\n{{error}}"
|
"details": "Onverantwoordelijkheidsfout!\n{{error}}"
|
||||||
},
|
},
|
||||||
"when-ready": {
|
"when-ready": {
|
||||||
"clearing-cache-after-20s": "App-cache wissen"
|
"clearing-cache-after-20s": "App-cache wissen"
|
||||||
|
},
|
||||||
|
"window": {
|
||||||
|
"tried-to-render-offscreen": "Venster probeerde buiten het scherm te renderen, venstergrootte={{windowSize}}, weergavegrootte={{displaySize}}, positie={{position}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"dialog": {
|
||||||
|
"hide-menu-enabled": {
|
||||||
|
"detail": "Menu is verborgen, gebruik 'Alt' om het weer te geven (of 'Escape' als u de In-App Menu gebruikt)",
|
||||||
|
"message": "Menu verbergen is ingeschakeld",
|
||||||
|
"title": "Menu Verbergen Ingeschakeld"
|
||||||
|
},
|
||||||
|
"need-to-restart": {
|
||||||
|
"buttons": {
|
||||||
|
"later": "Later",
|
||||||
|
"restart-now": "Nu Opnieuw Opstarten"
|
||||||
|
},
|
||||||
|
"detail": "\"{{pluginName}}\" plugin vereist een herstart om van kracht te worden",
|
||||||
|
"message": "\"{{pluginName}}\" moet opnieuw worden opgestart",
|
||||||
|
"title": "Herstart Vereist"
|
||||||
|
},
|
||||||
|
"unresponsive": {
|
||||||
|
"buttons": {
|
||||||
|
"quit": "Stoppen",
|
||||||
|
"relaunch": "Opnieuw starten",
|
||||||
|
"wait": "Wachten"
|
||||||
|
},
|
||||||
|
"detail": "Het programma reageert niet!\nKies wat u wilt doen:",
|
||||||
|
"message": "De applicatie reageert niet",
|
||||||
|
"title": "Venster Niet Reagerend"
|
||||||
|
},
|
||||||
|
"update-available": {
|
||||||
|
"buttons": {
|
||||||
|
"disable": "Updates uitschakelen",
|
||||||
|
"download": "Downloaden",
|
||||||
|
"ok": "OK"
|
||||||
|
},
|
||||||
|
"detail": "Er is een nieuwe versie beschikbaar en kan worden gedownload op {{downloadLink}}",
|
||||||
|
"message": "Een nieuwe versie is beschikbaar",
|
||||||
|
"title": "Update Beschikbaar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"about": "Over",
|
||||||
|
"navigation": {
|
||||||
|
"label": "Navigatie",
|
||||||
|
"submenu": {
|
||||||
|
"copy-current-url": "Huidige URL kopiëren",
|
||||||
|
"go-back": "Terug",
|
||||||
|
"go-forward": "Vooruit",
|
||||||
|
"quit": "Afsluiten",
|
||||||
|
"restart": "Applicatie Opnieuw Opstarten"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"label": "Opties",
|
||||||
|
"submenu": {
|
||||||
|
"advanced-options": {
|
||||||
|
"label": "Geavanceerde opties",
|
||||||
|
"submenu": {
|
||||||
|
"auto-reset-app-cache": "App-cache resetten bij het starten van de app",
|
||||||
|
"disable-hardware-acceleration": "Hardwareversnelling uitschakelen",
|
||||||
|
"edit-config-json": "Config.json bewerken",
|
||||||
|
"override-user-agent": "Gebruikersagent overschrijven",
|
||||||
|
"restart-on-config-changes": "Herstarten bij configuratiewijzigingen",
|
||||||
|
"set-proxy": {
|
||||||
|
"label": "Proxy instellen",
|
||||||
|
"prompt": {
|
||||||
|
"label": "Proxy-adres invoeren: (leeg laten om uit te schakelen)",
|
||||||
|
"placeholder": "Voorbeeld: SOCKS5://127.0.0.1:9999",
|
||||||
|
"title": "Proxy instellen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toggle-dev-tools": "DevTools schakelen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"always-on-top": "Altijd bovenop",
|
||||||
|
"auto-update": "Automatisch bijwerken",
|
||||||
|
"hide-menu": {
|
||||||
|
"dialog": {
|
||||||
|
"message": "Menu wordt verborgen bij de volgende start, gebruik [Alt] om het weer te geven (of backtick [`] als u de in-app-menu gebruikt)",
|
||||||
|
"title": "Menu Verbergen Ingeschakeld"
|
||||||
|
},
|
||||||
|
"label": "Menu Verbergen"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"dialog": {
|
||||||
|
"message": "Taal wordt gewijzigd na herstart",
|
||||||
|
"title": "Taal Gewijzigd"
|
||||||
|
},
|
||||||
|
"label": "Taal",
|
||||||
|
"submenu": {
|
||||||
|
"to-help-translate": "Wil je helpen vertalen? Klik hier"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resume-on-start": "Hervat laatste liedje bij het opstarten van de app",
|
||||||
|
"single-instance-lock": "Eenmalige instantievergrendeling",
|
||||||
|
"start-at-login": "Starten bij het inloggen",
|
||||||
|
"starting-page": {
|
||||||
|
"label": "Startpagina",
|
||||||
|
"unset": "Niet ingesteld"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"label": "Systeemvak",
|
||||||
|
"submenu": {
|
||||||
|
"disabled": "Uitgeschakeld",
|
||||||
|
"enabled-and-hide-app": "Ingeschakeld en applicatie verbergen",
|
||||||
|
"enabled-and-show-app": "Ingeschakeld en applicatie weergeven",
|
||||||
|
"play-pause-on-click": "Afspelen/Pauzeren bij klikken"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"visual-tweaks": {
|
||||||
|
"label": "Visuele Aanpassingen",
|
||||||
|
"submenu": {
|
||||||
|
"like-buttons": {
|
||||||
|
"default": "Standaard",
|
||||||
|
"force-show": "Forceren weergeven",
|
||||||
|
"hide": "Verbergen",
|
||||||
|
"label": "Vind ik leuk-knoppen"
|
||||||
|
},
|
||||||
|
"remove-upgrade-button": "Upgrade-knop verwijderen",
|
||||||
|
"theme": {
|
||||||
|
"label": "Thema",
|
||||||
|
"submenu": {
|
||||||
|
"import-css-file": "Aangepast CSS-bestand importeren",
|
||||||
|
"no-theme": "Geen thema"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"enabled": "Ingeschakeld",
|
||||||
|
"label": "Plugins",
|
||||||
|
"new": "NIEUW"
|
||||||
|
},
|
||||||
|
"view": {
|
||||||
|
"label": "Weergave",
|
||||||
|
"submenu": {
|
||||||
|
"force-reload": "Forceer Herladen",
|
||||||
|
"reload": "Herladen",
|
||||||
|
"reset-zoom": "Ware Grootte",
|
||||||
|
"toggle-fullscreen": "Volledig Scherm Wisselen",
|
||||||
|
"zoom-in": "Inzoomen",
|
||||||
|
"zoom-out": "Uitzoomen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"next": "Volgende",
|
||||||
|
"play-pause": "Afspelen/Pauzeren",
|
||||||
|
"previous": "Vorige",
|
||||||
|
"quit": "Afsluiten",
|
||||||
|
"restart": "Applicatie Opnieuw Opstarten",
|
||||||
|
"show": "Venster Weergeven",
|
||||||
|
"tooltip": {
|
||||||
|
"default": "YouTube Music",
|
||||||
|
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"adblocker": {
|
||||||
|
"description": "Blokkeer alle advertenties en tracking vanuit de doos",
|
||||||
|
"menu": {
|
||||||
|
"blocker": "Blokkeerder"
|
||||||
|
},
|
||||||
|
"name": "Advertentieblokkeerder"
|
||||||
|
},
|
||||||
|
"album-actions": {
|
||||||
|
"description": "Voegt knoppen toe voor Ondisliken, Disliken, Liken en Ontliken om dit toe te passen op alle nummers in een afspeellijst of album",
|
||||||
|
"name": "Albumacties"
|
||||||
|
},
|
||||||
|
"album-color-theme": {
|
||||||
|
"description": "Past een dynamisch thema en visuele effecten toe op basis van het kleurenpalet van het album",
|
||||||
|
"menu": {
|
||||||
|
"color-mix-ratio": {
|
||||||
|
"label": "Kleurmixverhouding",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{ratio}}%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Albumkleurthema"
|
||||||
|
},
|
||||||
|
"ambient-mode": {
|
||||||
|
"description": "Past een verlichtingseffect toe door zachte kleuren van de video op het achtergrondscherm te werpen",
|
||||||
|
"menu": {
|
||||||
|
"blur-amount": {
|
||||||
|
"label": "Vervagingshoeveelheid",
|
||||||
|
"submenu": {
|
||||||
|
"pixels": "{{blurAmount}} pixels"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"buffer": {
|
||||||
|
"label": "Buffer",
|
||||||
|
"submenu": {
|
||||||
|
"buffer": "{{buffer}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"opacity": {
|
||||||
|
"label": "Dekking",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"label": "Kwaliteit",
|
||||||
|
"submenu": {
|
||||||
|
"pixels": "{{quality}} pixels"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"label": "Formaat",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{size}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"smoothness-transition": {
|
||||||
|
"label": "Soepelheid overgang",
|
||||||
|
"submenu": {
|
||||||
|
"during": "Tijdens {{interpolationTime}} s"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"use-fullscreen": {
|
||||||
|
"label": "Volledig scherm gebruiken"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Omgevingsmodus"
|
||||||
|
},
|
||||||
|
"audio-compressor": {
|
||||||
|
"description": "Past compressie toe op audio (verlaagt het volume van de luidste delen van het signaal en verhoogt het volume van de zachtste delen)",
|
||||||
|
"name": "Audiocompressor"
|
||||||
|
},
|
||||||
|
"blur-nav-bar": {
|
||||||
|
"description": "Maakt de navigatiebalk transparant en wazig",
|
||||||
|
"name": "Vervagen Navigatiebalk"
|
||||||
|
},
|
||||||
|
"bypass-age-restrictions": {
|
||||||
|
"description": "Omzeil de leeftijdsverificatie van YouTube",
|
||||||
|
"name": "Leeftijdsbeperkingen Omzeilen"
|
||||||
|
},
|
||||||
|
"captions-selector": {
|
||||||
|
"description": "Ondertitelkeuze voor YouTube Music-audiotracks",
|
||||||
|
"menu": {
|
||||||
|
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
|
||||||
|
"disable-captions": "Standaard geen ondertitels"
|
||||||
|
},
|
||||||
|
"name": "Ondertitelkeuze",
|
||||||
|
"prompt": {
|
||||||
|
"selector": {
|
||||||
|
"label": "Huidige ondertitel taal: {{language}}",
|
||||||
|
"none": "Geen",
|
||||||
|
"title": "Selecteer ondertitel taal"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"title": "Open ondertitelkeuze"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"compact-sidebar": {
|
||||||
|
"description": "Stel de zijbalk altijd in op compacte modus",
|
||||||
|
"name": "Compacte Zijbalk"
|
||||||
|
},
|
||||||
|
"crossfade": {
|
||||||
|
"description": "Vervagen tussen nummers",
|
||||||
|
"menu": {
|
||||||
|
"advanced": "Geavanceerd"
|
||||||
|
},
|
||||||
|
"name": "Crossfade [Beta]",
|
||||||
|
"prompt": {
|
||||||
|
"options": {
|
||||||
|
"multi-input": {
|
||||||
|
"fade-in-duration": "Fade-in-duur (ms)",
|
||||||
|
"fade-out-duration": "Fade-out-duur (ms)",
|
||||||
|
"fade-scaling": {
|
||||||
|
"label": "Vervagingschaal",
|
||||||
|
"linear": "Lineair",
|
||||||
|
"logarithmic": "Logaritmisch"
|
||||||
|
},
|
||||||
|
"seconds-before-end": "Vervagen N seconden voor het einde"
|
||||||
|
},
|
||||||
|
"title": "Crossfade-opties"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"disable-autoplay": {
|
||||||
|
"description": "Zorgt ervoor dat nummers starten in 'gepauzeerde' modus",
|
||||||
|
"menu": {
|
||||||
|
"apply-once": "Alleen toepassen bij opstarten"
|
||||||
|
},
|
||||||
|
"name": "Automatisch afspelen uitschakelen"
|
||||||
|
},
|
||||||
|
"discord": {
|
||||||
|
"description": "Laat je vrienden zien waar je naar luistert met Rich Presence",
|
||||||
|
"menu": {
|
||||||
|
"auto-reconnect": "Automatisch opnieuw verbinden",
|
||||||
|
"clear-activity": "Activiteit wissen",
|
||||||
|
"clear-activity-after-timeout": "Activiteit na time-out wissen",
|
||||||
|
"connected": "Verbonden",
|
||||||
|
"disconnected": "Verbinding verbroken",
|
||||||
|
"hide-duration-left": "Verberg resterende tijd",
|
||||||
|
"hide-github-button": "GitHub-knop verbergen",
|
||||||
|
"play-on-youtube-music": "Afspelen op YouTube Music",
|
||||||
|
"set-inactivity-timeout": "Inactiviteitstime-out instellen"
|
||||||
|
},
|
||||||
|
"name": "Discord Rich Presence",
|
||||||
|
"prompt": {
|
||||||
|
"set-inactivity-timeout": {
|
||||||
|
"label": "Voer inactiviteitstime-out in seconden in:",
|
||||||
|
"title": "Inactiviteitstime-out instellen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"downloader": {
|
||||||
|
"description": "Download MP3 / bron-audio rechtstreeks vanuit de interface",
|
||||||
|
"menu": {
|
||||||
|
"choose-download-folder": "Kies de downloadmap",
|
||||||
|
"download-playlist": "Afspeellijst downloaden",
|
||||||
|
"presets": "Presets",
|
||||||
|
"skip-existing": "Bestaande bestanden overslaan"
|
||||||
|
},
|
||||||
|
"name": "Downloader",
|
||||||
|
"renderer": {
|
||||||
|
"can-not-update-progress": "Kan de voortgang niet bijwerken"
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"button": "Download"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exponential-volume": {
|
||||||
|
"description": "Maakt de volumeschuif exponentieel zodat het gemakkelijker is om lagere volumes te selecteren.",
|
||||||
|
"name": "Exponentieel Volume"
|
||||||
|
},
|
||||||
|
"in-app-menu": {
|
||||||
|
"description": "Geeft menubalken een chique, donkere of albumkleurige uitstraling",
|
||||||
|
"menu": {
|
||||||
|
"hide-dom-window-controls": "Verberg DOM-vensterbedieningselementen"
|
||||||
|
},
|
||||||
|
"name": "In-App Menu"
|
||||||
|
},
|
||||||
|
"lumiastream": {
|
||||||
|
"description": "Voegt ondersteuning voor Lumia Stream toe",
|
||||||
|
"name": "Lumia Stream [Beta]"
|
||||||
|
},
|
||||||
|
"lyrics-genius": {
|
||||||
|
"description": "Voegt tekstondersteuning toe voor de meeste nummers",
|
||||||
|
"menu": {
|
||||||
|
"romanized-lyrics": "Geromaniseerde Teksten"
|
||||||
|
},
|
||||||
|
"name": "Lyrics Genius",
|
||||||
|
"renderer": {
|
||||||
|
"fetched-lyrics": "Teksten opgehaald voor Genius"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"music-together": {
|
||||||
|
"description": "Deel een afspeellijst met anderen. Wanneer de host een nummer afspeelt, hoort iedereen anders hetzelfde nummer",
|
||||||
|
"dialog": {
|
||||||
|
"enter-host": "Voer Host-ID in"
|
||||||
|
},
|
||||||
|
"internal": {
|
||||||
|
"save": "Opslaan",
|
||||||
|
"track-source": "Bron van nummers",
|
||||||
|
"unknown-user": "Onbekende gebruiker"
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"click-to-copy-id": "Host-ID kopiëren",
|
||||||
|
"close": "Sluit Music Samen",
|
||||||
|
"connected-users": "Verbonden gebruikers",
|
||||||
|
"disconnect": "Music Samen verbreken",
|
||||||
|
"empty-user": "Geen verbonden gebruikers",
|
||||||
|
"host": "Music Samen Host",
|
||||||
|
"join": "Voeg Music Samen toe",
|
||||||
|
"permission": {
|
||||||
|
"all": "Gasten toestaan de afspeellijst en speler te bedienen",
|
||||||
|
"host-only": "Alleen de host kan de afspeellijst en speler bedienen",
|
||||||
|
"playlist": "Gasten toestaan de afspeellijst te bedienen"
|
||||||
|
},
|
||||||
|
"set-permission": "Bedieningsmachtiging wijzigen",
|
||||||
|
"status": {
|
||||||
|
"disconnected": "Verbroken",
|
||||||
|
"guest": "Verbonden als Gast",
|
||||||
|
"host": "Verbonden als Host"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Music Samen [Beta]",
|
||||||
|
"toast": {
|
||||||
|
"add-song-failed": "Toevoegen van nummer mislukt",
|
||||||
|
"closed": "Music Samen gesloten",
|
||||||
|
"disconnected": "Music Samen verbroken",
|
||||||
|
"host-failed": "Hosten van Music Samen mislukt",
|
||||||
|
"id-copied": "Host-ID gekopieerd naar klembord",
|
||||||
|
"id-copy-failed": "Kopiëren van Host-ID naar klembord mislukt",
|
||||||
|
"join-failed": "Aansluiten bij Music Samen mislukt",
|
||||||
|
"joined": "Music Samen toegetreden",
|
||||||
|
"permission-changed": "Music Samen machtiging gewijzigd naar \"{{permission}}\"",
|
||||||
|
"remove-song-failed": "Verwijderen van nummer mislukt",
|
||||||
|
"user-connected": "{{name}} heeft Music Samen toegetreden",
|
||||||
|
"user-disconnected": "{{name}} heeft Music Samen verlaten"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"description": "Volgende/Vorige navigatiepijlen rechtstreeks geïntegreerd in de interface, zoals in je favoriete browser",
|
||||||
|
"name": "Navigatie"
|
||||||
|
},
|
||||||
|
"no-google-login": {
|
||||||
|
"description": "Verwijder Google aanmeldknoppen en -links uit de interface",
|
||||||
|
"name": "Geen Google Aanmelding"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"description": "Toont een melding wanneer een nummer begint te spelen (interactieve meldingen zijn beschikbaar op Windows)",
|
||||||
|
"menu": {
|
||||||
|
"interactive": "Interactieve Meldingen"
|
||||||
|
},
|
||||||
|
"name": "Meldingen"
|
||||||
|
},
|
||||||
|
"visualizer": {
|
||||||
|
"description": "Voeg een visuele equalizer toe",
|
||||||
|
"name": "Visualizer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -207,13 +207,14 @@
|
|||||||
"name": "Bloqueador de anúncios"
|
"name": "Bloqueador de anúncios"
|
||||||
},
|
},
|
||||||
"album-actions": {
|
"album-actions": {
|
||||||
"description": "Adiciona os botões Gostei e Não Gostei para ser aplicado a todas as músicas em uma lista de reprodução ou álbum.",
|
"description": "Adiciona os botões Anular Rejeição, Não Gostei, Gostei e Anular o Gosto para ser aplicado a todas as músicas de uma lista de reprodução ou álbum",
|
||||||
"name": "Ações no álbum"
|
"name": "Ações no álbum"
|
||||||
},
|
},
|
||||||
"album-color-theme": {
|
"album-color-theme": {
|
||||||
"description": "Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum",
|
"description": "Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum",
|
||||||
"menu": {
|
"menu": {
|
||||||
"color-mix-ratio": {
|
"color-mix-ratio": {
|
||||||
|
"label": "Rácio de mistura das cores",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"percent": "Proporção"
|
"percent": "Proporção"
|
||||||
}
|
}
|
||||||
@ -577,9 +578,11 @@
|
|||||||
"name": "Trocador de qualidade do vídeo"
|
"name": "Trocador de qualidade do vídeo"
|
||||||
},
|
},
|
||||||
"scrobbler": {
|
"scrobbler": {
|
||||||
|
"description": "Adicionar suporte para scrobbling (Last.fm, ListenBrainz)",
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"auth-failed": {
|
"auth-failed": {
|
||||||
|
"message": "Falha ao autenticar com a Last.fm\nOculte o pop-up até a próxima reinicialização.",
|
||||||
"title": "Falha na autenticação"
|
"title": "Falha na autenticação"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -587,9 +590,18 @@
|
|||||||
"menu": {
|
"menu": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"api-settings": "Configurações de API Last.fm"
|
"api-settings": "Configurações de API Last.fm"
|
||||||
}
|
},
|
||||||
|
"listenbrainz": {
|
||||||
|
"token": "Insira o token de utilizador ListenBrainz"
|
||||||
|
},
|
||||||
|
"scrobble-other-media": "Scrobble outros mídia"
|
||||||
},
|
},
|
||||||
|
"name": "Scrobbler",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
|
"lastfm": {
|
||||||
|
"api-key": "Chave de API Last.fm",
|
||||||
|
"api-secret": "Segredo da API Last.fm"
|
||||||
|
},
|
||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": {
|
"token": {
|
||||||
"label": "Insira seu token de usuário do ListenBrainz:",
|
"label": "Insira seu token de usuário do ListenBrainz:",
|
||||||
|
|||||||
@ -491,7 +491,7 @@
|
|||||||
},
|
},
|
||||||
"no-google-login": {
|
"no-google-login": {
|
||||||
"description": "Убрать из интерфейса кнопки и ссылки для входа через Google",
|
"description": "Убрать из интерфейса кнопки и ссылки для входа через Google",
|
||||||
"name": "Нет входа в систему Google"
|
"name": "Без входа в систему Google"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"description": "Показывать уведомления о начале воспроизведения песни (интерактивные уведомления доступны в Windows)",
|
"description": "Показывать уведомления о начале воспроизведения песни (интерактивные уведомления доступны в Windows)",
|
||||||
@ -578,7 +578,7 @@
|
|||||||
"name": "Изменение качества видео"
|
"name": "Изменение качества видео"
|
||||||
},
|
},
|
||||||
"scrobbler": {
|
"scrobbler": {
|
||||||
"description": "Добавьте поддержку скробблинга (например, last.fm, Listenbrainz)",
|
"description": "Добавляет поддержку скробблинга (last.fm, Listenbrainz)",
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"auth-failed": {
|
"auth-failed": {
|
||||||
|
|||||||
107
src/i18n/resources/sv.json
Normal file
107
src/i18n/resources/sv.json
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"language": {
|
||||||
|
"code": "sv",
|
||||||
|
"local-name": "Svenska",
|
||||||
|
"name": "Swedish"
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"navigation": {
|
||||||
|
"name": "Navigering"
|
||||||
|
},
|
||||||
|
"no-google-login": {
|
||||||
|
"name": "Inget Google Login"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"name": "Notiser"
|
||||||
|
},
|
||||||
|
"picture-in-picture": {
|
||||||
|
"menu": {
|
||||||
|
"hotkey": {
|
||||||
|
"label": "Snabbkommando",
|
||||||
|
"prompt": {
|
||||||
|
"keybind-options": {
|
||||||
|
"hotkey": "Snabbkommando"
|
||||||
|
},
|
||||||
|
"title": "Bild-I-Bild genväg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Bild-I-Bild",
|
||||||
|
"templates": {
|
||||||
|
"button": "Bild-i-bild"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"playback-speed": {
|
||||||
|
"name": "Uppspelningshastighet",
|
||||||
|
"templates": {
|
||||||
|
"button": "Hasighet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"precise-volume": {
|
||||||
|
"prompt": {
|
||||||
|
"global-shortcuts": {
|
||||||
|
"keybind-options": {
|
||||||
|
"decrease": "Minska Volym",
|
||||||
|
"increase": "Öka Volym"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volume-steps": {
|
||||||
|
"title": "Volymsteg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quality-changer": {
|
||||||
|
"backend": {
|
||||||
|
"dialog": {
|
||||||
|
"quality-changer": {
|
||||||
|
"detail": "Nuvarande kvalité: {{quality}}",
|
||||||
|
"message": "Välj Video Kvalité:",
|
||||||
|
"title": "Välj Video Kvalité"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scrobbler": {
|
||||||
|
"prompt": {
|
||||||
|
"lastfm": {
|
||||||
|
"api-key": "Last.fm API nyckel"
|
||||||
|
},
|
||||||
|
"listenbrainz": {
|
||||||
|
"token": {
|
||||||
|
"title": "ListenBrainz token"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shortcuts": {
|
||||||
|
"prompt": {
|
||||||
|
"keybind": {
|
||||||
|
"keybind-options": {
|
||||||
|
"next": "Nästa",
|
||||||
|
"play-pause": "Spela / Pausa",
|
||||||
|
"previous": "Föregående"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"video-toggle": {
|
||||||
|
"menu": {
|
||||||
|
"align": {
|
||||||
|
"submenu": {
|
||||||
|
"left": "Vänster",
|
||||||
|
"middle": "Mitten",
|
||||||
|
"right": "Höger"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mode": {
|
||||||
|
"submenu": {
|
||||||
|
"disabled": "Inaktiverad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"button": "Låt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -83,7 +83,7 @@
|
|||||||
"navigation": {
|
"navigation": {
|
||||||
"label": "導覽列",
|
"label": "導覽列",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"copy-current-url": "複製目前的網址",
|
"copy-current-url": "複製當前頁面的網址",
|
||||||
"go-back": "回到上一頁",
|
"go-back": "回到上一頁",
|
||||||
"go-forward": "回到下一頁",
|
"go-forward": "回到下一頁",
|
||||||
"quit": "退出",
|
"quit": "退出",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"toggle-dev-tools": "切換開發者人員工具"
|
"toggle-dev-tools": "切換開發者人員工具"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"always-on-top": "永遠顯示在最上層",
|
"always-on-top": "最上層顯示",
|
||||||
"auto-update": "自動更新",
|
"auto-update": "自動更新",
|
||||||
"hide-menu": {
|
"hide-menu": {
|
||||||
"dialog": {
|
"dialog": {
|
||||||
@ -128,22 +128,22 @@
|
|||||||
},
|
},
|
||||||
"label": "語言",
|
"label": "語言",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"to-help-translate": "想要協助翻譯?按一下這裡"
|
"to-help-translate": "想協助翻譯?按一下這裡"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resume-on-start": "應用啟動時繼續上次播放的歌曲",
|
"resume-on-start": "應用啟動時繼續上次播放的歌曲",
|
||||||
"single-instance-lock": "單視窗鎖定",
|
"single-instance-lock": "單實例模式",
|
||||||
"start-at-login": "開機時啟動",
|
"start-at-login": "開機時啟動",
|
||||||
"starting-page": {
|
"starting-page": {
|
||||||
"label": "啟動頁面",
|
"label": "啟動頁面",
|
||||||
"unset": "不指定"
|
"unset": "不指定"
|
||||||
},
|
},
|
||||||
"tray": {
|
"tray": {
|
||||||
"label": "系統閘圖式",
|
"label": "系統閘",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"disabled": "已停用",
|
"disabled": "已停用",
|
||||||
"enabled-and-hide-app": "啟用並隱藏應用程式",
|
"enabled-and-hide-app": "啟用並最小化應用程式",
|
||||||
"enabled-and-show-app": "啟用並顯示應用程式",
|
"enabled-and-show-app": "啟用但持續顯示應用程式",
|
||||||
"play-pause-on-click": "點擊時播放/暫停"
|
"play-pause-on-click": "點擊時播放/暫停"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -514,7 +514,7 @@
|
|||||||
"picture-in-picture": {
|
"picture-in-picture": {
|
||||||
"description": "允許應用程式切換至子母畫面模式",
|
"description": "允許應用程式切換至子母畫面模式",
|
||||||
"menu": {
|
"menu": {
|
||||||
"always-on-top": "永遠顯示在最上層",
|
"always-on-top": "最上層顯示",
|
||||||
"hotkey": {
|
"hotkey": {
|
||||||
"label": "快捷鍵",
|
"label": "快捷鍵",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
|
|||||||
@ -15,6 +15,8 @@ const SOURCES = [
|
|||||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2023.txt',
|
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2023.txt',
|
||||||
// Fanboy Annoyances
|
// Fanboy Annoyances
|
||||||
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
|
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
|
||||||
|
// AdGuard
|
||||||
|
'https://filters.adtidy.org/extension/ublock/filters/122_optimized.txt',
|
||||||
];
|
];
|
||||||
|
|
||||||
let blocker: ElectronBlocker | undefined;
|
let blocker: ElectronBlocker | undefined;
|
||||||
|
|||||||
@ -99,7 +99,7 @@ function registerMPRIS(win: BrowserWindow) {
|
|||||||
const microToSec = (n: number) => Math.round(Number(n) / 1e6);
|
const microToSec = (n: number) => Math.round(Number(n) / 1e6);
|
||||||
|
|
||||||
const correctId = (videoId: string) => {
|
const correctId = (videoId: string) => {
|
||||||
return videoId.replace('-', '_MINUS_');
|
return videoId.replace(/-/g, '_MINUS_');
|
||||||
};
|
};
|
||||||
|
|
||||||
const seekTo = (event: Position) => {
|
const seekTo = (event: Position) => {
|
||||||
|
|||||||
@ -27,15 +27,15 @@ export default createPlugin<
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
start() {
|
start() {
|
||||||
this.waitForElem('#like-button-renderer').then((likeBtn) => {
|
this.waitForElem('#dislike-button-renderer').then((dislikeBtn) => {
|
||||||
this.observer = new MutationObserver(() => {
|
this.observer = new MutationObserver(() => {
|
||||||
if (likeBtn?.getAttribute('like-status') == 'DISLIKE') {
|
if (dislikeBtn?.getAttribute('like-status') == 'DISLIKE') {
|
||||||
document
|
document
|
||||||
.querySelector<HTMLButtonElement>('tp-yt-paper-icon-button.next-button')
|
.querySelector<HTMLButtonElement>('tp-yt-paper-icon-button.next-button')
|
||||||
?.click();
|
?.click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.observer.observe(likeBtn, {
|
this.observer.observe(dislikeBtn, {
|
||||||
attributes: true,
|
attributes: true,
|
||||||
childList: false,
|
childList: false,
|
||||||
subtree: false,
|
subtree: false,
|
||||||
|
|||||||
@ -209,10 +209,19 @@ const registerProvider = (win: BrowserWindow) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const suffixesToRemove = [
|
const suffixesToRemove = [
|
||||||
' - topic',
|
// Artist names
|
||||||
'vevo',
|
/\s*(- topic)$/i,
|
||||||
' (performance video)',
|
/\s*vevo$/i,
|
||||||
' (clip official)',
|
|
||||||
|
// Video titles
|
||||||
|
/\s*[(|\[]official(.*?)[)|\]]/i, // (Official Music Video), [Official Visualizer], etc...
|
||||||
|
/\s*[(|\[]((lyrics?|visualizer|audio)\s*(video)?)[)|\]]/i,
|
||||||
|
/\s*[(|\[](performance video)[)|\]]/i,
|
||||||
|
/\s*[(|\[](clip official)[)|\]]/i,
|
||||||
|
/\s*[(|\[](video version)[)|\]]/i,
|
||||||
|
/\s*[(|\[](HD|HQ)\s*?(?:audio)?[)|\]]$/i,
|
||||||
|
/\s*[(|\[](live)[)|\]]$/i,
|
||||||
|
/\s*[(|\[]4K\s*?(?:upgrade)?[)|\]]$/i,
|
||||||
];
|
];
|
||||||
|
|
||||||
export function cleanupName(name: string): string {
|
export function cleanupName(name: string): string {
|
||||||
@ -220,15 +229,8 @@ export function cleanupName(name: string): string {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
name = name.replace(
|
|
||||||
/\((?:official)? ?(?:music)? ?(?:lyrics?)? ?(?:video)?\)$/i,
|
|
||||||
'',
|
|
||||||
);
|
|
||||||
const lowCaseName = name.toLowerCase();
|
|
||||||
for (const suffix of suffixesToRemove) {
|
for (const suffix of suffixesToRemove) {
|
||||||
if (lowCaseName.endsWith(suffix)) {
|
name = name.replace(suffix, '');
|
||||||
return name.slice(0, -suffix.length);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
|
|||||||
@ -59,7 +59,7 @@ async function onApiLoaded() {
|
|||||||
});
|
});
|
||||||
window.ipcRenderer.on('ytmd:switch-repeat', (_, repeat = 1) => {
|
window.ipcRenderer.on('ytmd:switch-repeat', (_, repeat = 1) => {
|
||||||
for (let i = 0; i < repeat; i++) {
|
for (let i = 0; i < repeat; i++) {
|
||||||
document.querySelector<HTMLElement & { onRepeatButtonTap: () => void }>('ytmusic-player-bar')?.onRepeatButtonTap();
|
document.querySelector<HTMLElement & { onRepeatButtonClick: () => void }>('ytmusic-player-bar')?.onRepeatButtonClick();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
window.ipcRenderer.on('ytmd:update-volume', (_, volume: number) => {
|
window.ipcRenderer.on('ytmd:update-volume', (_, volume: number) => {
|
||||||
|
|||||||
@ -74,6 +74,7 @@ tp-yt-paper-item.ytmusic-guide-entry-renderer::before {
|
|||||||
margin-top: auto !important;
|
margin-top: auto !important;
|
||||||
margin-bottom: auto !important;
|
margin-bottom: auto !important;
|
||||||
max-height: calc(100% - (var(--ytmusic-player-page-vertical-padding) * 2));
|
max-height: calc(100% - (var(--ytmusic-player-page-vertical-padding) * 2));
|
||||||
|
max-width: calc(100% - var(--ytmusic-player-page-vertical-padding) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
ytmusic-player[player-ui-state=FULLSCREEN] {
|
ytmusic-player[player-ui-state=FULLSCREEN] {
|
||||||
|
|||||||
Reference in New Issue
Block a user