mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-09 01:31:46 +00:00
chore: improve readability
This commit is contained in:
18
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
18
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -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:
|
||||
|
||||
6
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
6
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -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:
|
||||
|
||||
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@ -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 == '' }}
|
||||
|
||||
6
.github/workflows/winget-submission.yml
vendored
6
.github/workflows/winget-submission.yml
vendored
@ -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
|
||||
|
||||
10
README.md
10
README.md
@ -7,7 +7,7 @@
|
||||
[](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs)
|
||||
[](https://GitHub.com/pear-devs/pear-desktop/releases/)
|
||||
[](https://GitHub.com/pear-devs/pear-desktop/releases/)
|
||||
<!--[](https://aur.archlinux.org/packages/youtube-music-bin)-->
|
||||
<!--[](https://aur.archlinux.org/packages/pear-desktop-bin)-->
|
||||
[](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
|
||||
|
||||
@ -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>
|
||||
|
||||
3790
changelog.md
3790
changelog.md
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
||||
@ -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',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
2
license
2
license
@ -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
|
||||
|
||||
13
package.json
13
package.json
@ -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
10
pnpm-lock.yaml
generated
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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');
|
||||
}
|
||||
},
|
||||
|
||||
@ -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": "حالة ديسكورد",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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": "ডিসকর্ড রিচ প্রেজেন্স",
|
||||
|
||||
@ -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": {
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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 Πλούσια παρουσία",
|
||||
|
||||
@ -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}"
|
||||
}
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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)",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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": "הגדר פסק זמן לחוסר פעילות"
|
||||
}
|
||||
},
|
||||
|
||||
@ -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": "डिस्कॉर्ड रिच प्रेजेंस",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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を聴く"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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 듣는 중"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "डिसकार्ड रिच प्रीसेंस",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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": "வலையொளி இசையில் கேட்கிறது"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -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
|
||||
|
||||
-->
|
||||
|
||||
|
||||
31
src/index.ts
31
src/index.ts
@ -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'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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[]) => {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
@ -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`.',
|
||||
},
|
||||
|
||||
@ -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);
|
||||
});
|
||||
|
||||
|
||||
@ -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 });
|
||||
});
|
||||
|
||||
@ -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();
|
||||
},
|
||||
},
|
||||
|
||||
@ -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(
|
||||
{
|
||||
|
||||
@ -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;
|
||||
},
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
},
|
||||
|
||||
@ -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';
|
||||
/**
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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', () => {
|
||||
|
||||
@ -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,
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
(
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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') {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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) => {
|
||||
|
||||
@ -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>;
|
||||
|
||||
@ -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)}`;
|
||||
};
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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
Reference in New Issue
Block a user