chore: improve readability

This commit is contained in:
Su-Yong
2025-10-12 14:28:29 +09:00
parent 4f716d8e0b
commit ffa61687bf
137 changed files with 2625 additions and 2626 deletions

View File

@ -1,5 +1,5 @@
name: Bug Report name: Bug Report
description: Report a YouTube Music bug description: Report a Pear Desktop bug
title: "[Bug]: " title: "[Bug]: "
labels: "bug :beetle:" labels: "bug :beetle:"
body: body:
@ -8,17 +8,17 @@ body:
label: Preflight Checklist label: Preflight Checklist
description: Please ensure you've completed all of the following. description: Please ensure you've completed all of the following.
options: options:
- label: I use the latest version of YouTube Music (Application). - label: I use the latest version of Pear Desktop (Application).
required: true required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a bug report that matches the one I want to file, without success. - label: I have searched the [issue tracker](https://github.com/pear-devs/pear-desktop/issues) for a bug report that matches the one I want to file, without success.
required: true required: true
- label: I understand that **th-ch/youtube-music has NO affiliation with Google or YouTube** - label: I understand that **pear-devs/pear-desktop has NO affiliation with Google or YouTube**
required: true required: true
- type: input - type: input
attributes: attributes:
label: YouTube Music (Application) Version label: Pear Desktop (Application) Version
description: | description: |
What version of the YouTube Music Application are you using? What version of the Pear Desktop Application are you using?
Note: Please check if this issue is reproducible with the latest stable release. Note: Please check if this issue is reproducible with the latest stable release.
placeholder: 2.0.0 placeholder: 2.0.0
@ -28,7 +28,7 @@ body:
attributes: attributes:
label: Checklists label: Checklists
options: options:
- label: I use the portable version of the YouTube Music Application. - label: I use the portable version of the Pear Desktop Application.
- label: I can reproduce this issue in the [official version of (WEB) YTM](https://music.youtube.com). - label: I can reproduce this issue in the [official version of (WEB) YTM](https://music.youtube.com).
- type: dropdown - type: dropdown
attributes: attributes:
@ -60,8 +60,8 @@ body:
required: true required: true
- type: input - type: input
attributes: attributes:
label: Last Known Working YouTube Music (Application) version label: Last Known Working Pear Desktop (Application) version
description: (If applicable) What is the last version of YouTube Music this worked in? description: (If applicable) What is the last version of Pear Desktop this worked in?
placeholder: 1.20.0 placeholder: 1.20.0
- type: textarea - type: textarea
attributes: attributes:

View File

@ -1,5 +1,5 @@
name: Feature Request name: Feature Request
description: Suggest an idea for YouTube Music description: Suggest an idea for Pear Desktop
title: "[Feature Request]: " title: "[Feature Request]: "
labels: "enhancement :sparkles:" labels: "enhancement :sparkles:"
body: body:
@ -8,9 +8,9 @@ body:
label: Preflight Checklist label: Preflight Checklist
description: Please ensure you've completed all of the following. description: Please ensure you've completed all of the following.
options: options:
- label: I use the latest version of YouTube Music (Application). - label: I use the latest version of Pear Desktop (Application).
required: true required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a feature request that matches the one I want to file, without success. - label: I have searched the [issue tracker](https://github.com/pear-devs/pear-desktop/issues) for a feature request that matches the one I want to file, without success.
required: true required: true
- type: textarea - type: textarea
attributes: attributes:

View File

@ -1,4 +1,4 @@
name: Build YouTube Music name: Build Pear Desktop
on: on:
push: push:
@ -11,7 +11,7 @@ env:
jobs: jobs:
build: build:
if: github.event.pull_request.draft == false if: github.event.pull_request.draft == false
name: Build YouTube Music name: Build Pear Desktop
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: true fail-fast: true
@ -45,20 +45,20 @@ jobs:
# Only vite build without release if it is a fork, or it is a pull-request # Only vite build without release if it is a fork, or it is a pull-request
- name: Vite Build - name: Vite Build
if: github.repository == 'th-ch/youtube-music' && github.event_name == 'pull_request' if: github.repository == 'pear-devs/pear-desktop' && github.event_name == 'pull_request'
run: | run: |
pnpm build pnpm build
# Build and release if it's the main repository and is not pull-request # Build and release if it's the main repository and is not pull-request
- name: Build and release on Mac - name: Build and release on Mac
if: startsWith(matrix.os, 'macOS') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'macOS') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
pnpm release:mac pnpm release:mac
- name: Build and release on Linux - name: Build and release on Linux
if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -72,7 +72,7 @@ jobs:
pnpm release:linux pnpm release:linux
- name: Build and release on Windows - name: Build and release on Windows
if: startsWith(matrix.os, 'windows') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'windows') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -88,8 +88,8 @@ jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: Release YouTube Music name: Release Pear Desktop
if: github.repository == 'th-ch/youtube-music' && github.ref == 'refs/heads/master' if: github.repository == 'pear-devs/pear-desktop' && github.ref == 'refs/heads/master'
needs: build needs: build
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
@ -150,11 +150,11 @@ jobs:
name: ${{ env.VERSION_TAG }} name: ${{ env.VERSION_TAG }}
replacebody: true replacebody: true
body: | body: |
See [changelog](https://github.com/th-ch/youtube-music/blob/master/changelog.md#${{ env.CHANGELOG_ANCHOR }}) for the list of updates and the full diff. See [changelog](https://github.com/pear-devs/pear-desktop/blob/master/changelog.md#${{ env.CHANGELOG_ANCHOR }}) for the list of updates and the full diff.
Thanks to all contributors! 🏅 Thanks to all contributors! 🏅
(Note for Windows: `YouTube-Music-Web-Setup-${{ env.VERSION_TAG }}.exe` is an installer, and `YouTube-Music-${{ env.VERSION_TAG }}.exe` is a portable version) (Note for Windows: `Pear-Desktop-Web-Setup-${{ env.VERSION_TAG }}.exe` is an installer, and `Pear-Desktop-${{ env.VERSION_TAG }}.exe` is a portable version)
- name: Update changelog - name: Update changelog
if: ${{ env.VERSION_HASH == '' }} if: ${{ env.VERSION_HASH == '' }}

View File

@ -22,9 +22,9 @@ jobs:
- name: Submit package to Windows Package Manager Community Repository - name: Submit package to Windows Package Manager Community Repository
uses: vedantmgoyal2009/winget-releaser@main uses: vedantmgoyal2009/winget-releaser@main
with: with:
identifier: th-ch.YouTubeMusic identifier: pear-devs.PearDesktop
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$' installers-regex: '^Pear-Desktop-Web-Setup-[\d\.]+\.exe$'
version: ${{ env.WINGET_TAG_NAME }} version: ${{ env.WINGET_TAG_NAME }}
release-tag: ${{ inputs.tag_name || github.event.release.tag_name }} release-tag: ${{ inputs.tag_name || github.event.release.tag_name }}
token: ${{ secrets.WINGET_ACC_TOKEN }} token: ${{ secrets.WINGET_ACC_TOKEN }}
fork-user: youtube-music-winget fork-user: pear-desktop-winget

View File

@ -7,7 +7,7 @@
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs) [![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
<!--[![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge)](https://aur.archlinux.org/packages/youtube-music-bin)--> <!--[![AUR](https://img.shields.io/aur/version/pear-desktop-bin?color=blueviolet&style=for-the-badge)](https://aur.archlinux.org/packages/pear-desktop-bin)-->
[![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop) [![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop)
</div> </div>
@ -53,11 +53,11 @@
## Translation ## Translation
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/). You can help with translation on [Hosted Weblate](https://bit.ly/48n5YF7).
<a href="https://hosted.weblate.org/engage/youtube-music/"> <a href="https://bit.ly/48n5YF7/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" /> <img src="https://bit.ly/4q83L6S" alt="translation status" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" /> <img src="https://bit.ly/4h3zBxo" alt="translation status 2" />
</a> </a>
## Download ## Download

View File

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Cannot load YouTube Music</title> <title>Cannot load Pear Desktop</title>
<style> <style>
body { body {
background: #000; background: #000;
@ -43,7 +43,7 @@
<body> <body>
<div class="container"> <div class="container">
<p>Cannot load YouTube Music… Internet disconnected?</p> <p>Cannot load Pear Desktop… Internet disconnected?</p>
<a class="button" href="#" onclick="reload()">Retry</a> <a class="button" href="#" onclick="reload()">Retry</a>
</div> </div>
</body> </body>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
appId: com.github.th-ch.youtube-music appId: com.github.th-ch.pear-desktop
productName: YouTube Music productName: Pear Desktop
files: files:
- '!*' - '!*'
- dist - dist
@ -43,7 +43,7 @@ linux:
category: AudioVideo category: AudioVideo
desktop: desktop:
entry: entry:
StartupWMClass: com.github.th_ch.youtube_music StartupWMClass: com.github.th_ch.pear_desktop
target: target:
- target: AppImage - target: AppImage
arch: arch:
@ -77,12 +77,12 @@ linux:
- armv7l - armv7l
appImage: appImage:
description: >- description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader) blocker / downloader)
category: AudioVideo category: AudioVideo
flatpak: flatpak:
description: >- description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader) blocker / downloader)
category: AudioVideo category: AudioVideo
runtimeVersion: '24.08' runtimeVersion: '24.08'
@ -98,7 +98,7 @@ flatpak:
- '--talk-name=org.freedesktop.Notifications' - '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager' - '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher' - '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*' - '--own-name=org.mpris.MediaPlayer2.PearDesktop.*'
deb: deb:
depends: depends:
- libgtk-3-0 - libgtk-3-0

View File

@ -159,7 +159,8 @@ export default defineConfig({
}, },
server: { server: {
cors: { cors: {
origin: 'https://music.youtube.com', origin:
'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
}, },
}, },
}; };

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) th-ch <th-ch@users.noreply.github.com> (https://github.com/th-ch/youtube-music) Copyright (c) th-ch <th-ch@users.noreply.github.com> (https://github.com/pear-devs/pear-desktop)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,17 +1,17 @@
{ {
"name": "youtube-music", "name": "pear-music",
"desktopName": "com.github.th_ch.youtube_music", "desktopName": "com.github.th_ch.pear_music",
"productName": "YouTube Music", "productName": "Pear Desktop",
"version": "3.11.0", "version": "3.11.0",
"description": "YouTube Music Desktop App - including custom plugins", "description": "Pear Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"repository": "th-ch/youtube-music", "repository": "pear-devs/pear-desktop",
"author": { "author": {
"name": "th-ch", "name": "th-ch",
"email": "th-ch@users.noreply.github.com", "email": "th-ch@users.noreply.github.com",
"url": "https://github.com/th-ch/youtube-music" "url": "https://github.com/pear-devs/pear-desktop"
}, },
"scripts": { "scripts": {
"test": "pnpm playwright test", "test": "pnpm playwright test",
@ -123,7 +123,6 @@
"peerjs": "1.5.5", "peerjs": "1.5.5",
"semver": "7.7.2", "semver": "7.7.2",
"serve": "14.2.5", "serve": "14.2.5",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"socks": "2.8.7", "socks": "2.8.7",
"solid-element": "1.9.1", "solid-element": "1.9.1",
"solid-floating-ui": "0.3.1", "solid-floating-ui": "0.3.1",

10
pnpm-lock.yaml generated
View File

@ -216,9 +216,6 @@ importers:
serve: serve:
specifier: 14.2.5 specifier: 14.2.5
version: 14.2.5 version: 14.2.5
simple-youtube-age-restriction-bypass:
specifier: github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9
version: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6
socks: socks:
specifier: 2.8.7 specifier: 2.8.7
version: 2.8.7 version: 2.8.7
@ -4276,11 +4273,6 @@ packages:
resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==}
engines: {node: '>=20.12.2'} engines: {node: '>=20.12.2'}
simple-youtube-age-restriction-bypass@https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6:
resolution: {tarball: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6}
version: 2.5.9
engines: {node: '>=18.0.0', npm: '>=7.0.0'}
sirv@3.0.1: sirv@3.0.1:
resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
engines: {node: '>=18'} engines: {node: '>=18'}
@ -9255,8 +9247,6 @@ snapshots:
simple-xml-to-json@1.2.3: {} simple-xml-to-json@1.2.3: {}
simple-youtube-age-restriction-bypass@https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6: {}
sirv@3.0.1: sirv@3.0.1:
dependencies: dependencies:
'@polka/url': 1.0.0-next.29 '@polka/url': 1.0.0-next.29

View File

@ -50,7 +50,7 @@ export const defaultConfig: DefaultConfig = {
x: -1, x: -1,
y: -1, y: -1,
}, },
'url': 'https://music.youtube.com', 'url': 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
'options': { 'options': {
tray: false, tray: false,
appVisible: true, appVisible: true,

View File

@ -112,7 +112,7 @@ const migrations = {
'>=2.1.3'(store: IStore) { '>=2.1.3'(store: IStore) {
const listenAlong = store.get('plugins.discord.listenAlong'); const listenAlong = store.get('plugins.discord.listenAlong');
if (listenAlong !== undefined) { if (listenAlong !== undefined) {
store.set('plugins.discord.playOnYouTubeMusic', listenAlong); store.set('plugins.discord.playOnPearMusic', listenAlong);
store.delete('plugins.discord.listenAlong'); store.delete('plugins.discord.listenAlong');
} }
}, },

View File

@ -153,7 +153,7 @@
"custom-window-title": { "custom-window-title": {
"label": "عنوان نافذة مخصص", "label": "عنوان نافذة مخصص",
"prompt": { "prompt": {
"placeholder": "مثال: YouTube Music" "placeholder": "مثال: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -286,7 +286,7 @@
"name": "الوضع المحيطي" "name": "الوضع المحيطي"
}, },
"amuse": { "amuse": {
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs", "description": "تكامل دعم Pear Desktop مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه", "name": "تلسيه",
"response": { "response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية." "query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
@ -372,7 +372,7 @@
"name": "تجاوز التحقق من السن" "name": "تجاوز التحقق من السن"
}, },
"captions-selector": { "captions-selector": {
"description": "محدد ترجمات المقاطع الصوتية لYoutube Music", "description": "محدد ترجمات المقاطع الصوتية لPear Desktop",
"menu": { "menu": {
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا", "autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
"disable-captions": "لا توجد ترجمات بشكل افتراضي" "disable-captions": "لا توجد ترجمات بشكل افتراضي"
@ -447,7 +447,7 @@
"disconnected": "قطع الاتصال", "disconnected": "قطع الاتصال",
"hide-duration-left": "إخفاء المدة المتبقية", "hide-duration-left": "إخفاء المدة المتبقية",
"hide-github-button": "إخفاء زر رابط GitHub", "hide-github-button": "إخفاء زر رابط GitHub",
"play-on-youtube-music": "شغل في YouTube Music", "play-on-pear-desktop": "شغل في Pear Desktop",
"set-inactivity-timeout": "ضبط مهلة عدم النشاط" "set-inactivity-timeout": "ضبط مهلة عدم النشاط"
}, },
"name": "حالة ديسكورد", "name": "حالة ديسكورد",

View File

@ -154,7 +154,7 @@
"label": "Персонализирано заглавие на прозорец", "label": "Персонализирано заглавие на прозорец",
"prompt": { "prompt": {
"label": "Въведи персонализирано заглавие: (остави празно за да изключиш)", "label": "Въведи персонализирано заглавие: (остави празно за да изключиш)",
"placeholder": "Пример: Youtube Music" "placeholder": "Пример: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Рестартирай приложението", "restart": "Рестартирай приложението",
"show": "Покажи прозорец", "show": "Покажи прозорец",
"tooltip": { "tooltip": {
"default": "YouTube Музика", "default": "Pear Desktop",
"with-song-info": "YouTube Музика: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Атмосферен режим" "name": "Атмосферен режим"
}, },
"amuse": { "amuse": {
"description": "Добавя поддръжка на YouTube Music за джаджата Amuse Now Play от 6K Labs", "description": "Добавя поддръжка на Pear Desktop за джаджата Amuse Now Play от 6K Labs",
"name": "Забавление", "name": "Забавление",
"response": { "response": {
"query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента." "query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента."
@ -369,11 +369,11 @@
"name": "Размазанa навигационна лента" "name": "Размазанa навигационна лента"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Избягване на възрастова верификация на YouTube", "description": "Избягване на възрастова верификация на Music Player",
"name": "Избягване на възрастови ограничения" "name": "Избягване на възрастови ограничения"
}, },
"captions-selector": { "captions-selector": {
"description": "Избор на надписи за аудио тракове в YouTube Music", "description": "Избор на надписи за аудио тракове в Pear Desktop",
"menu": { "menu": {
"autoload": "Автоматично избиране на последно използвания надпис", "autoload": "Автоматично избиране на последно използвания надпис",
"disable-captions": "Без надписи по подразбиране" "disable-captions": "Без надписи по подразбиране"
@ -456,14 +456,14 @@
"disconnected": "Прекъснато", "disconnected": "Прекъснато",
"hide-duration-left": "Скрий оставащото време", "hide-duration-left": "Скрий оставащото време",
"hide-github-button": "Скрий бутона за линк към GitHub", "hide-github-button": "Скрий бутона за линк към GitHub",
"play-on-youtube-music": "Възпроизведи в YouTube Music", "play-on-pear-desktop": "Възпроизведи в Pear Desktop",
"set-inactivity-timeout": "Задай таймаут за неактивност", "set-inactivity-timeout": "Задай таймаут за неактивност",
"set-status-display-type": { "set-status-display-type": {
"label": "Статус текст", "label": "Статус текст",
"submenu": { "submenu": {
"artist": "Слушам {artist}", "artist": "Слушам {artist}",
"title": "Слушам {song title}", "title": "Слушам {song title}",
"youtube-music": "Слушам YouTube Music" "pear-desktop": "Слушам Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "কাস্টম উইন্ডো টাইটেল", "label": "কাস্টম উইন্ডো টাইটেল",
"prompt": { "prompt": {
"label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)", "label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)",
"placeholder": "উদাহরণস্বরূপ: YouTube Music" "placeholder": "উদাহরণস্বরূপ: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -443,7 +443,7 @@
"disconnected": "সংযোগ বিচ্ছিন্ন", "disconnected": "সংযোগ বিচ্ছিন্ন",
"hide-duration-left": "অবশিষ্ট সময় লুকান", "hide-duration-left": "অবশিষ্ট সময় লুকান",
"hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান", "hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান",
"play-on-youtube-music": "ইউটিউব মিউজিকে চালান", "play-on-pear-desktop": "ইউটিউব মিউজিকে চালান",
"set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন" "set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন"
}, },
"name": "ডিসকর্ড রিচ প্রেজেন্স", "name": "ডিসকর্ড রিচ প্রেজেন্স",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naslov prozora", "label": "Prilagođeni naslov prozora",
"prompt": { "prompt": {
"label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)", "label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)",
"placeholder": "Primjer: YouTube Music" "placeholder": "Primjer: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {

View File

@ -154,7 +154,7 @@
"label": "Títol personalitzat de la finestra", "label": "Títol personalitzat de la finestra",
"prompt": { "prompt": {
"label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)", "label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)",
"placeholder": "Exemple: YouTube Music" "placeholder": "Exemple: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reinicia l'aplicació", "restart": "Reinicia l'aplicació",
"show": "Mostra la finestra", "show": "Mostra la finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambient" "name": "Mode ambient"
}, },
"amuse": { "amuse": {
"description": "Afegeix suport a Youtube Music per el widget \"now playing\" d'Amuse per 6K Labs", "description": "Afegeix suport a Pear Desktop per el widget \"now playing\" d'Amuse per 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó." "query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó."
@ -369,11 +369,11 @@
"name": "Desenfoca la barra de navegació" "name": "Desenfoca la barra de navegació"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Esquiva la verificació d'edat de YouTube", "description": "Esquiva la verificació d'edat de Music Player",
"name": "Esquiva les restriccions d'edat" "name": "Esquiva les restriccions d'edat"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítols per les pistes d'àudio de YouTube Music", "description": "Selector de subtítols per les pistes d'àudio de Pear Desktop",
"menu": { "menu": {
"autoload": "Selecciona automàticament l'últim subtítol emprat", "autoload": "Selecciona automàticament l'últim subtítol emprat",
"disable-captions": "Sense subtítols per defecte" "disable-captions": "Sense subtítols per defecte"
@ -456,14 +456,14 @@
"disconnected": "Desconnectat", "disconnected": "Desconnectat",
"hide-duration-left": "Amaga la durada restant", "hide-duration-left": "Amaga la durada restant",
"hide-github-button": "Amaga el botó de l'enllaç a GitHub", "hide-github-button": "Amaga el botó de l'enllaç a GitHub",
"play-on-youtube-music": "Reprodueix a YouTube Music", "play-on-pear-desktop": "Reprodueix a Pear Desktop",
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat", "set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
"set-status-display-type": { "set-status-display-type": {
"label": "Text d'estat", "label": "Text d'estat",
"submenu": { "submenu": {
"artist": "Escoltant {artist}", "artist": "Escoltant {artist}",
"title": "Escoltant {song title}", "title": "Escoltant {song title}",
"youtube-music": "Escoltant YouTube Music" "pear-desktop": "Escoltant Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Vlastní název okna", "label": "Vlastní název okna",
"prompt": { "prompt": {
"label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)", "label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)",
"placeholder": "Příklad: Hudba YouTube" "placeholder": "Příklad: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restartovat aplikaci", "restart": "Restartovat aplikaci",
"show": "Zobrazit okno", "show": "Zobrazit okno",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambientní režim" "name": "Ambientní režim"
}, },
"amuse": { "amuse": {
"description": "Přídá YouTube Music podporu pro Amuse právě hraje widget od 6K Labs", "description": "Přídá Pear Desktop podporu pro Amuse právě hraje widget od 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce." "query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce."
@ -369,11 +369,11 @@
"name": "Rozmazaný navigační panel" "name": "Rozmazaný navigační panel"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Obejít ověření věku na YouTube", "description": "Obejít ověření věku na Music Player",
"name": "Obejít věková omezení" "name": "Obejít věková omezení"
}, },
"captions-selector": { "captions-selector": {
"description": "Titulkový selector pro zvukové stopy v YouTube Music", "description": "Titulkový selector pro zvukové stopy v Pear Desktop",
"menu": { "menu": {
"autoload": "Automaticky vybrat naposledy použité titulky", "autoload": "Automaticky vybrat naposledy použité titulky",
"disable-captions": "Žádné titulky ve vychozím nastavení" "disable-captions": "Žádné titulky ve vychozím nastavení"
@ -456,14 +456,14 @@
"disconnected": "Odpojeno", "disconnected": "Odpojeno",
"hide-duration-left": "Skrýt zbývající duration", "hide-duration-left": "Skrýt zbývající duration",
"hide-github-button": "Skrýt tlačítko s odkazem na GitHub", "hide-github-button": "Skrýt tlačítko s odkazem na GitHub",
"play-on-youtube-music": "Hrát na YouTube Music", "play-on-pear-desktop": "Hrát na Pear Desktop",
"set-inactivity-timeout": "Nastavit timeout pro neaktivitu", "set-inactivity-timeout": "Nastavit timeout pro neaktivitu",
"set-status-display-type": { "set-status-display-type": {
"label": "Text statusu", "label": "Text statusu",
"submenu": { "submenu": {
"artist": "Poslouchám: {artist}", "artist": "Poslouchám: {artist}",
"title": "Poslouchám {song title}", "title": "Poslouchám {song title}",
"youtube-music": "Poslouchám YouTube Music" "pear-desktop": "Poslouchám Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Tilpasset vindues titel", "label": "Tilpasset vindues titel",
"prompt": { "prompt": {
"label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)", "label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)",
"placeholder": "Eksempel: YouTube Music" "placeholder": "Eksempel: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Genstart app", "restart": "Genstart app",
"show": "Vis vindue", "show": "Vis vindue",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Benutzerdefinierter Fenstertitel", "label": "Benutzerdefinierter Fenstertitel",
"prompt": { "prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)", "label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: YouTube Music" "placeholder": "Beispiel: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Anwendung neu starten", "restart": "Anwendung neu starten",
"show": "Fenster anzeigen", "show": "Fenster anzeigen",
"tooltip": { "tooltip": {
"default": "YouTube Musik", "default": "Pear Desktop",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -369,11 +369,11 @@
"name": "Verschwommene Navigationsleiste" "name": "Verschwommene Navigationsleiste"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Youtubes Altersbestätigung umgehen", "description": "Music Player Altersbestätigung umgehen",
"name": "Altersbeschränkungen umgehen" "name": "Altersbeschränkungen umgehen"
}, },
"captions-selector": { "captions-selector": {
"description": "Untertitelwähler für YouTube Music-Audio-Lieder", "description": "Untertitelwähler für Pear Desktop-Audio-Lieder",
"menu": { "menu": {
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel", "autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
"disable-captions": "Standardmäßig keine Untertitel" "disable-captions": "Standardmäßig keine Untertitel"
@ -456,14 +456,14 @@
"disconnected": "Getrennt", "disconnected": "Getrennt",
"hide-duration-left": "Verbleibende Zeit verstecken", "hide-duration-left": "Verbleibende Zeit verstecken",
"hide-github-button": "Knopf mit Link zu GitHub ausblenden", "hide-github-button": "Knopf mit Link zu GitHub ausblenden",
"play-on-youtube-music": "Auf YouTube Music abspielen", "play-on-pear-desktop": "Auf Pear Desktop abspielen",
"set-inactivity-timeout": "Inaktivitätstimeout setzen", "set-inactivity-timeout": "Inaktivitätstimeout setzen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status Text", "label": "Status Text",
"submenu": { "submenu": {
"artist": "Hört {artist} zu", "artist": "Hört {artist} zu",
"title": "Du hörst {song title}", "title": "Du hörst {song title}",
"youtube-music": "Hört YouTube Music" "pear-desktop": "Hört Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Προσαρμοσμένος τίτλος παραθύρου", "label": "Προσαρμοσμένος τίτλος παραθύρου",
"prompt": { "prompt": {
"label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)", "label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: YouTube Music" "placeholder": "Παράδειγμα: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Επανεκκίνηση εφαρμογής", "restart": "Επανεκκίνηση εφαρμογής",
"show": "Εμφάνιση παραθύρου", "show": "Εμφάνιση παραθύρου",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Λειτουργία περιβάλλοντος" "name": "Λειτουργία περιβάλλοντος"
}, },
"amuse": { "amuse": {
"description": "Προσθέτει υποστήριξη YouTube Music στο widget Amuse now playing από την 6K Labs", "description": "Προσθέτει υποστήριξη Pear Desktop στο widget Amuse now playing από την 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι." "query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
@ -369,11 +369,11 @@
"name": "Θόλωμα γραμμής πλοήγησης" "name": "Θόλωμα γραμμής πλοήγησης"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Παράκαμψη επαλήθευσης ηλικίας στο YouTube", "description": "Παράκαμψη επαλήθευσης ηλικίας στο Music Player",
"name": "Παράκαμψη ηλικιακών περιορισμών" "name": "Παράκαμψη ηλικιακών περιορισμών"
}, },
"captions-selector": { "captions-selector": {
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του YouTube", "description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του Pear Desktop",
"menu": { "menu": {
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας", "autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
"disable-captions": "Χωρίς λεζάντες από προεπιλογή" "disable-captions": "Χωρίς λεζάντες από προεπιλογή"
@ -443,7 +443,7 @@
"disconnected": "Αποσυνδεδεμένο", "disconnected": "Αποσυνδεδεμένο",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει", "hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub", "hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
"play-on-youtube-music": "Αναπαραγωγή στο YouTube Music", "play-on-pear-desktop": "Αναπαραγωγή στο Pear Desktop",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας" "set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
}, },
"name": "Discord Πλούσια παρουσία", "name": "Discord Πλούσια παρουσία",

View File

@ -160,7 +160,7 @@
"label": "Custom window title", "label": "Custom window title",
"prompt": { "prompt": {
"label": "Enter custom window title: (leave empty to disable)", "label": "Enter custom window title: (leave empty to disable)",
"placeholder": "Example: YouTube Music" "placeholder": "Example: Pear Desktop"
} }
}, },
"remove-upgrade-button": "Remove upgrade button", "remove-upgrade-button": "Remove upgrade button",
@ -208,8 +208,8 @@
"restart": "Restart App", "restart": "Restart App",
"show": "Show window", "show": "Show window",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient Mode" "name": "Ambient Mode"
}, },
"amuse": { "amuse": {
"description": "Adds YouTube Music support for the Amuse now playing widget by 6K Labs", "description": "Adds Pear Desktop support for the Amuse now playing widget by 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server is running. GET /query to get song info." "query": "Amuse API server is running. GET /query to get song info."
@ -369,11 +369,11 @@
"name": "Blur Navigation Bar" "name": "Blur Navigation Bar"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypass YouTube's age verification", "description": "Bypass Music Player's age verification",
"name": "Bypass Age Restrictions" "name": "Bypass Age Restrictions"
}, },
"captions-selector": { "captions-selector": {
"description": "Caption selector for YouTube Music audio tracks", "description": "Caption selector for Pear Desktop audio tracks",
"menu": { "menu": {
"autoload": "Automatically select last used caption", "autoload": "Automatically select last used caption",
"disable-captions": "No captions by default" "disable-captions": "No captions by default"
@ -456,12 +456,12 @@
"disconnected": "Disconnected", "disconnected": "Disconnected",
"hide-duration-left": "Hide duration left", "hide-duration-left": "Hide duration left",
"hide-github-button": "Hide GitHub link Button", "hide-github-button": "Hide GitHub link Button",
"play-on-youtube-music": "Play on YouTube Music", "play-on-pear-desktop": "Play on Pear Desktop",
"set-inactivity-timeout": "Set inactivity timeout", "set-inactivity-timeout": "Set inactivity timeout",
"set-status-display-type": { "set-status-display-type": {
"label": "Status text", "label": "Status text",
"submenu": { "submenu": {
"youtube-music": "Listening to YouTube Music", "pear-desktop": "Listening to Pear Desktop",
"artist": "Listening to {artist}", "artist": "Listening to {artist}",
"title": "Listening to {song title}" "title": "Listening to {song title}"
} }

View File

@ -154,7 +154,7 @@
"label": "Título de ventana personalizado", "label": "Título de ventana personalizado",
"prompt": { "prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)", "label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: YouTube Music" "placeholder": "Ejemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar la aplicación", "restart": "Reiniciar la aplicación",
"show": "Mostrar ventana", "show": "Mostrar ventana",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Agrega soporte a YouTube Music para el widget \"reproduciendo\" de Amuse por 6K Labs", "description": "Agrega soporte a Pear Desktop para el widget \"reproduciendo\" de Amuse por 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción." "query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
@ -369,11 +369,11 @@
"name": "Desenfocar barra de navegación" "name": "Desenfocar barra de navegación"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Saltarse la verificación de edad de YouTube", "description": "Saltarse la verificación de edad de Music Player",
"name": "Saltarse las restricciones de edad" "name": "Saltarse las restricciones de edad"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítulos para pistas de audio de YouTube Music", "description": "Selector de subtítulos para pistas de audio de Pear Desktop",
"menu": { "menu": {
"autoload": "Seleccionar automáticamente el último subtítulo utilizado", "autoload": "Seleccionar automáticamente el último subtítulo utilizado",
"disable-captions": "Sin subtítulos por defecto" "disable-captions": "Sin subtítulos por defecto"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar la duración restante", "hide-duration-left": "Ocultar la duración restante",
"hide-github-button": "Ocultar el botón de enlace a GitHub", "hide-github-button": "Ocultar el botón de enlace a GitHub",
"play-on-youtube-music": "Reproducir en YouTube Music", "play-on-pear-desktop": "Reproducir en Pear Desktop",
"set-inactivity-timeout": "Establecer tiempo de inactividad", "set-inactivity-timeout": "Establecer tiempo de inactividad",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"artist": "Escuchando a {artist}", "artist": "Escuchando a {artist}",
"title": "Escuchando {song title}", "title": "Escuchando {song title}",
"youtube-music": "Escuchando YouTube Music" "pear-desktop": "Escuchando Pear Desktop"
} }
} }
}, },

View File

@ -125,8 +125,8 @@
"restart": "Käivita rakendus uuesti", "restart": "Käivita rakendus uuesti",
"show": "Näita akent", "show": "Näita akent",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -280,7 +280,7 @@
"name": "حالت محیطی" "name": "حالت محیطی"
}, },
"amuse": { "amuse": {
"description": "حالا ویجت Amuse از YouTube Music هم پشتیبانی می‌کنه! (توسط 6K Labs)", "description": "حالا ویجت Amuse از Pear Desktop هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید." "query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
@ -436,7 +436,7 @@
"disconnected": "اتصال قطع شد", "disconnected": "اتصال قطع شد",
"hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده", "hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده",
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب", "hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
"play-on-youtube-music": "پخش در یوتیوب موزیک", "play-on-pear-desktop": "پخش در یوتیوب موزیک",
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت" "set-inactivity-timeout": "تنظیم زمان عدم فعالیت"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Mukautettu ikkunan otsikko", "label": "Mukautettu ikkunan otsikko",
"prompt": { "prompt": {
"label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)", "label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)",
"placeholder": "Esimerkki: YouTube Music" "placeholder": "Esimerkki: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uudelleen käynnistä appi", "restart": "Uudelleen käynnistä appi",
"show": "Näytä ikkuna", "show": "Näytä ikkuna",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "Pear Desktop",
"with-song-info": "Youtube Music {{artist}} - {{title}}" "with-song-info": "Pear Desktop {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Tunnelmallinen Tila" "name": "Tunnelmallinen Tila"
}, },
"amuse": { "amuse": {
"description": "Lisää YouTube Music tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs", "description": "Lisää Pear Desktop tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot." "query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot."
@ -369,11 +369,11 @@
"name": "Sumenna Siirtymäpalkki" "name": "Sumenna Siirtymäpalkki"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Ohita YouTuben iän vahvistus", "description": "Ohita Music Player iän vahvistus",
"name": "Ohita Ikään Perustuvat Rajoitukset" "name": "Ohita Ikään Perustuvat Rajoitukset"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music ääniraitojen tekstitysten valitsin", "description": "Pear Desktop ääniraitojen tekstitysten valitsin",
"menu": { "menu": {
"autoload": "Valitse automaattisesti viimeksi käytetty tekstitys", "autoload": "Valitse automaattisesti viimeksi käytetty tekstitys",
"disable-captions": "Tekstitys ei oletusarvoisesti käytössä" "disable-captions": "Tekstitys ei oletusarvoisesti käytössä"
@ -443,7 +443,7 @@
"disconnected": "Yhteys katkaistu", "disconnected": "Yhteys katkaistu",
"hide-duration-left": "Piilota kappaleen jäljellä oleva kesto", "hide-duration-left": "Piilota kappaleen jäljellä oleva kesto",
"hide-github-button": "Piilota \"linkki GitHubiin\" -nappi", "hide-github-button": "Piilota \"linkki GitHubiin\" -nappi",
"play-on-youtube-music": "Kuuntele palvelussa YouTube Music", "play-on-pear-desktop": "Kuuntele palvelussa Pear Desktop",
"set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu" "set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu"
}, },
"name": "Discord Aktiviteetti (Rich Presence)", "name": "Discord Aktiviteetti (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Custom na window title", "label": "Custom na window title",
"prompt": { "prompt": {
"label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)", "label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)",
"placeholder": "Halimbawa: YouTube Music" "placeholder": "Halimbawa: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "I-restart ang App", "restart": "I-restart ang App",
"show": "Ipakita ang window", "show": "Ipakita ang window",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient Mode" "name": "Ambient Mode"
}, },
"amuse": { "amuse": {
"description": "Nagdaragdag ng suporta sa YouTube Music para sa Amuse now playing widget ng 6K Labs", "description": "Nagdaragdag ng suporta sa Pear Desktop para sa Amuse now playing widget ng 6K Labs",
"response": { "response": {
"query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta." "query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta."
} }
@ -365,11 +365,11 @@
"name": "Palabuin ang Bar ng Nabigasyon" "name": "Palabuin ang Bar ng Nabigasyon"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "I-bypass ang pag-verify ng edad ng YouTube", "description": "I-bypass ang pag-verify ng edad ng Music Player",
"name": "I-bypass ang Restriksyon sa Edad" "name": "I-bypass ang Restriksyon sa Edad"
}, },
"captions-selector": { "captions-selector": {
"description": "Tagapili ng caption para sa mga audio track ng YouTube Music", "description": "Tagapili ng caption para sa mga audio track ng Pear Desktop",
"menu": { "menu": {
"autoload": "Awtomatikong piliin ang huling ginamit na caption", "autoload": "Awtomatikong piliin ang huling ginamit na caption",
"disable-captions": "Walang mga caption bilang default" "disable-captions": "Walang mga caption bilang default"
@ -446,13 +446,13 @@
"disconnected": "Nadiskonekta", "disconnected": "Nadiskonekta",
"hide-duration-left": "Itago ang natitirang oras", "hide-duration-left": "Itago ang natitirang oras",
"hide-github-button": "Itago ang button na GitHub link", "hide-github-button": "Itago ang button na GitHub link",
"play-on-youtube-music": "Patugtugin sa YouTube Music", "play-on-pear-desktop": "Patugtugin sa Pear Desktop",
"set-inactivity-timeout": "I-set ang inactivity timeout", "set-inactivity-timeout": "I-set ang inactivity timeout",
"set-status-display-type": { "set-status-display-type": {
"submenu": { "submenu": {
"artist": "Nakikinig sa {artist}", "artist": "Nakikinig sa {artist}",
"title": "Nakikinig sa {song title}", "title": "Nakikinig sa {song title}",
"youtube-music": "Kumikinig sa YouTube Music" "pear-desktop": "Kumikinig sa Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Titre de fenêtre personnalisé", "label": "Titre de fenêtre personnalisé",
"prompt": { "prompt": {
"label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)", "label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)",
"placeholder": "Exemple : YouTube Musique" "placeholder": "Exemple : Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Redémarrer l'application", "restart": "Redémarrer l'application",
"show": "Afficher la fenêtre", "show": "Afficher la fenêtre",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambiant" "name": "Mode ambiant"
}, },
"amuse": { "amuse": {
"description": "Ajout de la prise en charge de YouTube Music pour le widget Amuse now playing de 6K Labs", "description": "Ajout de la prise en charge de Pear Desktop pour le widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson." "query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson."
@ -369,11 +369,11 @@
"name": "Barre de navigation floue" "name": "Barre de navigation floue"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Contourner la vérification de l'âge de YouTube", "description": "Contourner la vérification de l'âge de Music Player",
"name": "Contourner les restrictions dâge" "name": "Contourner les restrictions dâge"
}, },
"captions-selector": { "captions-selector": {
"description": "Sélecteur de sous-titres pour les pistes audio YouTube Music", "description": "Sélecteur de sous-titres pour les pistes audio Pear Desktop",
"menu": { "menu": {
"autoload": "Sélectionner automatiquement la dernière légende utilisée", "autoload": "Sélectionner automatiquement la dernière légende utilisée",
"disable-captions": "Pas de sous-titres par défaut" "disable-captions": "Pas de sous-titres par défaut"
@ -456,14 +456,14 @@
"disconnected": "Déconnecté", "disconnected": "Déconnecté",
"hide-duration-left": "Masquer la durée restante", "hide-duration-left": "Masquer la durée restante",
"hide-github-button": "Masquer le bouton du lien GitHub", "hide-github-button": "Masquer le bouton du lien GitHub",
"play-on-youtube-music": "Jouer sur YouTube Music", "play-on-pear-desktop": "Jouer sur Pear Desktop",
"set-inactivity-timeout": "Définir le délai d'inactivité", "set-inactivity-timeout": "Définir le délai d'inactivité",
"set-status-display-type": { "set-status-display-type": {
"label": "Texte d'état", "label": "Texte d'état",
"submenu": { "submenu": {
"artist": "Écoute {artiste}", "artist": "Écoute {artiste}",
"title": "Écoute {titre de la chanson}", "title": "Écoute {titre de la chanson}",
"youtube-music": "Écoute YouTube Music" "pear-desktop": "Écoute Pear Desktop"
} }
} }
}, },

View File

@ -279,7 +279,7 @@
"name": "מצב אווירה" "name": "מצב אווירה"
}, },
"amuse": { "amuse": {
"description": "מוסיף תמיכה ב-YouTube Music עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs", "description": "מוסיף תמיכה ב-Pear Desktop עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"name": "משעשע", "name": "משעשע",
"response": { "response": {
"query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query." "query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query."
@ -365,7 +365,7 @@
"name": "עקוף את ההחמרות של הגיל" "name": "עקוף את ההחמרות של הגיל"
}, },
"captions-selector": { "captions-selector": {
"description": "בורר כתוביות עבור רצועות אודיו של YouTube Music", "description": "בורר כתוביות עבור רצועות אודיו של Pear Desktop",
"menu": { "menu": {
"autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה", "autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה",
"disable-captions": "ברירת מחד ללא כתוביות" "disable-captions": "ברירת מחד ללא כתוביות"
@ -419,7 +419,7 @@
"connected": "מחובר", "connected": "מחובר",
"disconnected": "מנותק", "disconnected": "מנותק",
"hide-github-button": "הסתר את לחצן הקישור של GitHub", "hide-github-button": "הסתר את לחצן הקישור של GitHub",
"play-on-youtube-music": "הפעל ביוטיוב מיוזיק", "play-on-pear-desktop": "הפעל ביוטיוב מיוזיק",
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות" "set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
} }
}, },

View File

@ -287,7 +287,7 @@
"name": "अम्बिएन्ट मोड्" "name": "अम्बिएन्ट मोड्"
}, },
"amuse": { "amuse": {
"description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए YouTube म्यूजिक समर्थन जोड़ा गया", "description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए Music Player म्यूजिक समर्थन जोड़ा गया",
"name": "मन बहलाना", "name": "मन बहलाना",
"response": { "response": {
"query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।" "query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।"
@ -369,11 +369,11 @@
"name": "नेविगेशन बार को ब्लर करें" "name": "नेविगेशन बार को ब्लर करें"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube आयु की जांच को बायपास करें", "description": "Music Player आयु की जांच को बायपास करें",
"name": "आयु प्रतिबंध को बायपास करें" "name": "आयु प्रतिबंध को बायपास करें"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता", "description": "Pear Desktop म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"menu": { "menu": {
"autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें", "autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें",
"disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं" "disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं"
@ -450,7 +450,7 @@
"disconnected": "डिस्कनेक्ट किया गया", "disconnected": "डिस्कनेक्ट किया गया",
"hide-duration-left": "शेष अवधि छिपाएँ", "hide-duration-left": "शेष अवधि छिपाएँ",
"hide-github-button": "GitHub लिंक के बटन को छिपाएँ", "hide-github-button": "GitHub लिंक के बटन को छिपाएँ",
"play-on-youtube-music": "YouTube म्यूज़िक पर चलाएँ", "play-on-pear-desktop": "Pear Desktop म्यूज़िक पर चलाएँ",
"set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें" "set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें"
}, },
"name": "डिस्कॉर्ड रिच प्रेजेंस", "name": "डिस्कॉर्ड रिच प्रेजेंस",

View File

@ -201,8 +201,8 @@
"restart": "Ponovo Pokreni Aplikaciju", "restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Glazba", "default": "Pear Desktop",
"with-song-info": "YouTube Glazba: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +280,7 @@
"name": "Ambijentalni Način" "name": "Ambijentalni Način"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za YouTube Glazbu za widget \"sada reproducira\" od Amuse od strane 6K Labs", "description": "Dodaje podršku za Pear Desktop za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi." "query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
@ -362,11 +362,11 @@
"name": "Zamagli Navigacijsku Traku" "name": "Zamagli Navigacijsku Traku"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Zaobiđi YouTubeovu provjeru dobi", "description": "Zaobiđi Music Player provjeru dobi",
"name": "Zaobiđi dobna ograničenja" "name": "Zaobiđi dobna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Izbornik titlova za audiozapise od YouTube Musica", "description": "Izbornik titlova za audiozapise od Pear Desktopa",
"menu": { "menu": {
"autoload": "Automatski izaberi posljednje korištene titlove", "autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova" "disable-captions": "Bez titlova"
@ -436,7 +436,7 @@
"disconnected": "Odspojen", "disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme", "hide-duration-left": "Sakrij preostalo vrijeme",
"hide-github-button": "Sakrij gumb sa GitHub poveznicom", "hide-github-button": "Sakrij gumb sa GitHub poveznicom",
"play-on-youtube-music": "Reproduciraj na YouTube Musicu", "play-on-pear-desktop": "Reproduciraj na Pear Desktopu",
"set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)" "set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Saját ablak cím", "label": "Saját ablak cím",
"prompt": { "prompt": {
"label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)", "label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)",
"placeholder": "Példa: Youtube Music" "placeholder": "Példa: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "YT Music újraindítása", "restart": "YT Music újraindítása",
"show": "Ablak megjelenítése", "show": "Ablak megjelenítése",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient mód" "name": "Ambient mód"
}, },
"amuse": { "amuse": {
"description": "Hozzáadja a YouTube Music támogatását az Amuse \"now playing\" widgethez a 6K Labs által", "description": "Hozzáadja a Pear Desktop támogatását az Amuse \"now playing\" widgethez a 6K Labs által",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez." "query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez."
@ -367,11 +367,11 @@
"name": "Navigációs sáv elmosása" "name": "Navigációs sáv elmosása"
}, },
"bypass-age-restrictions": { "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.)", "description": "A Music Player 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" "name": "Korellenőrzés kihagyása"
}, },
"captions-selector": { "captions-selector": {
"description": "Felirat választó a YouTube Music zenékhez", "description": "Felirat választó a Pear Desktop zenékhez",
"menu": { "menu": {
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot", "autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
"disable-captions": "Alapértelmezetten nincsenek feliratok" "disable-captions": "Alapértelmezetten nincsenek feliratok"
@ -453,14 +453,14 @@
"disconnected": "Nincs Kapcsolódva", "disconnected": "Nincs Kapcsolódva",
"hide-duration-left": "Hátralévő idő elrejtése", "hide-duration-left": "Hátralévő idő elrejtése",
"hide-github-button": "GitHub url gombjának elrejtése", "hide-github-button": "GitHub url gombjának elrejtése",
"play-on-youtube-music": "Lejátszás a YouTube Music-on", "play-on-pear-desktop": "Lejátszás a Pear Desktop-on",
"set-inactivity-timeout": "Inaktivitási időkorlát beállítása", "set-inactivity-timeout": "Inaktivitási időkorlát beállítása",
"set-status-display-type": { "set-status-display-type": {
"label": "Tevékenység szöveg", "label": "Tevékenység szöveg",
"submenu": { "submenu": {
"artist": "Hallgatja: {artist}", "artist": "Hallgatja: {artist}",
"title": "Hallgatja: {song title}", "title": "Hallgatja: {song title}",
"youtube-music": "Hallgatja: YouTube Music" "pear-desktop": "Hallgatja: Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Judul jendela kustom", "label": "Judul jendela kustom",
"prompt": { "prompt": {
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)", "label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
"placeholder": "Contoh: YouTube Music" "placeholder": "Contoh: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restart aplikasi", "restart": "Restart aplikasi",
"show": "Tampilkan jendela", "show": "Tampilkan jendela",
"tooltip": { "tooltip": {
"default": "YouTube Musik", "default": "Pear Desktop",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambient" "name": "Mode ambient"
}, },
"amuse": { "amuse": {
"description": "Menambahkan dukungan YouTube Music untuk widget Amuse yang sedang diputar oleh 6K Labs", "description": "Menambahkan dukungan Pear Desktop untuk widget Amuse yang sedang diputar oleh 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu." "query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
@ -369,11 +369,11 @@
"name": "Buramkan Bar Navigasi" "name": "Buramkan Bar Navigasi"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Lewati verifikasi umur dari YouTube", "description": "Lewati verifikasi umur dari Music Player",
"name": "Lewati batasan umur" "name": "Lewati batasan umur"
}, },
"captions-selector": { "captions-selector": {
"description": "Pemilih caption untuk trek audio YouTube Music", "description": "Pemilih caption untuk trek audio Pear Desktop",
"menu": { "menu": {
"autoload": "Pilih caption terakhir secara otomatis", "autoload": "Pilih caption terakhir secara otomatis",
"disable-captions": "Tidak ada caption secara default" "disable-captions": "Tidak ada caption secara default"
@ -456,14 +456,14 @@
"disconnected": "Terputus", "disconnected": "Terputus",
"hide-duration-left": "Sembunyikan sisa durasi", "hide-duration-left": "Sembunyikan sisa durasi",
"hide-github-button": "Sembunyikan tombol link GitHub", "hide-github-button": "Sembunyikan tombol link GitHub",
"play-on-youtube-music": "Mainkan di YouTube Music", "play-on-pear-desktop": "Mainkan di Pear Desktop",
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif", "set-inactivity-timeout": "Tetapkan batas waktu tidak aktif",
"set-status-display-type": { "set-status-display-type": {
"label": "Teks status", "label": "Teks status",
"submenu": { "submenu": {
"artist": "Sedang mendengarkan {artist}", "artist": "Sedang mendengarkan {artist}",
"title": "Sedang mendengarkan {song title}", "title": "Sedang mendengarkan {song title}",
"youtube-music": "Sedang mendengarkan YouTube Music" "pear-desktop": "Sedang mendengarkan Pear Desktop"
} }
} }
}, },

View File

@ -201,8 +201,8 @@
"restart": "Endurræstu Forritið", "restart": "Endurræstu Forritið",
"show": "Sýna glugga", "show": "Sýna glugga",
"tooltip": { "tooltip": {
"default": "YouTube Tónlist", "default": "Pear Desktop",
"with-song-info": "YouTube Tónlist: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -331,11 +331,11 @@
"name": "Þoka Leiðsagnarstika" "name": "Þoka Leiðsagnarstika"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Framhjá aldursstaðfestingu YouTube", "description": "Framhjá aldursstaðfestingu Music Player",
"name": "Farið Framhjá Aldurstakmörkunum" "name": "Farið Framhjá Aldurstakmörkunum"
}, },
"captions-selector": { "captions-selector": {
"description": "Skjátextavali fyrir YouTube Tónlist hljóðrásir", "description": "Skjátextavali fyrir Pear Desktop hljóðrásir",
"menu": { "menu": {
"autoload": "Veldu sjálfkrafa síðast notaða myndatexta", "autoload": "Veldu sjálfkrafa síðast notaða myndatexta",
"disable-captions": "Engir skjátextar sjálfgefið" "disable-captions": "Engir skjátextar sjálfgefið"
@ -400,7 +400,7 @@
"disconnected": "Aftengt", "disconnected": "Aftengt",
"hide-duration-left": "Fela tímalengd til vinstri", "hide-duration-left": "Fela tímalengd til vinstri",
"hide-github-button": "Fela GitHub tengilhnapp", "hide-github-button": "Fela GitHub tengilhnapp",
"play-on-youtube-music": "Spilaðu á YouTube Tónlist", "play-on-pear-desktop": "Spilaðu á Pear Desktop",
"set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni" "set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni"
}, },
"name": "Discord Rík Nærvera", "name": "Discord Rík Nærvera",

View File

@ -154,7 +154,7 @@
"label": "Personalizza titolo finestra", "label": "Personalizza titolo finestra",
"prompt": { "prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)", "label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: YouTube Music" "placeholder": "Esempio: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Riavvia l'app", "restart": "Riavvia l'app",
"show": "Mostra finestra", "show": "Mostra finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modalità Ambiente" "name": "Modalità Ambiente"
}, },
"amuse": { "amuse": {
"description": "Aggiunge il supporto a YouTube Music per il widget Amuse Now Playing di 6K Labs", "description": "Aggiunge il supporto a Pear Desktop per il widget Amuse Now Playing di 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani." "query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
@ -369,11 +369,11 @@
"name": "Barra di navigazione trasparente" "name": "Barra di navigazione trasparente"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypassa la verifica dell'età di YouTube", "description": "Bypassa la verifica dell'età di Music Player",
"name": "Aggira i limiti d'età" "name": "Aggira i limiti d'età"
}, },
"captions-selector": { "captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di YouTube", "description": "Selettore sottotitolo per le tracce audio di Pear Desktop",
"menu": { "menu": {
"autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato", "autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato",
"disable-captions": "Disattiva i sottotitoli" "disable-captions": "Disattiva i sottotitoli"
@ -456,14 +456,14 @@
"disconnected": "Disconnesso", "disconnected": "Disconnesso",
"hide-duration-left": "Nascondi la durata rimasta", "hide-duration-left": "Nascondi la durata rimasta",
"hide-github-button": "Nascondi il pulsante link a GitHub", "hide-github-button": "Nascondi il pulsante link a GitHub",
"play-on-youtube-music": "Riproduci su YouTube Music", "play-on-pear-desktop": "Riproduci su Pear Desktop",
"set-inactivity-timeout": "Imposta il timeout di inattività", "set-inactivity-timeout": "Imposta il timeout di inattività",
"set-status-display-type": { "set-status-display-type": {
"label": "Testo dello status", "label": "Testo dello status",
"submenu": { "submenu": {
"artist": "Stai ascoltando {artist}", "artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}", "title": "Stai ascoltando {song title}",
"youtube-music": "Ascoltando YouTube Music" "pear-desktop": "Ascoltando Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "カスタムウィンドウタイトル", "label": "カスタムウィンドウタイトル",
"prompt": { "prompt": {
"label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)", "label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)",
"placeholder": "例: YouTube Music" "placeholder": "例: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "アプリを再起動", "restart": "アプリを再起動",
"show": "ウィンドウを表示", "show": "ウィンドウを表示",
"tooltip": { "tooltip": {
"default": "YouTube ミュージック", "default": "Pear Desktop",
"with-song-info": "YouTube ミュージック: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "アンビエント モード" "name": "アンビエント モード"
}, },
"amuse": { "amuse": {
"description": "6K LabsのAmuse再生中ウィジェットがYouTube Musicに対応しました", "description": "6K LabsのAmuse再生中ウィジェットがPear Desktopに対応しました",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。" "query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。"
@ -373,7 +373,7 @@
"name": "年齢制限迂回" "name": "年齢制限迂回"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Musicトラック用字幕選択機", "description": "Pear Desktopトラック用字幕選択機",
"menu": { "menu": {
"autoload": "最後の字幕を自動に選択", "autoload": "最後の字幕を自動に選択",
"disable-captions": "デフォルトで字幕を無効化" "disable-captions": "デフォルトで字幕を無効化"
@ -456,14 +456,14 @@
"disconnected": "切断済み", "disconnected": "切断済み",
"hide-duration-left": "残りの再生時間を隠す", "hide-duration-left": "残りの再生時間を隠す",
"hide-github-button": "GitHubリンクボタンを隠す", "hide-github-button": "GitHubリンクボタンを隠す",
"play-on-youtube-music": "YouTube Musicで再生", "play-on-pear-desktop": "Pear Desktopで再生",
"set-inactivity-timeout": "タイムアウト時間を設定", "set-inactivity-timeout": "タイムアウト時間を設定",
"set-status-display-type": { "set-status-display-type": {
"label": "ステータステキスト", "label": "ステータステキスト",
"submenu": { "submenu": {
"artist": "{artist}を聴いている", "artist": "{artist}を聴いている",
"title": "{曲名}を聴いている", "title": "{曲名}を聴いている",
"youtube-music": "YouTube Musicを聴く" "pear-desktop": "Pear Desktopを聴く"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "사용자 정의 앱 제목", "label": "사용자 정의 앱 제목",
"prompt": { "prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)", "label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)",
"placeholder": "예: YouTube Music" "placeholder": "예: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -287,7 +287,7 @@
"name": "앰비언트 모드" "name": "앰비언트 모드"
}, },
"amuse": { "amuse": {
"description": "6K Labs Amuse의 'now playing' 위젯에 YouTube Music 지원 추가", "description": "6K Labs Amuse의 'now playing' 위젯에 Pear Desktop 지원 추가",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요." "query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
@ -373,7 +373,7 @@
"name": "나이 제한 우회" "name": "나이 제한 우회"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 트랙용 자막 선택기입니다", "description": "Pear Desktop 트랙용 자막 선택기입니다",
"menu": { "menu": {
"autoload": "마지막으로 사용한 자막을 자동으로 선택", "autoload": "마지막으로 사용한 자막을 자동으로 선택",
"disable-captions": "기본 자막 제거" "disable-captions": "기본 자막 제거"
@ -456,14 +456,14 @@
"disconnected": "연결 해제 됨", "disconnected": "연결 해제 됨",
"hide-duration-left": "남은 재생 시간 숨기기", "hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기", "hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-youtube-music": "유튜브 뮤직에서 재생", "play-on-pear-desktop": "유튜브 뮤직에서 재생",
"set-inactivity-timeout": "비활성 시간 제한 설정", "set-inactivity-timeout": "비활성 시간 제한 설정",
"set-status-display-type": { "set-status-display-type": {
"label": "상태 텍스트", "label": "상태 텍스트",
"submenu": { "submenu": {
"artist": "{아티스트} 듣는 중", "artist": "{아티스트} 듣는 중",
"title": "{곡 제목} 듣는 중", "title": "{곡 제목} 듣는 중",
"youtube-music": "YouTube Music 듣는 중" "pear-desktop": "Pear Desktop 듣는 중"
} }
} }
}, },

View File

@ -152,7 +152,7 @@
"submenu": { "submenu": {
"custom-window-title": { "custom-window-title": {
"prompt": { "prompt": {
"placeholder": "Pavyzdys: YouTube Music" "placeholder": "Pavyzdys: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Perkrauti programą", "restart": "Perkrauti programą",
"show": "Rodyti langą", "show": "Rodyti langą",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -285,7 +285,7 @@
"name": "Aplinkos rėžimas" "name": "Aplinkos rėžimas"
}, },
"amuse": { "amuse": {
"description": "Prideda Youtube Muzika palaikyma Amuse grojimo valdikliui pagal 6K Labs", "description": "Prideda Pear Desktop palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)", "name": "Amuse (Platforma Dainininkams)",
"response": { "response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija." "query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
@ -343,11 +343,11 @@
"name": "Sulieti Navigacijos Lentą" "name": "Sulieti Navigacijos Lentą"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apeiti \"Youtube\" amžiaus patikrinimą", "description": "Apeiti \"Music Player\" amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus" "name": "Apeiti Amžiaus Apribojimus"
}, },
"captions-selector": { "captions-selector": {
"description": "„YouTube Music“ Garso takelių antraščių parinkiklis", "description": "„Pear Desktop“ Garso takelių antraščių parinkiklis",
"menu": { "menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę", "autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės" "disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
@ -427,13 +427,13 @@
"disconnected": "Atsijungta", "disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko", "hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką", "hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką",
"play-on-youtube-music": "Leisti ant \"Youtube Music\"", "play-on-pear-desktop": "Leisti ant \"Pear Desktop\"",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką", "set-inactivity-timeout": "Nustatyti neveiklumo laiką",
"set-status-display-type": { "set-status-display-type": {
"submenu": { "submenu": {
"artist": "Klausosi {artist]", "artist": "Klausosi {artist]",
"title": "Klausosi {song title}", "title": "Klausosi {song title}",
"youtube-music": "Klausosi Youtube Music" "pear-desktop": "Klausosi Pear Desktop"
} }
} }
}, },

View File

@ -156,7 +156,7 @@
"hide": "Paslēpt", "hide": "Paslēpt",
"label": "Like pogas" "label": "Like pogas"
}, },
"remove-upgrade-button": "Noslēpt YouTube Premium pogu", "remove-upgrade-button": "Noslēpt Premium pogu",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -201,8 +201,8 @@
"restart": "Restartēt Lietotni", "restart": "Restartēt Lietotni",
"show": "Rādīt logu", "show": "Rādīt logu",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +280,7 @@
"name": "Ambientais Režīms" "name": "Ambientais Režīms"
}, },
"amuse": { "amuse": {
"description": "Pievieno YouTube Music atblastu priekš Amuse \"tagad spēlē\" no 6K Labs", "description": "Pievieno Pear Desktop atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info." "query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
@ -362,11 +362,11 @@
"name": "Izplūdusi Navigācijas Josla" "name": "Izplūdusi Navigācijas Josla"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apiet YouTube vecuma pārbaudi", "description": "Apiet Music Player vecuma pārbaudi",
"name": "Apiet Vecuma Ierobežojumus" "name": "Apiet Vecuma Ierobežojumus"
}, },
"captions-selector": { "captions-selector": {
"description": "Subtitru izvēlne priekš YouTube Music audio ceļiem", "description": "Subtitru izvēlne priekš Pear Desktop audio ceļiem",
"menu": { "menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus", "autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma" "disable-captions": "Bez subtitriem pēc noklusējuma"
@ -436,7 +436,7 @@
"disconnected": "Atvienojies", "disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika", "hide-duration-left": "Paslēpt cik palika laika",
"hide-github-button": "Paslēpt GitHub saites pogu", "hide-github-button": "Paslēpt GitHub saites pogu",
"play-on-youtube-music": "Atskaņot uz YouTube Music", "play-on-pear-desktop": "Atskaņot uz Pear Desktop",
"set-inactivity-timeout": "Iestatīt neaktivitātes taimeru" "set-inactivity-timeout": "Iestatīt neaktivitātes taimeru"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Tajuk tetingkap tersuai", "label": "Tajuk tetingkap tersuai",
"prompt": { "prompt": {
"label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)", "label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)",
"placeholder": "Contoh: YouTube Music" "placeholder": "Contoh: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Mulakan Semula Aplikasi", "restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap", "show": "Papar tetingkap",
"tooltip": { "tooltip": {
"default": "YouTube Muzik", "default": "Pear Desktop",
"with-song-info": "YouTube Muzik : {{artist}} - {{title}}" "with-song-info": "Pear Desktop : {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mod Sekitaran" "name": "Mod Sekitaran"
}, },
"amuse": { "amuse": {
"description": "Menambahkan sokongan YouTube Music untuk widget sedang dimain Amuse oleh 6K Labs", "description": "Menambahkan sokongan Pear Desktop untuk widget sedang dimain Amuse oleh 6K Labs",
"name": "Terhibur", "name": "Terhibur",
"response": { "response": {
"query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu." "query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu."
@ -369,11 +369,11 @@
"name": "Kaburkan Bar navigasi" "name": "Kaburkan Bar navigasi"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pintas verifikasi umur Youtube", "description": "Pintas verifikasi umur Music Player",
"name": "Pintas Sekatan Umur" "name": "Pintas Sekatan Umur"
}, },
"captions-selector": { "captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Youtube Music", "description": "Pemilih kapsyen untuk trek audio Pear Desktop",
"menu": { "menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik", "autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai" "disable-captions": "Tiada kapsyen secara lalai"
@ -456,14 +456,14 @@
"disconnected": "Tidak disambungkan", "disconnected": "Tidak disambungkan",
"hide-duration-left": "Sembunyikan tempoh yang tinggal", "hide-duration-left": "Sembunyikan tempoh yang tinggal",
"hide-github-button": "Sembunyikan Butang pautan GitHub", "hide-github-button": "Sembunyikan Butang pautan GitHub",
"play-on-youtube-music": "Main di YouTube Music", "play-on-pear-desktop": "Main di Pear Desktop",
"set-inactivity-timeout": "Tetapkan tamat masa tidak aktif", "set-inactivity-timeout": "Tetapkan tamat masa tidak aktif",
"set-status-display-type": { "set-status-display-type": {
"label": "Teks status", "label": "Teks status",
"submenu": { "submenu": {
"artist": "Sedang mendengar {artist}", "artist": "Sedang mendengar {artist}",
"title": "Sedang mendengar {tajuk lagu}", "title": "Sedang mendengar {tajuk lagu}",
"youtube-music": "Mendengar YouTube Music" "pear-desktop": "Mendengar Pear Desktop"
} }
} }
}, },

View File

@ -257,11 +257,11 @@
"name": "Tilslør navigasjonsfelt" "name": "Tilslør navigasjonsfelt"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Omgå YouTube sin aldersgrenser", "description": "Omgå Music Player sin aldersgrenser",
"name": "Omgå aldersgrense" "name": "Omgå aldersgrense"
}, },
"captions-selector": { "captions-selector": {
"description": "Undertekstverktøy for lydspor i YouTube Music", "description": "Undertekstverktøy for lydspor i Pear Desktop",
"menu": { "menu": {
"autoload": "Auto-velg sist brukte undertekst", "autoload": "Auto-velg sist brukte undertekst",
"disable-captions": "Ingen undertekst som forvalg" "disable-captions": "Ingen undertekst som forvalg"
@ -326,7 +326,7 @@
"disconnected": "Frakoblet", "disconnected": "Frakoblet",
"hide-duration-left": "Skjul gjenværende tid", "hide-duration-left": "Skjul gjenværende tid",
"hide-github-button": "Skjul GitHub-lenkeknapp", "hide-github-button": "Skjul GitHub-lenkeknapp",
"play-on-youtube-music": "Spill på YouTube Music", "play-on-pear-desktop": "Spill på Pear Desktop",
"set-inactivity-timeout": "Sett tid før tidsavbrudd" "set-inactivity-timeout": "Sett tid før tidsavbrudd"
}, },
"name": "Rik tilstedeværelse for Discord", "name": "Rik tilstedeværelse for Discord",

View File

@ -436,7 +436,7 @@
"disconnected": "डिसकन्एक्टेड", "disconnected": "डिसकन्एक्टेड",
"hide-duration-left": "बाकी समय लुकाऊ", "hide-duration-left": "बाकी समय लुकाऊ",
"hide-github-button": "GitHub लिंक लुकाऊ", "hide-github-button": "GitHub लिंक लुकाऊ",
"play-on-youtube-music": "YouTube music मा बजाउ", "play-on-pear-desktop": "Pear Desktop मा बजाउ",
"set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख" "set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख"
}, },
"name": "डिसकार्ड रिच प्रीसेंस", "name": "डिसकार्ड रिच प्रीसेंस",

View File

@ -154,7 +154,7 @@
"label": "Aangepaste venstertitel", "label": "Aangepaste venstertitel",
"prompt": { "prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)", "label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Youtube Music" "placeholder": "Voorbeeld: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Herstarten App", "restart": "Herstarten App",
"show": "Weergeven Venster", "show": "Weergeven Venster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Omgevingsmodus" "name": "Omgevingsmodus"
}, },
"amuse": { "amuse": {
"description": "Voegt YouTube Music ondersteuning toe voor de Amuse now playing widget van 6K Labs", "description": "Voegt Pear Desktop ondersteuning toe voor de Amuse now playing widget van 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie." "query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
@ -369,11 +369,11 @@
"name": "Vervagen Navigatiebalk" "name": "Vervagen Navigatiebalk"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Omzeil de leeftijdsverificatie van YouTube", "description": "Omzeil de leeftijdsverificatie van Music Player",
"name": "Leeftijdsbeperkingen Omzeilen" "name": "Leeftijdsbeperkingen Omzeilen"
}, },
"captions-selector": { "captions-selector": {
"description": "Ondertitelkeuze voor YouTube Music-audiotracks", "description": "Ondertitelkeuze voor Pear Desktop-audiotracks",
"menu": { "menu": {
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren", "autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
"disable-captions": "Standaard geen ondertitels" "disable-captions": "Standaard geen ondertitels"
@ -456,14 +456,14 @@
"disconnected": "Verbinding verbroken", "disconnected": "Verbinding verbroken",
"hide-duration-left": "Verberg resterende tijd", "hide-duration-left": "Verberg resterende tijd",
"hide-github-button": "GitHub-knop verbergen", "hide-github-button": "GitHub-knop verbergen",
"play-on-youtube-music": "Afspelen op YouTube Music", "play-on-pear-desktop": "Afspelen op Pear Desktop",
"set-inactivity-timeout": "Inactiviteitstime-out instellen", "set-inactivity-timeout": "Inactiviteitstime-out instellen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status tekst", "label": "Status tekst",
"submenu": { "submenu": {
"artist": "Naar {artist} aan het luisteren", "artist": "Naar {artist} aan het luisteren",
"title": "Naar {song title} aan het luisteren", "title": "Naar {song title} aan het luisteren",
"youtube-music": "Naar Youtube Music aan het luisteren" "pear-desktop": "Naar Pear Desktop aan het luisteren"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Niestandardowy tytuł okna", "label": "Niestandardowy tytuł okna",
"prompt": { "prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):", "label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):",
"placeholder": "Przykład: YouTube Music" "placeholder": "Przykład: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,7 +208,7 @@
"restart": "Uruchom ponownie aplikację", "restart": "Uruchom ponownie aplikację",
"show": "Pokaż okno", "show": "Pokaż okno",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music" "with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music"
} }
} }
@ -287,14 +287,14 @@
"name": "Tryb otoczenia" "name": "Tryb otoczenia"
}, },
"amuse": { "amuse": {
"description": "Wspiera integrację YouTube Music z widgetami Amuse (od 6K Labs)", "description": "Wspiera integrację Pear Desktop z widgetami Amuse (od 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze." "query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
} }
}, },
"api-server": { "api-server": {
"description": "Pozwala na kontrolowanie YouTube Music poprzez podłączenie specjalnego serwera API", "description": "Pozwala na kontrolowanie Pear Desktop poprzez podłączenie specjalnego serwera API",
"dialog": { "dialog": {
"request": { "request": {
"buttons": { "buttons": {
@ -324,7 +324,7 @@
"label": "Port" "label": "Port"
} }
}, },
"name": "YouTube Music API", "name": "Pear Desktop API",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:", "label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:",
@ -373,7 +373,7 @@
"name": "Omiń ograniczenia wiekowe" "name": "Omiń ograniczenia wiekowe"
}, },
"captions-selector": { "captions-selector": {
"description": "Selektor napisów dla ścieżek audio YouTube Music", "description": "Selektor napisów dla ścieżek audio Pear Desktop",
"menu": { "menu": {
"autoload": "Automatycznie wybierz ostatnio używanych napisów", "autoload": "Automatycznie wybierz ostatnio używanych napisów",
"disable-captions": "Domyślnie, brak napisów" "disable-captions": "Domyślnie, brak napisów"
@ -456,14 +456,14 @@
"disconnected": "Odłączono", "disconnected": "Odłączono",
"hide-duration-left": "Ukryj pozostały czas trwania", "hide-duration-left": "Ukryj pozostały czas trwania",
"hide-github-button": "Ukryj przycisk do GitHub", "hide-github-button": "Ukryj przycisk do GitHub",
"play-on-youtube-music": "Odtwórz w YouTube Music", "play-on-pear-desktop": "Odtwórz w Pear Desktop",
"set-inactivity-timeout": "Ustaw limit czasu bezczynności", "set-inactivity-timeout": "Ustaw limit czasu bezczynności",
"set-status-display-type": { "set-status-display-type": {
"label": "Opis statusu", "label": "Opis statusu",
"submenu": { "submenu": {
"artist": "Słucha {artist}", "artist": "Słucha {artist}",
"title": "Słucha {song title}", "title": "Słucha {song title}",
"youtube-music": "Słucha YouTube Music" "pear-desktop": "Słucha Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Título da janela customizado", "label": "Título da janela customizado",
"prompt": { "prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)", "label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Youtube Music" "placeholder": "Exemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicativo", "restart": "Reiniciar aplicativo",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music ao widget 'Reproduzindo agora' do Amuse da 6K Labs", "description": "Adiciona suporte ao Pear Desktop ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Servidor API do Amuse em execução. GET /query para obter informações da música." "query": "Servidor API do Amuse em execução. GET /query para obter informações da música."
@ -369,11 +369,11 @@
"name": "Desfocar barra de navegação" "name": "Desfocar barra de navegação"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pular a verificação de idade do YouTube", "description": "Pular a verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para faixas de áudio do YouTube Music", "description": "Seletor de legendas para faixas de áudio do Pear Desktop",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda usada", "autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão" "disable-captions": "Sem legendas por padrão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante", "hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão do GitHub", "hide-github-button": "Ocultar botão do GitHub",
"play-on-youtube-music": "Reproduzir no YouTube Music", "play-on-pear-desktop": "Reproduzir no Pear Desktop",
"set-inactivity-timeout": "Definir tempo limite de inatividade", "set-inactivity-timeout": "Definir tempo limite de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de status", "label": "Texto de status",
"submenu": { "submenu": {
"artist": "Ouvindo {artist}", "artist": "Ouvindo {artist}",
"title": "Ouvindo {song title}", "title": "Ouvindo {song title}",
"youtube-music": "Ouvindo YouTube Music" "pear-desktop": "Ouvindo Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Título de janela personalizado", "label": "Título de janela personalizado",
"prompt": { "prompt": {
"label": "Introduza um título: (deixe em branco para desativar)", "label": "Introduza um título: (deixe em branco para desativar)",
"placeholder": "Exemplo: YouTube Music" "placeholder": "Exemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicação", "restart": "Reiniciar aplicação",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music para o widget Amuse now playing de 6K Labs", "description": "Adiciona suporte ao Pear Desktop para o widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa." "query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa."
@ -369,11 +369,11 @@
"name": "Barra de navegação desfocada" "name": "Barra de navegação desfocada"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Ignorar verificação de idade do YouTube", "description": "Ignorar verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para as faixas de áudio do YouTube Music", "description": "Seletor de legendas para as faixas de áudio do Pear Desktop",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda utilizada", "autoload": "Selecionar automaticamente a última legenda utilizada",
"disable-captions": "Sem legendas por omissão" "disable-captions": "Sem legendas por omissão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar tempo restante", "hide-duration-left": "Ocultar tempo restante",
"hide-github-button": "Ocultar botão GitHub", "hide-github-button": "Ocultar botão GitHub",
"play-on-youtube-music": "Reproduzir em YouTube Music", "play-on-pear-desktop": "Reproduzir em Pear Desktop",
"set-inactivity-timeout": "Definir tempo de inatividade", "set-inactivity-timeout": "Definir tempo de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"artist": "A ouvir {artist}", "artist": "A ouvir {artist}",
"title": "A ouvir {song title}", "title": "A ouvir {song title}",
"youtube-music": "A reproduzir YouTube Music" "pear-desktop": "A reproduzir Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Titlul ferestrei personalizate", "label": "Titlul ferestrei personalizate",
"prompt": { "prompt": {
"label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)", "label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)",
"placeholder": "Exemplu: Youtube Music" "placeholder": "Exemplu: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reporneste aplicatia", "restart": "Reporneste aplicatia",
"show": "Arata fereastra", "show": "Arata fereastra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mod ambiental" "name": "Mod ambiental"
}, },
"amuse": { "amuse": {
"description": "Adauga suport Youtube Music pentru Amuse se redă acum widget de 6K Labs", "description": "Adauga suport Pear Desktop pentru Amuse se redă acum widget de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie." "query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie."
@ -369,11 +369,11 @@
"name": "Estompează Bara de Navigație" "name": "Estompează Bara de Navigație"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Treci peste verificarea de vârstă a YouTube-ului", "description": "Treci peste verificarea de vârstă a Music Player",
"name": "Ignoră restricțiile de vârstă" "name": "Ignoră restricțiile de vârstă"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtitrări pentru piesele audio de pe YouTube Music", "description": "Selector de subtitrări pentru piesele audio de pe Pear Desktop",
"menu": { "menu": {
"autoload": "Selectează automat ultima subtitrare folosită", "autoload": "Selectează automat ultima subtitrare folosită",
"disable-captions": "Fără subtitrări în mod implicit" "disable-captions": "Fără subtitrări în mod implicit"
@ -456,14 +456,14 @@
"disconnected": "Deconectat", "disconnected": "Deconectat",
"hide-duration-left": "Ascunde timpul rămas", "hide-duration-left": "Ascunde timpul rămas",
"hide-github-button": "Ascunde butonul cu link-ul GitHub", "hide-github-button": "Ascunde butonul cu link-ul GitHub",
"play-on-youtube-music": "Redă pe YouTube Music", "play-on-pear-desktop": "Redă pe Pear Desktop",
"set-inactivity-timeout": "Setează intervalul de inactivitate", "set-inactivity-timeout": "Setează intervalul de inactivitate",
"set-status-display-type": { "set-status-display-type": {
"label": "Text stare", "label": "Text stare",
"submenu": { "submenu": {
"artist": "Ascultând {artist}", "artist": "Ascultând {artist}",
"title": "Ascultând {song title}", "title": "Ascultând {song title}",
"youtube-music": "Ascultând YouTube Music" "pear-desktop": "Ascultând Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Собственное название окна", "label": "Собственное название окна",
"prompt": { "prompt": {
"label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)", "label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)",
"placeholder": "Например: YouTube Music" "placeholder": "Например: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -163,7 +163,7 @@
"hide": "Скрывать", "hide": "Скрывать",
"label": "Кнопка лайка" "label": "Кнопка лайка"
}, },
"remove-upgrade-button": "Убрать кнопку Youtube Premium", "remove-upgrade-button": "Убрать кнопку Premium",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -208,8 +208,8 @@
"restart": "Перезапустить приложение", "restart": "Перезапустить приложение",
"show": "Показать окно", "show": "Показать окно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -369,11 +369,11 @@
"name": "Размытие панели навигации" "name": "Размытие панели навигации"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обход проверки возраста на YouTube", "description": "Обход проверки возраста на Music Player",
"name": "Обход возрастных ограничений" "name": "Обход возрастных ограничений"
}, },
"captions-selector": { "captions-selector": {
"description": "Выбор субтитров для аудиотреков в YouTube Music", "description": "Выбор субтитров для аудиотреков в Pear Desktop",
"menu": { "menu": {
"autoload": "Автоматически выбирать последние использованные субтитры", "autoload": "Автоматически выбирать последние использованные субтитры",
"disable-captions": "Без субтитров по умолчанию" "disable-captions": "Без субтитров по умолчанию"
@ -456,14 +456,14 @@
"disconnected": "Отключено", "disconnected": "Отключено",
"hide-duration-left": "Скрыть сколько осталось времени", "hide-duration-left": "Скрыть сколько осталось времени",
"hide-github-button": "Скрыть ссылку на GitHub", "hide-github-button": "Скрыть ссылку на GitHub",
"play-on-youtube-music": "Воспроизвести на YouTube Music", "play-on-pear-desktop": "Воспроизвести на Pear Desktop",
"set-inactivity-timeout": "Поставить таймер неактивности", "set-inactivity-timeout": "Поставить таймер неактивности",
"set-status-display-type": { "set-status-display-type": {
"label": "Текст статуса", "label": "Текст статуса",
"submenu": { "submenu": {
"artist": "Слушает {исполнитель}", "artist": "Слушает {исполнитель}",
"title": "Слушает {название трека}", "title": "Слушает {название трека}",
"youtube-music": "Слушает YouTube Music" "pear-desktop": "Слушает Pear Desktop"
} }
} }
}, },

View File

@ -201,8 +201,8 @@
"restart": "නැවත ආරම්භ කරන්න", "restart": "නැවත ආරම්භ කරන්න",
"show": "තිරය පෙන්වන්න", "show": "තිරය පෙන්වන්න",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Vlastný názov okna", "label": "Vlastný názov okna",
"prompt": { "prompt": {
"label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)", "label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)",
"placeholder": "Napríklad: YouTube Music" "placeholder": "Napríklad: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Reštartovať aplikáciu", "restart": "Reštartovať aplikáciu",
"show": "Zobraziť okno", "show": "Zobraziť okno",
"tooltip": { "tooltip": {
"default": "YouTube Hudba", "default": "Pear Desktop",
"with-song-info": "Youtube Hudba: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
} }

View File

@ -201,8 +201,8 @@
"restart": "Ponovni zagon", "restart": "Ponovni zagon",
"show": "Pokaži okno", "show": "Pokaži okno",
"tooltip": { "tooltip": {
"default": "YouTube Glasba", "default": "Pear Desktop",
"with-song-info": "YouTube Glasba: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -335,7 +335,7 @@
"name": "Preskoči starostno omejitev" "name": "Preskoči starostno omejitev"
}, },
"captions-selector": { "captions-selector": {
"description": "Izberi podnapise za YouTube Music zvočne posnetke", "description": "Izberi podnapise za Pear Desktop zvočne posnetke",
"menu": { "menu": {
"autoload": "Avtomatsko uporabi zadnje izbrane podnapise", "autoload": "Avtomatsko uporabi zadnje izbrane podnapise",
"disable-captions": "Avtomatsko brez podnapisov" "disable-captions": "Avtomatsko brez podnapisov"
@ -400,7 +400,7 @@
"disconnected": "Prekinjena povezava", "disconnected": "Prekinjena povezava",
"hide-duration-left": "Skrij preostali čas", "hide-duration-left": "Skrij preostali čas",
"hide-github-button": "Skrij povezavo do GitHub-a", "hide-github-button": "Skrij povezavo do GitHub-a",
"play-on-youtube-music": "Predvajaj v YouTube Music", "play-on-pear-desktop": "Predvajaj v Pear Desktop",
"set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti" "set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti"
}, },
"name": "Discord bogata prisotnost (Rich Presence)", "name": "Discord bogata prisotnost (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naziv prozora", "label": "Prilagođeni naziv prozora",
"prompt": { "prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)", "label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: YouTube Muzika" "placeholder": "Primer: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo pokreni aplikaciju", "restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Muzika", "default": "Pear Desktop",
"with-song-info": "YouTube Muzika: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambijentalni režim" "name": "Ambijentalni režim"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u YouTube Muziku", "description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u Pear Desktop",
"name": "Zabavi", "name": "Zabavi",
"response": { "response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri." "query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
@ -369,11 +369,11 @@
"name": "Zamuti navigacioni meni" "name": "Zamuti navigacioni meni"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Preskoči starosnu verifikaciju za YouTube", "description": "Preskoči starosnu verifikaciju za Music Player",
"name": "Preskoči starosna ograničenja" "name": "Preskoči starosna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Odabir prevoda za numere/audio trake na YouTube Muzici", "description": "Odabir prevoda za numere/audio trake na Pear Desktop",
"menu": { "menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod", "autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda" "disable-captions": "Podrazumevano bez prevoda"
@ -456,14 +456,14 @@
"disconnected": "Nije povezano", "disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme", "hide-duration-left": "Sakrij preostalo vreme",
"hide-github-button": "Sakrij dugme sa GitHub linkom", "hide-github-button": "Sakrij dugme sa GitHub linkom",
"play-on-youtube-music": "Reprodukuj na YouTube Muzici", "play-on-pear-desktop": "Reprodukuj na Pear Desktop",
"set-inactivity-timeout": "Podesi tajmer za neaktivnost", "set-inactivity-timeout": "Podesi tajmer za neaktivnost",
"set-status-display-type": { "set-status-display-type": {
"label": "Tekst statusa", "label": "Tekst statusa",
"submenu": { "submenu": {
"artist": "Slušanje {artist}", "artist": "Slušanje {artist}",
"title": "Slušanje {song title}", "title": "Slušanje {song title}",
"youtube-music": "Slušanje YouTube muzike" "pear-desktop": "Slušanje Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Anpassad titel på fönstret", "label": "Anpassad titel på fönstret",
"prompt": { "prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)", "label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: YouTube Music" "placeholder": "Exempelvis: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Starta om appen", "restart": "Starta om appen",
"show": "Visa fönster", "show": "Visa fönster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} {{title}}" "with-song-info": "Pear Desktop: {{artist}} {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambiensläge" "name": "Ambiensläge"
}, },
"amuse": { "amuse": {
"description": "Lägger till stöd för YouTube Music i Amuse Now Playing-widgeten av 6K Labs", "description": "Lägger till stöd för Pear Desktop i Amuse Now Playing-widgeten av 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt." "query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt."
@ -369,11 +369,11 @@
"name": "Suddigt Navigeringsfält" "name": "Suddigt Navigeringsfält"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Hoppa över YouTubes åldersverifiering", "description": "Hoppa över Music Player åldersverifiering",
"name": "Hoppa Över Åldersbegränsningar" "name": "Hoppa Över Åldersbegränsningar"
}, },
"captions-selector": { "captions-selector": {
"description": "Välj textning för YouTube Music-ljudspår", "description": "Välj textning för Pear Desktop-ljudspår",
"menu": { "menu": {
"autoload": "Välj automatiskt senast använda textning", "autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard" "disable-captions": "Ingen textning som standard"
@ -456,14 +456,14 @@
"disconnected": "Frånkopplad", "disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid", "hide-duration-left": "Dölj återstående tid",
"hide-github-button": "Dölj knapp för GitHub-länk", "hide-github-button": "Dölj knapp för GitHub-länk",
"play-on-youtube-music": "Spela på YouTube Music", "play-on-pear-desktop": "Spela på Pear Desktop",
"set-inactivity-timeout": "Ställ in inaktivitetstid", "set-inactivity-timeout": "Ställ in inaktivitetstid",
"set-status-display-type": { "set-status-display-type": {
"label": "Statusmeddelande", "label": "Statusmeddelande",
"submenu": { "submenu": {
"artist": "Lyssnar på {artist}", "artist": "Lyssnar på {artist}",
"title": "Lyssnar på {song title}", "title": "Lyssnar på {song title}",
"youtube-music": "Lyssnar på YouTube Music" "pear-desktop": "Lyssnar på Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "தனிப்பயன் சாளர தலைப்பு", "label": "தனிப்பயன் சாளர தலைப்பு",
"prompt": { "prompt": {
"label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)", "label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)",
"placeholder": "எடுத்துக்காட்டு: YouTube இசை" "placeholder": "எடுத்துக்காட்டு: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -209,7 +209,7 @@
"show": "சாளரத்தைக் காட்டு", "show": "சாளரத்தைக் காட்டு",
"tooltip": { "tooltip": {
"default": "யூடியூப் இசை", "default": "யூடியூப் இசை",
"with-song-info": "YouTube இசை: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "சுற்றுப்புற முறை" "name": "சுற்றுப்புற முறை"
}, },
"amuse": { "amuse": {
"description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு YouTube இசை ஆதரவை சேர்க்கிறது", "description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு Music Player இசை ஆதரவை சேர்க்கிறது",
"name": "பொழுதுபோக்கு", "name": "பொழுதுபோக்கு",
"response": { "response": {
"query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்." "query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்."
@ -369,11 +369,11 @@
"name": "மங்கலான வழிசெலுத்தல் பட்டி" "name": "மங்கலான வழிசெலுத்தல் பட்டி"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube அகவை சரிபார்ப்பு பைபாச்", "description": "Music Player அகவை சரிபார்ப்பு பைபாச்",
"name": "அகவை கட்டுப்பாடுகள் பைபாச்" "name": "அகவை கட்டுப்பாடுகள் பைபாச்"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்", "description": "Pear Desktop இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
"menu": { "menu": {
"autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்", "autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்",
"disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை" "disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை"
@ -456,14 +456,14 @@
"disconnected": "துண்டிக்கப்பட்டது", "disconnected": "துண்டிக்கப்பட்டது",
"hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்", "hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்",
"hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்", "hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்",
"play-on-youtube-music": "யூடியூப் இசையில் விளையாடுங்கள்", "play-on-pear-desktop": "யூடியூப் இசையில் விளையாடுங்கள்",
"set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது", "set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது",
"set-status-display-type": { "set-status-display-type": {
"label": "நிலை உரை", "label": "நிலை உரை",
"submenu": { "submenu": {
"artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்", "artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்",
"title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}", "title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}",
"youtube-music": "வலையொளி இசையில் கேட்கிறது" "pear-desktop": "வலையொளி இசையில் கேட்கிறது"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "ชื่อหน้าต่างกำหนดเอง", "label": "ชื่อหน้าต่างกำหนดเอง",
"prompt": { "prompt": {
"label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)", "label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: Youtube Music" "placeholder": "ตัวอย่าง: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "รีสตาร์ตแอป", "restart": "รีสตาร์ตแอป",
"show": "แสดงหน้าต่าง", "show": "แสดงหน้าต่าง",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "โหมดสภาพแวดล้อม" "name": "โหมดสภาพแวดล้อม"
}, },
"amuse": { "amuse": {
"description": "เพิ่มการรองรับ Youtube Music สำหรับ Widget Amuse Now Playing ของ 6K Labs", "description": "เพิ่มการรองรับ Pear Desktop สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง" "query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
@ -369,11 +369,11 @@
"name": "เบลอแถบนำทาง" "name": "เบลอแถบนำทาง"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "ข้ามการตรวจสอบอายุของ YouTube", "description": "ข้ามการตรวจสอบอายุของ Music Player",
"name": "ข้ามข้อจำกัดอายุ" "name": "ข้ามข้อจำกัดอายุ"
}, },
"captions-selector": { "captions-selector": {
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน YouTube Music", "description": "ตัวเลือกคำบรรยายสำหรับเพลงใน Pear Desktop",
"menu": { "menu": {
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ", "autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น" "disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
@ -456,14 +456,14 @@
"disconnected": "ตัดการเชื่อมต่อ", "disconnected": "ตัดการเชื่อมต่อ",
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ", "hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub", "hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
"play-on-youtube-music": "เล่นบน YouTube Music", "play-on-pear-desktop": "เล่นบน Pear Desktop",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม", "set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม",
"set-status-display-type": { "set-status-display-type": {
"label": "ข้อความสถานะ", "label": "ข้อความสถานะ",
"submenu": { "submenu": {
"artist": "กำลังฟัง {ชื่อนักร้อง}", "artist": "กำลังฟัง {ชื่อนักร้อง}",
"title": "กำลังฟัง {ชื่อเพลง}", "title": "กำลังฟัง {ชื่อเพลง}",
"youtube-music": "กำลังฟัง YouTube Music" "pear-desktop": "กำลังฟัง Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Özel pencere başlığı", "label": "Özel pencere başlığı",
"prompt": { "prompt": {
"label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)", "label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)",
"placeholder": "Örnek: Youtube Music" "placeholder": "Örnek: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Yeniden başlat", "restart": "Yeniden başlat",
"show": "Pencereyi görüntüle", "show": "Pencereyi görüntüle",
"tooltip": { "tooltip": {
"default": "YouTube Müzik", "default": "Pear Desktop",
"with-song-info": "YouTube Müzik: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambiyans Modu" "name": "Ambiyans Modu"
}, },
"amuse": { "amuse": {
"description": "6K Labs'ın Amuse oynatma widget'ı için YouTube Music desteği ekler", "description": "6K Labs'ın Amuse oynatma widget'ı için Pear Desktop desteği ekler",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz." "query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz."
@ -369,11 +369,11 @@
"name": "Navigasyon barını bulanıklaştır" "name": "Navigasyon barını bulanıklaştır"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube yaş doğrulamasını atla", "description": "Music Player yaş doğrulamasını atla",
"name": "Yaş doğrulamasını atla" "name": "Yaş doğrulamasını atla"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music için altyazı seçici", "description": "Pear Desktop için altyazı seçici",
"menu": { "menu": {
"autoload": "Son kullanılan altyazıyı otomatik olarak seç", "autoload": "Son kullanılan altyazıyı otomatik olarak seç",
"disable-captions": "Varsayılan olarak altyazı yok" "disable-captions": "Varsayılan olarak altyazı yok"
@ -456,14 +456,14 @@
"disconnected": "Bağlantı kesildi", "disconnected": "Bağlantı kesildi",
"hide-duration-left": "Kalan süreyi gizle", "hide-duration-left": "Kalan süreyi gizle",
"hide-github-button": "GitHub bağlantısını gizle", "hide-github-button": "GitHub bağlantısını gizle",
"play-on-youtube-music": "YouTube Music de oynat", "play-on-pear-desktop": "Pear Desktop de oynat",
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla", "set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla",
"set-status-display-type": { "set-status-display-type": {
"label": "Durum metni", "label": "Durum metni",
"submenu": { "submenu": {
"artist": "{artist} Dinleniyor", "artist": "{artist} Dinleniyor",
"title": "{song title} Dinleniyor", "title": "{song title} Dinleniyor",
"youtube-music": "YouTube Müzik Dinleniyor" "pear-desktop": "Pear Desktop Dinleniyor"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Налаштування заголовка вікна", "label": "Налаштування заголовка вікна",
"prompt": { "prompt": {
"label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)", "label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: YouTube Music" "placeholder": "Приклад: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Перезапустити програму", "restart": "Перезапустити програму",
"show": "Показати вікно", "show": "Показати вікно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Режим навколишнього середовища" "name": "Режим навколишнього середовища"
}, },
"amuse": { "amuse": {
"description": "Додає підтримку YouTube Music для віджета Amuse now playing від 6K Labs", "description": "Додає підтримку Pear Desktop для віджета Amuse now playing від 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню." "query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
@ -369,11 +369,11 @@
"name": "Розмиття панелі навігації" "name": "Розмиття панелі навігації"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обхід перевірки віку на YouTube", "description": "Обхід перевірки віку на Music Player",
"name": "Обхід вікових обмежень" "name": "Обхід вікових обмежень"
}, },
"captions-selector": { "captions-selector": {
"description": "Вибір субтитрів для аудіодоріжок YouTube Music", "description": "Вибір субтитрів для аудіодоріжок Pear Desktop",
"menu": { "menu": {
"autoload": "Автоматичний вибір останніх використаних субтитрів", "autoload": "Автоматичний вибір останніх використаних субтитрів",
"disable-captions": "За замовчуванням субтитри відсутні" "disable-captions": "За замовчуванням субтитри відсутні"
@ -451,12 +451,12 @@
"disconnected": "Від'єднано", "disconnected": "Від'єднано",
"hide-duration-left": "Приховати тривалість, яка залишилася", "hide-duration-left": "Приховати тривалість, яка залишилася",
"hide-github-button": "Приховати посилання на GitHub", "hide-github-button": "Приховати посилання на GitHub",
"play-on-youtube-music": "Слухати на YouTube Music", "play-on-pear-desktop": "Слухати на Pear Desktop",
"set-inactivity-timeout": "Встановити тайм-аут бездіяльності", "set-inactivity-timeout": "Встановити тайм-аут бездіяльності",
"set-status-display-type": { "set-status-display-type": {
"label": "Статус", "label": "Статус",
"submenu": { "submenu": {
"youtube-music": "Відтворення з YouTube Music" "pear-desktop": "Відтворення з Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Tiêu đề cửa sổ tùy chỉnh", "label": "Tiêu đề cửa sổ tùy chỉnh",
"prompt": { "prompt": {
"label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)", "label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)",
"placeholder": "Ví dụ: Youtube Music" "placeholder": "Ví dụ: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Khởi động lại ứng dụng", "restart": "Khởi động lại ứng dụng",
"show": "Hiện cửa sổ", "show": "Hiện cửa sổ",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{title}} - {{artist}}" "with-song-info": "Pear Desktop: {{title}} - {{artist}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Chế độ Môi trường xung quanh" "name": "Chế độ Môi trường xung quanh"
}, },
"amuse": { "amuse": {
"description": "Thêm hỗ trợ YouTube Music cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs", "description": "Thêm hỗ trợ Pear Desktop cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát." "query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát."
@ -369,11 +369,11 @@
"name": "Làm mờ thanh điều hướng" "name": "Làm mờ thanh điều hướng"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bỏ qua xác minh độ tuổi của YouTube", "description": "Bỏ qua xác minh độ tuổi của Music Player",
"name": "Bỏ qua hạn chế độ tuổi" "name": "Bỏ qua hạn chế độ tuổi"
}, },
"captions-selector": { "captions-selector": {
"description": "Bộ lựa chọn phụ đề cho các bài hát trên Youtube Music", "description": "Bộ lựa chọn phụ đề cho các bài hát trên Pear Desktop",
"menu": { "menu": {
"autoload": "Tự động chọn phụ đề vừa sử dụng", "autoload": "Tự động chọn phụ đề vừa sử dụng",
"disable-captions": "Không có phụ đề làm mặc định" "disable-captions": "Không có phụ đề làm mặc định"
@ -456,14 +456,14 @@
"disconnected": "Đã ngắt kết nối", "disconnected": "Đã ngắt kết nối",
"hide-duration-left": "Ẩn thời lượng còn lại", "hide-duration-left": "Ẩn thời lượng còn lại",
"hide-github-button": "Ẩn nút liên kết GitHub", "hide-github-button": "Ẩn nút liên kết GitHub",
"play-on-youtube-music": "Phát trong Youtube Music", "play-on-pear-desktop": "Phát trong Pear Desktop",
"set-inactivity-timeout": "Đặt thời gian chờ không hoạt động", "set-inactivity-timeout": "Đặt thời gian chờ không hoạt động",
"set-status-display-type": { "set-status-display-type": {
"label": "Văn bản trạng thái", "label": "Văn bản trạng thái",
"submenu": { "submenu": {
"artist": "Đang nghe nhạc của {artist}", "artist": "Đang nghe nhạc của {artist}",
"title": "Đang nghe nhạc {song title}", "title": "Đang nghe nhạc {song title}",
"youtube-music": "Đang nghe Youtube Music" "pear-desktop": "Đang nghe Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "自定义窗口标题", "label": "自定义窗口标题",
"prompt": { "prompt": {
"label": "输入自定义窗口标题:(留空表示停用)", "label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例:YouTube Music" "placeholder": "示例:Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "重启应用", "restart": "重启应用",
"show": "显示窗口", "show": "显示窗口",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "沉浸模式" "name": "沉浸模式"
}, },
"amuse": { "amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持", "description": "为 6K Labs 的 Amuse 正在播放小部件添加 Pear Desktop 支持",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。" "query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
@ -369,11 +369,11 @@
"name": "模糊导航栏" "name": "模糊导航栏"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "绕过 YouTube 年龄验证", "description": "绕过 Music Player 年龄验证",
"name": "绕过年龄验证" "name": "绕过年龄验证"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 音轨字幕选择器", "description": "Pear Desktop 音轨字幕选择器",
"menu": { "menu": {
"autoload": "自动选择上次使用的字幕", "autoload": "自动选择上次使用的字幕",
"disable-captions": "默认无字幕" "disable-captions": "默认无字幕"
@ -456,14 +456,14 @@
"disconnected": "已断开连接", "disconnected": "已断开连接",
"hide-duration-left": "隐藏剩余时长", "hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮", "hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-youtube-music": "转至 YouTube Music 播放", "play-on-pear-desktop": "转至 Pear Desktop 播放",
"set-inactivity-timeout": "设置非活跃时长", "set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": { "set-status-display-type": {
"label": "状态文本", "label": "状态文本",
"submenu": { "submenu": {
"artist": "在听 {artist}", "artist": "在听 {artist}",
"title": "在听 {song title}", "title": "在听 {song title}",
"youtube-music": "在听 YouTube Music" "pear-desktop": "在听 Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "自訂窗口標題", "label": "自訂窗口標題",
"prompt": { "prompt": {
"label": "輸入自訂視窗標題: (留空將其停用)", "label": "輸入自訂視窗標題: (留空將其停用)",
"placeholder": "例如: YouTube 音樂" "placeholder": "例如: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "重新啟動應用程式", "restart": "重新啟動應用程式",
"show": "顯示視窗", "show": "顯示視窗",
"tooltip": { "tooltip": {
"default": "YouTube 音樂", "default": "Pear Desktop",
"with-song-info": "YouTube 音樂: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "微光效果" "name": "微光效果"
}, },
"amuse": { "amuse": {
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 YouTube Music 現正播放資訊", "description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 Pear Desktop 現正播放資訊",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。" "query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。"
@ -369,11 +369,11 @@
"name": "模糊導覽列" "name": "模糊導覽列"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "繞過 YouTube 年齡驗證", "description": "繞過 Music Player 年齡驗證",
"name": "繞過年齡驗證" "name": "繞過年齡驗證"
}, },
"captions-selector": { "captions-selector": {
"description": "Youtube Music 音軌字幕選項", "description": "Pear Desktop 音軌字幕選項",
"menu": { "menu": {
"autoload": "自動選擇上次使用的字幕", "autoload": "自動選擇上次使用的字幕",
"disable-captions": "預設無字幕" "disable-captions": "預設無字幕"
@ -456,14 +456,14 @@
"disconnected": "已斷開連線", "disconnected": "已斷開連線",
"hide-duration-left": "隱藏音樂剩餘時間狀態", "hide-duration-left": "隱藏音樂剩餘時間狀態",
"hide-github-button": "隱藏 GitHub 頁面按鈕", "hide-github-button": "隱藏 GitHub 頁面按鈕",
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕", "play-on-pear-desktop": "顯示 Play on Pear Desktop 按鈕",
"set-inactivity-timeout": "設定閒置狀態時長", "set-inactivity-timeout": "設定閒置狀態時長",
"set-status-display-type": { "set-status-display-type": {
"label": "狀態樣式", "label": "狀態樣式",
"submenu": { "submenu": {
"artist": "正在聆聽 {artist} 的歌曲", "artist": "正在聆聽 {artist} 的歌曲",
"title": "正在聆聽 {song title}", "title": "正在聆聽 {song title}",
"youtube-music": "正在聆聽 YouTube Music" "pear-desktop": "正在聆聽 Pear Desktop"
} }
} }
}, },

View File

@ -7,7 +7,7 @@
within the `createMainWindow` function. within the `createMainWindow` function.
Archived link for reference: Archived link for reference:
https://github.com/th-ch/youtube-music/blob/a3104fda4b0d58b076d0c737111636a66e468acc/src/index.ts#L407-L443 https://github.com/pear-devs/pear-desktop/blob/a3104fda4b0d58b076d0c737111636a66e468acc/src/index.ts#L407-L443
--> -->

View File

@ -43,7 +43,7 @@ import {
setupProtocolHandler, setupProtocolHandler,
} from '@/providers/protocol-handler'; } from '@/providers/protocol-handler';
import youtubeMusicCSS from '@/youtube-music.css?inline'; import musicPlayerCss from '@/music-player.css?inline';
import { import {
forceLoadMainPlugin, forceLoadMainPlugin,
@ -131,7 +131,7 @@ if (config.get('options.disableHardwareAcceleration')) {
if (is.linux()) { if (is.linux()) {
// Overrides WM_CLASS for X11 to correspond to icon filename // Overrides WM_CLASS for X11 to correspond to icon filename
app.setName('com.github.th_ch.youtube_music'); app.setName('com.github.th_ch.pear_music');
// Stops chromium from launching its own MPRIS service // Stops chromium from launching its own MPRIS service
if (await config.plugins.isEnabled('shortcuts')) { if (await config.plugins.isEnabled('shortcuts')) {
@ -165,7 +165,7 @@ electronDebug({
showDevTools: false, // Disable automatic devTools on new window showDevTools: false, // Disable automatic devTools on new window
}); });
let icon = 'assets/youtube-music.png'; let icon = 'assets/icon.png';
if (process.platform === 'win32') { if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico'; icon = 'assets/generated/icon.ico';
} else if (process.platform === 'darwin') { } else if (process.platform === 'darwin') {
@ -178,7 +178,7 @@ function onClosed() {
mainWindow = null; mainWindow = null;
} }
ipcMain.handle('ytmd:get-main-plugin-names', async () => ipcMain.handle('peard:get-main-plugin-names', async () =>
Object.keys(await mainPlugins()), Object.keys(await mainPlugins()),
); );
@ -186,14 +186,14 @@ const initHook = async (win: BrowserWindow) => {
const allPluginStubs = await allPlugins(); const allPluginStubs = await allPlugins();
ipcMain.handle( ipcMain.handle(
'ytmd:get-config', 'peard:get-config',
(_, id: string) => (_, id: string) =>
deepmerge( deepmerge(
allPluginStubs[id].config ?? { enabled: false }, allPluginStubs[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {}, config.get(`plugins.${id}`) ?? {},
) as PluginConfig, ) as PluginConfig,
); );
ipcMain.handle('ytmd:set-config', (_, name: string, obj: object) => ipcMain.handle('peard:set-config', (_, name: string, obj: object) =>
config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config), config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config),
); );
@ -292,7 +292,7 @@ const showNeedToRestartDialog = async (id: string) => {
}; };
function initTheme(win: BrowserWindow) { function initTheme(win: BrowserWindow) {
injectCSS(win.webContents, youtubeMusicCSS); injectCSS(win.webContents, musicPlayerCss);
// Load user CSS // Load user CSS
const themes: string[] = config.get('options.themes'); const themes: string[] = config.get('options.themes');
if (Array.isArray(themes)) { if (Array.isArray(themes)) {
@ -503,11 +503,14 @@ async function createMainWindow() {
const url = new URL(event.url); const url = new URL(event.url);
// Workarounds for regions where YTM is restricted // Workarounds for regions where YTM is restricted
if (url.hostname.endsWith('youtube.com') && url.pathname === '/premium') { if (
url.hostname.endsWith('\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com') &&
url.pathname === '/premium'
) {
event.preventDefault(); event.preventDefault();
win.webContents.loadURL( win.webContents.loadURL(
'https://accounts.google.com/ServiceLogin?ltmpl=music&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.youtube.com%252F', 'https://accounts.google.com/ServiceLogin?ltmpl=music&service=\u0079\u006f\u0075\u0074\u0075\u0062\u0065&continue=https%3A%2F%2Fwww.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%252F',
); );
} }
}); });
@ -660,7 +663,7 @@ app.whenReady().then(async () => {
// Register appID on windows // Register appID on windows
if (is.windows()) { if (is.windows()) {
const appID = 'com.github.th-ch.youtube-music'; const appID = 'com.github.th-ch.pear-music';
app.setAppUserModelId(appID); app.setAppUserModelId(appID);
const appLocation = process.execPath; const appLocation = process.execPath;
const appData = app.getPath('appData'); const appData = app.getPath('appData');
@ -675,7 +678,7 @@ app.whenReady().then(async () => {
'Windows', 'Windows',
'Start Menu', 'Start Menu',
'Programs', 'Programs',
'YouTube Music.lnk', 'Pear Desktop.lnk',
); );
try { try {
// Check if shortcut is registered and valid // Check if shortcut is registered and valid
@ -695,7 +698,7 @@ app.whenReady().then(async () => {
{ {
target: appLocation, target: appLocation,
cwd: path.dirname(appLocation), cwd: path.dirname(appLocation),
description: 'YouTube Music Desktop App - including custom plugins', description: 'Pear Desktop App - including custom plugins',
appUserModelId: appID, appUserModelId: appID,
}, },
); );
@ -804,7 +807,7 @@ app.whenReady().then(async () => {
}, 2000); }, 2000);
autoUpdater.on('update-available', () => { autoUpdater.on('update-available', () => {
const downloadLink = const downloadLink =
'https://github.com/th-ch/youtube-music/releases/latest'; 'https://github.com/pear-devs/pear-desktop/releases/latest';
const dialogOptions: Electron.MessageBoxOptions = { const dialogOptions: Electron.MessageBoxOptions = {
type: 'info', type: 'info',
buttons: [ buttons: [
@ -943,7 +946,7 @@ function removeContentSecurityPolicy(
!details.responseHeaders['access-control-allow-origin'] && !details.responseHeaders['access-control-allow-origin'] &&
!details.responseHeaders['Access-Control-Allow-Origin'] !details.responseHeaders['Access-Control-Allow-Origin']
) { ) {
details.responseHeaders['access-control-allow-origin'] = ['https://music.youtube.com']; details.responseHeaders['access-control-allow-origin'] = ['https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com'];
} }
} }

View File

@ -19,9 +19,9 @@ export const createContext = <Config extends PluginConfig>(
id: string, id: string,
): RendererContext<Config> => ({ ): RendererContext<Config> => ({
getConfig: () => getConfig: () =>
window.ipcRenderer.invoke('ytmd:get-config', id) as Promise<Config>, window.ipcRenderer.invoke('peard:get-config', id) as Promise<Config>,
setConfig: async (newConfig) => { setConfig: async (newConfig) => {
await window.ipcRenderer.invoke('ytmd:set-config', id, newConfig); await window.ipcRenderer.invoke('peard:set-config', id, newConfig);
}, },
ipc: { ipc: {
send: (event: string, ...args: unknown[]) => { send: (event: string, ...args: unknown[]) => {

View File

@ -473,7 +473,7 @@ export const mainMenuTemplate = async (
), ),
type: 'normal', type: 'normal',
click() { click() {
const url = 'https://hosted.weblate.org/engage/youtube-music/'; const url = 'https://bit.ly/48n5YF7';
shell.openExternal(url); shell.openExternal(url);
}, },
} as Electron.MenuItemConstructorOptions, } as Electron.MenuItemConstructorOptions,

View File

@ -1,5 +1,5 @@
/** /**
* Overriding YouTube Music style * Overriding default style
*/ */
/* Allow window dragging */ /* Allow window dragging */
@ -49,7 +49,7 @@ ytmusic-cast-button {
display: none !important; display: none !important;
} }
/* Make youtube-music logo un-draggable */ /* Make the logo un-draggable */
ytmusic-nav-bar > div.left-content > a, ytmusic-nav-bar > div.left-content > a,
ytmusic-nav-bar > div.left-content > a > picture > img { ytmusic-nav-bar > div.left-content > a > picture > img {
-webkit-user-drag: none; -webkit-user-drag: none;

View File

@ -29,22 +29,22 @@ export const backend = createBackend<BackendType, APIServerConfig>({
this.songInfo = songInfo; this.songInfo = songInfo;
}); });
ctx.ipc.on('ytmd:player-api-loaded', () => { ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-seeked-listener'); ctx.ipc.send('peard:setup-seeked-listener');
ctx.ipc.send('ytmd:setup-time-changed-listener'); ctx.ipc.send('peard:setup-time-changed-listener');
ctx.ipc.send('ytmd:setup-repeat-changed-listener'); ctx.ipc.send('peard:setup-repeat-changed-listener');
ctx.ipc.send('ytmd:setup-like-changed-listener'); ctx.ipc.send('peard:setup-like-changed-listener');
ctx.ipc.send('ytmd:setup-volume-changed-listener'); ctx.ipc.send('peard:setup-volume-changed-listener');
ctx.ipc.send('ytmd:setup-shuffle-changed-listener'); ctx.ipc.send('peard:setup-shuffle-changed-listener');
}); });
ctx.ipc.on( ctx.ipc.on(
'ytmd:repeat-changed', 'peard:repeat-changed',
(mode: RepeatMode) => (this.currentRepeatMode = mode), (mode: RepeatMode) => (this.currentRepeatMode = mode),
); );
ctx.ipc.on( ctx.ipc.on(
'ytmd:volume-changed', 'peard:volume-changed',
(newVolumeState: VolumeState) => (this.volumeState = newVolumeState), (newVolumeState: VolumeState) => (this.volumeState = newVolumeState),
); );
@ -138,7 +138,7 @@ export const backend = createBackend<BackendType, APIServerConfig>({
openapi: '3.1.0', openapi: '3.1.0',
info: { info: {
version: '1.0.0', version: '1.0.0',
title: 'Youtube Music API Server', title: 'Pear Desktop API Server',
description: description:
'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.', 'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.',
}, },

View File

@ -29,7 +29,7 @@ import type { SongInfo } from '@/providers/song-info';
import type { BackendContext } from '@/types/contexts'; import type { BackendContext } from '@/types/contexts';
import type { APIServerConfig } from '../../config'; import type { APIServerConfig } from '../../config';
import type { HonoApp } from '../types'; import type { HonoApp } from '../types';
import type { QueueResponse } from '@/types/youtube-music-desktop-internal'; import type { QueueResponse } from '@/types/music-player-desktop-internal';
import type { Context } from 'hono'; import type { Context } from 'hono';
const routes = { const routes = {
@ -630,7 +630,7 @@ export const register = (
app.openapi(routes.getShuffleState, async (ctx) => { app.openapi(routes.getShuffleState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:get-shuffle-response', 'peard:get-shuffle-response',
(_, isShuffled: boolean | undefined) => { (_, isShuffled: boolean | undefined) => {
return resolve(!!isShuffled); return resolve(!!isShuffled);
}, },
@ -693,7 +693,7 @@ export const register = (
app.openapi(routes.getFullscreenState, async (ctx) => { app.openapi(routes.getFullscreenState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:set-fullscreen', 'peard:set-fullscreen',
(_, isFullscreen: boolean | undefined) => { (_, isFullscreen: boolean | undefined) => {
return resolve(!!isFullscreen); return resolve(!!isFullscreen);
}, },
@ -728,7 +728,7 @@ export const register = (
// Queue // Queue
const queueInfo = async (ctx: Context) => { const queueInfo = async (ctx: Context) => {
const queueResponsePromise = new Promise<QueueResponse>((resolve) => { const queueResponsePromise = new Promise<QueueResponse>((resolve) => {
ipcMain.once('ytmd:get-queue-response', (_, queue: QueueResponse) => { ipcMain.once('peard:get-queue-response', (_, queue: QueueResponse) => {
return resolve(queue); return resolve(queue);
}); });

View File

@ -94,7 +94,7 @@ export const register = (
lastSongInfo = { ...songInfo }; lastSongInfo = { ...songInfo };
}); });
ipc.on('ytmd:volume-changed', (newVolumeState: VolumeState) => { ipc.on('peard:volume-changed', (newVolumeState: VolumeState) => {
volumeState = newVolumeState; volumeState = newVolumeState;
send(DataTypes.VolumeChanged, { send(DataTypes.VolumeChanged, {
volume: volumeState.state, volume: volumeState.state,
@ -102,16 +102,16 @@ export const register = (
}); });
}); });
ipc.on('ytmd:repeat-changed', (mode: RepeatMode) => { ipc.on('peard:repeat-changed', (mode: RepeatMode) => {
repeat = mode; repeat = mode;
send(DataTypes.RepeatChanged, { repeat }); send(DataTypes.RepeatChanged, { repeat });
}); });
ipc.on('ytmd:seeked', (t: number) => { ipc.on('peard:seeked', (t: number) => {
send(DataTypes.PositionChanged, { position: t }); send(DataTypes.PositionChanged, { position: t });
}); });
ipc.on('ytmd:shuffle-changed', (newShuffle: boolean) => { ipc.on('peard:shuffle-changed', (newShuffle: boolean) => {
shuffle = newShuffle; shuffle = newShuffle;
send(DataTypes.ShuffleChanged, { shuffle }); send(DataTypes.ShuffleChanged, { shuffle });
}); });

View File

@ -1,6 +1,6 @@
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import { type YoutubePlayer } from '@/types/youtube-player'; import { type MusicPlayer } from '@/types/music-player';
const lazySafeTry = (...fns: (() => void)[]) => { const lazySafeTry = (...fns: (() => void)[]) => {
for (const fn of fns) { for (const fn of fns) {
@ -95,7 +95,7 @@ const audioCanPlayHandler = ({
); );
}; };
const ensureAudioContextLoad = (playerApi: YoutubePlayer) => { const ensureAudioContextLoad = (playerApi: MusicPlayer) => {
if (playerApi.getPlayerState() !== 1 || storage.lastContext) return; if (playerApi.getPlayerState() !== 1 || storage.lastContext) return;
playerApi.loadVideoById( playerApi.loadVideoById(
@ -115,7 +115,7 @@ export default createPlugin({
}, },
start() { start() {
document.addEventListener('ytmd:audio-can-play', audioCanPlayHandler, { document.addEventListener('peard:audio-can-play', audioCanPlayHandler, {
passive: true, passive: true,
}); });
storage.connectToCompressor( storage.connectToCompressor(
@ -126,7 +126,7 @@ export default createPlugin({
}, },
stop() { stop() {
document.removeEventListener('ytmd:audio-can-play', audioCanPlayHandler); document.removeEventListener('peard:audio-can-play', audioCanPlayHandler);
storage.disconnectCompressor(); storage.disconnectCompressor();
}, },
}, },

View File

@ -7,7 +7,7 @@ import { t } from '@/i18n';
export default createBackend({ export default createBackend({
start({ ipc: { handle }, window }) { start({ ipc: { handle }, window }) {
handle( handle(
'ytmd:captions-selector', 'peard:captions-selector',
async (captionLabels: Record<string, string>, currentIndex: string) => async (captionLabels: Record<string, string>, currentIndex: string) =>
await prompt( await prompt(
{ {

View File

@ -7,7 +7,7 @@ import renderer, {
type LanguageOptions, type LanguageOptions,
} from './renderer'; } from './renderer';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export default createPlugin< export default createPlugin<
unknown, unknown,
@ -15,7 +15,7 @@ export default createPlugin<
{ {
captionsSettingsButton?: HTMLElement; captionsSettingsButton?: HTMLElement;
captionTrackList: LanguageOptions[] | null; captionTrackList: LanguageOptions[] | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
config: CaptionsSelectorConfig | null; config: CaptionsSelectorConfig | null;
videoChangeListener: () => void; videoChangeListener: () => void;
}, },

View File

@ -6,7 +6,7 @@ import { t } from '@/i18n';
import { CaptionsSettingButton } from './templates/captions-settings-template'; import { CaptionsSettingButton } from './templates/captions-settings-template';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { AppElement } from '@/types/queue'; import type { AppElement } from '@/types/queue';
export interface LanguageOptions { export interface LanguageOptions {
@ -35,7 +35,7 @@ export default createRenderer<
{ {
captionsSettingsButton?: HTMLElement; captionsSettingsButton?: HTMLElement;
captionTrackList: LanguageOptions[] | null; captionTrackList: LanguageOptions[] | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
config: CaptionsSelectorConfig | null; config: CaptionsSelectorConfig | null;
videoChangeListener: () => void; videoChangeListener: () => void;
}, },
@ -73,7 +73,7 @@ export default createRenderer<
this.api?.unloadModule('captions'); this.api?.unloadModule('captions');
document document
.querySelector('video') .querySelector('video')
?.removeEventListener('ytmd:src-changed', this.videoChangeListener); ?.removeEventListener('peard:src-changed', this.videoChangeListener);
if (this.captionsSettingsButton) { if (this.captionsSettingsButton) {
document document
.querySelector('.right-controls-buttons') .querySelector('.right-controls-buttons')
@ -111,7 +111,7 @@ export default createRenderer<
]; ];
currentIndex = (await ipc.invoke( currentIndex = (await ipc.invoke(
'ytmd:captions-selector', 'peard:captions-selector',
captionLabels, captionLabels,
currentIndex, currentIndex,
)) as number; )) as number;
@ -156,7 +156,7 @@ export default createRenderer<
document document
.querySelector('video') .querySelector('video')
?.addEventListener('ytmd:src-changed', this.videoChangeListener); ?.addEventListener('peard:src-changed', this.videoChangeListener);
}, },
onConfigChange(newConfig) { onConfigChange(newConfig) {
this.config = newConfig; this.config = newConfig;

View File

@ -1,4 +1,4 @@
import { Innertube } from 'youtubei.js'; import { Innertube } from '\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js';
import prompt from 'custom-electron-prompt'; import prompt from 'custom-electron-prompt';

View File

@ -1,6 +1,6 @@
import { createRenderer } from '@/utils'; import { createRenderer } from '@/utils';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { RendererContext } from '@/types/contexts'; import type { RendererContext } from '@/types/contexts';
import type { CustomOutputPluginConfig } from './index'; import type { CustomOutputPluginConfig } from './index';
@ -48,13 +48,13 @@ export const renderer = createRenderer<
await updateSinkId(audioContext, this.options!.output); await updateSinkId(audioContext, this.options!.output);
}, },
async onPlayerApiReady(_: YoutubePlayer, context) { async onPlayerApiReady(_: MusicPlayer, context) {
this.options = await context.getConfig(); this.options = await context.getConfig();
await navigator.mediaDevices.getUserMedia({ audio: true, video: false }); await navigator.mediaDevices.getUserMedia({ audio: true, video: false });
navigator.mediaDevices.ondevicechange = async () => navigator.mediaDevices.ondevicechange = async () =>
await updateDeviceList(context); await updateDeviceList(context);
document.addEventListener('ytmd:audio-can-play', this.audioCanPlayHandler, { document.addEventListener('peard:audio-can-play', this.audioCanPlayHandler, {
once: true, once: true,
passive: true, passive: true,
}); });
@ -63,7 +63,7 @@ export const renderer = createRenderer<
stop() { stop() {
document.removeEventListener( document.removeEventListener(
'ytmd:audio-can-play', 'peard:audio-can-play',
this.audioCanPlayHandler, this.audioCanPlayHandler,
); );
navigator.mediaDevices.ondevicechange = null; navigator.mediaDevices.ondevicechange = null;

View File

@ -3,7 +3,7 @@ import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import type { VideoDataChanged } from '@/types/video-data-changed'; import type { VideoDataChanged } from '@/types/video-data-changed';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export type DisableAutoPlayPluginConfig = { export type DisableAutoPlayPluginConfig = {
enabled: boolean; enabled: boolean;
@ -15,7 +15,7 @@ export default createPlugin<
unknown, unknown,
{ {
config: DisableAutoPlayPluginConfig | null; config: DisableAutoPlayPluginConfig | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
eventListener: (event: CustomEvent<VideoDataChanged>) => void; eventListener: (event: CustomEvent<VideoDataChanged>) => void;
timeUpdateListener: (e: Event) => void; timeUpdateListener: (e: Event) => void;
}, },

View File

@ -1,5 +1,5 @@
/** /**
* Application ID registered by @th-ch/youtube-music dev team * Application ID registered by @th-ch/pear-desktop dev team
*/ */
export const clientId = '1177081335727267940'; export const clientId = '1177081335727267940';
/** /**

View File

@ -24,9 +24,9 @@ export type DiscordPluginConfig = {
*/ */
activityTimeoutTime: number; activityTimeoutTime: number;
/** /**
* Add a "Play on YouTube Music" button to rich presence * Add a "Play on Pear Desktop" button to rich presence
*/ */
playOnYouTubeMusic: boolean; playOnPearDesktop: boolean;
/** /**
* Hide the "View App On GitHub" button in the rich presence * Hide the "View App On GitHub" button in the rich presence
*/ */
@ -50,7 +50,7 @@ export default createPlugin({
autoReconnect: true, autoReconnect: true,
activityTimeoutEnabled: true, activityTimeoutEnabled: true,
activityTimeoutTime: 10 * 60 * 1000, activityTimeoutTime: 10 * 60 * 1000,
playOnYouTubeMusic: true, playOnPearDesktop: true,
hideGitHubButton: false, hideGitHubButton: false,
hideDurationLeft: false, hideDurationLeft: false,
statusDisplayType: StatusDisplayType.Details, statusDisplayType: StatusDisplayType.Details,

View File

@ -45,8 +45,8 @@ export const backend = createBackend<
}); });
} }
ctx.ipc.on('ytmd:player-api-loaded', () => { ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-time-changed-listener'); ctx.ipc.send('peard:setup-time-changed-listener');
}); });
app.on('before-quit', () => { app.on('before-quit', () => {

View File

@ -18,7 +18,7 @@ const registerRefreshOnce = singleton((refreshMenu: () => void) => {
const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = { const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = {
[StatusDisplayType.Name]: [StatusDisplayType.Name]:
'plugins.discord.menu.set-status-display-type.submenu.youtube-music', 'plugins.discord.menu.set-status-display-type.submenu.pear-desktop',
[StatusDisplayType.State]: [StatusDisplayType.State]:
'plugins.discord.menu.set-status-display-type.submenu.artist', 'plugins.discord.menu.set-status-display-type.submenu.artist',
[StatusDisplayType.Details]: [StatusDisplayType.Details]:
@ -67,12 +67,12 @@ export const onMenu = async ({
}, },
}, },
{ {
label: t('plugins.discord.menu.play-on-youtube-music'), label: t('plugins.discord.menu.play-on-pear-desktop'),
type: 'checkbox', type: 'checkbox',
checked: config.playOnYouTubeMusic, checked: config.playOnPearDesktop,
click(item: Electron.MenuItem) { click(item: Electron.MenuItem) {
setConfig({ setConfig({
playOnYouTubeMusic: item.checked, playOnPearDesktop: item.checked,
}); });
}, },
}, },

View File

@ -28,16 +28,16 @@ export const buildDiscordButtons = (
songInfo: SongInfo, songInfo: SongInfo,
): GatewayActivityButton[] | undefined => { ): GatewayActivityButton[] | undefined => {
const buttons: GatewayActivityButton[] = []; const buttons: GatewayActivityButton[] = [];
if (config.playOnYouTubeMusic && songInfo.url) { if (config.playOnPearDesktop && songInfo.url) {
buttons.push({ buttons.push({
label: 'Play on YouTube Music', label: 'Play on Pear Desktop',
url: songInfo.url, url: songInfo.url,
}); });
} }
if (!config.hideGitHubButton) { if (!config.hideGitHubButton) {
buttons.push({ buttons.push({
label: 'View App On GitHub', label: 'View App On GitHub',
url: 'https://github.com/th-ch/youtube-music', url: 'https://github.com/pear-devs/pear-desktop',
}); });
} }
return buttons.length ? buttons : undefined; return buttons.length ? buttons : undefined;

View File

@ -3,7 +3,12 @@ import { join } from 'node:path';
import { randomBytes } from 'node:crypto'; import { randomBytes } from 'node:crypto';
import { app, type BrowserWindow, dialog, ipcMain } from 'electron'; import { app, type BrowserWindow, dialog, ipcMain } from 'electron';
import { Innertube, UniversalCache, Utils, YTNodes } from 'youtubei.js'; import {
Innertube,
UniversalCache,
Utils,
YTNodes,
} from '\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js';
import is from 'electron-is'; import is from 'electron-is';
import filenamify from 'filenamify'; import filenamify from 'filenamify';
import { Mutex } from 'async-mutex'; import { Mutex } from 'async-mutex';
@ -28,18 +33,18 @@ import {
import { getNetFetchAsFetch } from '@/plugins/utils/main'; import { getNetFetchAsFetch } from '@/plugins/utils/main';
import { t } from '@/i18n'; import { t } from '@/i18n';
import { DefaultPresetList, type Preset, YoutubeFormatList } from '../types'; import { DefaultPresetList, type Preset, VideoFormatList } from '../types';
import type { DownloaderPluginConfig } from '../index'; import type { DownloaderPluginConfig } from '../index';
import type { BackendContext } from '@/types/contexts'; import type { BackendContext } from '@/types/contexts';
import type { GetPlayerResponse } from '@/types/get-player-response'; import type { GetPlayerResponse } from '@/types/get-player-response';
import type { FormatOptions } from 'node_modules/youtubei.js/dist/src/types'; import type { FormatOptions } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/types';
import type { VideoInfo } from 'node_modules/youtubei.js/dist/src/parser/youtube'; import type { VideoInfo } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/\u0079\u006f\u0075\u0074\u0075\u0062\u0065';
import type { PlayerErrorMessage } from 'node_modules/youtubei.js/dist/src/parser/nodes'; import type { PlayerErrorMessage } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/nodes';
import type { import type {
TrackInfo, TrackInfo,
Playlist, Playlist,
} from 'node_modules/youtubei.js/dist/src/parser/ytmusic'; } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/ytmusic';
type CustomSongInfo = SongInfo & { trackId?: string }; type CustomSongInfo = SongInfo & { trackId?: string };
@ -56,7 +61,7 @@ let yt: Innertube;
let win: BrowserWindow; let win: BrowserWindow;
let playingUrl: string; let playingUrl: string;
const isYouTubeMusicPremium = async () => { const isPremium = async () => {
// If signed out, it is understood as non-premium // If signed out, it is understood as non-premium
const isSignedIn = (await win.webContents.executeJavaScript( const isSignedIn = (await win.webContents.executeJavaScript(
'!!yt.config_.LOGGED_IN', '!!yt.config_.LOGGED_IN',
@ -66,7 +71,7 @@ const isYouTubeMusicPremium = async () => {
// If signed in, check if the upgrade button is present // If signed in, check if the upgrade button is present
const upgradeBtnIconPathData = (await win.webContents.executeJavaScript( const upgradeBtnIconPathData = (await win.webContents.executeJavaScript(
'document.querySelector(\'iron-iconset-svg[name="yt-sys-icons"] #youtube_music_monochrome\')?.firstChild?.getAttribute("d")?.substring(0, 15)', 'document.querySelector(\'iron-iconset-svg[name="yt-sys-icons"] #\u0079\u006f\u0075\u0074\u0075\u0062\u0065_music_monochrome\')?.firstChild?.getAttribute("d")?.substring(0, 15)',
)) as string | null; )) as string | null;
// Fallback to non-premium if the icon is not found // Fallback to non-premium if the icon is not found
@ -107,7 +112,7 @@ const sendError = (error: Error, source?: string) => {
export const getCookieFromWindow = async (win: BrowserWindow) => { export const getCookieFromWindow = async (win: BrowserWindow) => {
return ( return (
await win.webContents.session.cookies.get({ await win.webContents.session.cookies.get({
url: 'https://music.youtube.com', url: 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
}) })
) )
.map((it) => it.name + '=' + it.value) .map((it) => it.name + '=' + it.value)
@ -192,7 +197,7 @@ export const onMainLoad = async ({
} }
ipc.handle('download-song', (url: string) => downloadSong(url)); ipc.handle('download-song', (url: string) => downloadSong(url));
ipc.on('ytmd:video-src-changed', (data: GetPlayerResponse) => { ipc.on('peard:video-src-changed', (data: GetPlayerResponse) => {
playingUrl = data.microformat.microformatDataRenderer.urlCanonical; playingUrl = data.microformat.microformatDataRenderer.urlCanonical;
}); });
ipc.handle('download-playlist-request', async (url: string) => ipc.handle('download-playlist-request', async (url: string) =>
@ -298,8 +303,8 @@ function downloadSongOnFinishSetup({
} }
}); });
ipcMain.on('ytmd:player-api-loaded', () => { ipcMain.on('peard:player-api-loaded', () => {
ipc.send('ytmd:setup-time-changed-listener'); ipc.send('peard:setup-time-changed-listener');
}); });
} }
@ -390,7 +395,7 @@ async function downloadSongUnsafe(
} }
const downloadOptions: FormatOptions = { const downloadOptions: FormatOptions = {
type: (await isYouTubeMusicPremium()) ? 'audio' : 'video+audio', // Audio, video or video+audio type: (await isPremium()) ? 'audio' : 'video+audio', // Audio, video or video+audio
quality: 'best', // Best, bestefficiency, 144p, 240p, 480p, 720p and so on. quality: 'best', // Best, bestefficiency, 144p, 240p, 480p, 720p and so on.
format: 'any', // Media container format format: 'any', // Media container format
}; };
@ -400,7 +405,7 @@ async function downloadSongUnsafe(
let targetFileExtension: string; let targetFileExtension: string;
if (!presetSetting?.extension) { if (!presetSetting?.extension) {
targetFileExtension = targetFileExtension =
YoutubeFormatList.find((it) => it.itag === format.itag)?.container ?? VideoFormatList.find((it) => it.itag === format.itag)?.container ??
'mp3'; 'mp3';
} else { } else {
targetFileExtension = presetSetting?.extension ?? 'mp3'; targetFileExtension = presetSetting?.extension ?? 'mp3';

View File

@ -10,7 +10,7 @@ export const sendFeedback = (win: BrowserWindow, message?: unknown) => {
export const cropMaxWidth = (image: Electron.NativeImage) => { export const cropMaxWidth = (image: Electron.NativeImage) => {
const imageSize = image.getSize(); const imageSize = image.getSize();
// Standart YouTube artwork width with margins from both sides is 280 + 720 + 280 // Standard artwork width with margins from both sides is 280 + 720 + 280
if (imageSize.width === 1280 && imageSize.height === 720) { if (imageSize.width === 1280 && imageSize.height === 720) {
return image.crop({ return image.crop({
x: 280, x: 280,

View File

@ -19,7 +19,7 @@ export const DefaultPresetList: Record<string, Preset> = {
}, },
}; };
export interface YouTubeFormat { export interface VideoFormat {
itag: number; itag: number;
container: string; container: string;
content: string; content: string;
@ -29,9 +29,9 @@ export interface YouTubeFormat {
vrOr3D: string; vrOr3D: string;
} }
// converted from https://gist.github.com/sidneys/7095afe4da4ae58694d128b1034e01e2#file-youtube_format_code_itag_list-md // converted from https://gist.github.com/sidneys/7095afe4da4ae58694d128b1034e01e2
// and https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa // and https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
export const YoutubeFormatList: YouTubeFormat[] = [ export const VideoFormatList: VideoFormat[] = [
{ {
itag: 5, itag: 5,
container: 'flv', container: 'flv',

View File

@ -57,7 +57,7 @@ export default createPlugin({
const config = await getConfig(); const config = await getConfig();
document.addEventListener( document.addEventListener(
'ytmd:audio-can-play', 'peard:audio-can-play',
({ detail: { audioSource, audioContext } }) => { ({ detail: { audioSource, audioContext } }) => {
const filtersToApply = config.filters.concat( const filtersToApply = config.filters.concat(
defaultPresets defaultPresets

View File

@ -1,7 +1,7 @@
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export default createPlugin({ export default createPlugin({
name: () => t('plugins.exponential-volume.name'), name: () => t('plugins.exponential-volume.name'),
@ -12,7 +12,7 @@ export default createPlugin({
}, },
renderer: { renderer: {
onPlayerApiReady(playerApi) { onPlayerApiReady(playerApi) {
const syncVolume = (playerApi: YoutubePlayer) => { const syncVolume = (playerApi: MusicPlayer) => {
if (playerApi.getPlayerState() === 3) { if (playerApi.getPlayerState() === 3) {
setTimeout(() => syncVolume(playerApi), 0); setTimeout(() => syncVolume(playerApi), 0);
return; return;
@ -21,8 +21,8 @@ export default createPlugin({
playerApi.setVolume(playerApi.getVolume()); playerApi.setVolume(playerApi.getVolume());
}; };
// "YouTube Music fix volume ratio 0.4" by Marco Pfeiffer // "fix volume ratio 0.4" by Marco Pfeiffer
// https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/ // https://bit.ly/4nMu2WF
// Manipulation exponent, higher value = lower volume // Manipulation exponent, higher value = lower volume
// 3 is the value used by pulseaudio, which Barteks2x figured out this gist here: https://gist.github.com/Barteks2x/a4e189a36a10c159bb1644ffca21c02a // 3 is the value used by pulseaudio, which Barteks2x figured out this gist here: https://gist.github.com/Barteks2x/a4e189a36a10c159bb1644ffca21c02a

View File

@ -54,7 +54,7 @@ export const onMainLoad = ({
return target; return target;
}; };
ipcMain.handle('ytmd:menu-event', (event, commandId: number) => { ipcMain.handle('peard:menu-event', (event, commandId: number) => {
const target = getMenuItemById(commandId); const target = getMenuItemById(commandId);
if (target) if (target)
( (

View File

@ -25,7 +25,7 @@ export const onRendererLoad = async ({
}: RendererContext<InAppMenuConfig>) => { }: RendererContext<InAppMenuConfig>) => {
setConfig(await getConfig()); setConfig(await getConfig());
document.title = 'YouTube Music'; document.title = 'Pear Desktop';
const stylesheet = new CSSStyleSheet(); const stylesheet = new CSSStyleSheet();
stylesheet.replaceSync(scrollStyle); stylesheet.replaceSync(scrollStyle);
document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet]; document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];

View File

@ -278,7 +278,7 @@ export const PanelItem = (props: PanelItemProps) => {
}; };
const handleClick = async () => { const handleClick = async () => {
await window.ipcRenderer.invoke('ytmd:menu-event', props.commandId); await window.ipcRenderer.invoke('peard:menu-event', props.commandId);
if (props.type === 'radio') { if (props.type === 'radio') {
props.onChange?.(!props.checked); props.onChange?.(!props.checked);
} else if (props.type === 'checkbox') { } else if (props.type === 'checkbox') {

View File

@ -3,7 +3,7 @@
--menu-bar-height: 32px; --menu-bar-height: 32px;
} }
/* youtube-music style */ /* original style */
ytmusic-app-layout { ytmusic-app-layout {
overflow: auto scroll; overflow: auto scroll;
height: calc(100vh - var(--menu-bar-height, 36px)); height: calc(100vh - var(--menu-bar-height, 36px));
@ -73,7 +73,7 @@ ytmusic-app-layout ytmusic-player-page[is-mweb-modernization-enabled] .side-pane
transform: translate(0, calc(var(--ytmusic-player-page-inner-height) - var(--ytmusic-player-page-tabs-header-height) - var(--ytmusic-player-page-player-bar-height) - var(--menu-bar-height, 32px) )); transform: translate(0, calc(var(--ytmusic-player-page-inner-height) - var(--ytmusic-player-page-tabs-header-height) - var(--ytmusic-player-page-player-bar-height) - var(--menu-bar-height, 32px) ));
} }
/* ytm-bugs: see https://github.com/th-ch/youtube-music/issues/1737 */ /* ytm-bugs: see https://github.com/pear-devs/pear-desktop/issues/1737 */
html { html {
scrollbar-color: unset; scrollbar-color: unset;
} }

View File

@ -36,7 +36,7 @@ export default createPlugin({
const previousStatePaused = null; const previousStatePaused = null;
const data: LumiaData = { const data: LumiaData = {
origin: 'youtubemusic', origin: 'peardesktop',
eventType: 'switchSong', eventType: 'switchSong',
}; };
@ -65,8 +65,8 @@ export default createPlugin({
}); });
}; };
ipc.on('ytmd:player-api-loaded', () => ipc.on('peard:player-api-loaded', () =>
ipc.send('ytmd:setup-time-changed-listener'), ipc.send('peard:setup-time-changed-listener'),
); );
registerCallback((songInfo) => { registerCallback((songInfo) => {

View File

@ -21,7 +21,7 @@ import settingHTML from './templates/setting.html?raw';
import style from './style.css?inline'; import style from './style.css?inline';
import type { DataConnection } from 'peerjs'; import type { DataConnection } from 'peerjs';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { RendererContext } from '@/types/contexts'; import type { RendererContext } from '@/types/contexts';
import type { VideoDataChanged } from '@/types/video-data-changed'; import type { VideoDataChanged } from '@/types/video-data-changed';
import type { AppElement } from '@/types/queue'; import type { AppElement } from '@/types/queue';
@ -49,7 +49,7 @@ export default createPlugin<
ipc?: RendererContext<never>['ipc']; ipc?: RendererContext<never>['ipc'];
api: AppElement | null; api: AppElement | null;
queue?: Queue; queue?: Queue;
playerApi?: YoutubePlayer; playerApi?: MusicPlayer;
showPrompt: (title: string, label: string) => Promise<string>; showPrompt: (title: string, label: string) => Promise<string>;
popups: { popups: {
host: ReturnType<typeof createHostPopup>; host: ReturnType<typeof createHostPopup>;

View File

@ -7,13 +7,13 @@ export const extractToken = (cookie = document.cookie) =>
export const getHash = async ( export const getHash = async (
papisid: string, papisid: string,
millis = Date.now(), millis = Date.now(),
origin: string = 'https://music.youtube.com', origin: string = 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
) => (await SHA1Hash(`${millis} ${papisid} ${origin}`)).toLowerCase(); ) => (await SHA1Hash(`${millis} ${papisid} ${origin}`)).toLowerCase();
export const getAuthorizationHeader = async ( export const getAuthorizationHeader = async (
papisid: string, papisid: string,
millis = Date.now(), millis = Date.now(),
origin: string = 'https://music.youtube.com', origin: string = 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
) => { ) => {
return `SAPISIDHASH ${millis}_${await getHash(papisid, millis, origin)}`; return `SAPISIDHASH ${millis}_${await getHash(papisid, millis, origin)}`;
}; };

View File

@ -1,4 +1,4 @@
import type { YouTubeMusicAppElement } from '@/types/youtube-music-app-element'; import type { MusicPlayerAppElement } from '@/types/music-player-app-element';
import type { QueueElement } from '@/types/queue'; import type { QueueElement } from '@/types/queue';
type QueueRendererResponse = { type QueueRendererResponse = {
@ -13,7 +13,7 @@ export const getMusicQueueRenderer = async (
videoIds: string[], videoIds: string[],
): Promise<QueueRendererResponse | null> => { ): Promise<QueueRendererResponse | null> => {
const queue = document.querySelector<QueueElement>('#queue'); const queue = document.querySelector<QueueElement>('#queue');
const app = document.querySelector<YouTubeMusicAppElement>('ytmusic-app'); const app = document.querySelector<MusicPlayerAppElement>('ytmusic-app');
if (!app) return null; if (!app) return null;
const store = queue?.queue.store.store; const store = queue?.queue.store.store;

View File

@ -127,7 +127,7 @@ export default (
const getButton = (kind: keyof typeof mediaIcons) => const getButton = (kind: keyof typeof mediaIcons) =>
`<action ${display( `<action ${display(
kind, kind,
)} activationType="protocol" arguments="youtubemusic://${kind}"/>`; )} activationType="protocol" arguments="peardesktop://${kind}"/>`;
const getButtons = (isPaused: boolean) => `\ const getButtons = (isPaused: boolean) => `\
<actions> <actions>
@ -260,7 +260,7 @@ export default (
songControls = getSongControls(win); songControls = getSongControls(win);
let currentSeconds = 0; let currentSeconds = 0;
on('ytmd:player-api-loaded', () => send('ytmd:setup-time-changed-listener')); on('peard:player-api-loaded', () => send('peard:setup-time-changed-listener'));
let savedSongInfo: SongInfo; let savedSongInfo: SongInfo;
let lastUrl: string | undefined; let lastUrl: string | undefined;

View File

@ -3,7 +3,7 @@ import fs from 'node:fs';
import { app, type NativeImage } from 'electron'; import { app, type NativeImage } from 'electron';
import youtubeMusicIcon from '@assets/youtube-music.png?asset&asarUnpack'; import musicPlayerIcon from '@assets/icon.png?asset&asarUnpack';
import { type SongInfo } from '@/providers/song-info'; import { type SongInfo } from '@/providers/song-info';
@ -46,7 +46,7 @@ export const notificationImage = (
config: NotificationsPluginConfig, config: NotificationsPluginConfig,
) => { ) => {
if (!songInfo.image) { if (!songInfo.image) {
return youtubeMusicIcon; return musicPlayerIcon;
} }
if (!config.interactive) { if (!config.interactive) {
@ -71,7 +71,7 @@ export const saveImage = (img: NativeImage, savePath: string) => {
} catch (error: unknown) { } catch (error: unknown) {
console.error('Error writing song icon to disk:'); console.error('Error writing song icon to disk:');
console.trace(error); console.trace(error);
return youtubeMusicIcon; return musicPlayerIcon;
} }
return savePath; return savePath;

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
win[hkey_script] = true; win[hkey_script] = true;
/** @type {globalThis.PromiseConstructor} */ /** @type {globalThis.PromiseConstructor} */
const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const Promise = (async () => { })().constructor; // hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve.
const PromiseExternal = ((resolve_, reject_) => { const PromiseExternal = ((resolve_, reject_) => {
const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
return class PromiseExternal extends Promise { return class PromiseExternal extends Promise {
@ -64,7 +64,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
})(); })();
if (!isGPUAccelerationAvailable) { if (!isGPUAccelerationAvailable) {
throw new Error('Your browser does not support GPU Acceleration. YouTube CPU Tamer by AnimationFrame is skipped.'); throw new Error('Your browser does not support GPU Acceleration. CPU Tamer by AnimationFrame is skipped.');
} }
const timeupdateDT = (() => { const timeupdateDT = (() => {
@ -100,7 +100,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
n.appendChild(frame); n.appendChild(frame);
while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by YouTube engine while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by the engine
const root = document.documentElement; const root = document.documentElement;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL)); if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => {
win[hkey_script] = true; win[hkey_script] = true;
/** @type {globalThis.PromiseConstructor} */ /** @type {globalThis.PromiseConstructor} */
const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const Promise = (async () => { })().constructor; // hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve.
const PromiseExternal = ((resolve_, reject_) => { const PromiseExternal = ((resolve_, reject_) => {
const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
return class PromiseExternal extends Promise { return class PromiseExternal extends Promise {
@ -89,7 +89,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => {
frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
n.appendChild(frame); n.appendChild(frame);
while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by YouTube engine while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by the engine
const root = document.documentElement; const root = document.documentElement;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL)); if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

Some files were not shown because too many files have changed in this diff Show More