mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-02-03 21:17:53 +00:00
Compare commits
1 Commits
renovate/e
...
renovate/f
| Author | SHA1 | Date | |
|---|---|---|---|
| ac80bd6652 |
51
package.json
51
package.json
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "youtube-music",
|
"name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063",
|
||||||
"desktopName": "com.github.th_ch.youtube_music",
|
"desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063",
|
||||||
"productName": "YouTube Music",
|
"productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063",
|
||||||
"version": "3.11.0",
|
"version": "3.11.0",
|
||||||
"description": "YouTube Music Desktop App - including custom plugins",
|
"description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins",
|
||||||
"main": "./dist/main/index.js",
|
"main": "./dist/main/index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -46,7 +46,7 @@
|
|||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"vite": "npm:rolldown-vite@7.3.1",
|
"vite": "npm:rolldown-vite@7.3.1",
|
||||||
"node-gyp": "12.2.0",
|
"node-gyp": "11.5.0",
|
||||||
"xml2js": "0.6.2",
|
"xml2js": "0.6.2",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
"@electron/universal": "3.0.2",
|
"@electron/universal": "3.0.2",
|
||||||
@ -64,9 +64,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dehoist/romanize-thai": "1.0.0",
|
"@dehoist/romanize-thai": "1.0.0",
|
||||||
"@electron-toolkit/tsconfig": "2.0.0",
|
"@electron-toolkit/tsconfig": "1.0.1",
|
||||||
"@electron/remote": "2.1.3",
|
"@electron/remote": "2.1.3",
|
||||||
"@ffmpeg.wasm/core-mt": "0.12.0",
|
"@ffmpeg.wasm/core-mt": "0.13.2",
|
||||||
"@ffmpeg.wasm/main": "0.12.0",
|
"@ffmpeg.wasm/main": "0.12.0",
|
||||||
"@floating-ui/dom": "1.7.5",
|
"@floating-ui/dom": "1.7.5",
|
||||||
"@foobar404/wave": "2.0.5",
|
"@foobar404/wave": "2.0.5",
|
||||||
@ -75,7 +75,7 @@
|
|||||||
"@hono/node-server": "1.19.9",
|
"@hono/node-server": "1.19.9",
|
||||||
"@hono/node-ws": "1.3.0",
|
"@hono/node-ws": "1.3.0",
|
||||||
"@hono/swagger-ui": "0.5.3",
|
"@hono/swagger-ui": "0.5.3",
|
||||||
"@hono/zod-openapi": "1.2.1",
|
"@hono/zod-openapi": "1.2.0",
|
||||||
"@hono/zod-validator": "0.7.6",
|
"@hono/zod-validator": "0.7.6",
|
||||||
"@jellybrick/dbus-next": "0.10.3",
|
"@jellybrick/dbus-next": "0.10.3",
|
||||||
"@jellybrick/electron-better-web-request": "2.0.0",
|
"@jellybrick/electron-better-web-request": "2.0.0",
|
||||||
@ -89,26 +89,27 @@
|
|||||||
"butterchurn": "3.0.0-beta.5",
|
"butterchurn": "3.0.0-beta.5",
|
||||||
"butterchurn-presets": "3.0.0-beta.4",
|
"butterchurn-presets": "3.0.0-beta.4",
|
||||||
"color": "5.0.3",
|
"color": "5.0.3",
|
||||||
"conf": "15.0.2",
|
"conf": "14.0.0",
|
||||||
"custom-electron-prompt": "1.6.1",
|
"custom-electron-prompt": "1.6.1",
|
||||||
"deepmerge-ts": "7.1.5",
|
"deepmerge-ts": "7.1.5",
|
||||||
|
"delay": "6.0.0",
|
||||||
"electron-debug": "4.1.0",
|
"electron-debug": "4.1.0",
|
||||||
"electron-is": "3.0.0",
|
"electron-is": "3.0.0",
|
||||||
"electron-localshortcut": "3.2.1",
|
"electron-localshortcut": "3.2.1",
|
||||||
"electron-store": "11.0.2",
|
"electron-store": "10.1.0",
|
||||||
"electron-unhandled": "5.0.0",
|
"electron-unhandled": "5.0.0",
|
||||||
"electron-updater": "6.7.3",
|
"electron-updater": "6.7.3",
|
||||||
"es-hangul": "2.3.8",
|
"es-hangul": "2.3.8",
|
||||||
"fast-average-color": "9.5.0",
|
"fast-average-color": "9.5.0",
|
||||||
"fast-equals": "6.0.0",
|
"fast-equals": "5.4.0",
|
||||||
"fflate": "0.8.2",
|
"fflate": "0.8.2",
|
||||||
"filenamify": "7.0.1",
|
"filenamify": "6.0.0",
|
||||||
"hanja": "1.1.5",
|
"hanja": "1.1.5",
|
||||||
"happy-dom": "20.5.0",
|
"happy-dom": "20.4.0",
|
||||||
"hono": "4.11.7",
|
"hono": "4.11.7",
|
||||||
"howler": "2.2.4",
|
"howler": "2.2.4",
|
||||||
"html-to-text": "9.0.5",
|
"html-to-text": "9.0.5",
|
||||||
"i18next": "25.8.0",
|
"i18next": "25.5.2",
|
||||||
"jimp": "1.6.0",
|
"jimp": "1.6.0",
|
||||||
"keyboardevent-from-electron-accelerator": "2.0.0",
|
"keyboardevent-from-electron-accelerator": "2.0.0",
|
||||||
"keyboardevents-areequal": "0.2.2",
|
"keyboardevents-areequal": "0.2.2",
|
||||||
@ -134,13 +135,13 @@
|
|||||||
"vudio": "2.1.1",
|
"vudio": "2.1.1",
|
||||||
"x11": "2.3.0",
|
"x11": "2.3.0",
|
||||||
"youtubei.js": "^16.0.1",
|
"youtubei.js": "^16.0.1",
|
||||||
"zod": "4.3.6"
|
"zod": "4.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@electron-toolkit/tsconfig": "2.0.0",
|
"@electron-toolkit/tsconfig": "1.0.1",
|
||||||
"@eslint/js": "9.39.2",
|
"@eslint/js": "9.39.2",
|
||||||
"@malept/flatpak-bundler": "0.4.0",
|
"@malept/flatpak-bundler": "0.4.0",
|
||||||
"@playwright/test": "1.58.1",
|
"@playwright/test": "1.58.0",
|
||||||
"@stylistic/eslint-plugin": "5.7.1",
|
"@stylistic/eslint-plugin": "5.7.1",
|
||||||
"@total-typescript/ts-reset": "0.6.1",
|
"@total-typescript/ts-reset": "0.6.1",
|
||||||
"@types/electron-localshortcut": "3.1.3",
|
"@types/electron-localshortcut": "3.1.3",
|
||||||
@ -151,11 +152,11 @@
|
|||||||
"bufferutil": "4.1.0",
|
"bufferutil": "4.1.0",
|
||||||
"builtin-modules": "5.0.0",
|
"builtin-modules": "5.0.0",
|
||||||
"cross-env": "10.1.0",
|
"cross-env": "10.1.0",
|
||||||
"del-cli": "7.0.0",
|
"del-cli": "6.0.0",
|
||||||
"discord-api-types": "0.38.38",
|
"discord-api-types": "0.38.37",
|
||||||
"electron": "40.1.0",
|
"electron": "40.1.0",
|
||||||
"electron-builder": "26.7.0",
|
"electron-builder": "26.4.0",
|
||||||
"electron-builder-squirrel-windows": "26.7.0",
|
"electron-builder-squirrel-windows": "26.4.0",
|
||||||
"electron-devtools-installer": "4.0.0",
|
"electron-devtools-installer": "4.0.0",
|
||||||
"electron-vite": "5.0.0",
|
"electron-vite": "5.0.0",
|
||||||
"eslint": "9.39.2",
|
"eslint": "9.39.2",
|
||||||
@ -165,11 +166,11 @@
|
|||||||
"eslint-plugin-import": "2.32.0",
|
"eslint-plugin-import": "2.32.0",
|
||||||
"eslint-plugin-prettier": "5.5.5",
|
"eslint-plugin-prettier": "5.5.5",
|
||||||
"eslint-plugin-solid": "0.14.5",
|
"eslint-plugin-solid": "0.14.5",
|
||||||
"glob": "13.0.0",
|
"glob": "11.1.0",
|
||||||
"node-gyp": "12.2.0",
|
"node-gyp": "11.5.0",
|
||||||
"ts-morph": "27.0.2",
|
"ts-morph": "27.0.2",
|
||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
"typescript-eslint": "8.54.0",
|
"typescript-eslint": "8.53.1",
|
||||||
"utf-8-validate": "6.0.6",
|
"utf-8-validate": "6.0.6",
|
||||||
"vite": "npm:rolldown-vite@7.3.1",
|
"vite": "npm:rolldown-vite@7.3.1",
|
||||||
"vite-plugin-inspect": "11.3.3",
|
"vite-plugin-inspect": "11.3.3",
|
||||||
@ -183,4 +184,4 @@
|
|||||||
"unreleased": true,
|
"unreleased": true,
|
||||||
"output": "changelog.md"
|
"output": "changelog.md"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
847
pnpm-lock.yaml
generated
847
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -161,8 +161,7 @@
|
|||||||
"default": "Par défaut",
|
"default": "Par défaut",
|
||||||
"force-show": "Forcer à apparaître",
|
"force-show": "Forcer à apparaître",
|
||||||
"hide": "Cacher",
|
"hide": "Cacher",
|
||||||
"label": "Boutons « J'aime »",
|
"label": "Boutons « J'aime »"
|
||||||
"swap": "Inverser l'order des boutons like"
|
|
||||||
},
|
},
|
||||||
"remove-upgrade-button": "Supprimer le bouton de mise à niveau",
|
"remove-upgrade-button": "Supprimer le bouton de mise à niveau",
|
||||||
"theme": {
|
"theme": {
|
||||||
@ -413,17 +412,6 @@
|
|||||||
"no-captions": "Aucun sous-titres disponibles pour cette chanson"
|
"no-captions": "Aucun sous-titres disponibles pour cette chanson"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clock": {
|
|
||||||
"description": "Ajoute une horloge a la barre de navigation",
|
|
||||||
"menu": {
|
|
||||||
"format": {
|
|
||||||
"24-hour-format": "Format 24 heures",
|
|
||||||
"display-seconds": "Afficher les secondes",
|
|
||||||
"label": "Format"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"name": "Horloge"
|
|
||||||
},
|
|
||||||
"compact-sidebar": {
|
"compact-sidebar": {
|
||||||
"description": "Toujours définir la barre latérale en mode compact",
|
"description": "Toujours définir la barre latérale en mode compact",
|
||||||
"name": "Barre latérale compacte"
|
"name": "Barre latérale compacte"
|
||||||
|
|||||||
@ -396,17 +396,6 @@
|
|||||||
"no-captions": "Pre túto skladbu nie sú dostupné žiadne titulky"
|
"no-captions": "Pre túto skladbu nie sú dostupné žiadne titulky"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clock": {
|
|
||||||
"description": "Pridať hodiny do navigačnej lišty",
|
|
||||||
"menu": {
|
|
||||||
"format": {
|
|
||||||
"24-hour-format": "24-hodinový formát",
|
|
||||||
"display-seconds": "Zobraz sekundy",
|
|
||||||
"label": "Formát"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"name": "Hodiny"
|
|
||||||
},
|
|
||||||
"compact-sidebar": {
|
"compact-sidebar": {
|
||||||
"description": "Vždy nastaviť bočný panel do kompaktného režimu",
|
"description": "Vždy nastaviť bočný panel do kompaktného režimu",
|
||||||
"name": "Kompaktný bočný panel"
|
"name": "Kompaktný bočný panel"
|
||||||
@ -473,8 +462,8 @@
|
|||||||
"set-status-display-type": {
|
"set-status-display-type": {
|
||||||
"label": "Text stavu",
|
"label": "Text stavu",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"application": "Počúvať {{applicationName}}",
|
|
||||||
"artist": "Aktuálne si prehráva {artist}",
|
"artist": "Aktuálne si prehráva {artist}",
|
||||||
|
"application": "Počúvať {{applicationName}}",
|
||||||
"title": "Aktuálne si prehráva {song title}"
|
"title": "Aktuálne si prehráva {song title}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,15 @@
|
|||||||
import { type DataConnection, Peer, type PeerError } from 'peerjs';
|
import {
|
||||||
|
type DataConnection,
|
||||||
|
Peer,
|
||||||
|
type PeerError,
|
||||||
|
PeerErrorType,
|
||||||
|
} from 'peerjs';
|
||||||
|
import delay from 'delay';
|
||||||
|
|
||||||
import type { Permission, Profile, VideoData } from './types';
|
import type { Permission, Profile, VideoData } from './types';
|
||||||
|
|
||||||
export type ConnectionEventMap = {
|
export type ConnectionEventMap = {
|
||||||
CLEAR_QUEUE: null;
|
CLEAR_QUEUE: {};
|
||||||
ADD_SONGS: { videoList: VideoData[]; index?: number };
|
ADD_SONGS: { videoList: VideoData[]; index?: number };
|
||||||
REMOVE_SONG: { index: number };
|
REMOVE_SONG: { index: number };
|
||||||
MOVE_SONG: { fromIndex: number; toIndex: number };
|
MOVE_SONG: { fromIndex: number; toIndex: number };
|
||||||
@ -98,14 +104,16 @@ export class Connection {
|
|||||||
this.peer.disconnect();
|
this.peer.disconnect();
|
||||||
this.peer.destroy();
|
this.peer.destroy();
|
||||||
});
|
});
|
||||||
this.peer.on('error', (err) => {
|
this.peer.on('error', async (err) => {
|
||||||
if (err.type === 'network') {
|
if (err.type === PeerErrorType.Network) {
|
||||||
setTimeout(() => {
|
// retrying after 10 seconds
|
||||||
try {
|
await delay(10000);
|
||||||
this.peer.reconnect();
|
try {
|
||||||
} catch {}
|
this.peer.reconnect();
|
||||||
}, 10000);
|
return;
|
||||||
return;
|
} catch {
|
||||||
|
//ignored
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.waitOpen.reject(err);
|
this.waitOpen.reject(err);
|
||||||
@ -168,9 +176,7 @@ export class Connection {
|
|||||||
after?: ConnectionEventUnion[],
|
after?: ConnectionEventUnion[],
|
||||||
) {
|
) {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
this.getConnections().map(
|
this.getConnections().map((conn) => conn.send({ type, payload, after })),
|
||||||
(conn) => conn.send({ type, payload, after }) ?? Promise.resolve(),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -224,7 +224,7 @@ export default createPlugin<
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.queue?.clear();
|
this.queue?.clear();
|
||||||
await this.connection?.broadcast('CLEAR_QUEUE', null);
|
await this.connection?.broadcast('CLEAR_QUEUE', {});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'SET_INDEX': {
|
case 'SET_INDEX': {
|
||||||
@ -413,7 +413,7 @@ export default createPlugin<
|
|||||||
this.ignoreChange = true;
|
this.ignoreChange = true;
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case 'CLEAR_QUEUE': {
|
case 'CLEAR_QUEUE': {
|
||||||
await this.connection?.broadcast('CLEAR_QUEUE', null);
|
await this.connection?.broadcast('CLEAR_QUEUE', {});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'SET_INDEX': {
|
case 'SET_INDEX': {
|
||||||
|
|||||||
@ -316,7 +316,7 @@ export class Queue {
|
|||||||
this.ignoreFlag = true;
|
this.ignoreFlag = true;
|
||||||
this.broadcast({
|
this.broadcast({
|
||||||
type: 'CLEAR_QUEUE',
|
type: 'CLEAR_QUEUE',
|
||||||
payload: null,
|
payload: {},
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user