feishin/src/main/preload/mpv-player.ts

197 lines
5 KiB
TypeScript
Raw Normal View History

2022-12-19 15:59:14 -08:00
import { ipcRenderer, IpcRendererEvent } from 'electron';
import { PlayerData } from '/@/renderer/store';
2022-12-19 15:59:14 -08:00
const initialize = (data: { extraParameters?: string[]; properties?: Record<string, any> }) => {
return ipcRenderer.invoke('player-initialize', data);
};
const restart = (data: { extraParameters?: string[]; properties?: Record<string, any> }) => {
return ipcRenderer.invoke('player-restart', data);
};
const isRunning = () => {
2023-07-01 19:10:05 -07:00
return ipcRenderer.invoke('player-is-running');
};
const cleanup = () => {
2023-07-01 19:10:05 -07:00
return ipcRenderer.invoke('player-clean-up');
};
const setProperties = (data: Record<string, any>) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-set-properties', data);
};
2022-12-19 15:59:14 -08:00
const autoNext = (data: PlayerData) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-auto-next', data);
2022-12-19 15:59:14 -08:00
};
const currentTime = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-current-time');
2022-12-19 15:59:14 -08:00
};
const mute = (mute: boolean) => {
ipcRenderer.send('player-mute', mute);
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const next = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-next');
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const pause = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-pause');
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const play = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-play');
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const previous = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-previous');
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const seek = (seconds: number) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-seek', seconds);
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const seekTo = (seconds: number) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-seek-to', seconds);
2022-12-19 15:59:14 -08:00
};
const setQueue = (data: PlayerData, pause?: boolean) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-set-queue', data, pause);
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const setQueueNext = (data: PlayerData) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-set-queue-next', data);
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const stop = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-stop');
2022-12-19 15:59:14 -08:00
};
2022-12-19 15:59:14 -08:00
const volume = (value: number) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-volume', value);
2022-12-19 15:59:14 -08:00
};
2022-12-25 00:56:16 -08:00
const quit = () => {
2023-07-01 19:10:05 -07:00
ipcRenderer.send('player-quit');
2022-12-25 00:56:16 -08:00
};
const getCurrentTime = async () => {
2023-07-01 19:10:05 -07:00
return ipcRenderer.invoke('player-get-time');
};
2022-12-19 15:59:14 -08:00
const rendererAutoNext = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-auto-next', cb);
2022-12-19 15:59:14 -08:00
};
const rendererCurrentTime = (cb: (event: IpcRendererEvent, data: number) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-current-time', cb);
2022-12-19 15:59:14 -08:00
};
const rendererNext = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-next', cb);
2022-12-19 15:59:14 -08:00
};
const rendererPause = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-pause', cb);
2022-12-19 15:59:14 -08:00
};
const rendererPlay = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-play', cb);
2022-12-19 15:59:14 -08:00
};
const rendererPlayPause = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-play-pause', cb);
2022-12-19 15:59:14 -08:00
};
const rendererPrevious = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-previous', cb);
2022-12-19 15:59:14 -08:00
};
const rendererStop = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-stop', cb);
2022-12-19 15:59:14 -08:00
};
const rendererSkipForward = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-skip-forward', cb);
};
const rendererSkipBackward = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-skip-backward', cb);
};
const rendererVolumeUp = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-volume-up', cb);
};
const rendererVolumeDown = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-volume-down', cb);
};
const rendererVolumeMute = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-volume-mute', cb);
};
const rendererToggleRepeat = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-toggle-repeat', cb);
};
const rendererToggleShuffle = (cb: (event: IpcRendererEvent, data: PlayerData) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-toggle-shuffle', cb);
};
2022-12-25 00:56:16 -08:00
const rendererQuit = (cb: (event: IpcRendererEvent) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-quit', cb);
2022-12-25 00:56:16 -08:00
};
const rendererError = (cb: (event: IpcRendererEvent, data: string) => void) => {
2023-07-01 19:10:05 -07:00
ipcRenderer.on('renderer-player-error', cb);
};
2022-12-19 15:59:14 -08:00
export const mpvPlayer = {
2023-07-01 19:10:05 -07:00
autoNext,
cleanup,
currentTime,
getCurrentTime,
initialize,
isRunning,
mute,
next,
pause,
play,
previous,
quit,
restart,
seek,
seekTo,
setProperties,
setQueue,
setQueueNext,
stop,
volume,
2022-12-19 15:59:14 -08:00
};
export const mpvPlayerListener = {
2023-07-01 19:10:05 -07:00
rendererAutoNext,
rendererCurrentTime,
rendererError,
rendererNext,
rendererPause,
rendererPlay,
rendererPlayPause,
rendererPrevious,
rendererQuit,
rendererSkipBackward,
rendererSkipForward,
rendererStop,
rendererToggleRepeat,
rendererToggleShuffle,
rendererVolumeDown,
rendererVolumeMute,
rendererVolumeUp,
2022-12-19 15:59:14 -08:00
};
export type MpvPLayer = typeof mpvPlayer;
export type MpvPlayerListener = typeof mpvPlayerListener;