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
description: Report a YouTube Music bug
description: Report a Pear Desktop bug
title: "[Bug]: "
labels: "bug :beetle:"
body:
@ -8,17 +8,17 @@ body:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I use the latest version of YouTube Music (Application).
- label: I use the latest version of Pear Desktop (Application).
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
- 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
- type: input
attributes:
label: YouTube Music (Application) Version
label: Pear Desktop (Application) Version
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.
placeholder: 2.0.0
@ -28,7 +28,7 @@ body:
attributes:
label: Checklists
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).
- type: dropdown
attributes:
@ -60,8 +60,8 @@ body:
required: true
- type: input
attributes:
label: Last Known Working YouTube Music (Application) version
description: (If applicable) What is the last version of YouTube Music this worked in?
label: Last Known Working Pear Desktop (Application) version
description: (If applicable) What is the last version of Pear Desktop this worked in?
placeholder: 1.20.0
- type: textarea
attributes:

View File

@ -1,5 +1,5 @@
name: Feature Request
description: Suggest an idea for YouTube Music
description: Suggest an idea for Pear Desktop
title: "[Feature Request]: "
labels: "enhancement :sparkles:"
body:
@ -8,9 +8,9 @@ body:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I use the latest version of YouTube Music (Application).
- label: I use the latest version of Pear Desktop (Application).
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
- type: textarea
attributes:

View File

@ -1,4 +1,4 @@
name: Build YouTube Music
name: Build Pear Desktop
on:
push:
@ -11,7 +11,7 @@ env:
jobs:
build:
if: github.event.pull_request.draft == false
name: Build YouTube Music
name: Build Pear Desktop
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
@ -45,20 +45,20 @@ jobs:
# Only vite build without release if it is a fork, or it is a pull-request
- 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: |
pnpm build
# Build and release if it's the main repository and is not pull-request
- 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:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:mac
- 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:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
@ -72,7 +72,7 @@ jobs:
pnpm release:linux
- 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:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
@ -88,8 +88,8 @@ jobs:
release:
runs-on: ubuntu-latest
name: Release YouTube Music
if: github.repository == 'th-ch/youtube-music' && github.ref == 'refs/heads/master'
name: Release Pear Desktop
if: github.repository == 'pear-devs/pear-desktop' && github.ref == 'refs/heads/master'
needs: build
steps:
- uses: actions/checkout@v5
@ -150,11 +150,11 @@ jobs:
name: ${{ env.VERSION_TAG }}
replacebody: true
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! 🏅
(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
if: ${{ env.VERSION_HASH == '' }}

View File

@ -22,9 +22,9 @@ jobs:
- name: Submit package to Windows Package Manager Community Repository
uses: vedantmgoyal2009/winget-releaser@main
with:
identifier: th-ch.YouTubeMusic
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$'
identifier: pear-devs.PearDesktop
installers-regex: '^Pear-Desktop-Web-Setup-[\d\.]+\.exe$'
version: ${{ env.WINGET_TAG_NAME }}
release-tag: ${{ inputs.tag_name || github.event.release.tag_name }}
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)
[![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/)
<!--[![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)
</div>
@ -53,11 +53,11 @@
## 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/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" />
<a href="https://bit.ly/48n5YF7/">
<img src="https://bit.ly/4q83L6S" alt="translation status" />
<img src="https://bit.ly/4h3zBxo" alt="translation status 2" />
</a>
## Download

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8" />
<title>Cannot load YouTube Music</title>
<title>Cannot load Pear Desktop</title>
<style>
body {
background: #000;
@ -43,7 +43,7 @@
<body>
<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>
</div>
</body>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
appId: com.github.th-ch.youtube-music
productName: YouTube Music
appId: com.github.th-ch.pear-desktop
productName: Pear Desktop
files:
- '!*'
- dist
@ -43,7 +43,7 @@ linux:
category: AudioVideo
desktop:
entry:
StartupWMClass: com.github.th_ch.youtube_music
StartupWMClass: com.github.th_ch.pear_desktop
target:
- target: AppImage
arch:
@ -77,12 +77,12 @@ linux:
- armv7l
appImage:
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)
category: AudioVideo
flatpak:
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)
category: AudioVideo
runtimeVersion: '24.08'
@ -98,7 +98,7 @@ flatpak:
- '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*'
- '--own-name=org.mpris.MediaPlayer2.PearDesktop.*'
deb:
depends:
- libgtk-3-0

View File

@ -159,7 +159,8 @@ export default defineConfig({
},
server: {
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)
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
of this software and associated documentation files (the "Software"), to deal

View File

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

10
pnpm-lock.yaml generated
View File

@ -216,9 +216,6 @@ importers:
serve:
specifier: 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:
specifier: 2.8.7
version: 2.8.7
@ -4276,11 +4273,6 @@ packages:
resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==}
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:
resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
engines: {node: '>=18'}
@ -9255,8 +9247,6 @@ snapshots:
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:
dependencies:
'@polka/url': 1.0.0-next.29

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Títol personalitzat de la finestra",
"prompt": {
"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": {
@ -208,8 +208,8 @@
"restart": "Reinicia l'aplicació",
"show": "Mostra la finestra",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mode ambient"
},
"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",
"response": {
"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ó"
},
"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"
},
"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": {
"autoload": "Selecciona automàticament l'últim subtítol emprat",
"disable-captions": "Sense subtítols per defecte"
@ -456,14 +456,14 @@
"disconnected": "Desconnectat",
"hide-duration-left": "Amaga la durada restant",
"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-status-display-type": {
"label": "Text d'estat",
"submenu": {
"artist": "Escoltant {artist}",
"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",
"prompt": {
"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": {
@ -208,8 +208,8 @@
"restart": "Restartovat aplikaci",
"show": "Zobrazit okno",
"tooltip": {
"default": "Youtube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambientní režim"
},
"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",
"response": {
"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"
},
"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í"
},
"captions-selector": {
"description": "Titulkový selector pro zvukové stopy v YouTube Music",
"description": "Titulkový selector pro zvukové stopy v Pear Desktop",
"menu": {
"autoload": "Automaticky vybrat naposledy použité titulky",
"disable-captions": "Žádné titulky ve vychozím nastavení"
@ -456,14 +456,14 @@
"disconnected": "Odpojeno",
"hide-duration-left": "Skrýt zbývající duration",
"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-status-display-type": {
"label": "Text statusu",
"submenu": {
"artist": "Poslouchám: {artist}",
"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",
"prompt": {
"label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)",
"placeholder": "Eksempel: YouTube Music"
"placeholder": "Eksempel: Pear Desktop"
}
},
"like-buttons": {
@ -206,8 +206,8 @@
"restart": "Genstart app",
"show": "Vis vindue",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Benutzerdefinierter Fenstertitel",
"prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: YouTube Music"
"placeholder": "Beispiel: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Anwendung neu starten",
"show": "Fenster anzeigen",
"tooltip": {
"default": "YouTube Musik",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -369,11 +369,11 @@
"name": "Verschwommene Navigationsleiste"
},
"bypass-age-restrictions": {
"description": "Youtubes Altersbestätigung umgehen",
"description": "Music Player Altersbestätigung umgehen",
"name": "Altersbeschränkungen umgehen"
},
"captions-selector": {
"description": "Untertitelwähler für YouTube Music-Audio-Lieder",
"description": "Untertitelwähler für Pear Desktop-Audio-Lieder",
"menu": {
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
"disable-captions": "Standardmäßig keine Untertitel"
@ -456,14 +456,14 @@
"disconnected": "Getrennt",
"hide-duration-left": "Verbleibende Zeit verstecken",
"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-status-display-type": {
"label": "Status Text",
"submenu": {
"artist": "Hört {artist} zu",
"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": "Προσαρμοσμένος τίτλος παραθύρου",
"prompt": {
"label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: YouTube Music"
"placeholder": "Παράδειγμα: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Επανεκκίνηση εφαρμογής",
"show": "Εμφάνιση παραθύρου",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Λειτουργία περιβάλλοντος"
},
"amuse": {
"description": "Προσθέτει υποστήριξη YouTube Music στο widget Amuse now playing από την 6K Labs",
"description": "Προσθέτει υποστήριξη Pear Desktop στο widget Amuse now playing από την 6K Labs",
"name": "Amuse",
"response": {
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
@ -369,11 +369,11 @@
"name": "Θόλωμα γραμμής πλοήγησης"
},
"bypass-age-restrictions": {
"description": "Παράκαμψη επαλήθευσης ηλικίας στο YouTube",
"description": "Παράκαμψη επαλήθευσης ηλικίας στο Music Player",
"name": "Παράκαμψη ηλικιακών περιορισμών"
},
"captions-selector": {
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του YouTube",
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του Pear Desktop",
"menu": {
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
"disable-captions": "Χωρίς λεζάντες από προεπιλογή"
@ -443,7 +443,7 @@
"disconnected": "Αποσυνδεδεμένο",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
"play-on-youtube-music": "Αναπαραγωγή στο YouTube Music",
"play-on-pear-desktop": "Αναπαραγωγή στο Pear Desktop",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
},
"name": "Discord Πλούσια παρουσία",

View File

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

View File

@ -154,7 +154,7 @@
"label": "Título de ventana personalizado",
"prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: YouTube Music"
"placeholder": "Ejemplo: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar la aplicación",
"show": "Mostrar ventana",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Modo ambiente"
},
"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",
"response": {
"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"
},
"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"
},
"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": {
"autoload": "Seleccionar automáticamente el último subtítulo utilizado",
"disable-captions": "Sin subtítulos por defecto"
@ -456,14 +456,14 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar la duración restante",
"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-status-display-type": {
"label": "Texto de estado",
"submenu": {
"artist": "Escuchando a {artist}",
"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",
"show": "Näita akent",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},

View File

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

View File

@ -154,7 +154,7 @@
"label": "Mukautettu ikkunan otsikko",
"prompt": {
"label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)",
"placeholder": "Esimerkki: YouTube Music"
"placeholder": "Esimerkki: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uudelleen käynnistä appi",
"show": "Näytä ikkuna",
"tooltip": {
"default": "Youtube Music",
"with-song-info": "Youtube Music {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Tunnelmallinen Tila"
},
"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",
"response": {
"query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot."
@ -369,11 +369,11 @@
"name": "Sumenna Siirtymäpalkki"
},
"bypass-age-restrictions": {
"description": "Ohita YouTuben iän vahvistus",
"description": "Ohita Music Player iän vahvistus",
"name": "Ohita Ikään Perustuvat Rajoitukset"
},
"captions-selector": {
"description": "YouTube Music ääniraitojen tekstitysten valitsin",
"description": "Pear Desktop ääniraitojen tekstitysten valitsin",
"menu": {
"autoload": "Valitse automaattisesti viimeksi käytetty tekstitys",
"disable-captions": "Tekstitys ei oletusarvoisesti käytössä"
@ -443,7 +443,7 @@
"disconnected": "Yhteys katkaistu",
"hide-duration-left": "Piilota kappaleen jäljellä oleva kesto",
"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"
},
"name": "Discord Aktiviteetti (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Custom na window title",
"prompt": {
"label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)",
"placeholder": "Halimbawa: YouTube Music"
"placeholder": "Halimbawa: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "I-restart ang App",
"show": "Ipakita ang window",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambient Mode"
},
"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": {
"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"
},
"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"
},
"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": {
"autoload": "Awtomatikong piliin ang huling ginamit na caption",
"disable-captions": "Walang mga caption bilang default"
@ -446,13 +446,13 @@
"disconnected": "Nadiskonekta",
"hide-duration-left": "Itago ang natitirang oras",
"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-status-display-type": {
"submenu": {
"artist": "Nakikinig sa {artist}",
"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é",
"prompt": {
"label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)",
"placeholder": "Exemple : YouTube Musique"
"placeholder": "Exemple : Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Redémarrer l'application",
"show": "Afficher la fenêtre",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mode ambiant"
},
"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",
"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."
@ -369,11 +369,11 @@
"name": "Barre de navigation floue"
},
"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"
},
"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": {
"autoload": "Sélectionner automatiquement la dernière légende utilisée",
"disable-captions": "Pas de sous-titres par défaut"
@ -456,14 +456,14 @@
"disconnected": "Déconnecté",
"hide-duration-left": "Masquer la durée restante",
"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-status-display-type": {
"label": "Texte d'état",
"submenu": {
"artist": "Écoute {artiste}",
"title": "Écoute {titre de la chanson}",
"youtube-music": "Écoute YouTube Music"
"pear-desktop": "Écoute Pear Desktop"
}
}
},

View File

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

View File

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

View File

@ -201,8 +201,8 @@
"restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "YouTube Glazba",
"with-song-info": "YouTube Glazba: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -280,7 +280,7 @@
"name": "Ambijentalni Način"
},
"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",
"response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
@ -362,11 +362,11 @@
"name": "Zamagli Navigacijsku Traku"
},
"bypass-age-restrictions": {
"description": "Zaobiđi YouTubeovu provjeru dobi",
"description": "Zaobiđi Music Player provjeru dobi",
"name": "Zaobiđi dobna ograničenja"
},
"captions-selector": {
"description": "Izbornik titlova za audiozapise od YouTube Musica",
"description": "Izbornik titlova za audiozapise od Pear Desktopa",
"menu": {
"autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova"
@ -436,7 +436,7 @@
"disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme",
"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)"
},
"name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Saját ablak cím",
"prompt": {
"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": {
@ -208,8 +208,8 @@
"restart": "YT Music újraindítása",
"show": "Ablak megjelenítése",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambient mód"
},
"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",
"response": {
"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"
},
"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"
},
"captions-selector": {
"description": "Felirat választó a YouTube Music zenékhez",
"description": "Felirat választó a Pear Desktop zenékhez",
"menu": {
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
"disable-captions": "Alapértelmezetten nincsenek feliratok"
@ -453,14 +453,14 @@
"disconnected": "Nincs Kapcsolódva",
"hide-duration-left": "Hátralévő idő 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-status-display-type": {
"label": "Tevékenység szöveg",
"submenu": {
"artist": "Hallgatja: {artist}",
"title": "Hallgatja: {song title}",
"youtube-music": "Hallgatja: YouTube Music"
"pear-desktop": "Hallgatja: Pear Desktop"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Judul jendela kustom",
"prompt": {
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
"placeholder": "Contoh: YouTube Music"
"placeholder": "Contoh: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restart aplikasi",
"show": "Tampilkan jendela",
"tooltip": {
"default": "YouTube Musik",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mode ambient"
},
"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",
"response": {
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
@ -369,11 +369,11 @@
"name": "Buramkan Bar Navigasi"
},
"bypass-age-restrictions": {
"description": "Lewati verifikasi umur dari YouTube",
"description": "Lewati verifikasi umur dari Music Player",
"name": "Lewati batasan umur"
},
"captions-selector": {
"description": "Pemilih caption untuk trek audio YouTube Music",
"description": "Pemilih caption untuk trek audio Pear Desktop",
"menu": {
"autoload": "Pilih caption terakhir secara otomatis",
"disable-captions": "Tidak ada caption secara default"
@ -456,14 +456,14 @@
"disconnected": "Terputus",
"hide-duration-left": "Sembunyikan sisa durasi",
"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-status-display-type": {
"label": "Teks status",
"submenu": {
"artist": "Sedang mendengarkan {artist}",
"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ð",
"show": "Sýna glugga",
"tooltip": {
"default": "YouTube Tónlist",
"with-song-info": "YouTube Tónlist: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -331,11 +331,11 @@
"name": "Þoka Leiðsagnarstika"
},
"bypass-age-restrictions": {
"description": "Framhjá aldursstaðfestingu YouTube",
"description": "Framhjá aldursstaðfestingu Music Player",
"name": "Farið Framhjá Aldurstakmörkunum"
},
"captions-selector": {
"description": "Skjátextavali fyrir YouTube Tónlist hljóðrásir",
"description": "Skjátextavali fyrir Pear Desktop hljóðrásir",
"menu": {
"autoload": "Veldu sjálfkrafa síðast notaða myndatexta",
"disable-captions": "Engir skjátextar sjálfgefið"
@ -400,7 +400,7 @@
"disconnected": "Aftengt",
"hide-duration-left": "Fela tímalengd til vinstri",
"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"
},
"name": "Discord Rík Nærvera",

View File

@ -154,7 +154,7 @@
"label": "Personalizza titolo finestra",
"prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: YouTube Music"
"placeholder": "Esempio: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Riavvia l'app",
"show": "Mostra finestra",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Modalità Ambiente"
},
"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",
"response": {
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
@ -369,11 +369,11 @@
"name": "Barra di navigazione trasparente"
},
"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à"
},
"captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di YouTube",
"description": "Selettore sottotitolo per le tracce audio di Pear Desktop",
"menu": {
"autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato",
"disable-captions": "Disattiva i sottotitoli"
@ -456,14 +456,14 @@
"disconnected": "Disconnesso",
"hide-duration-left": "Nascondi la durata rimasta",
"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-status-display-type": {
"label": "Testo dello status",
"submenu": {
"artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}",
"youtube-music": "Ascoltando YouTube Music"
"pear-desktop": "Ascoltando Pear Desktop"
}
}
},

View File

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

View File

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

View File

@ -152,7 +152,7 @@
"submenu": {
"custom-window-title": {
"prompt": {
"placeholder": "Pavyzdys: YouTube Music"
"placeholder": "Pavyzdys: Pear Desktop"
}
},
"like-buttons": {
@ -206,8 +206,8 @@
"restart": "Perkrauti programą",
"show": "Rodyti langą",
"tooltip": {
"default": "Youtube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -285,7 +285,7 @@
"name": "Aplinkos rėžimas"
},
"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)",
"response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
@ -343,11 +343,11 @@
"name": "Sulieti Navigacijos Lentą"
},
"bypass-age-restrictions": {
"description": "Apeiti \"Youtube\" amžiaus patikrinimą",
"description": "Apeiti \"Music Player\" amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus"
},
"captions-selector": {
"description": "„YouTube Music“ Garso takelių antraščių parinkiklis",
"description": "„Pear Desktop“ Garso takelių antraščių parinkiklis",
"menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
@ -427,13 +427,13 @@
"disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko",
"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-status-display-type": {
"submenu": {
"artist": "Klausosi {artist]",
"title": "Klausosi {song title}",
"youtube-music": "Klausosi Youtube Music"
"pear-desktop": "Klausosi Pear Desktop"
}
}
},

View File

@ -156,7 +156,7 @@
"hide": "Paslēpt",
"label": "Like pogas"
},
"remove-upgrade-button": "Noslēpt YouTube Premium pogu",
"remove-upgrade-button": "Noslēpt Premium pogu",
"theme": {
"dialog": {
"button": {
@ -201,8 +201,8 @@
"restart": "Restartēt Lietotni",
"show": "Rādīt logu",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -280,7 +280,7 @@
"name": "Ambientais Režīms"
},
"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",
"response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
@ -362,11 +362,11 @@
"name": "Izplūdusi Navigācijas Josla"
},
"bypass-age-restrictions": {
"description": "Apiet YouTube vecuma pārbaudi",
"description": "Apiet Music Player vecuma pārbaudi",
"name": "Apiet Vecuma Ierobežojumus"
},
"captions-selector": {
"description": "Subtitru izvēlne priekš YouTube Music audio ceļiem",
"description": "Subtitru izvēlne priekš Pear Desktop audio ceļiem",
"menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma"
@ -436,7 +436,7 @@
"disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika",
"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"
},
"name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Tajuk tetingkap tersuai",
"prompt": {
"label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)",
"placeholder": "Contoh: YouTube Music"
"placeholder": "Contoh: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap",
"tooltip": {
"default": "YouTube Muzik",
"with-song-info": "YouTube Muzik : {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop : {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mod Sekitaran"
},
"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",
"response": {
"query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu."
@ -369,11 +369,11 @@
"name": "Kaburkan Bar navigasi"
},
"bypass-age-restrictions": {
"description": "Pintas verifikasi umur Youtube",
"description": "Pintas verifikasi umur Music Player",
"name": "Pintas Sekatan Umur"
},
"captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Youtube Music",
"description": "Pemilih kapsyen untuk trek audio Pear Desktop",
"menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai"
@ -456,14 +456,14 @@
"disconnected": "Tidak disambungkan",
"hide-duration-left": "Sembunyikan tempoh yang tinggal",
"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-status-display-type": {
"label": "Teks status",
"submenu": {
"artist": "Sedang mendengar {artist}",
"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"
},
"bypass-age-restrictions": {
"description": "Omgå YouTube sin aldersgrenser",
"description": "Omgå Music Player sin aldersgrenser",
"name": "Omgå aldersgrense"
},
"captions-selector": {
"description": "Undertekstverktøy for lydspor i YouTube Music",
"description": "Undertekstverktøy for lydspor i Pear Desktop",
"menu": {
"autoload": "Auto-velg sist brukte undertekst",
"disable-captions": "Ingen undertekst som forvalg"
@ -326,7 +326,7 @@
"disconnected": "Frakoblet",
"hide-duration-left": "Skjul gjenværende tid",
"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"
},
"name": "Rik tilstedeværelse for Discord",

View File

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

View File

@ -154,7 +154,7 @@
"label": "Aangepaste venstertitel",
"prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Youtube Music"
"placeholder": "Voorbeeld: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Herstarten App",
"show": "Weergeven Venster",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Omgevingsmodus"
},
"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",
"response": {
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
@ -369,11 +369,11 @@
"name": "Vervagen Navigatiebalk"
},
"bypass-age-restrictions": {
"description": "Omzeil de leeftijdsverificatie van YouTube",
"description": "Omzeil de leeftijdsverificatie van Music Player",
"name": "Leeftijdsbeperkingen Omzeilen"
},
"captions-selector": {
"description": "Ondertitelkeuze voor YouTube Music-audiotracks",
"description": "Ondertitelkeuze voor Pear Desktop-audiotracks",
"menu": {
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
"disable-captions": "Standaard geen ondertitels"
@ -456,14 +456,14 @@
"disconnected": "Verbinding verbroken",
"hide-duration-left": "Verberg resterende tijd",
"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-status-display-type": {
"label": "Status tekst",
"submenu": {
"artist": "Naar {artist} 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",
"prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):",
"placeholder": "Przykład: YouTube Music"
"placeholder": "Przykład: Pear Desktop"
}
},
"like-buttons": {
@ -208,7 +208,7 @@
"restart": "Uruchom ponownie aplikację",
"show": "Pokaż okno",
"tooltip": {
"default": "YouTube Music",
"default": "Pear Desktop",
"with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music"
}
}
@ -287,14 +287,14 @@
"name": "Tryb otoczenia"
},
"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",
"response": {
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
}
},
"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": {
"request": {
"buttons": {
@ -324,7 +324,7 @@
"label": "Port"
}
},
"name": "YouTube Music API",
"name": "Pear Desktop API",
"prompt": {
"hostname": {
"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"
},
"captions-selector": {
"description": "Selektor napisów dla ścieżek audio YouTube Music",
"description": "Selektor napisów dla ścieżek audio Pear Desktop",
"menu": {
"autoload": "Automatycznie wybierz ostatnio używanych napisów",
"disable-captions": "Domyślnie, brak napisów"
@ -456,14 +456,14 @@
"disconnected": "Odłączono",
"hide-duration-left": "Ukryj pozostały czas trwania",
"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-status-display-type": {
"label": "Opis statusu",
"submenu": {
"artist": "Słucha {artist}",
"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",
"prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Youtube Music"
"placeholder": "Exemplo: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicativo",
"show": "Mostrar janela",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Modo ambiente"
},
"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",
"response": {
"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"
},
"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"
},
"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": {
"autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante",
"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-status-display-type": {
"label": "Texto de status",
"submenu": {
"artist": "Ouvindo {artist}",
"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",
"prompt": {
"label": "Introduza um título: (deixe em branco para desativar)",
"placeholder": "Exemplo: YouTube Music"
"placeholder": "Exemplo: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicação",
"show": "Mostrar janela",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Modo ambiente"
},
"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",
"response": {
"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"
},
"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"
},
"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": {
"autoload": "Selecionar automaticamente a última legenda utilizada",
"disable-captions": "Sem legendas por omissão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar tempo restante",
"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-status-display-type": {
"label": "Texto de estado",
"submenu": {
"artist": "A ouvir {artist}",
"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",
"prompt": {
"label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)",
"placeholder": "Exemplu: Youtube Music"
"placeholder": "Exemplu: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reporneste aplicatia",
"show": "Arata fereastra",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Mod ambiental"
},
"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",
"response": {
"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"
},
"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ă"
},
"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": {
"autoload": "Selectează automat ultima subtitrare folosită",
"disable-captions": "Fără subtitrări în mod implicit"
@ -456,14 +456,14 @@
"disconnected": "Deconectat",
"hide-duration-left": "Ascunde timpul rămas",
"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-status-display-type": {
"label": "Text stare",
"submenu": {
"artist": "Ascultând {artist}",
"title": "Ascultând {song title}",
"youtube-music": "Ascultând YouTube Music"
"pear-desktop": "Ascultând Pear Desktop"
}
}
},

View File

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

View File

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

View File

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

View File

@ -201,8 +201,8 @@
"restart": "Ponovni zagon",
"show": "Pokaži okno",
"tooltip": {
"default": "YouTube Glasba",
"with-song-info": "YouTube Glasba: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -335,7 +335,7 @@
"name": "Preskoči starostno omejitev"
},
"captions-selector": {
"description": "Izberi podnapise za YouTube Music zvočne posnetke",
"description": "Izberi podnapise za Pear Desktop zvočne posnetke",
"menu": {
"autoload": "Avtomatsko uporabi zadnje izbrane podnapise",
"disable-captions": "Avtomatsko brez podnapisov"
@ -400,7 +400,7 @@
"disconnected": "Prekinjena povezava",
"hide-duration-left": "Skrij preostali čas",
"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"
},
"name": "Discord bogata prisotnost (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naziv prozora",
"prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: YouTube Muzika"
"placeholder": "Primer: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "YouTube Muzika",
"with-song-info": "YouTube Muzika: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambijentalni režim"
},
"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",
"response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
@ -369,11 +369,11 @@
"name": "Zamuti navigacioni meni"
},
"bypass-age-restrictions": {
"description": "Preskoči starosnu verifikaciju za YouTube",
"description": "Preskoči starosnu verifikaciju za Music Player",
"name": "Preskoči starosna ograničenja"
},
"captions-selector": {
"description": "Odabir prevoda za numere/audio trake na YouTube Muzici",
"description": "Odabir prevoda za numere/audio trake na Pear Desktop",
"menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda"
@ -456,14 +456,14 @@
"disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme",
"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-status-display-type": {
"label": "Tekst statusa",
"submenu": {
"artist": "Slušanje {artist}",
"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",
"prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: YouTube Music"
"placeholder": "Exempelvis: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Starta om appen",
"show": "Visa fönster",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambiensläge"
},
"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",
"response": {
"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"
},
"bypass-age-restrictions": {
"description": "Hoppa över YouTubes åldersverifiering",
"description": "Hoppa över Music Player åldersverifiering",
"name": "Hoppa Över Åldersbegränsningar"
},
"captions-selector": {
"description": "Välj textning för YouTube Music-ljudspår",
"description": "Välj textning för Pear Desktop-ljudspår",
"menu": {
"autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard"
@ -456,14 +456,14 @@
"disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid",
"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-status-display-type": {
"label": "Statusmeddelande",
"submenu": {
"artist": "Lyssnar på {artist}",
"title": "Lyssnar på {song title}",
"youtube-music": "Lyssnar på YouTube Music"
"pear-desktop": "Lyssnar på Pear Desktop"
}
}
},

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Özel pencere başlığı",
"prompt": {
"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": {
@ -208,8 +208,8 @@
"restart": "Yeniden başlat",
"show": "Pencereyi görüntüle",
"tooltip": {
"default": "YouTube Müzik",
"with-song-info": "YouTube Müzik: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Ambiyans Modu"
},
"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",
"response": {
"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"
},
"bypass-age-restrictions": {
"description": "YouTube yaş doğrulamasını atla",
"description": "Music Player yaş doğrulamasını atla",
"name": "Yaş doğrulamasını atla"
},
"captions-selector": {
"description": "YouTube Music için altyazı seçici",
"description": "Pear Desktop için altyazı seçici",
"menu": {
"autoload": "Son kullanılan altyazıyı otomatik olarak seç",
"disable-captions": "Varsayılan olarak altyazı yok"
@ -456,14 +456,14 @@
"disconnected": "Bağlantı kesildi",
"hide-duration-left": "Kalan süreyi 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-status-display-type": {
"label": "Durum metni",
"submenu": {
"artist": "{artist} Dinleniyor",
"title": "{song title} Dinleniyor",
"youtube-music": "YouTube Müzik Dinleniyor"
"pear-desktop": "Pear Desktop Dinleniyor"
}
}
},

View File

@ -154,7 +154,7 @@
"label": "Налаштування заголовка вікна",
"prompt": {
"label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: YouTube Music"
"placeholder": "Приклад: Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "Перезапустити програму",
"show": "Показати вікно",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Режим навколишнього середовища"
},
"amuse": {
"description": "Додає підтримку YouTube Music для віджета Amuse now playing від 6K Labs",
"description": "Додає підтримку Pear Desktop для віджета Amuse now playing від 6K Labs",
"name": "Amuse",
"response": {
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
@ -369,11 +369,11 @@
"name": "Розмиття панелі навігації"
},
"bypass-age-restrictions": {
"description": "Обхід перевірки віку на YouTube",
"description": "Обхід перевірки віку на Music Player",
"name": "Обхід вікових обмежень"
},
"captions-selector": {
"description": "Вибір субтитрів для аудіодоріжок YouTube Music",
"description": "Вибір субтитрів для аудіодоріжок Pear Desktop",
"menu": {
"autoload": "Автоматичний вибір останніх використаних субтитрів",
"disable-captions": "За замовчуванням субтитри відсутні"
@ -451,12 +451,12 @@
"disconnected": "Від'єднано",
"hide-duration-left": "Приховати тривалість, яка залишилася",
"hide-github-button": "Приховати посилання на GitHub",
"play-on-youtube-music": "Слухати на YouTube Music",
"play-on-pear-desktop": "Слухати на Pear Desktop",
"set-inactivity-timeout": "Встановити тайм-аут бездіяльності",
"set-status-display-type": {
"label": "Статус",
"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",
"prompt": {
"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": {
@ -208,8 +208,8 @@
"restart": "Khởi động lại ứng dụng",
"show": "Hiện cửa sổ",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{title}} - {{artist}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{title}} - {{artist}}"
}
}
},
@ -287,7 +287,7 @@
"name": "Chế độ Môi trường xung quanh"
},
"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",
"response": {
"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"
},
"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"
},
"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": {
"autoload": "Tự động chọn phụ đề vừa sử dụng",
"disable-captions": "Không có phụ đề làm mặc định"
@ -456,14 +456,14 @@
"disconnected": "Đã ngắt kết nối",
"hide-duration-left": "Ẩn thời lượng còn lại",
"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-status-display-type": {
"label": "Văn bản trạng thái",
"submenu": {
"artist": "Đang nghe nhạc của {artist}",
"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": "自定义窗口标题",
"prompt": {
"label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例:YouTube Music"
"placeholder": "示例:Pear Desktop"
}
},
"like-buttons": {
@ -208,8 +208,8 @@
"restart": "重启应用",
"show": "显示窗口",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "Pear Desktop",
"with-song-info": "Pear Desktop: {{artist}} - {{title}}"
}
}
},
@ -287,7 +287,7 @@
"name": "沉浸模式"
},
"amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持",
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 Pear Desktop 支持",
"name": "Amuse",
"response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
@ -369,11 +369,11 @@
"name": "模糊导航栏"
},
"bypass-age-restrictions": {
"description": "绕过 YouTube 年龄验证",
"description": "绕过 Music Player 年龄验证",
"name": "绕过年龄验证"
},
"captions-selector": {
"description": "YouTube Music 音轨字幕选择器",
"description": "Pear Desktop 音轨字幕选择器",
"menu": {
"autoload": "自动选择上次使用的字幕",
"disable-captions": "默认无字幕"
@ -456,14 +456,14 @@
"disconnected": "已断开连接",
"hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-youtube-music": "转至 YouTube Music 播放",
"play-on-pear-desktop": "转至 Pear Desktop 播放",
"set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": {
"label": "状态文本",
"submenu": {
"artist": "在听 {artist}",
"title": "在听 {song title}",
"youtube-music": "在听 YouTube Music"
"pear-desktop": "在听 Pear Desktop"
}
}
},

View File

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

View File

@ -7,7 +7,7 @@
within the `createMainWindow` function.
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,
} from '@/providers/protocol-handler';
import youtubeMusicCSS from '@/youtube-music.css?inline';
import musicPlayerCss from '@/music-player.css?inline';
import {
forceLoadMainPlugin,
@ -131,7 +131,7 @@ if (config.get('options.disableHardwareAcceleration')) {
if (is.linux()) {
// 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
if (await config.plugins.isEnabled('shortcuts')) {
@ -165,7 +165,7 @@ electronDebug({
showDevTools: false, // Disable automatic devTools on new window
});
let icon = 'assets/youtube-music.png';
let icon = 'assets/icon.png';
if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico';
} else if (process.platform === 'darwin') {
@ -178,7 +178,7 @@ function onClosed() {
mainWindow = null;
}
ipcMain.handle('ytmd:get-main-plugin-names', async () =>
ipcMain.handle('peard:get-main-plugin-names', async () =>
Object.keys(await mainPlugins()),
);
@ -186,14 +186,14 @@ const initHook = async (win: BrowserWindow) => {
const allPluginStubs = await allPlugins();
ipcMain.handle(
'ytmd:get-config',
'peard:get-config',
(_, id: string) =>
deepmerge(
allPluginStubs[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {},
) 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),
);
@ -292,7 +292,7 @@ const showNeedToRestartDialog = async (id: string) => {
};
function initTheme(win: BrowserWindow) {
injectCSS(win.webContents, youtubeMusicCSS);
injectCSS(win.webContents, musicPlayerCss);
// Load user CSS
const themes: string[] = config.get('options.themes');
if (Array.isArray(themes)) {
@ -503,11 +503,14 @@ async function createMainWindow() {
const url = new URL(event.url);
// 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();
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
if (is.windows()) {
const appID = 'com.github.th-ch.youtube-music';
const appID = 'com.github.th-ch.pear-music';
app.setAppUserModelId(appID);
const appLocation = process.execPath;
const appData = app.getPath('appData');
@ -675,7 +678,7 @@ app.whenReady().then(async () => {
'Windows',
'Start Menu',
'Programs',
'YouTube Music.lnk',
'Pear Desktop.lnk',
);
try {
// Check if shortcut is registered and valid
@ -695,7 +698,7 @@ app.whenReady().then(async () => {
{
target: appLocation,
cwd: path.dirname(appLocation),
description: 'YouTube Music Desktop App - including custom plugins',
description: 'Pear Desktop App - including custom plugins',
appUserModelId: appID,
},
);
@ -804,7 +807,7 @@ app.whenReady().then(async () => {
}, 2000);
autoUpdater.on('update-available', () => {
const downloadLink =
'https://github.com/th-ch/youtube-music/releases/latest';
'https://github.com/pear-devs/pear-desktop/releases/latest';
const dialogOptions: Electron.MessageBoxOptions = {
type: 'info',
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'] = ['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,
): RendererContext<Config> => ({
getConfig: () =>
window.ipcRenderer.invoke('ytmd:get-config', id) as Promise<Config>,
window.ipcRenderer.invoke('peard:get-config', id) as Promise<Config>,
setConfig: async (newConfig) => {
await window.ipcRenderer.invoke('ytmd:set-config', id, newConfig);
await window.ipcRenderer.invoke('peard:set-config', id, newConfig);
},
ipc: {
send: (event: string, ...args: unknown[]) => {

View File

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

View File

@ -1,5 +1,5 @@
/**
* Overriding YouTube Music style
* Overriding default style
*/
/* Allow window dragging */
@ -49,7 +49,7 @@ ytmusic-cast-button {
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 > picture > img {
-webkit-user-drag: none;

View File

@ -29,22 +29,22 @@ export const backend = createBackend<BackendType, APIServerConfig>({
this.songInfo = songInfo;
});
ctx.ipc.on('ytmd:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-seeked-listener');
ctx.ipc.send('ytmd:setup-time-changed-listener');
ctx.ipc.send('ytmd:setup-repeat-changed-listener');
ctx.ipc.send('ytmd:setup-like-changed-listener');
ctx.ipc.send('ytmd:setup-volume-changed-listener');
ctx.ipc.send('ytmd:setup-shuffle-changed-listener');
ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('peard:setup-seeked-listener');
ctx.ipc.send('peard:setup-time-changed-listener');
ctx.ipc.send('peard:setup-repeat-changed-listener');
ctx.ipc.send('peard:setup-like-changed-listener');
ctx.ipc.send('peard:setup-volume-changed-listener');
ctx.ipc.send('peard:setup-shuffle-changed-listener');
});
ctx.ipc.on(
'ytmd:repeat-changed',
'peard:repeat-changed',
(mode: RepeatMode) => (this.currentRepeatMode = mode),
);
ctx.ipc.on(
'ytmd:volume-changed',
'peard:volume-changed',
(newVolumeState: VolumeState) => (this.volumeState = newVolumeState),
);
@ -138,7 +138,7 @@ export const backend = createBackend<BackendType, APIServerConfig>({
openapi: '3.1.0',
info: {
version: '1.0.0',
title: 'Youtube Music API Server',
title: 'Pear Desktop API Server',
description:
'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 { APIServerConfig } from '../../config';
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';
const routes = {
@ -630,7 +630,7 @@ export const register = (
app.openapi(routes.getShuffleState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once(
'ytmd:get-shuffle-response',
'peard:get-shuffle-response',
(_, isShuffled: boolean | undefined) => {
return resolve(!!isShuffled);
},
@ -693,7 +693,7 @@ export const register = (
app.openapi(routes.getFullscreenState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once(
'ytmd:set-fullscreen',
'peard:set-fullscreen',
(_, isFullscreen: boolean | undefined) => {
return resolve(!!isFullscreen);
},
@ -728,7 +728,7 @@ export const register = (
// Queue
const queueInfo = async (ctx: Context) => {
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);
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,7 +3,7 @@ import { createPlugin } from '@/utils';
import { t } from '@/i18n';
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 = {
enabled: boolean;
@ -15,7 +15,7 @@ export default createPlugin<
unknown,
{
config: DisableAutoPlayPluginConfig | null;
api: YoutubePlayer | null;
api: MusicPlayer | null;
eventListener: (event: CustomEvent<VideoDataChanged>) => 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';
/**

View File

@ -24,9 +24,9 @@ export type DiscordPluginConfig = {
*/
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
*/
@ -50,7 +50,7 @@ export default createPlugin({
autoReconnect: true,
activityTimeoutEnabled: true,
activityTimeoutTime: 10 * 60 * 1000,
playOnYouTubeMusic: true,
playOnPearDesktop: true,
hideGitHubButton: false,
hideDurationLeft: false,
statusDisplayType: StatusDisplayType.Details,

View File

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

View File

@ -18,7 +18,7 @@ const registerRefreshOnce = singleton((refreshMenu: () => void) => {
const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = {
[StatusDisplayType.Name]:
'plugins.discord.menu.set-status-display-type.submenu.youtube-music',
'plugins.discord.menu.set-status-display-type.submenu.pear-desktop',
[StatusDisplayType.State]:
'plugins.discord.menu.set-status-display-type.submenu.artist',
[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',
checked: config.playOnYouTubeMusic,
checked: config.playOnPearDesktop,
click(item: Electron.MenuItem) {
setConfig({
playOnYouTubeMusic: item.checked,
playOnPearDesktop: item.checked,
});
},
},

View File

@ -28,16 +28,16 @@ export const buildDiscordButtons = (
songInfo: SongInfo,
): GatewayActivityButton[] | undefined => {
const buttons: GatewayActivityButton[] = [];
if (config.playOnYouTubeMusic && songInfo.url) {
if (config.playOnPearDesktop && songInfo.url) {
buttons.push({
label: 'Play on YouTube Music',
label: 'Play on Pear Desktop',
url: songInfo.url,
});
}
if (!config.hideGitHubButton) {
buttons.push({
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;

View File

@ -3,7 +3,12 @@ import { join } from 'node:path';
import { randomBytes } from 'node:crypto';
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 filenamify from 'filenamify';
import { Mutex } from 'async-mutex';
@ -28,18 +33,18 @@ import {
import { getNetFetchAsFetch } from '@/plugins/utils/main';
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 { BackendContext } from '@/types/contexts';
import type { GetPlayerResponse } from '@/types/get-player-response';
import type { FormatOptions } from 'node_modules/youtubei.js/dist/src/types';
import type { VideoInfo } from 'node_modules/youtubei.js/dist/src/parser/youtube';
import type { PlayerErrorMessage } from 'node_modules/youtubei.js/dist/src/parser/nodes';
import type { FormatOptions } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/types';
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/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/nodes';
import type {
TrackInfo,
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 };
@ -56,7 +61,7 @@ let yt: Innertube;
let win: BrowserWindow;
let playingUrl: string;
const isYouTubeMusicPremium = async () => {
const isPremium = async () => {
// If signed out, it is understood as non-premium
const isSignedIn = (await win.webContents.executeJavaScript(
'!!yt.config_.LOGGED_IN',
@ -66,7 +71,7 @@ const isYouTubeMusicPremium = async () => {
// If signed in, check if the upgrade button is present
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;
// 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) => {
return (
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)
@ -192,7 +197,7 @@ export const onMainLoad = async ({
}
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;
});
ipc.handle('download-playlist-request', async (url: string) =>
@ -298,8 +303,8 @@ function downloadSongOnFinishSetup({
}
});
ipcMain.on('ytmd:player-api-loaded', () => {
ipc.send('ytmd:setup-time-changed-listener');
ipcMain.on('peard:player-api-loaded', () => {
ipc.send('peard:setup-time-changed-listener');
});
}
@ -390,7 +395,7 @@ async function downloadSongUnsafe(
}
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.
format: 'any', // Media container format
};
@ -400,7 +405,7 @@ async function downloadSongUnsafe(
let targetFileExtension: string;
if (!presetSetting?.extension) {
targetFileExtension =
YoutubeFormatList.find((it) => it.itag === format.itag)?.container ??
VideoFormatList.find((it) => it.itag === format.itag)?.container ??
'mp3';
} else {
targetFileExtension = presetSetting?.extension ?? 'mp3';

View File

@ -10,7 +10,7 @@ export const sendFeedback = (win: BrowserWindow, message?: unknown) => {
export const cropMaxWidth = (image: Electron.NativeImage) => {
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) {
return image.crop({
x: 280,

View File

@ -19,7 +19,7 @@ export const DefaultPresetList: Record<string, Preset> = {
},
};
export interface YouTubeFormat {
export interface VideoFormat {
itag: number;
container: string;
content: string;
@ -29,9 +29,9 @@ export interface YouTubeFormat {
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
export const YoutubeFormatList: YouTubeFormat[] = [
export const VideoFormatList: VideoFormat[] = [
{
itag: 5,
container: 'flv',

View File

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

View File

@ -1,7 +1,7 @@
import { createPlugin } from '@/utils';
import { t } from '@/i18n';
import type { YoutubePlayer } from '@/types/youtube-player';
import type { MusicPlayer } from '@/types/music-player';
export default createPlugin({
name: () => t('plugins.exponential-volume.name'),
@ -12,7 +12,7 @@ export default createPlugin({
},
renderer: {
onPlayerApiReady(playerApi) {
const syncVolume = (playerApi: YoutubePlayer) => {
const syncVolume = (playerApi: MusicPlayer) => {
if (playerApi.getPlayerState() === 3) {
setTimeout(() => syncVolume(playerApi), 0);
return;
@ -21,8 +21,8 @@ export default createPlugin({
playerApi.setVolume(playerApi.getVolume());
};
// "YouTube Music fix volume ratio 0.4" by Marco Pfeiffer
// https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/
// "fix volume ratio 0.4" by Marco Pfeiffer
// https://bit.ly/4nMu2WF
// 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

View File

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

View File

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

View File

@ -278,7 +278,7 @@ export const PanelItem = (props: PanelItemProps) => {
};
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') {
props.onChange?.(!props.checked);
} else if (props.type === 'checkbox') {

View File

@ -3,7 +3,7 @@
--menu-bar-height: 32px;
}
/* youtube-music style */
/* original style */
ytmusic-app-layout {
overflow: auto scroll;
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) ));
}
/* 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 {
scrollbar-color: unset;
}

View File

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

View File

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

View File

@ -7,13 +7,13 @@ export const extractToken = (cookie = document.cookie) =>
export const getHash = async (
papisid: string,
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();
export const getAuthorizationHeader = async (
papisid: string,
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)}`;
};

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';
type QueueRendererResponse = {
@ -13,7 +13,7 @@ export const getMusicQueueRenderer = async (
videoIds: string[],
): Promise<QueueRendererResponse | null> => {
const queue = document.querySelector<QueueElement>('#queue');
const app = document.querySelector<YouTubeMusicAppElement>('ytmusic-app');
const app = document.querySelector<MusicPlayerAppElement>('ytmusic-app');
if (!app) return null;
const store = queue?.queue.store.store;

View File

@ -127,7 +127,7 @@ export default (
const getButton = (kind: keyof typeof mediaIcons) =>
`<action ${display(
kind,
)} activationType="protocol" arguments="youtubemusic://${kind}"/>`;
)} activationType="protocol" arguments="peardesktop://${kind}"/>`;
const getButtons = (isPaused: boolean) => `\
<actions>
@ -260,7 +260,7 @@ export default (
songControls = getSongControls(win);
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 lastUrl: string | undefined;

View File

@ -3,7 +3,7 @@ import fs from 'node:fs';
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';
@ -46,7 +46,7 @@ export const notificationImage = (
config: NotificationsPluginConfig,
) => {
if (!songInfo.image) {
return youtubeMusicIcon;
return musicPlayerIcon;
}
if (!config.interactive) {
@ -71,7 +71,7 @@ export const saveImage = (img: NativeImage, savePath: string) => {
} catch (error: unknown) {
console.error('Error writing song icon to disk:');
console.trace(error);
return youtubeMusicIcon;
return musicPlayerIcon;
}
return savePath;

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
win[hkey_script] = true;
/** @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 h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
return class PromiseExternal extends Promise {
@ -64,7 +64,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
})();
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 = (() => {
@ -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
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
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;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => {
win[hkey_script] = true;
/** @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 h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
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
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
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;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

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