mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
Compare commits
136 Commits
feat/webno
...
v3.3.8
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d99a854e2 | |||
| cd4f0ccad7 | |||
| b572623442 | |||
| ef02fdcf45 | |||
| 25d5c16af0 | |||
| 6f49313f03 | |||
| 55c7456c69 | |||
| 78c435b3c4 | |||
| 5e43f38348 | |||
| 24000acda0 | |||
| 24becf0337 | |||
| 8c80922b6b | |||
| 813a089f0d | |||
| 197bead857 | |||
| 5f7a705394 | |||
| 646c0d79a3 | |||
| 5a1313397e | |||
| 4bc70ac2b8 | |||
| dc5b2f96be | |||
| d10b297d75 | |||
| 933b4cc8f0 | |||
| 4557aff9b6 | |||
| 3a42d700fe | |||
| 1a142a8a39 | |||
| 922b04cd54 | |||
| bdfae8ce24 | |||
| 08a537e509 | |||
| 51d8145f13 | |||
| 7e74f33030 | |||
| 0bb8d9bcd9 | |||
| 19a4cb901b | |||
| c497dff69b | |||
| cd0164b665 | |||
| ab35cd3049 | |||
| 13b2ff3a2e | |||
| e00c1b51c7 | |||
| 0a2a289939 | |||
| 919b6ba7cb | |||
| f0683177d8 | |||
| 13450580d0 | |||
| 2375067d19 | |||
| b2fe0f21cb | |||
| 3e0257ba07 | |||
| 4f078284f3 | |||
| e87fa12fdc | |||
| 354c44d717 | |||
| f55faa0a8a | |||
| eaf9d310aa | |||
| bbd10b657d | |||
| 8600b5558f | |||
| 9c7eb5dc26 | |||
| ac63a6a200 | |||
| 3389994ff9 | |||
| adaee80913 | |||
| 4e467d9308 | |||
| a85fc609cb | |||
| 96f69953f2 | |||
| 9095b46a15 | |||
| 4415927465 | |||
| e6b25119cd | |||
| 09e02aeac8 | |||
| f3de17112a | |||
| 91392c0c7e | |||
| 54683a233f | |||
| 8d12eeb033 | |||
| 0ba35890b1 | |||
| 4783ca5942 | |||
| 1517a60215 | |||
| 4ca3c8b7e2 | |||
| 93081c89c8 | |||
| 09255b626b | |||
| 33fe008b5c | |||
| e72ac3d9d0 | |||
| 14a926aa88 | |||
| 99311dba6d | |||
| 5e9f545e4e | |||
| 0cc8fdf564 | |||
| 27e0e7173a | |||
| 2710c62b82 | |||
| a50de65a66 | |||
| c21758f8e6 | |||
| 1a5f6c2a8f | |||
| d521a84f85 | |||
| 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 |
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
version: 9
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
@ -61,6 +61,7 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
sudo snap install snapcraft --classic
|
||||
pnpm release:linux
|
||||
|
||||
- name: Build and release on Windows
|
||||
@ -91,7 +92,7 @@ jobs:
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
version: 9
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
|
||||
11
README.md
11
README.md
@ -21,7 +21,7 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md)
|
||||
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md)
|
||||
|
||||
**Electron wrapper around YouTube Music featuring:**
|
||||
|
||||
@ -178,7 +178,7 @@ latest version.
|
||||
Install the [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) package from the AUR. For AUR installation instructions, take a look at
|
||||
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### MacOS
|
||||
### macOS
|
||||
|
||||
You can install the app using Homebrew (see the [cask definition](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
@ -365,8 +365,11 @@ export default createPlugin({
|
||||
4. Run `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux
|
||||
- `pnpm dist:mac` - MacOS
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 for Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 for Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Builds the app for macOS, Linux, and Windows,
|
||||
using [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
97
changelog.md
97
changelog.md
@ -2,8 +2,105 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [v3.3.7](https://github.com/th-ch/youtube-music/compare/v3.3.6...v3.3.7)
|
||||
|
||||
- chore(deps): update dependency electron to v30.0.9 [`#2098`](https://github.com/th-ch/youtube-music/pull/2098)
|
||||
- Revert "fix(deps): update dependency @cliqz/adblocker-electron to v1.27.6" [`#2101`](https://github.com/th-ch/youtube-music/pull/2101)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.6 [`#2096`](https://github.com/th-ch/youtube-music/pull/2096)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.86 [`#2092`](https://github.com/th-ch/youtube-music/pull/2092)
|
||||
- chore(deps): update dependency vite to v5.2.12 [`#2094`](https://github.com/th-ch/youtube-music/pull/2094)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.11.0 [`#2093`](https://github.com/th-ch/youtube-music/pull/2093)
|
||||
- chore(docs): Added README-es.md and linked to README.md [`#2090`](https://github.com/th-ch/youtube-music/pull/2090)
|
||||
- fix(deps): update dependency deepmerge-ts to v7 [`#2085`](https://github.com/th-ch/youtube-music/pull/2085)
|
||||
- chore(deps): update dependency builtin-modules to v4 [`#2084`](https://github.com/th-ch/youtube-music/pull/2084)
|
||||
- fix(deps): update dependency electron-debug to v4 [`#2086`](https://github.com/th-ch/youtube-music/pull/2086)
|
||||
- fix(deps): update dependency electron-store to v9 [`#2087`](https://github.com/th-ch/youtube-music/pull/2087)
|
||||
- fix(deps): update dependency conf to v12 [`#1463`](https://github.com/th-ch/youtube-music/pull/1463)
|
||||
- fix(deps): update dependency youtubei.js to v9.4.0 [`#2083`](https://github.com/th-ch/youtube-music/pull/2083)
|
||||
- chore(deps): update playwright monorepo to v1.44.1 [`#2082`](https://github.com/th-ch/youtube-music/pull/2082)
|
||||
- chore(deps): update dependency ws to v8.17.0 [`#2081`](https://github.com/th-ch/youtube-music/pull/2081)
|
||||
- chore(deps): update dependency glob to v10.4.1 [`#2080`](https://github.com/th-ch/youtube-music/pull/2080)
|
||||
- chore(deps): update dependency eslint to v9.3.0 [`#2079`](https://github.com/th-ch/youtube-music/pull/2079)
|
||||
- fix(deps): update dependency peerjs to v1.5.4 [`#2075`](https://github.com/th-ch/youtube-music/pull/2075)
|
||||
- chore(deps): update dependency esbuild to v0.21.4 [`#2078`](https://github.com/th-ch/youtube-music/pull/2078)
|
||||
- fix(deps): update dependency semver to v7.6.2 [`#2076`](https://github.com/th-ch/youtube-music/pull/2076)
|
||||
- chore(deps): update dependency electron-vite to v2.2.0 [`#2077`](https://github.com/th-ch/youtube-music/pull/2077)
|
||||
- fix(deps): update dependency i18next to v23.11.5 [`#2074`](https://github.com/th-ch/youtube-music/pull/2074)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.3 [`#2071`](https://github.com/th-ch/youtube-music/pull/2071)
|
||||
- chore(deps): update dependency vite to v5.2.11 [`#2070`](https://github.com/th-ch/youtube-music/pull/2070)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.5 [`#2073`](https://github.com/th-ch/youtube-music/pull/2073)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.3 [`#2072`](https://github.com/th-ch/youtube-music/pull/2072)
|
||||
- chore(deps): update pnpm to v9 [`#1980`](https://github.com/th-ch/youtube-music/pull/1980)
|
||||
- chore(deps): update dependency electron to v30.0.8 [`#2068`](https://github.com/th-ch/youtube-music/pull/2068)
|
||||
- chore(deps-dev): bump ejs from 3.1.9 to 3.1.10 [`#2023`](https://github.com/th-ch/youtube-music/pull/2023)
|
||||
- chore(deps): update dependency utf-8-validate to v6.0.4 [`#2069`](https://github.com/th-ch/youtube-music/pull/2069)
|
||||
- fix(MPRIS): Prevents player to start with invalid MPRIS interface [`#1996`](https://github.com/th-ch/youtube-music/pull/1996)
|
||||
- fix(deps): update dependency solid-js to v1.8.17 [`#2002`](https://github.com/th-ch/youtube-music/pull/2002)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.10.0 [`#2000`](https://github.com/th-ch/youtube-music/pull/2000)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.85 [`#1998`](https://github.com/th-ch/youtube-music/pull/1998)
|
||||
- fix(deps): update dependency serve to v14.2.3 [`#1997`](https://github.com/th-ch/youtube-music/pull/1997)
|
||||
- chore(deps): update dependency rollup to v4.18.0 [`#1990`](https://github.com/th-ch/youtube-music/pull/1990)
|
||||
- feat: Enable arm64 for deb and rpm [`#2033`](https://github.com/th-ch/youtube-music/pull/2033)
|
||||
- chore (README-is.md): Replace viðbót with tengiforrit [`#2004`](https://github.com/th-ch/youtube-music/pull/2004)
|
||||
- chore(docs): readme file translated to french [`#2049`](https://github.com/th-ch/youtube-music/pull/2049)
|
||||
- chore(deps): update dependency @babel/runtime to v7.24.6 [`#2039`](https://github.com/th-ch/youtube-music/pull/2039)
|
||||
- Fix substract `margin-top` in fullscreen mode [`#2015`](https://github.com/th-ch/youtube-music/pull/2015)
|
||||
- chore(deps): update pnpm to v8.15.7 [`#1970`](https://github.com/th-ch/youtube-music/pull/1970)
|
||||
- fix(renderer): fix macos traffic lights gap [`#2035`](https://github.com/th-ch/youtube-music/issues/2035)
|
||||
- Fix substract `margin-top` in fullscreen mode [`#2013`](https://github.com/th-ch/youtube-music/issues/2013)
|
||||
- chore(i18n): Translated using Weblate (Hungarian) [`f3de171`](https://github.com/th-ch/youtube-music/commit/f3de17112af787437362f31b5c4e2d4149ba1436)
|
||||
- feat(menu): add theme list in menu [`933b4cc`](https://github.com/th-ch/youtube-music/commit/933b4cc8f062b3442afd4516a40eb2938db98fc6)
|
||||
- chore(i18n): Translated using Weblate (Filipino) [`91392c0`](https://github.com/th-ch/youtube-music/commit/91392c0c7efaf3b33da4be4aaa7946af7108d676)
|
||||
|
||||
#### [v3.3.6](https://github.com/th-ch/youtube-music/compare/v3.3.5...v3.3.6)
|
||||
|
||||
> 13 April 2024
|
||||
|
||||
- fix: add AdGuard as blocklist sources [`#1966`](https://github.com/th-ch/youtube-music/pull/1966)
|
||||
- chore(deps): update dependency rollup to v4.14.2 [`#1968`](https://github.com/th-ch/youtube-music/pull/1968)
|
||||
- fix(deps): update dependency youtubei.js to v9.3.0 [`#1967`](https://github.com/th-ch/youtube-music/pull/1967)
|
||||
- chore(deps): update playwright monorepo to v1.43.1 [`#1969`](https://github.com/th-ch/youtube-music/pull/1969)
|
||||
- chore(deps): update dependency electron to v29.3.0 [`#1961`](https://github.com/th-ch/youtube-music/pull/1961)
|
||||
- fix(mpris): use global regex to replace minus in the video ID [`#1963`](https://github.com/th-ch/youtube-music/pull/1963)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.1 [`#1954`](https://github.com/th-ch/youtube-music/pull/1954)
|
||||
- chore(deps): update dependency typescript to v5.4.5 [`#1958`](https://github.com/th-ch/youtube-music/pull/1958)
|
||||
- fix(deps): update dependency youtubei.js to v9.2.1 [`#1957`](https://github.com/th-ch/youtube-music/pull/1957)
|
||||
- fix(deps): update dependency i18next to v23.11.1 [`#1956`](https://github.com/th-ch/youtube-music/pull/1956)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.1 [`#1953`](https://github.com/th-ch/youtube-music/pull/1953)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.6.0 [`#1947`](https://github.com/th-ch/youtube-music/pull/1947)
|
||||
- fix(deps): update dependency i18next to v23.11.0 [`#1946`](https://github.com/th-ch/youtube-music/pull/1946)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1941`](https://github.com/th-ch/youtube-music/pull/1941)
|
||||
- chore(deps): update dependency eslint to v9 [`#1940`](https://github.com/th-ch/youtube-music/pull/1940)
|
||||
- chore(deps): update dependency rollup to v4.14.1 [`#1944`](https://github.com/th-ch/youtube-music/pull/1944)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1937`](https://github.com/th-ch/youtube-music/pull/1937)
|
||||
- chore(deps): update dependency typescript to v5.4.4 [`#1936`](https://github.com/th-ch/youtube-music/pull/1936)
|
||||
- chore(deps): update playwright monorepo to v1.43.0 [`#1938`](https://github.com/th-ch/youtube-music/pull/1938)
|
||||
- chore(deps): bump undici from 5.28.3 to 5.28.4 [`#1935`](https://github.com/th-ch/youtube-music/pull/1935)
|
||||
- chore(deps): update dependency vite to v5.2.8 [`#1930`](https://github.com/th-ch/youtube-music/pull/1930)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.79 [`#1933`](https://github.com/th-ch/youtube-music/pull/1933)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1910`](https://github.com/th-ch/youtube-music/pull/1910)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1908`](https://github.com/th-ch/youtube-music/pull/1908)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.0 [`#1906`](https://github.com/th-ch/youtube-music/pull/1906)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.0 [`#1907`](https://github.com/th-ch/youtube-music/pull/1907)
|
||||
- chore(deps): update dependency rollup to v4.13.2 [`#1901`](https://github.com/th-ch/youtube-music/pull/1901)
|
||||
- chore(deps): update dependency glob to v10.3.12 [`#1900`](https://github.com/th-ch/youtube-music/pull/1900)
|
||||
- chore(deps): update dependency vite to v5.2.7 [`#1905`](https://github.com/th-ch/youtube-music/pull/1905)
|
||||
- fix(deps): update dependency node-html-parser to v6.1.13 [`#1903`](https://github.com/th-ch/youtube-music/pull/1903)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.77 [`#1899`](https://github.com/th-ch/youtube-music/pull/1899)
|
||||
- chore(deps): update dependency electron to v29.1.6 [`#1898`](https://github.com/th-ch/youtube-music/pull/1898)
|
||||
- Improve video title filters [`#1667`](https://github.com/th-ch/youtube-music/pull/1667)
|
||||
- chore(deps): update dependency rollup to v4.13.1 [`#1896`](https://github.com/th-ch/youtube-music/pull/1896)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1890`](https://github.com/th-ch/youtube-music/pull/1890)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1889`](https://github.com/th-ch/youtube-music/pull/1889)
|
||||
- fix: fix `switch-repeat` [`#1810`](https://github.com/th-ch/youtube-music/issues/1810)
|
||||
- i18n Translation to Dutch/nl [`0dbf029`](https://github.com/th-ch/youtube-music/commit/0dbf0295b805f9883522ee00983b338060fbddbe)
|
||||
- fix: rollback electron-builder version to 24.9.4 [`4a57cc5`](https://github.com/th-ch/youtube-music/commit/4a57cc5ee9ab2ad6835cff75b8b3aead75d9e564)
|
||||
- chore: update electron-builder to 25.0.0-alpha.6 [`aef03ab`](https://github.com/th-ch/youtube-music/commit/aef03ab9fd440fe19c41e315cffab27e976c723d)
|
||||
|
||||
#### [v3.3.5](https://github.com/th-ch/youtube-music/compare/v3.3.4...v3.3.5)
|
||||
|
||||
> 26 March 2024
|
||||
|
||||
- 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)
|
||||
|
||||
390
docs/readme/README-es.md
Normal file
390
docs/readme/README-es.md
Normal file
@ -0,0 +1,390 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="/web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
**Electron wrapper de YouTube Music con las siguientes características:**
|
||||
|
||||
- Apariencia y sensación nativa, tiene como objetivo mantener la interfaz original
|
||||
- Framework para plugins personalizados: cambia YouTube Music según tus necesidades (estilo, contenido, funciones), habilita/deshabilita plugins con un solo clic
|
||||
|
||||
## Imagen de demostración
|
||||
|
||||
| Pantalla del reproductor (color del álbum como tema y luz ambiental) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Contenido
|
||||
|
||||
- [Características](#características)
|
||||
- [Plugins disponibles](#plugins-disponibles)
|
||||
- [Traducción](#traducción)
|
||||
- [Descarga](#descarga)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [macOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Cómo instalar sin conexión a internet? (en Windows)](#cómo-instalar-sin-conexión-a-internet-en-windows)
|
||||
- [Temas](#temas)
|
||||
- [Dev](#dev)
|
||||
- [Crea tus propios plugins](#crea-tus-propios-plugins)
|
||||
- [Creación de un plugin](#creación-de-un-plugin)
|
||||
- [Casos de uso comunes](#casos-de-uso-comunes)
|
||||
- [Compilar](#compilar)
|
||||
- [Vista previa de producción](#vista-previa-de-producción)
|
||||
- [Tests](#tests)
|
||||
- [Licencia](#licencia)
|
||||
- [Preguntas frecuentes](#preguntas-frecuentes)
|
||||
|
||||
## Características:
|
||||
|
||||
- **Confirmación automática al pausar** (Siempre habilitado): desactiva
|
||||
el mensaje emergente ["¿Continuar reproduciendo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
que pausa la música después de cierto tiempo
|
||||
|
||||
- Y más ...
|
||||
|
||||
## Plugins disponibles:
|
||||
|
||||
- **Bloqueador de Anuncios**: Bloquea todos los anuncios y rastreadores de forma predeterminada
|
||||
|
||||
- **Acciones de Álbum**: Agrega botones de deshacer No me gusta, No me gusta, Me gusta, y Deshacer me gusta a todas las canciones de una lista de reproducción o álbum
|
||||
|
||||
- **Tema de Color del Álbum**: Aplica un tema dinámico y efectos visuales basados en la paleta de colores del álbum
|
||||
|
||||
- **Modo Ambiente**: Aplica un efecto de iluminación proyectando colores suaves del video en el fondo de tu pantalla
|
||||
|
||||
- **Compresor de Audio**: Aplica compresión al audio (reduce el volumen de las partes más fuertes de la señal y aumenta el
|
||||
volumen de las partes más suaves)
|
||||
|
||||
- **Barra de Navegación Difuminada**: hace que la barra de navegación sea transparente y borrosa
|
||||
|
||||
- **Omitir Restricciones de Edades**: omite la verificación de edad de YouTube
|
||||
|
||||
- **Selector de Subtítulos**: Habilita los subtítulos
|
||||
|
||||
- **Barra Lateral Compacta**: Siempre muestra la barra lateral en modo compacto
|
||||
|
||||
- **Crossfade**: Transición suave entre canciones
|
||||
|
||||
- **Desactivar Reproducción Automática**: Hace que cada canción comience en modo "pausado"
|
||||
|
||||
- **[Discord](https://discord.com/) Rich Presence**: Muestra a tus amigos lo que estás escuchando
|
||||
con [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Descargador**: Descarga
|
||||
MP3 [directamente desde la interfaz](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Volumen Exponencial**: Hace que el control de volumen
|
||||
sea [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar la
|
||||
selección de volúmenes más bajos
|
||||
|
||||
- **Menú en la Aplicación**: [da a las barras un aspecto elegante y oscuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (consulta [esta publicación](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si tienes problemas
|
||||
para acceder al menú después de habilitar este plugin y la opción hide-menu)
|
||||
|
||||
- **Scrobbler**: Agrega soporte para scrobbling en [Last.fm](https://www.last.fm/) y [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream**: Agrega soporte para [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Letras Genius**: Agrega soporte de letras para la mayoría de las canciones
|
||||
|
||||
- **Music Together**: Comparte una lista de reproducción con otros. Cuando el anfitrión reproduce una canción, todos los demás escucharán la misma canción
|
||||
|
||||
- **Navegación**: Flechas de siguiente/anterior integradas directamente en la interfaz, como en tu navegador favorito
|
||||
|
||||
- **Sin Inicio de Sesión de Google**: Elimina los botones y enlaces de inicio de sesión de Google de la interfaz
|
||||
|
||||
- **Notificaciones**: Muestra una notificación cuando comienza una canción
|
||||
a reproducirse ([notificaciones interactivas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
|
||||
están disponibles en Windows)
|
||||
|
||||
- **Picture-in-picture**: permite cambiar la aplicación al modo picture-in-picture
|
||||
|
||||
- **Velocidad de Reproducción**: Escucha rápido, escucha
|
||||
lento! [Agrega un deslizador que controla la velocidad de reproducción de las canciones](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Volumen Preciso**: Controla el volumen de forma precisa utilizando la rueda del mouse/atajos de teclado, con un HUD personalizado y pasos de volumen personalizables
|
||||
|
||||
- **Atajos (& MPRIS)**: Permite configurar atajos globales para la reproducción (reproducir/pausar/siguiente/anterior) +
|
||||
desactivar [osd multimedia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
|
||||
al anular las teclas multimedia + habilitar Ctrl/CMD + F para buscar + habilitar el soporte mpris de Linux para
|
||||
teclas multimedia + [atajos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
|
||||
para [usuarios avanzados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Saltar Canción no Gustada**: Salta las canciones que no te gustan
|
||||
|
||||
- **Saltar Silencios**: Salta automáticamente las secciones de silencio
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Salta automáticamente las partes que no son de música, como la introducción/final o
|
||||
partes de videos musicales donde no se reproduce la canción
|
||||
|
||||
- **Control Multimedia en la Barra de Tareas**: Controla la reproducción desde
|
||||
la [barra de tareas de Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar**: Diseño personalizado de TouchBar para macOS
|
||||
|
||||
- **Tuna OBS**: Integración con el complemento [Tuna](https://obsproject.com/forum/resources/tuna.843/) de [OBS](https://obsproject.com/)
|
||||
|
||||
- **Cambiador de Calidad de Video**: Permite cambiar la calidad del video con
|
||||
un [botón](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) en
|
||||
la superposición de video
|
||||
|
||||
- **Alternar Video**: Agrega
|
||||
un [botón](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para
|
||||
alternar entre el modo de video/canción. también puede eliminar opcionalmente toda la pestaña de video
|
||||
|
||||
- **Visualizador**: Diferentes visualizadores de música
|
||||
|
||||
## Traducción
|
||||
|
||||
Puedes ayudar con la traducción en [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="estado de traducción" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="estado de traducción 2" />
|
||||
</a>
|
||||
|
||||
## Descarga
|
||||
|
||||
Puedes consultar la [última versión](https://github.com/th-ch/youtube-music/releases/latest) para encontrar rápidamente la versión más reciente.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Instala el paquete [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) desde AUR. Para obtener instrucciones de instalación de AUR, consulta esta [página del wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
Puedes instalar la aplicación usando Homebrew (consulta la [definición de cask](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Si instalas la aplicación manualmente y obtienes un error "está dañado y no se puede abrir" al iniciar la aplicación, ejecuta lo siguiente en la Terminal:
|
||||
|
||||
```bash
|
||||
xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Puedes usar el [administrador de paquetes Scoop](https://scoop.sh) para instalar el paquete `youtube-music` desde
|
||||
el [`extras` bucket](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternativamente, puedes usar [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), el administrador de paquetes CLI oficial de Windows 11 para instalar el paquete `th-ch.YouTubeMusic`.
|
||||
|
||||
*Nota: Microsoft Defender SmartScreen podría bloquear la instalación ya que proviene de un "editor desconocido". Esto también esválido para la instalación manual al intentar ejecutar el ejecutable (.exe) después de una descarga manual aquí en GitHub (mismo archivo).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Cómo instalar sin conexión a Internet? (en Windows)
|
||||
|
||||
- Descarga el archivo `*.nsis.7z` para _la arquitectura de tu dispositivo_ en la [página de lanzamientos](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` para Windows de 64 bits
|
||||
- `ia32` para Windows de 32 bits
|
||||
- `arm64` para Windows ARM64
|
||||
- Descarga el instalador en la página de lanzamientos. (`*-Setup.exe`)
|
||||
- Colócalos en el **mismo directorio**.
|
||||
- Ejecuta el instalador.
|
||||
|
||||
## Temas
|
||||
|
||||
Puedes cargar archivos CSS para cambiar la apariencia de la aplicación (Opciones > Ajustes visuales > Tema).
|
||||
|
||||
Algunos temas predefinidos están disponibles en https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Crea tus propios plugins
|
||||
|
||||
Usando plugins, puedes:
|
||||
|
||||
- manipular la aplicación - se pasa el `BrowserWindow` de electron al controlador del plugin
|
||||
- cambiar la interfaz manipulando el HTML/CSS
|
||||
|
||||
### Creación de un plugin
|
||||
|
||||
Crea una carpeta en `src/plugins/NOMBRE-DEL-PLUGIN`:
|
||||
|
||||
- `index.ts`: el archivo principal del plugin
|
||||
```typescript
|
||||
import style from './style.css?inline'; // importar estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: "Plugin Label",
|
||||
restartNeeded: true, // si el valor es true, ytmusic muestra el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
stylesheets: [style], // tu estilo personalizado,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Todos los métodos *Config están envueltos en Promise<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: "menu",
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: "radio",
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// puedes comunicarte con el plugin de renderizado
|
||||
ipc.handle("some-event", () => {
|
||||
return "hello";
|
||||
});
|
||||
},
|
||||
// se activa cuando cambia la configuración
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// se activa cuando se desactiva el plugin
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke("some-event"));
|
||||
},
|
||||
// Solo disponible en el plugin de renderizado
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// establecer la configuración del plugin fácilmente
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### Casos de uso comunes
|
||||
|
||||
- inyectar CSS personalizado: crea un archivo `style.css` en la misma carpeta y luego:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // importar estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
stylesheets: [style], // tu estilo personalizado
|
||||
renderer() {} // define el hook del renderizador
|
||||
});
|
||||
```
|
||||
|
||||
- Si quieres cambiar el HTML:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
renderer() {
|
||||
// Elimina el botón de inicio de sesión
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // define el hook del renderizador
|
||||
});
|
||||
```
|
||||
|
||||
- comunicación entre el front y el back: se puede hacer utilizando el módulo ipcMain de electron. Ver archivo `index.ts` y
|
||||
ejemplo en el plugin `sponsorblock`.
|
||||
|
||||
## Compilar
|
||||
|
||||
1. Clonar el repositorio
|
||||
2. Seguir [esta guía](https://pnpm.io/es/installation) para instalar `pnpm`
|
||||
3. Ejecutar `pnpm install --frozen-lockfile` para instalar las dependencias
|
||||
4. Ejecutar `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Construye la aplicación para macOS, Linux y Windows,
|
||||
utilizando [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Vista previa de producción
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Utiliza [Playwright](https://playwright.dev/) para probar la aplicación.
|
||||
|
||||
## Licencia
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Preguntas frecuentes
|
||||
|
||||
### ¿Por qué no se muestra el menú de aplicaciones?
|
||||
|
||||
Si la opción `Ocultar menú` está activada - puedes mostrar el menú con la tecla <kbd>alt</kbd> (o <kbd>\`</kbd> [acento grave] si estás utilizando el plugin in-app-menu)
|
||||
388
docs/readme/README-fr.md
Normal file
388
docs/readme/README-fr.md
Normal file
@ -0,0 +1,388 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="https://github.com/th-ch/youtube-music/raw/master/web/youtube-music.svg" width="400" height="100" alt="SVG YouTube Music">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
**Enveloppe Electron autour de YouTube Music offrant :**
|
||||
|
||||
- Aspect & sensation naturels, vise à conserver l'interface originale
|
||||
- Cadre pour les plugins personnalisés : modifiez YouTube Music selon vos besoins (style, contenu, fonctionnalités), activez/désactivez les plugins en
|
||||
un clic
|
||||
|
||||
## Image de démonstration
|
||||
|
||||
| Écran du lecteur (thème de couleur de l'album & lumière ambiante) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Contenu
|
||||
|
||||
- [Fonctionnalités](#fonctionnalités)
|
||||
- [Plugins disponibles](#plugins-disponibles)
|
||||
- [Traduction](#traduction)
|
||||
- [Téléchargement](#téléchargement)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Comment installer sans connexion réseau ? (sous Windows)](#comment-installer-sans-connexion-réseau-sous-windows)
|
||||
- [Thèmes](#thèmes)
|
||||
- [Dev](#dev)
|
||||
- [Créez vos propres plugins](#créez-vos-propres-plugins)
|
||||
- [Créer un plugin](#créer-un-plugin)
|
||||
- [Cas d'utilisation courants](#cas-dutilisation-courants)
|
||||
- [Construction](#construction)
|
||||
- [Aperçu de la production](#aperçu-de-la-production)
|
||||
- [Tests](#tests)
|
||||
- [Licence](#licence)
|
||||
- [FAQ](#faq)
|
||||
|
||||
## Fonctionnalités :
|
||||
|
||||
- **Confirmation automatique lors de la pause** (Toujours activé) : désactiver
|
||||
la pop-up ["Continuer à regarder ?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
qui pause la musique après un certain temps
|
||||
|
||||
- Et plus encore ...
|
||||
|
||||
## Plugins disponibles :
|
||||
|
||||
- **Bloqueur de publicités** : Bloquez toutes les publicités et le suivi dès le départ
|
||||
|
||||
- **Actions d'album** : Ajoute des boutons Je n'aime pas, Dislike, J'aime, et Unlike pour appliquer cela à toutes les chansons dans une playlist ou un album
|
||||
|
||||
- **Thème de couleur d'album** : Applique un thème dynamique et des effets visuels basés sur la palette de couleurs de l'album
|
||||
|
||||
- **Mode Ambiant** : Applique un effet d'éclairage en projetant des couleurs douces de la vidéo, sur l'arrière-plan de votre écran
|
||||
|
||||
- **Compresseur Audio** : Appliquer une compression audio (diminue le volume des parties les plus fortes du signal et augmente le
|
||||
volume des parties les plus douces)
|
||||
|
||||
- **Barre de navigation floue** : rend la barre de navigation transparente et floue
|
||||
|
||||
- **Contournement des restrictions d'âge** : contourner la vérification d'âge de YouTube
|
||||
|
||||
- **Sélecteur de sous-titres** : Activer les sous-titres
|
||||
|
||||
- **Barre latérale compacte** : Toujours définir la barre latérale en mode compact
|
||||
|
||||
- **Fondu enchaîné** : Fondu enchaîné entre les chansons
|
||||
|
||||
- **Désactiver la lecture automatique** : Fait démarrer chaque chanson en mode "pause"
|
||||
|
||||
- **[Discord](https://discord.com/) Présence riche** : Montrez à vos amis ce que vous écoutez
|
||||
avec [Présence riche](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Téléchargeur** : télécharge des
|
||||
MP3 [directement depuis l'interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Volume exponentiel** : Rend le curseur de volume
|
||||
[exponentiel](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) afin qu'il soit plus facile de
|
||||
sélectionner des volumes plus bas
|
||||
|
||||
- **Menu In-App** : [donne aux barres un aspect chic et sombre](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (voir [ce poste](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si vous avez des problèmes
|
||||
pour accéder au menu après avoir activé ce plugin et l'option masquer-menu)
|
||||
|
||||
- **Scrobbler** : Ajoute le support de scrobbling pour [Last.fm](https://www.last.fm/) et [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream** : Ajoute le support de [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Lyrics Genius** : Ajoute le support des paroles pour la plupart des chansons
|
||||
|
||||
- **Musique Ensemble** : Partagez une playlist avec d'autres. Lorsque l'hôte joue une chanson, tout le monde entendra la même chanson
|
||||
|
||||
- **Navigation** : Flèches de navigation Suivant/Retour directement intégrées dans l'interface, comme dans votre navigateur préféré
|
||||
|
||||
- **Pas de connexion Google** : Supprime les boutons et les liens de connexion Google de l'interface
|
||||
|
||||
- **Notifications** : Affiche une notification lorsqu'une chanson commence à jouer ([notifications interactives](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
|
||||
sont disponibles sur Windows)
|
||||
|
||||
- **Image dans l'image** : permet de passer l'application en mode image dans l'image
|
||||
|
||||
- **Vitesse de lecture** : Écoutez rapidement, écoutez lentement ! [Ajoute un curseur qui contrôle la vitesse des chansons](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Volume précis** : Contrôlez le volume précisément en utilisant la molette de la souris/raccourcis clavier, avec un hud personnalisé et des étapes de volume personnalisables
|
||||
|
||||
- **Raccourcis (& MPRIS)** : Permet de définir des raccourcis globaux pour la lecture (lecture/pause/suivant/précédent) +
|
||||
désactive [osd média](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
|
||||
en remplaçant les touches multimédias + activer Ctrl/CMD + F pour rechercher + activer le support mpris linux pour
|
||||
les touches multimédias + [raccourcis personnalisés](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
|
||||
pour [utilisateurs avancés](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Passer la chanson non aimée** : passe les chansons non aimées
|
||||
|
||||
- **Passer les silences** : passe automatiquement les sections silencieuses
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock) : Saute automatiquement les parties non musicales comme les intros/outros ou
|
||||
les parties des clips vidéo où la chanson n'est pas jouée
|
||||
|
||||
- **Contrôle multimédia de la barre des tâches** : Contrôlez la lecture depuis
|
||||
votre [barre des tâches Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar** : Disposition personnalisée de la TouchBar pour macOS
|
||||
|
||||
- **Tuna OBS** : Intégration avec le
|
||||
plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) d'[OBS](https://obsproject.com/)
|
||||
|
||||
- **Changeur de qualité vidéo** : Permet de changer la qualité vidéo avec
|
||||
un [bouton](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) sur
|
||||
l'overlay vidéo
|
||||
|
||||
- **Bascule vidéo** : Ajoute
|
||||
un [bouton](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) pour
|
||||
basculer entre le mode Vidéo/Chanson. peut également supprimer l'onglet vidéo entier
|
||||
|
||||
- **Visualiseur** : Différents visualiseurs musicaux
|
||||
|
||||
## Traduction
|
||||
|
||||
Vous pouvez aider à la traduction sur [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="statut de la traduction" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="statut de la traduction 2" />
|
||||
</a>
|
||||
|
||||
## Téléchargement
|
||||
|
||||
Vous pouvez consulter la [dernière sortie](https://github.com/th-ch/youtube-music/releases/latest) pour trouver rapidement la
|
||||
dernière version.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Installez le paquet [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) depuis l'AUR. Pour les instructions d'installation de l'AUR, consultez
|
||||
cette [page wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### MacOS
|
||||
|
||||
Vous pouvez installer l'application en utilisant Homebrew (voir la [définition du fût](https://github.com/th-ch/homebrew-youtube-music)) :
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Si vous installez l'application manuellement et obtenez une erreur "est endommagé et ne peut pas être ouvert." lors du lancement de l'application, exécutez ce qui suit dans le Terminal :
|
||||
|
||||
```bash
|
||||
xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Vous pouvez utiliser le [gestionnaire de paquets Scoop](https://scoop.sh) pour installer le paquet `youtube-music` depuis le [seau `extras`](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternativement, vous pouvez utiliser [Winget](https://learn.microsoft.com/fr-fr/windows/package-manager/winget/), le gestionnaire de paquets CLI officiel de Windows 11, pour installer le paquet `th-ch.YouTubeMusic`.
|
||||
|
||||
*Note : Microsoft Defender SmartScreen pourrait bloquer l'installation car elle provient d'un "éditeur inconnu". Ceci est également vrai pour l'installation manuelle lors de l'essai d'exécution de l'exécutable (.exe) après un téléchargement manuel ici sur GitHub (même fichier).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Comment installer sans connexion réseau ? (sous Windows)
|
||||
|
||||
- Téléchargez le fichier `*.nsis.7z` pour _l'architecture de votre appareil_ sur la [page des versions](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` pour Windows 64 bits
|
||||
- `ia32` pour Windows 32 bits
|
||||
- `arm64` pour Windows ARM64
|
||||
- Téléchargez l'installeur sur la page des versions. (`*-Setup.exe`)
|
||||
- Placez-les dans le **même dossier**.
|
||||
- Exécutez l'installeur.
|
||||
|
||||
## Thèmes
|
||||
|
||||
Vous pouvez charger des fichiers CSS pour changer l'apparence de l'application (Options > Ajustements visuels > Thèmes).
|
||||
|
||||
Certains thèmes prédéfinis sont disponibles sur [https://github.com/kerichdev/themes-for-ytmdesktop-player](https://github.com/kerichdev/themes-for-ytmdesktop-player).
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
## Créez vos propres plugins
|
||||
|
||||
En utilisant des plugins, vous pouvez :
|
||||
|
||||
- manipuler l'application - la `BrowserWindow` d'Electron est passée au gestionnaire de plugin
|
||||
- changer le front en manipulant le HTML/CSS
|
||||
|
||||
### Créer un plugin
|
||||
|
||||
Créez un dossier dans `src/plugins/NOM-DE-VOTRE-PLUGIN` :
|
||||
|
||||
- `index.ts` : le fichier principal du plugin
|
||||
```typescript
|
||||
import style from './style.css?inline'; // importez le style comme inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
stylesheets: [style], // votre style personnalisé,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Toutes les méthodes *Config sont des promesses encapsulées <T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'menu',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `valeur ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// vous pouvez communiquer avec le plugin du rendu
|
||||
ipc.handle('un événement', () => {
|
||||
return 'bonjour';
|
||||
});
|
||||
},
|
||||
// il est déclenché lorsque la configuration change
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// il est déclenché lorsque le plugin est désactivé
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('un événement'));
|
||||
},
|
||||
// Seul le crochet disponible pour le rendu
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// définir facilement la configuration du plugin
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config is obtained by `getConfig` method.
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### Cas d'utilisation courants
|
||||
|
||||
- **Injection de CSS personnalisé** : créez un fichier `style.css` dans le même dossier puis :
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // importez le style comme en ligne
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
stylesheets: [style], // votre style personnalisé
|
||||
renderer() {} // définissez le crochet de rendu
|
||||
});
|
||||
```
|
||||
|
||||
- **Si vous voulez modifier le HTML** :
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
renderer() {
|
||||
// Supprimez le bouton de connexion
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // définissez le crochet de rendu
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
- **Communication entre le front et le back** : cela peut se faire en utilisant le module ipcMain d'Electron. Voir le fichier `index.ts` et l'exemple dans le plugin `sponsorblock`.
|
||||
|
||||
## Construction
|
||||
|
||||
1. Clonez le dépôt
|
||||
2. Suivez [ce guide](https://pnpm.io/installation) pour installer `pnpm`
|
||||
3. Exécutez `pnpm install --frozen-lockfile` pour installer les dépendances
|
||||
4. Exécutez `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - pour Windows
|
||||
- `pnpm dist:linux` - pour Linux
|
||||
- `pnpm dist:mac` - pour MacOS
|
||||
|
||||
Construit l'application pour macOS, Linux et Windows,
|
||||
en utilisant [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Aperçu de la production
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Utilise [Playwright](https://playwright.dev/) pour tester l'application.
|
||||
|
||||
## Licence
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## FAQ
|
||||
|
||||
### Pourquoi le menu de l'application ne s'affiche-t-il pas ?
|
||||
|
||||
Si l'option `Masquer le menu` est activée - vous pouvez afficher le menu avec la touche <kbd>alt</kbd> (ou <kbd>\`</kbd> [backtick] si vous utilisez le plugin du menu intégré)
|
||||
@ -24,7 +24,7 @@
|
||||
**Electron umbúðir utan um YouTube Tónlist sem inniheldur:**
|
||||
|
||||
- Innfæddur útlit og tilfinning, miðar að því að halda upprunalegu viðmótinu
|
||||
- Rammi fyrir sérsniðnar viðbætur: breyttu YouTube Tónlist að þínum þörfum (stíl, efni, eiginleikar), virkjaðu/slökktu á viðbætur í
|
||||
- Rammi fyrir sérsniðnar tengiforrit: breyttu YouTube Tónlist að þínum þörfum (stíl, efni, eiginleikar), virkjaðu/slökktu á viðbætur í
|
||||
einn smellur
|
||||
|
||||
## Sýnishornsmynd
|
||||
@ -36,7 +36,7 @@
|
||||
## Efni
|
||||
|
||||
- [Eiginleikar](#eiginleikar)
|
||||
- [Tiltæk viðbætur](#tiltæk-viðbætur)
|
||||
- [Tiltæk tengiforrit](#tiltæk-tengiforrit)
|
||||
- [Þýðing](#þýðing)
|
||||
- [Sækja](#sækja)
|
||||
- [Arch Linux](#arch-linux)
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
- Og meira...
|
||||
|
||||
## Tiltæk viðbætur:
|
||||
## Tiltæk tengiforrit:
|
||||
|
||||
- **Auglýsingablokkari**: Lokaðu fyrir allar auglýsingar og rakningar úr kassanum
|
||||
|
||||
@ -186,7 +186,7 @@ xattr -cr /Applications/YouTube\ Music.app
|
||||
### Windows
|
||||
|
||||
Þú getur notað [Scoop pakkastjórnun](https://scoop.sh) til að setja upp `youtube-music` pakkann frá
|
||||
[`extras` fötuna](https://github.com/ScoopInstaller/Extras).
|
||||
[`extras` fötunni](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
@ -229,18 +229,18 @@ pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Búðu til þín eigin viðbætur
|
||||
## Búðu til þín eigin tengiforrit
|
||||
|
||||
Með því að nota viðbætur geturðu:
|
||||
Með því að nota tengiforrit geturðu:
|
||||
|
||||
- vinna með appið - `BrowserWindow` frá electron er sent til viðbótarstjórans
|
||||
- vinna með appið - `BrowserWindow` frá electron er sent til tengiforritsstjórans
|
||||
- breyttu framhliðinni með því að vinna með HTML/CSS
|
||||
|
||||
### Er að búa til viðbót
|
||||
### Er að búa til tengiforrit
|
||||
|
||||
Búðu til möppu í `src/plugins/YOUR-PLUGIN-NAME`:
|
||||
|
||||
- `index.ts`: aðal skránni af viðbótin
|
||||
- `index.ts`: aðal skránni af tengiforritið
|
||||
```typescript
|
||||
import style from './style.css?inline'; // flytja inn stíl sem inline
|
||||
|
||||
@ -248,7 +248,7 @@ import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic show endurræsa gluggann
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
@ -274,7 +274,7 @@ export default createPlugin({
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// þú getur tengst við renderer viðbótina
|
||||
// þú getur tengst við renderer tengiforritið
|
||||
ipc.handle('some-event', () => {
|
||||
return 'hello';
|
||||
});
|
||||
@ -318,7 +318,7 @@ import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic show endurræsa gluggann
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
@ -334,7 +334,7 @@ import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic show endurræsa gluggann
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
@ -346,7 +346,7 @@ export default createPlugin({
|
||||
```
|
||||
|
||||
- samskipti á milli að framan og aftan: hægt að gera með því að nota ipcMain eininguna frá electron. Sjá `index.ts` skrá og
|
||||
dæmi í 'styrktarblokk' viðbótinni.
|
||||
dæmi í 'styrktarblokk' tengiforritinu.
|
||||
|
||||
## Byggja
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { resolve, dirname } from 'node:path';
|
||||
import { resolve, dirname, join } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
import { defineConfig, defineViteConfig } from 'electron-vite';
|
||||
@ -52,7 +52,7 @@ export default defineConfig({
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/backend' }),
|
||||
Inspect({ build: true, outputDir: join(__dirname, '.vite-inspect/backend') }),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
@ -96,7 +96,7 @@ export default defineConfig({
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/preload' }),
|
||||
Inspect({ build: true, outputDir: join(__dirname, '.vite-inspect/preload') }),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
@ -143,7 +143,7 @@ export default defineConfig({
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/renderer' }),
|
||||
Inspect({ build: true, outputDir: join(__dirname, '.vite-inspect/renderer') }),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
|
||||
79
package.json
79
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "youtube-music",
|
||||
"productName": "YouTube Music",
|
||||
"version": "3.3.5",
|
||||
"version": "3.3.8",
|
||||
"description": "YouTube Music Desktop App - including custom plugins",
|
||||
"main": "./dist/main/index.js",
|
||||
"license": "MIT",
|
||||
@ -107,6 +107,8 @@
|
||||
"clean": "del-cli dist && del-cli pack && del-cli .vite-inspect",
|
||||
"dist": "pnpm clean && pnpm build && pnpm electron-builder --win --mac --linux -p never",
|
||||
"dist:linux": "pnpm clean && pnpm build && pnpm electron-builder --linux -p never",
|
||||
"dist:linux:deb-arm64": "pnpm clean && pnpm build && pnpm electron-builder --linux deb:arm64 -p never",
|
||||
"dist:linux:rpm-arm64": "pnpm clean && pnpm build && pnpm electron-builder --linux rpm:arm64 -p never",
|
||||
"dist:mac": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:x64 -p never",
|
||||
"dist:mac:arm64": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:arm64 -p never",
|
||||
"dist:win": "pnpm clean && pnpm build && pnpm electron-builder --win -p never",
|
||||
@ -119,30 +121,32 @@
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
"node": ">=18.0.0",
|
||||
"pnpm": ">=8"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"usocket": "1.0.1",
|
||||
"node-gyp": "10.0.1",
|
||||
"node-gyp": "10.1.0",
|
||||
"xml2js": "0.6.2",
|
||||
"node-fetch": "3.3.2",
|
||||
"@electron/universal": "2.0.1",
|
||||
"@babel/runtime": "7.23.8"
|
||||
"@babel/runtime": "7.24.6"
|
||||
},
|
||||
"patchedDependencies": {
|
||||
"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": {
|
||||
"@cliqz/adblocker-electron": "1.26.16",
|
||||
"@cliqz/adblocker-electron-preload": "1.26.16",
|
||||
"@cliqz/adblocker-electron": "1.27.3",
|
||||
"@cliqz/adblocker-electron-preload": "1.27.3",
|
||||
"@electron-toolkit/tsconfig": "1.0.1",
|
||||
"@electron/remote": "2.1.2",
|
||||
"@ffmpeg.wasm/core-mt": "0.12.0",
|
||||
"@ffmpeg.wasm/main": "0.12.0",
|
||||
"@floating-ui/dom": "1.6.3",
|
||||
"@floating-ui/dom": "1.6.5",
|
||||
"@foobar404/wave": "2.0.5",
|
||||
"@jellybrick/electron-better-web-request": "1.0.4",
|
||||
"@jellybrick/mpris-service": "2.1.4",
|
||||
@ -151,14 +155,14 @@
|
||||
"butterchurn": "3.0.0-beta.4",
|
||||
"butterchurn-presets": "3.0.0-beta.4",
|
||||
"color": "4.2.3",
|
||||
"conf": "10.2.0",
|
||||
"conf": "12.0.0",
|
||||
"custom-electron-prompt": "1.5.7",
|
||||
"dbus-next": "0.10.2",
|
||||
"deepmerge-ts": "5.1.0",
|
||||
"electron-debug": "3.2.0",
|
||||
"deepmerge-ts": "7.0.1",
|
||||
"electron-debug": "4.0.0",
|
||||
"electron-is": "3.0.0",
|
||||
"electron-localshortcut": "3.2.1",
|
||||
"electron-store": "8.2.0",
|
||||
"electron-store": "9.0.0",
|
||||
"electron-unhandled": "4.0.1",
|
||||
"electron-updater": "6.1.8",
|
||||
"fast-average-color": "9.4.0",
|
||||
@ -166,65 +170,64 @@
|
||||
"filenamify": "6.0.0",
|
||||
"howler": "2.2.4",
|
||||
"html-to-text": "9.0.5",
|
||||
"i18next": "23.10.1",
|
||||
"i18next": "23.11.5",
|
||||
"keyboardevent-from-electron-accelerator": "2.0.0",
|
||||
"keyboardevents-areequal": "0.2.2",
|
||||
"node-html-parser": "6.1.12",
|
||||
"node-html-parser": "6.1.13",
|
||||
"node-id3": "0.2.6",
|
||||
"peerjs": "1.5.2",
|
||||
"semver": "7.6.0",
|
||||
"serve": "14.2.1",
|
||||
"peerjs": "1.5.4",
|
||||
"semver": "7.6.2",
|
||||
"serve": "14.2.3",
|
||||
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
|
||||
"solid-floating-ui": "0.3.1",
|
||||
"solid-js": "1.8.16",
|
||||
"solid-js": "1.8.17",
|
||||
"solid-styled-components": "0.28.5",
|
||||
"solid-transition-group": "0.2.3",
|
||||
"ts-morph": "22.0.0",
|
||||
"vudio": "2.1.1",
|
||||
"x11": "2.3.0",
|
||||
"youtubei.js": "9.1.0"
|
||||
"youtubei.js": "9.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "1.42.1",
|
||||
"@playwright/test": "1.44.1",
|
||||
"@total-typescript/ts-reset": "0.5.1",
|
||||
"@types/color": "3.0.6",
|
||||
"@types/electron-localshortcut": "3.1.3",
|
||||
"@types/howler": "2.2.11",
|
||||
"@types/html-to-text": "9.0.4",
|
||||
"@types/semver": "7.5.8",
|
||||
"@typescript-eslint/eslint-plugin": "7.4.0",
|
||||
"@typescript-eslint/eslint-plugin": "7.11.0",
|
||||
"bufferutil": "4.0.8",
|
||||
"builtin-modules": "3.3.0",
|
||||
"builtin-modules": "4.0.0",
|
||||
"cross-env": "7.0.3",
|
||||
"del-cli": "5.1.0",
|
||||
"discord-api-types": "0.37.76",
|
||||
"electron": "29.1.6",
|
||||
"electron-builder": "24.9.1",
|
||||
"discord-api-types": "0.37.86",
|
||||
"electron": "30.0.9",
|
||||
"electron-builder": "24.13.3",
|
||||
"electron-devtools-installer": "3.2.0",
|
||||
"electron-vite": "2.1.0",
|
||||
"esbuild": "0.20.2",
|
||||
"eslint": "8.57.0",
|
||||
"electron-vite": "2.2.0",
|
||||
"esbuild": "0.21.4",
|
||||
"eslint": "9.3.0",
|
||||
"eslint-import-resolver-exports": "1.0.0-beta.5",
|
||||
"eslint-import-resolver-typescript": "3.6.1",
|
||||
"eslint-plugin-import": "2.29.1",
|
||||
"eslint-plugin-prettier": "5.1.3",
|
||||
"glob": "10.3.10",
|
||||
"glob": "10.4.1",
|
||||
"node-gyp": "10.1.0",
|
||||
"playwright": "1.42.1",
|
||||
"rollup": "4.13.1",
|
||||
"typescript": "5.4.3",
|
||||
"utf-8-validate": "6.0.3",
|
||||
"vite": "5.2.6",
|
||||
"vite-plugin-inspect": "0.8.3",
|
||||
"playwright": "1.44.1",
|
||||
"rollup": "4.18.0",
|
||||
"typescript": "5.4.5",
|
||||
"utf-8-validate": "6.0.4",
|
||||
"vite": "5.2.12",
|
||||
"vite-plugin-inspect": "0.8.4",
|
||||
"vite-plugin-resolve": "2.5.1",
|
||||
"vite-plugin-solid": "2.10.2",
|
||||
"ws": "8.16.0"
|
||||
"ws": "8.17.0"
|
||||
},
|
||||
"auto-changelog": {
|
||||
"hideCredit": true,
|
||||
"package": true,
|
||||
"unreleased": true,
|
||||
"output": "changelog.md"
|
||||
},
|
||||
"packageManager": "pnpm@8.15.5"
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
9662
pnpm-lock.yaml
generated
9662
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,14 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Αποτυχία εκτέλεσης προσθέτου {{pluginName}}::{{contextName}}"
|
||||
"execute-failed": "Αποτυχία εκτέλεσης προσθέτου {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Το πρόσθετο {{pluginName}}::{{contextName}} εκτελέστηκε σε {{ms}}ms",
|
||||
"initialize-failed": "Απέτυχε η αρχικοποίηση του πρόσθετου \"{{pluginName}}\"",
|
||||
"load-all": "Φόρτωση όλων των πρόσθετων",
|
||||
"load-failed": "Απέτυχε η φόρτωση του πρόσθετου \"{{pluginName}}\"",
|
||||
"loaded": "Το πρόσθετο \"{{pluginName}}\" φορτώθηκε",
|
||||
"unload-failed": "Απέτυχε η απεγκατάσταση του πρόσθετου \"{{pluginName}}\"",
|
||||
"unloaded": "Το πρόσθετο \"{{pluginName}}\" απεγκαταστάθηκε"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -12,44 +19,132 @@
|
||||
"name": "Greek"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Η φόρτωση ολοκληρώθηκε. Τα DevTools άνοιξαν"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "Το i18n φορτώθηκε"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Λήφθηκε εντολή μέσω πρωτοκόλλου: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, αγνοείται"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Σφάλμα ανταπόκρισης!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Εκκαθάριση της cache της εφαρμογής"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Το παράθυρο προσπάθησε να απεικονίσει εκτός οθόνης, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"message": "Απόκρυψη μενού είναι ενεργοποιημένο"
|
||||
"detail": "Το μενού είναι κρυμμένο, χρησιμοποιήστε το 'Alt' για να το εμφανίσετε (ή το 'Escape' αν χρησιμοποιείτε το μενού εφαρμογής)",
|
||||
"message": "Απόκρυψη μενού είναι ενεργοποιημένο",
|
||||
"title": "Ενεργοποιήθηκε η Απόκρυψη του Μενού"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Αργότερα",
|
||||
"restart-now": "Επανεκκίνηση Τώρα"
|
||||
},
|
||||
"detail": "Το πρόσθετο \"{{pluginName}}\" απαιτεί επανεκκίνηση για να ισχύσει",
|
||||
"message": "Το \"{{pluginName}}\" χρειάζεται επανεκκίνηση",
|
||||
"title": "Απαιτείται Επανεκκίνηση"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Έξοδος",
|
||||
"relaunch": "Επανεκκίνηση",
|
||||
"wait": "Περίμενε"
|
||||
},
|
||||
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλούμε επιλέξτε τι να κάνετε:",
|
||||
"message": "Η εφαρμογή δεν ανταποκρίνεται",
|
||||
"title": "Το παράθυρο δεν ανταποκρίνεται"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"download": "Download",
|
||||
"ok": "OK"
|
||||
}
|
||||
"disable": "Απενεργοποίηση Ενημερώσεων",
|
||||
"download": "Λήψη",
|
||||
"ok": "Εντάξει"
|
||||
},
|
||||
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από τον σύνδεσμο {{downloadLink}}",
|
||||
"message": "Μια νέα έκδοση είναι διαθέσιμη",
|
||||
"title": "Υπάρχει Διαθέσιμη Ενημέρωση"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Σχετικά",
|
||||
"navigation": {
|
||||
"label": "Navigation"
|
||||
"label": "Πλοήγηση",
|
||||
"submenu": {
|
||||
"copy-current-url": "Αντιγραφή τρέχουσας διεύθυνσης URL",
|
||||
"go-back": "Πήγαινε πίσω",
|
||||
"go-forward": "Πήγαινε μπροστά",
|
||||
"quit": "Έξοδος",
|
||||
"restart": "Επανεκκίνηση Εφαρμογής"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Options",
|
||||
"label": "Επιλογές",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Προηγμένες επιλογές",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Επαναφορά της cache της εφαρμογής κατά την εκκίνηση της εφαρμογής",
|
||||
"disable-hardware-acceleration": "Απενεργοποίηση επιτάχυνσης υλικού",
|
||||
"edit-config-json": "Επεξεργασία του config.json",
|
||||
"override-user-agent": "Αντικατάσταση του User-Agent",
|
||||
"restart-on-config-changes": "Επανεκκίνηση κατά τις αλλαγές στο config",
|
||||
"set-proxy": {
|
||||
"label": "Set proxy",
|
||||
"label": "Ορισμός διακομιστή μεσολάβησης (proxy)",
|
||||
"prompt": {
|
||||
"title": "Set proxy"
|
||||
"label": "Εισαγωγή διεύθυνσης διακομιστή μεσολάβησης (proxy): (αφήστε κενό για απενεργοποίηση)",
|
||||
"placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Ορισμός διακομιστή μεσολάβησης (proxy)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Εναλλαγή DevTools"
|
||||
}
|
||||
},
|
||||
"auto-update": "Auto Update",
|
||||
"language": {
|
||||
"label": "Γλώσσα"
|
||||
"always-on-top": "Πάντα επάνω",
|
||||
"auto-update": "Αυτόματη Ενημέρωση",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Το μενού θα κρυφτεί στην επόμενη εκκίνηση, χρησιμοποιήστε [Alt] για να το εμφανίσετε (ή το πλήκτρο backtick [`] αν χρησιμοποιείτε το μενού εφαρμογής)",
|
||||
"title": "Η Δυνατότητα Απόκρυψης του Μενού ενεργοποιήθηκε"
|
||||
},
|
||||
"label": "Απόκρυψη Μενού"
|
||||
},
|
||||
"start-at-login": "Start at login",
|
||||
"tray": {
|
||||
"label": "Tray",
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Η γλώσσα θα αλλάξει μετά την επανεκκίνηση",
|
||||
"title": "Η γλώσσα άλλαξε"
|
||||
},
|
||||
"label": "Γλώσσα",
|
||||
"submenu": {
|
||||
"to-help-translate": "Θέλετε να βοηθήσετε στη μετάφραση; Κάντε κλικ εδώ"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Συνέχιση του τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά",
|
||||
"single-instance-lock": "Κλείδωμα Μοναδικής Εκδοχής",
|
||||
"start-at-login": "Έναρξη κατά την σύνδεση",
|
||||
"starting-page": {
|
||||
"label": "Σελίδα Έναρξης",
|
||||
"unset": "Κατάργηση Ορισμού"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Δίσκος",
|
||||
"submenu": {
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"enabled-and-hide-app": "Ενεργοποιημένο και απόκρυψη της εφαρμογής",
|
||||
"play-pause-on-click": "Play/Pause στο πάτημα"
|
||||
"enabled-and-show-app": "Ενεργοποιημένο και εμφάνιση της εφαρμογής",
|
||||
"play-pause-on-click": "Αναπαραγωγή/Παύση με κλικ"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
|
||||
@ -162,6 +162,14 @@
|
||||
"submenu": {
|
||||
"import-css-file": "Import custom CSS file",
|
||||
"no-theme": "No theme"
|
||||
},
|
||||
"dialog": {
|
||||
"remove-theme": "Are you sure you want to remove the custom theme?",
|
||||
"remove-theme-message": "This will remove the custom theme",
|
||||
"button": {
|
||||
"cancel": "Cancel",
|
||||
"remove": "Remove"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Remover el botón de Actualización",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Quitar"
|
||||
},
|
||||
"remove-theme": "¿Estás seguro de que quieres eliminar el tema personalizado?",
|
||||
"remove-theme-message": "Esto eliminará el tema personalizado"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importar archivo CSS personalizado",
|
||||
|
||||
301
src/i18n/resources/fil.json
Normal file
301
src/i18n/resources/fil.json
Normal file
@ -0,0 +1,301 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Nabigong patakbuin ang plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Ang plugin na {{pluginName}}::{{contextName}} ay pinatakbo sa loob ng {{ms}}ms",
|
||||
"initialize-failed": "Nabigo ang pagsimula ng plugin na \"{{pluginName}}\"",
|
||||
"load-all": "Nilo-load lahat ng mga plugin",
|
||||
"load-failed": "Nabigong i-load ang plugin na \"{{pluginName}}\"",
|
||||
"loaded": "Na-load ang \"{{pluginName}}\" na plugin",
|
||||
"unload-failed": "Nabigong i-unload ang plugin na \"{{pluginName}}\"",
|
||||
"unloaded": "Na-unload ang \"{{pluginName}}\" na plugin"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "fil",
|
||||
"local-name": "Tagalog",
|
||||
"name": "Filipino"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Natapos ang pag-load. Nabuksan ang DevTools"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "na-load ang i18n"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Natanggap ang command sa pamamagitan ng protocol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Ang CSS file na \"{{cssFile}}\" ay hindi umiiral, hindi papansin"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Hindi tumutugon na Error!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Naglilinis ng app cache"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Nasubukan ng window na mag-render sa labas ng screen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Nakatago ang menu, gamitin ang 'Alt' para makita ito (o 'Escape' kung gagamitin ang In-App na Menu)",
|
||||
"message": "Ang Pagtatago ng Menu ay napagana na",
|
||||
"title": "Napagana ang Pagtatago ng Menu"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Mamaya",
|
||||
"restart-now": "Mag-restart na"
|
||||
},
|
||||
"detail": "Ang plugin na \"{{pluginName}}\" ay kinakailangan ng restart para gumana ito",
|
||||
"message": "Kinakailangan ng \"{{pluginName}}\" na mag-restart",
|
||||
"title": "Kinakailangan ng Restart"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Umalis",
|
||||
"relaunch": "Muling patakbuhin",
|
||||
"wait": "Maghintay"
|
||||
},
|
||||
"detail": "Ikinalulungkot namin ang abala! piliin kung ano ang gagawin:",
|
||||
"message": "Ang Application ay Hindi Tumutugon",
|
||||
"title": "Di tumutugon ang Window"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Di-paganahin ang mga Update",
|
||||
"download": "I-download",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Ang isang bagong bersyon ay available at maaaring i-download sa {{downloadLink}}",
|
||||
"message": "Mayroong bagong version ay available",
|
||||
"title": "Available ang Update"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Patungkol",
|
||||
"navigation": {
|
||||
"label": "Nabigasyon",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopyahin ang kasalukuyang URL",
|
||||
"go-back": "Bumalik",
|
||||
"go-forward": "Pasulong",
|
||||
"quit": "Lumabas",
|
||||
"restart": "I-restart ang App"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Mga Opsyon",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Mga advance na opsyon",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "I-reset ang app cache kapag nagsisimula ang app",
|
||||
"disable-hardware-acceleration": "Di paganahin ang pagpapabilis ng hardware",
|
||||
"edit-config-json": "I-edit ang config.json",
|
||||
"override-user-agent": "I-override ang User-Agent",
|
||||
"restart-on-config-changes": "I-restart kada may pagbabago sa config",
|
||||
"set-proxy": {
|
||||
"label": "I-set ang proxy",
|
||||
"prompt": {
|
||||
"label": "Ilagay ang Proxy Address: (iwanang walang laman para di-paganahin)",
|
||||
"placeholder": "Halimbawa: SOCKS5://127.0.0.1:9999",
|
||||
"title": "I-set ang proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "I-toggle ang DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Laging nasa ibabaw",
|
||||
"auto-update": "Awto Update",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Ang menu ay itatago sa susunod na pag-launch, gamitin ang [Alt] upang ipakita ito (o backtick [`] kung gumagamit ng in-app-menu)",
|
||||
"title": "Pinagana ang Pagtatago ng Menu"
|
||||
},
|
||||
"label": "Pagtatago ng Menu"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Ang wika ay mababago pagkatapos mag-restart",
|
||||
"title": "Napalitan ang Wika"
|
||||
},
|
||||
"label": "Wika",
|
||||
"submenu": {
|
||||
"to-help-translate": "Gusto mong tumulong sa pagsasalin? Mag-click dito"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Ipagpatuloy ang huling kanta kapag nagsisimula ang app",
|
||||
"single-instance-lock": "I-lock sa isang Instance",
|
||||
"start-at-login": "Magsimula sa pag-login",
|
||||
"starting-page": {
|
||||
"label": "Simulang page",
|
||||
"unset": "I-unset"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Tray",
|
||||
"submenu": {
|
||||
"disabled": "Di-napagana",
|
||||
"enabled-and-hide-app": "Napagana at natago ang app",
|
||||
"enabled-and-show-app": "Napagana at napakita ang app",
|
||||
"play-pause-on-click": "Mag play/pause kada click"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Mga Biswal na Tweak",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Default",
|
||||
"force-show": "Pilitang ipakita",
|
||||
"hide": "Itago",
|
||||
"label": "Mga Like na button"
|
||||
},
|
||||
"remove-upgrade-button": "Tanggalin ang upgrade na button",
|
||||
"theme": {
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Mag-import ng custom na CSS file",
|
||||
"no-theme": "Walang tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Napagana",
|
||||
"label": "Mga Plugin",
|
||||
"new": "BAGO"
|
||||
},
|
||||
"view": {
|
||||
"label": "View",
|
||||
"submenu": {
|
||||
"force-reload": "Pilitang I-reload",
|
||||
"reload": "I-reload",
|
||||
"reset-zoom": "Aktuwal na Size",
|
||||
"toggle-fullscreen": "I-toggle ang Full Screen",
|
||||
"zoom-in": "Mag-zoom in",
|
||||
"zoom-out": "Mag-zoom out"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Susunod",
|
||||
"play-pause": "Mag-play/Mag-pause",
|
||||
"previous": "Nakaraan",
|
||||
"quit": "Lumabas",
|
||||
"restart": "I-restart ang App",
|
||||
"show": "Ipakita ang window",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"adblocker": {
|
||||
"description": "I-block lahat ng ad at tracking",
|
||||
"menu": {
|
||||
"blocker": "Blocker"
|
||||
},
|
||||
"name": "Ad Blocker"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Idadagdag ang Undislike, Dislike, Like, at Unlike na button para ilapat ito sa lahat ng kanta sa isang playlist o album",
|
||||
"name": "Mga aksyon sa Album"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Naglalapat ng dynamic na tema at visual effect batay sa color palette ng album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Ratio ng paghahalo ng kulay",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema ng Kulay ng Album"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Naglalapat ng lighting effect sa pamamagitan ng pag-cast ng mga magiliw na kulay mula sa video, sa background ng iyong screen",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Dami ng blur",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} na pixel"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Kalabuan (Opacity)",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kalidad",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} na pixel"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Laki",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Smoothness transition",
|
||||
"submenu": {
|
||||
"during": "Habang {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Gumamit ng fullscreen"
|
||||
}
|
||||
},
|
||||
"name": "Ambient Mode"
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Ilapat ang compression sa audio (pinababa ang volume ng pinakamalakas na bahagi ng signal at pinapataas ang volume ng pinakamalambot na bahagi)",
|
||||
"name": "Compressor ng Audio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Gawing transparent at malabo ang bar ng nabigasyon",
|
||||
"name": "Palabuin ang Bar ng Nabigasyon"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "I-bypass ang pag-verify ng edad ng YouTube",
|
||||
"name": "I-bypass ang Restriksyon sa Edad"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Tagapili ng caption para sa mga audio track ng YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Awtomatikong piliin ang huling ginamit na caption",
|
||||
"disable-captions": "Walang mga caption bilang default"
|
||||
},
|
||||
"name": "Tagapili ng Caption",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Kasalukuyang wika ng caption:{{language}}",
|
||||
"none": "Wala",
|
||||
"title": "Pumili ng wika ng caption"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Bumukas ng pagpilian ng caption"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -521,7 +521,7 @@
|
||||
"keybind-options": {
|
||||
"hotkey": "Raccourci clavier"
|
||||
},
|
||||
"label": "Choisissez un raccourci clavier pour activer l'image dans l'image",
|
||||
"label": "Choisissez un raccourci clavier pour activer le mode Image dans l'image",
|
||||
"title": "Touche de raccourci Image dans l'image"
|
||||
}
|
||||
},
|
||||
|
||||
@ -3,13 +3,13 @@
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Nem sikerült futtatni a plugint {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} a {{ms}}ms időpontban végrehajtott",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} a {{ms}}ms időpontban lefutott",
|
||||
"initialize-failed": "Nem sikerült inicializálni a \"{{pluginName}}\" plugint",
|
||||
"load-all": "Összes bővítmény betöltése",
|
||||
"load-failed": "Nem sikerült betölteni a \"{{pluginName}}\" plugint",
|
||||
"loaded": "Plugin \"{{pluginName}}\" betöltve",
|
||||
"loaded": "\"{{pluginName}}\" nevű plugin betöltve",
|
||||
"unload-failed": "Nem sikerült a \"{{pluginName}}\" bővítményt letölteni",
|
||||
"unloaded": "A \"{{pluginName}}\" bővítményt nem töltötték be"
|
||||
"unloaded": "A \"{{pluginName}}\" bővítmény kikapcsolva"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -39,7 +39,7 @@
|
||||
"clearing-cache-after-20s": "Alkalmazás gyorsítótárának törlése"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Az ablak a képernyőn kívül próbált renderelni, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
"tried-to-render-offscreen": "Az ablak a képernyőn kívül próbált betölteni, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
@ -53,8 +53,8 @@
|
||||
"later": "Később",
|
||||
"restart-now": "Újraindítás most"
|
||||
},
|
||||
"detail": "A \"{{pluginName}}\" plugin újraindítást igényel a hatálybalépéshez",
|
||||
"message": "\"{{pluginName}}\" újra kell indítani",
|
||||
"detail": "A \"{{pluginName}}\" plugin újraindítást igényel a bekapcsoláshoz",
|
||||
"message": "\"{{pluginName}}\" nevű plugin-t újra kell indítani",
|
||||
"title": "Újraindítás szükséges"
|
||||
},
|
||||
"unresponsive": {
|
||||
@ -62,38 +62,359 @@
|
||||
"quit": "Kilépés",
|
||||
"relaunch": "Újraindítás",
|
||||
"wait": "Várj"
|
||||
}
|
||||
},
|
||||
"detail": "Elnézést a kellemetlenségért! Válaszdd ki mi történjen:",
|
||||
"message": "Az alkalmazás nem válaszol",
|
||||
"title": "Az ablak nem válaszol"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Frissítések letiltása",
|
||||
"disable": "Frissítések kikapcsolása",
|
||||
"download": "Letöltés",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Az új verzió elérhető, és letölthető a {{downloadLink}}",
|
||||
"detail": "Az új verzió elérhető, és letölthető az alábbi linken {{downloadLink}}",
|
||||
"message": "Új verzió áll rendelkezésre",
|
||||
"title": "Elérhető frissítés"
|
||||
"title": "Frissítés elérhető"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Névjegy",
|
||||
"navigation": {
|
||||
"label": "Navigálás",
|
||||
"label": "Navigáció",
|
||||
"submenu": {
|
||||
"copy-current-url": "Jelenlegi URL másolása",
|
||||
"go-back": "Vissza",
|
||||
"go-forward": "Előre",
|
||||
"quit": "Kilépés",
|
||||
"restart": "App újraindítása"
|
||||
"restart": "Alkalmazás újraindítása"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Beállítások",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Speciális beállítások"
|
||||
"label": "Speciális beállítások",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Az alkalmazás gyorsítótárának törlése indításkor",
|
||||
"disable-hardware-acceleration": "Hardveres gyorsítás kikapcsolása",
|
||||
"edit-config-json": "config.json szerkesztése",
|
||||
"restart-on-config-changes": "Újraindítás a konfigurációs változtatás után",
|
||||
"set-proxy": {
|
||||
"label": "Proxy beállítása",
|
||||
"prompt": {
|
||||
"label": "Proxy cím megadása: (Hagyja üresen a kikapcsoláshoz)",
|
||||
"placeholder": "Példa: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Proxy beállítása"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Fejlesztőeszközök BE/KI"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Mindig látható",
|
||||
"auto-update": "Automatikus frissítés",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "A menü a következő indításnál rejtve lesz, használja az [Alt] billentyűt a megjelenítéséhez (vagy a backtick [`] billentyűt, ha az alkalmazás belső menüjét használja)",
|
||||
"title": "Menü elrejtés engedélyezve"
|
||||
},
|
||||
"label": "Menü elrejtése"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Az Újraindítást követően változik meg a nyelv",
|
||||
"title": "Megváltozott a nyelv"
|
||||
},
|
||||
"label": "Nyelv",
|
||||
"submenu": {
|
||||
"to-help-translate": "Szeretne a fordításban segíteni? Kattintson ide"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Indításkor az utolsó zene folytatása",
|
||||
"single-instance-lock": "Csak egy példány engedélyezése",
|
||||
"start-at-login": "Futtatás rendszerindításkor",
|
||||
"starting-page": {
|
||||
"label": "Indítási hely"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Tálca",
|
||||
"submenu": {
|
||||
"disabled": "Letiltva",
|
||||
"enabled-and-hide-app": "Aktív és az alkalmazás elrejtve",
|
||||
"enabled-and-show-app": "Aktív és az alkalmazás megjelenítve",
|
||||
"play-pause-on-click": "Lejátszás/Szünet az ikonra kattintással"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Alapértelmezett",
|
||||
"force-show": "Megjelenítés kényszerítése",
|
||||
"hide": "Elrejtése",
|
||||
"label": "Kedvelés gombok"
|
||||
},
|
||||
"remove-upgrade-button": "Előfizetés gombjának eltávolítása",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Mégse",
|
||||
"remove": "Eltávolít"
|
||||
},
|
||||
"remove-theme": "Biztos, hogy el akarja távolítani az egyéni témát?",
|
||||
"remove-theme-message": "Ez el fogja távolítani az egyéni témát"
|
||||
},
|
||||
"label": "Téma",
|
||||
"submenu": {
|
||||
"import-css-file": "Egyéni CSS fájl importálása",
|
||||
"no-theme": "Nincs téma"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Bekapcsolva",
|
||||
"label": "Bővítmények",
|
||||
"new": "ÚJ"
|
||||
},
|
||||
"view": {
|
||||
"label": "Nézet",
|
||||
"submenu": {
|
||||
"force-reload": "Kényszerített újratöltés",
|
||||
"reload": "Újratöltés",
|
||||
"reset-zoom": "Valós méret",
|
||||
"toggle-fullscreen": "Teljes képernyő be/ki",
|
||||
"zoom-in": "Nagyítás",
|
||||
"zoom-out": "Kicsinyítés"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Következő",
|
||||
"play-pause": "Lejátszás/Szünet",
|
||||
"previous": "Előző",
|
||||
"quit": "Kilépés",
|
||||
"restart": "YT Music újraindítása",
|
||||
"show": "Ablak megjelenítése",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"adblocker": {
|
||||
"description": "Alapértelmezés szerint blokkolja az összes hirdetést és nyomkövetést",
|
||||
"menu": {
|
||||
"blocker": "Blokkoló"
|
||||
},
|
||||
"name": "Reklámblokkoló"
|
||||
},
|
||||
"album-actions": {
|
||||
"name": "Album műveletek"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Dinamikus téma és vizuális effektek alkalmazása az album színpalettája alapján",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Szín keverés aránya"
|
||||
}
|
||||
},
|
||||
"name": "Album színtéma"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Fényhatás alkalmazása a videóból származó lágy színek vetítésével a képernyő hátterére",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Elmosódás mértéke",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} képpontok"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Átlátszóság"
|
||||
},
|
||||
"quality": {
|
||||
"label": "Minőség"
|
||||
},
|
||||
"size": {
|
||||
"label": "Méret"
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Teljes képernyő használata"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Hang tömörítés alkalmazása (csökkenti a jel legzajosabb részeinek hangerősségét, és emeli a legcsendesebb részek hangerősségét)",
|
||||
"name": "Hangtömörítő"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Átlátszóvá és elmosódottá teszi a navigációs sávot"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "A YouTube korellenőrzését kihagyja, ezáltal nem kel meg erősíteni a zene meghallgatása elött. (Automatikusan megerősítve lesz.)",
|
||||
"name": "Korellenőrzés kihagyása"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Felirat választó a YouTube Music zenékhez",
|
||||
"menu": {
|
||||
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
|
||||
"disable-captions": "Alapértelmezetten nincsenek feliratok"
|
||||
},
|
||||
"name": "Feliratválasztó",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Jelenlegi feliratnyelv: {{language}}",
|
||||
"none": "Nincs",
|
||||
"title": "Felirat nyelvének kiválasztása"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Feliratválasztó megnyitása"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Mindig becsukva tartja a bal oldali savót, ahol a Kezdőlap. Felfedezés, Könyvtár és egyebek láthatók. (Amit bármikor ki lehet nyitni)",
|
||||
"name": "Kompakt oldalsáv"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Áttünést biztosít a dalok között, ami folytonossá teszi a zenehallgatást anélkül, hogy érezhető lenne a váltás",
|
||||
"menu": {
|
||||
"advanced": "Haladó"
|
||||
},
|
||||
"name": "Áttünés [Béta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Áttünés időtartama (ms)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "A Zenék nem fognak maguktól elindulni, a bővítmény használata során kézileg kel indítani a zenéket",
|
||||
"menu": {
|
||||
"apply-once": "Csak induláskor alkalmazza"
|
||||
},
|
||||
"name": "Automatikus lejátszás letiltása"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Kapcsolódás kísérlete aktív kapcsolattal",
|
||||
"connected": "Kapcsolódva a Discord-hoz",
|
||||
"disconnected": "Kapcsolat bontva a Discord-al"
|
||||
},
|
||||
"description": "Mutassa meg barátainak, hogy mit hallgat a Rich Presence segítségével. (Ehez a Discord-on is engedélyezve kel lennie a Tevékenységállapot megosztásának [DC Beállítások -> Tevékenyég-adatvédelem -> Megoszthatod az észlelt tevékenységeidet másokkal])",
|
||||
"menu": {
|
||||
"auto-reconnect": "Automatikus újracsatlakozás",
|
||||
"clear-activity": "Tevékenység törlése",
|
||||
"clear-activity-after-timeout": "Tevékenység törlése időkorlát után",
|
||||
"connected": "Kapcsolódva",
|
||||
"disconnected": "Nincs Kapcsolódva",
|
||||
"hide-duration-left": "Hátralévő idő elrejtése",
|
||||
"hide-github-button": "GitHub link gombjának elrejtése",
|
||||
"play-on-youtube-music": "Lejátszás a YouTube Music-on",
|
||||
"set-inactivity-timeout": "Inaktivitási időkorlát beállítása"
|
||||
},
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Írja be az inaktivitási időkorlátot másodpercben:",
|
||||
"title": "Inaktivitási időkorlát beállítása"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"message": "Hoppá! Elnézést, a letöltés sikertelen volt…"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"message": "A(z) {{playlistTitle}} lejátszási lista letöltése",
|
||||
"title": "A letöltés elindult"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Konvetálás: {{percent}}%",
|
||||
"converting": "Konvertálás…",
|
||||
"done": "Kész: {{filePath}}",
|
||||
"getting-playlist-info": "Lejátszási lista információinak lekérése…",
|
||||
"loading": "Betöltés…",
|
||||
"playlist-has-only-one-song": "A lejátszási listában csak egy elem van, letöltés közvetlenül",
|
||||
"playlist-id-not-found": "Nem található lejátszási lista azonosítója",
|
||||
"playlist-is-empty": "Lejátszási lista üres",
|
||||
"preparing-file": "Fájl előkészítése…",
|
||||
"saving": "Mentés…",
|
||||
"video-id-not-found": "Videó nem található"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"choose-download-folder": "Letöltési mappa kiválasztása",
|
||||
"download-playlist": "Lejátszási lista letöltése",
|
||||
"skip-existing": "Meglévő fájlok kihagyása"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Letöltés"
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Az hangerő csúszka exponenciálissá tételével könnyebbé válik az alacsony hangerő kiválasztása.",
|
||||
"name": "Exponenciális hangerő"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Dalszöveg támogatást ad a legtöbb dalhoz",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Latin betűs dalszövegek"
|
||||
},
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Dalszövegek lekérése a Genius-ról"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"dialog": {
|
||||
"enter-host": "Adja meg a házigazda azonosítóját"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Mentés",
|
||||
"track-source": "Zeneszám forrása",
|
||||
"unknown-user": "Ismeretlen felhasználó"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Házigazda azonosítójának másolása",
|
||||
"close": "Zene együtt bezárása",
|
||||
"connected-users": "Csatlakozott felhasználók",
|
||||
"disconnect": "Zene együtt kapcsolatának megszakítása",
|
||||
"empty-user": "Nincs csatlakozva felhasználó",
|
||||
"join": "Csatlakozás a Zene együtt-höz",
|
||||
"permission": {
|
||||
"all": "Engedélyezi a vendégeknek a lejátszási lista és a lejátszó vezérlését",
|
||||
"host-only": "Csak a házigazda tudja vezérelni a lejátszási listát és a lejátszót",
|
||||
"playlist": "Engedélyezi a vendégeknek a lejátszási lista vezérlését"
|
||||
},
|
||||
"status": {
|
||||
"disconnected": "Kapcsolat bontva",
|
||||
"guest": "Csatlakozva vendégként",
|
||||
"host": "Csatlakozva házigazdaként"
|
||||
}
|
||||
},
|
||||
"name": "Zene együtt [Béta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Sikertelen volt a dal hozzáadása",
|
||||
"closed": "Zene együtt bezárva",
|
||||
"host-failed": "Sikertelen volt a Zene együtt indítása"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Értesítés megjelenítése, amikor egy dal elindul (interaktív értesítések elérhetők Windows-on)",
|
||||
"menu": {
|
||||
"interactive": "Interaktív Értesítések"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"name": "Lejátszás sebessége",
|
||||
"templates": {
|
||||
"button": "Sebesség"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,14 +2,14 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Tókst ekki að framkvæma viðbót {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Viðbótin {{pluginName}}::{{contextName}} var framkvæmd í {{ms}}ms",
|
||||
"initialize-failed": "Tókst ekki að frumstilla viðbót \"{{pluginName}}\"",
|
||||
"load-all": "Er að hlaða öllum viðbótum",
|
||||
"load-failed": "Tókst ekki að hlaða viðbótinni \"{{pluginName}}\"",
|
||||
"loaded": "Viðbót \"{{pluginName}}\" hlaðið",
|
||||
"unload-failed": "Tókst ekki að afhlaða viðbótinni \"{{pluginName}}\"",
|
||||
"unloaded": "Viðbótin „{{pluginName}}“ óhlaðin"
|
||||
"execute-failed": "Tókst ekki að framkvæma tengiforrit {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Tengiforrit {{pluginName}}::{{contextName}} var framkvæmd í {{ms}}ms",
|
||||
"initialize-failed": "Tókst ekki að frumstilla tengiforrit \"{{pluginName}}\"",
|
||||
"load-all": "Er að hlaða öllum tengiforritum",
|
||||
"load-failed": "Tókst ekki að hlaða tengiforritinu \"{{pluginName}}\"",
|
||||
"loaded": "Tengiforrit \"{{pluginName}}\" hlaðið",
|
||||
"unload-failed": "Tókst ekki að afhlaða tengiforritinu \"{{pluginName}}\"",
|
||||
"unloaded": "Tengiforrit „{{pluginName}}“ óhlaðin"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -53,7 +53,7 @@
|
||||
"later": "Seinna",
|
||||
"restart-now": "Endurræsa Núna"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" viðbótin þarfnast endurræsingar til að taka gildi",
|
||||
"detail": "\"{{pluginName}}\" tengiforrit þarfnast endurræsingar til að taka gildi",
|
||||
"message": "\"{{pluginName}}\" þarf að endurræsa",
|
||||
"title": "Endurræsa Krafist"
|
||||
},
|
||||
@ -170,7 +170,7 @@
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Virkt",
|
||||
"label": "Viðbætur",
|
||||
"label": "Tengiforrit",
|
||||
"new": "NÝR"
|
||||
},
|
||||
"view": {
|
||||
@ -220,7 +220,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albúmslitaþema"
|
||||
"name": "Albúmlitaþema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Beitir lýsingaráhrifum með því að varpa mildum litum úr myndbandinu í bakgrunn skjásins",
|
||||
@ -334,7 +334,7 @@
|
||||
"backend": {
|
||||
"already-connected": "Reyndi að tengja við virka tengingu",
|
||||
"connected": "Tengdur við Discord",
|
||||
"disconnected": "Aftengdur við Discord"
|
||||
"disconnected": "Aftengdur frá Discord"
|
||||
},
|
||||
"description": "Sýndu vinum þínum hvað þú hlustar á með Rík Nærvera",
|
||||
"menu": {
|
||||
|
||||
@ -162,6 +162,14 @@
|
||||
"submenu": {
|
||||
"import-css-file": "사용자 정의 CSS 파일 가져오기",
|
||||
"no-theme": "테마 없음"
|
||||
},
|
||||
"dialog": {
|
||||
"remove-theme": "사용자 정의 테마를 제거하시겠습니까?",
|
||||
"remove-theme-message": "사용자 정의 테마가 제거됩니다. 계속하시겠습니까?",
|
||||
"button": {
|
||||
"cancel": "취소",
|
||||
"remove": "제거"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
src/i18n/resources/ms.json
Normal file
1
src/i18n/resources/ms.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -2,50 +2,530 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Kan plug-in {{pluginName}}::{{contextName}} niet uitvoeren",
|
||||
"executed-at-ms": "Plug-in {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
|
||||
"initialize-failed": "Kan plug-in \"{{pluginName}}\" niet laden",
|
||||
"load-all": "Alle plug-ins laden",
|
||||
"load-failed": "Kan plug-in \"{{pluginName}}\" niet laden",
|
||||
"loaded": "Plug-in \"{{pluginName}}\" geladen",
|
||||
"unload-failed": "Kan plug-in \"{{pluginName}}\" niet verwijderen",
|
||||
"unloaded": "Plug-in \"{{pluginName}}\" geladen"
|
||||
"execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
|
||||
"initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt",
|
||||
"load-all": "Alle plugins laden",
|
||||
"load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden",
|
||||
"loaded": "Plugin \"{{pluginName}}\" geladen",
|
||||
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te lossen",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" gelost"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "nl",
|
||||
"local-name": "Nederlands",
|
||||
"name": "Dutch"
|
||||
"name": "Nederlands"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Klaar met laden, DevTools geopend"
|
||||
"dev-tools": "Laden voltooid. DevTools geopend"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n geladen"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Ontvangen commando via protocol: \"{{command}}\""
|
||||
"receive-command": "Commando ontvangen via protocol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS bestand \"{{cssFile}}\" niet gevonden"
|
||||
"css-file-not-found": "CSS-bestand \"{{cssFile}}\" bestaat niet, wordt genegeerd"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Niet reagerend door fout:\n{{error}}"
|
||||
"details": "Onverantwoordelijkheidsfout!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "App-cache wissen"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Venster probeerde buiten het scherm te renderen, venstergrootte={{windowSize}}, schermgrootte={{displaySize}}, positie={{position}}"
|
||||
"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 te tonen (of 'Escape' als u het In-App Menu gebruikt)"
|
||||
"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! Kies 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": {
|
||||
"backend": {
|
||||
"already-connected": "Geprobeerd verbinding te maken met een actieve verbinding",
|
||||
"connected": "Verbonden met Discord",
|
||||
"disconnected": "Verbinding met Discord verbroken"
|
||||
},
|
||||
"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": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "Oke"
|
||||
},
|
||||
"message": "Excuses, de download is mislukt…",
|
||||
"title": "Er is een fout opgetreden tijdens het downloaden!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "Oké"
|
||||
},
|
||||
"detail": "({{playlistSize}} nummers)",
|
||||
"message": "Afspeellijst \"{{playlistTitle}}\" aan het downloaden",
|
||||
"title": "Download is gestart"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Converteren: {{percent}}%",
|
||||
"converting": "Converteren…",
|
||||
"done": "Gereed: {{filePath}}",
|
||||
"download-info": "{{artist}} - {{title}} ([{{videoId}}) aan het downloaden",
|
||||
"download-progress": "Downloaden: {{percent}}%",
|
||||
"downloading": "Aan het downloaden…",
|
||||
"downloading-counter": "{{current}}/{{total}} aan het downloaden…",
|
||||
"downloading-playlist": "Afspeellijst \"{{playlistTitle}}\" {{playlistId}} aan het downloaden ({{playlistSize}} liederen)",
|
||||
"error-while-downloading": "Er is een fout opgetreden tijdens het downloaden van \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "De map \"{{playlistFolder}}\" bestaat al",
|
||||
"getting-playlist-info": "Afspeellijst informatie ophalen…",
|
||||
"loading": "Laden…",
|
||||
"playlist-has-only-one-song": "Afspeellijst heeft maar 1 item, item direct aan het downloaden",
|
||||
"playlist-id-not-found": "Geen playlist ID gevonden",
|
||||
"playlist-is-empty": "Afspeellijst is leeg",
|
||||
"playlist-is-mix-or-private": "Er is een fout opgetreden tijdens het ophalen van de afspeellijst informatie: zorg ervoor dat het geen verborgen of \"Mixed for you\" afspeellijst is\n\n{{error}}",
|
||||
"preparing-file": "Bestand voorbereiden…",
|
||||
"saving": "Opslaan…",
|
||||
"trying-to-get-playlist-id": "Proberen om het afspeellijst ID op te halen: {{playlistId}}",
|
||||
"video-id-not-found": "Video niet gevonden",
|
||||
"writing-id3": "ID3 tags aan het schrijven…"
|
||||
}
|
||||
},
|
||||
"description": "Download MP3 / bron-audio rechtstreeks vanuit de interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Kies de downloadmap",
|
||||
"download-playlist": "Afspeellijst downloaden",
|
||||
"presets": "Voorinstellingen",
|
||||
"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 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",
|
||||
"interactive-settings": {
|
||||
"label": "Interactieve instellingen",
|
||||
"submenu": {
|
||||
"hide-button-text": "Verberg tekst op de knop",
|
||||
"refresh-on-play-pause": "Herlaad bij het afspelen/pauzeren"
|
||||
}
|
||||
},
|
||||
"unpause-notification": "Laat een notificatie zijn bij het depauzeren"
|
||||
},
|
||||
"name": "Meldingen"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"menu": {
|
||||
"always-on-top": "Altijd bovenaan",
|
||||
"hotkey": {
|
||||
"label": "Sneltoets",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Sneltoets"
|
||||
}
|
||||
}
|
||||
},
|
||||
"save-window-position": "Sla schermpositie op",
|
||||
"save-window-size": "Sla schermgrootte op"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Voeg een visuele equalizer toe",
|
||||
"name": "Visualisator"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Usuń przycisk subskrypcji premium",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Anuluj",
|
||||
"remove": "Usuń"
|
||||
},
|
||||
"remove-theme": "Czy na pewno chcesz usunąć niestandardowy motyw?",
|
||||
"remove-theme-message": "Spowoduje to usunięcie niestandarowego motywu"
|
||||
},
|
||||
"label": "Motyw",
|
||||
"submenu": {
|
||||
"import-css-file": "Importuj własny plik CSS",
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Remover botão upgrade",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Remover"
|
||||
},
|
||||
"remove-theme": "Você tem certeza que quer remover o tema customizado?",
|
||||
"remove-theme-message": "Isso removerá o tema customizado"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importar arquivo CSS personalizado",
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Yükseltme düğmesini kaldır",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "İptal",
|
||||
"remove": "Kaldır"
|
||||
},
|
||||
"remove-theme": "Özel temayı kaldırmak istediğinizden emin misiniz?",
|
||||
"remove-theme-message": "Bu işlem özel temayı kaldıracaktır"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Özel CSS dosyanı içeri aktar",
|
||||
|
||||
@ -139,7 +139,7 @@
|
||||
"unset": "不指定"
|
||||
},
|
||||
"tray": {
|
||||
"label": "系統閘",
|
||||
"label": "系統匣",
|
||||
"submenu": {
|
||||
"disabled": "已停用",
|
||||
"enabled-and-hide-app": "啟用並最小化應用程式",
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "移除升級按鈕",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "取消",
|
||||
"remove": "確定移除"
|
||||
},
|
||||
"remove-theme": "確定要移除自訂主題嗎?",
|
||||
"remove-theme-message": "這將會移除自訂主題"
|
||||
},
|
||||
"label": "主題",
|
||||
"submenu": {
|
||||
"import-css-file": "匯入自訂 CSS 檔案",
|
||||
|
||||
148
src/menu.ts
148
src/menu.ts
@ -1,13 +1,5 @@
|
||||
import is from 'electron-is';
|
||||
import {
|
||||
app,
|
||||
BrowserWindow,
|
||||
clipboard,
|
||||
dialog,
|
||||
Menu,
|
||||
MenuItem,
|
||||
shell,
|
||||
} from 'electron';
|
||||
import { app, BrowserWindow, clipboard, dialog, Menu, MenuItem, shell, } from 'electron';
|
||||
import prompt from 'custom-electron-prompt';
|
||||
import { satisfies } from 'semver';
|
||||
|
||||
@ -235,16 +227,41 @@ export const mainMenuTemplate = async (
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.label',
|
||||
),
|
||||
submenu: [
|
||||
{
|
||||
label: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.submenu.no-theme',
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.get('options.themes')?.length === 0, // Todo rename "themes"
|
||||
click() {
|
||||
config.set('options.themes', []);
|
||||
},
|
||||
},
|
||||
...((config.get('options.themes')?.length ?? 0) === 0
|
||||
? [
|
||||
{
|
||||
label: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.submenu.no-theme',
|
||||
),
|
||||
}
|
||||
]
|
||||
: []),
|
||||
...config.get('options.themes')?.map((theme: string) => ({
|
||||
type: 'normal' as const,
|
||||
label: theme,
|
||||
async click() {
|
||||
const { response } = await dialog.showMessageBox(win, {
|
||||
type: 'question',
|
||||
defaultId: 1,
|
||||
title: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.remove-theme',
|
||||
),
|
||||
message: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.remove-theme-message',
|
||||
{ theme },
|
||||
),
|
||||
buttons: [
|
||||
t('main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.button.cancel'),
|
||||
t('main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.button.remove'),
|
||||
],
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
config.set('options.themes', config.get('options.themes')?.filter((t) => t !== theme));
|
||||
innerRefreshMenu();
|
||||
}
|
||||
}
|
||||
})),
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: t(
|
||||
@ -258,6 +275,7 @@ export const mainMenuTemplate = async (
|
||||
});
|
||||
if (filePaths) {
|
||||
config.set('options.themes', filePaths);
|
||||
innerRefreshMenu();
|
||||
}
|
||||
},
|
||||
},
|
||||
@ -288,40 +306,40 @@ export const mainMenuTemplate = async (
|
||||
},
|
||||
...((is.windows() || is.linux()
|
||||
? [
|
||||
{
|
||||
label: t('main.menu.options.submenu.hide-menu.label'),
|
||||
type: 'checkbox',
|
||||
checked: config.get('options.hideMenu'),
|
||||
click(item) {
|
||||
config.setMenuOption('options.hideMenu', item.checked);
|
||||
if (item.checked && !config.get('options.hideMenuWarned')) {
|
||||
dialog.showMessageBox(win, {
|
||||
type: 'info',
|
||||
title: t(
|
||||
'main.menu.options.submenu.hide-menu.dialog.title',
|
||||
),
|
||||
message: t(
|
||||
'main.menu.options.submenu.hide-menu.dialog.message',
|
||||
),
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
label: t('main.menu.options.submenu.hide-menu.label'),
|
||||
type: 'checkbox',
|
||||
checked: config.get('options.hideMenu'),
|
||||
click(item) {
|
||||
config.setMenuOption('options.hideMenu', item.checked);
|
||||
if (item.checked && !config.get('options.hideMenuWarned')) {
|
||||
dialog.showMessageBox(win, {
|
||||
type: 'info',
|
||||
title: t(
|
||||
'main.menu.options.submenu.hide-menu.dialog.title',
|
||||
),
|
||||
message: t(
|
||||
'main.menu.options.submenu.hide-menu.dialog.message',
|
||||
),
|
||||
});
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
: []) satisfies Electron.MenuItemConstructorOptions[]),
|
||||
...((is.windows() || is.macOS()
|
||||
? // Only works on Win/Mac
|
||||
// https://www.electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
|
||||
[
|
||||
{
|
||||
label: t('main.menu.options.submenu.start-at-login'),
|
||||
type: 'checkbox',
|
||||
checked: config.get('options.startAtLogin'),
|
||||
click(item) {
|
||||
config.setMenuOption('options.startAtLogin', item.checked);
|
||||
},
|
||||
[
|
||||
{
|
||||
label: t('main.menu.options.submenu.start-at-login'),
|
||||
type: 'checkbox',
|
||||
checked: config.get('options.startAtLogin'),
|
||||
click(item) {
|
||||
config.setMenuOption('options.startAtLogin', item.checked);
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
: []) satisfies Electron.MenuItemConstructorOptions[]),
|
||||
{
|
||||
label: t('main.menu.options.submenu.tray.label'),
|
||||
@ -475,25 +493,25 @@ export const mainMenuTemplate = async (
|
||||
{ type: 'separator' },
|
||||
is.macOS()
|
||||
? {
|
||||
label: t(
|
||||
'main.menu.options.submenu.advanced-options.submenu.toggle-dev-tools',
|
||||
),
|
||||
// Cannot use "toggleDevTools" role in macOS
|
||||
click() {
|
||||
const { webContents } = win;
|
||||
if (webContents.isDevToolsOpened()) {
|
||||
webContents.closeDevTools();
|
||||
} else {
|
||||
webContents.openDevTools();
|
||||
}
|
||||
},
|
||||
}
|
||||
: {
|
||||
label: t(
|
||||
'main.menu.options.submenu.advanced-options.submenu.toggle-dev-tools',
|
||||
),
|
||||
role: 'toggleDevTools',
|
||||
label: t(
|
||||
'main.menu.options.submenu.advanced-options.submenu.toggle-dev-tools',
|
||||
),
|
||||
// Cannot use "toggleDevTools" role in macOS
|
||||
click() {
|
||||
const { webContents } = win;
|
||||
if (webContents.isDevToolsOpened()) {
|
||||
webContents.closeDevTools();
|
||||
} else {
|
||||
webContents.openDevTools();
|
||||
}
|
||||
},
|
||||
}
|
||||
: {
|
||||
label: t(
|
||||
'main.menu.options.submenu.advanced-options.submenu.toggle-dev-tools',
|
||||
),
|
||||
role: 'toggleDevTools',
|
||||
},
|
||||
{
|
||||
label: t(
|
||||
'main.menu.options.submenu.advanced-options.submenu.edit-config-json',
|
||||
|
||||
@ -8,13 +8,17 @@ import { app, net } from 'electron';
|
||||
const SOURCES = [
|
||||
'https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt',
|
||||
// UBlock Origin
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2022.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2023.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/quick-fixes.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/unbreak.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2020.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2021.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2022.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2023.txt',
|
||||
// Fanboy Annoyances
|
||||
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
|
||||
// AdGuard
|
||||
'https://filters.adtidy.org/extension/ublock/filters/122_optimized.txt',
|
||||
];
|
||||
|
||||
let blocker: ElectronBlocker | undefined;
|
||||
|
||||
@ -30,7 +30,7 @@ yt-page-navigation-progress {
|
||||
|
||||
/* fix blur navigation bar */
|
||||
|
||||
ytmusic-app-layout > [slot="player-page"]:not([is-mweb-modernization-enabled]) {
|
||||
ytmusic-app-layout > [slot="player-page"]:not([is-mweb-modernization-enabled]):not(:has(ytmusic-player[player-ui-state=FULLSCREEN])) {
|
||||
padding-top: 90px;
|
||||
margin-top: calc(-90px + var(--menu-bar-height, 0px)) !important;
|
||||
}
|
||||
|
||||
@ -270,8 +270,21 @@ export const TitleBar = (props: TitleBarProps) => {
|
||||
|
||||
// tracking mouse position
|
||||
window.addEventListener('mousemove', listener);
|
||||
const ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
|
||||
ytmusicAppLayout?.addEventListener("scroll",()=>{
|
||||
const scrollValue = ytmusicAppLayout.scrollTop;
|
||||
if (scrollValue > 20){
|
||||
ytmusicAppLayout.classList.add("content-scrolled");
|
||||
}
|
||||
else{
|
||||
ytmusicAppLayout.classList.remove("content-scrolled");
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
createEffect(() => {
|
||||
if (!menu() && data()) {
|
||||
setMenu(data() ?? null);
|
||||
|
||||
@ -4,10 +4,21 @@
|
||||
}
|
||||
|
||||
/* youtube-music style */
|
||||
|
||||
ytmusic-app-layout {
|
||||
overflow: scroll;
|
||||
height: calc(100vh - var(--menu-bar-height, 36px));
|
||||
margin-top: var(--menu-bar-height, 36px) !important;
|
||||
}
|
||||
ytmusic-app-layout#layout {
|
||||
--ytmusic-nav-bar-offset: 0px;
|
||||
}
|
||||
|
||||
ytmusic-app-layout::-webkit-scrollbar{
|
||||
width: var(--ytmusic-scrollbar-width);
|
||||
}
|
||||
ytmusic-app-layout::-webkit-scrollbar-thumb{
|
||||
background-color: rgb(126, 126, 126);
|
||||
}
|
||||
|
||||
ytmusic-app-layout > [slot='nav-bar'],
|
||||
#nav-bar-background.ytmusic-app-layout {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { BrowserWindow, globalShortcut } from 'electron';
|
||||
import { BrowserWindow, ipcMain, globalShortcut } from 'electron';
|
||||
import is from 'electron-is';
|
||||
import { register as registerElectronLocalShortcut } from 'electron-localshortcut';
|
||||
|
||||
@ -48,7 +48,9 @@ export const onMainLoad = async ({
|
||||
_registerLocalShortcut(window, 'CommandOrControl+L', search);
|
||||
|
||||
if (is.linux()) {
|
||||
registerMPRIS(window);
|
||||
ipcMain.once('ytmd:video-src-changed', (_) => {
|
||||
registerMPRIS(window);
|
||||
});
|
||||
}
|
||||
|
||||
const { global, local } = config;
|
||||
|
||||
@ -99,7 +99,7 @@ function registerMPRIS(win: BrowserWindow) {
|
||||
const microToSec = (n: number) => Math.round(Number(n) / 1e6);
|
||||
|
||||
const correctId = (videoId: string) => {
|
||||
return videoId.replace('-', '_MINUS_');
|
||||
return videoId.replace(/-/g, '_MINUS_');
|
||||
};
|
||||
|
||||
const seekTo = (event: Position) => {
|
||||
|
||||
@ -27,15 +27,15 @@ export default createPlugin<
|
||||
});
|
||||
},
|
||||
start() {
|
||||
this.waitForElem('#like-button-renderer').then((likeBtn) => {
|
||||
this.waitForElem('#dislike-button-renderer').then((dislikeBtn) => {
|
||||
this.observer = new MutationObserver(() => {
|
||||
if (likeBtn?.getAttribute('like-status') == 'DISLIKE') {
|
||||
if (dislikeBtn?.getAttribute('like-status') == 'DISLIKE') {
|
||||
document
|
||||
.querySelector<HTMLButtonElement>('tp-yt-paper-icon-button.next-button')
|
||||
?.click();
|
||||
}
|
||||
});
|
||||
this.observer.observe(likeBtn, {
|
||||
this.observer.observe(dislikeBtn, {
|
||||
attributes: true,
|
||||
childList: false,
|
||||
subtree: false,
|
||||
|
||||
@ -225,6 +225,9 @@ const preload = async () => {
|
||||
t: i18t.bind(i18next),
|
||||
};
|
||||
defineYTMDTransElements();
|
||||
if (document.body?.dataset?.os) {
|
||||
document.body.dataset.os = navigator.userAgent;
|
||||
}
|
||||
};
|
||||
|
||||
const main = async () => {
|
||||
|
||||
@ -78,5 +78,14 @@ tp-yt-paper-item.ytmusic-guide-entry-renderer::before {
|
||||
}
|
||||
|
||||
ytmusic-player[player-ui-state=FULLSCREEN] {
|
||||
top: calc(var(--menu-bar-height, 32px) * -1) !important;
|
||||
margin-top: calc(var(--menu-bar-height, 32px) * -1) !important;
|
||||
}
|
||||
|
||||
/* macos traffic lights fix */
|
||||
:where([data-os*="Macintosh"]) ytmusic-app-layout#layout ytmusic-nav-bar {
|
||||
padding-top: var(--ytmusic-nav-bar-offset, 0);
|
||||
}
|
||||
:where([data-os*="Macintosh"]) ytmusic-app-layout#layout {
|
||||
--ytmusic-nav-bar-offset: 24px;
|
||||
--ytmusic-nav-bar-height: calc(90px + var(--ytmusic-nav-bar-offset, 0));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user