mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-08 09:11:46 +00:00
chore: improve readability
This commit is contained in:
20
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
20
.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:
|
||||
@ -92,4 +92,4 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
||||
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
||||
|
||||
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
|
||||
|
||||
18
README.md
18
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>
|
||||
@ -16,19 +16,19 @@
|
||||
|
||||
- Native look & feel extension
|
||||
|
||||
> [!IMPORTANT]
|
||||
> [!IMPORTANT]
|
||||
> ⚠️ Disclaimer
|
||||
>
|
||||
> **No Affiliation**
|
||||
>
|
||||
>
|
||||
> This project, and its contributors, are not affiliated with, authorized by, endorsed by, or in any way officially connected with Google LLC, YouTube, or any of their subsidiaries or affiliates. **This is an independent, non-profit, and unofficial extension developed by a team of volunteers with the goal of providing a desktop experience.**
|
||||
>
|
||||
> **Trademarks**
|
||||
>
|
||||
>
|
||||
> The names "Google" and "YouTube Music", as well as related names, marks, emblems, and images, are registered trademarks of their respective owners. Any use of these trademarks is for identification and reference purposes only and does not imply any association with the trademark holder. We have no intention of infringing upon these trademarks or causing harm to the trademark holders.
|
||||
>
|
||||
> **Limitation of Liability**
|
||||
>
|
||||
>
|
||||
> This application (extension) is provided "AS IS", and you use it at your own risk. In no event shall the developers or contributors be liable for any claim, damages, or other liability, including any legal consequences, arising from, out of, or in connection with the software or the use or other dealings in the software. The responsibility for any and all outcomes of using this software rests entirely with the user.
|
||||
|
||||
## Content
|
||||
@ -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