mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 02:31:45 +00:00
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { BrowserWindow , net } from 'electron';
|
|
|
|
import registerCallback from '../../providers/song-info';
|
|
|
|
const secToMilisec = (t?: number) => t ? Math.round(Number(t) * 1e3) : undefined;
|
|
const previousStatePaused = null;
|
|
|
|
type LumiaData = {
|
|
origin: string;
|
|
eventType: string;
|
|
url?: string;
|
|
videoId?: string;
|
|
playlistId?: string;
|
|
cover?: string|null;
|
|
cover_url?: string|null;
|
|
title?: string;
|
|
artists?: string[];
|
|
status?: string;
|
|
progress?: number;
|
|
duration?: number;
|
|
album_url?: string|null;
|
|
album?: string|null;
|
|
views?: number;
|
|
isPaused?: boolean;
|
|
}
|
|
const data: LumiaData = {
|
|
origin: 'youtubemusic',
|
|
eventType: 'switchSong',
|
|
};
|
|
|
|
|
|
const post = (data: LumiaData) => {
|
|
const port = 39231;
|
|
const headers = {
|
|
'Content-Type': 'application/json',
|
|
'Accept': 'application/json',
|
|
'Access-Control-Allow-Headers': '*',
|
|
'Access-Control-Allow-Origin': '*',
|
|
};
|
|
const url = `http://localhost:${port}/api/media`;
|
|
|
|
net.fetch(url, { method: 'POST', body: JSON.stringify({ token: 'lsmedia_ytmsI7812', data }), headers })
|
|
.catch((error: { code: number, errno: number }) => {
|
|
console.log(
|
|
`Error: '${
|
|
error.code || error.errno
|
|
}' - when trying to access lumiastream webserver at port ${port}`
|
|
);
|
|
});
|
|
};
|
|
|
|
export default (_: BrowserWindow) => {
|
|
registerCallback((songInfo) => {
|
|
if (!songInfo.title && !songInfo.artist) {
|
|
return;
|
|
}
|
|
|
|
if (previousStatePaused === null) {
|
|
data.eventType = 'switchSong';
|
|
} else if (previousStatePaused !== songInfo.isPaused) {
|
|
data.eventType = 'playPause';
|
|
}
|
|
|
|
data.duration = secToMilisec(songInfo.songDuration);
|
|
data.progress = secToMilisec(songInfo.elapsedSeconds);
|
|
data.url = songInfo.url;
|
|
data.videoId = songInfo.videoId;
|
|
data.playlistId = songInfo.playlistId;
|
|
data.cover = songInfo.imageSrc;
|
|
data.cover_url = songInfo.imageSrc;
|
|
data.album_url = songInfo.imageSrc;
|
|
data.title = songInfo.title;
|
|
data.artists = [songInfo.artist];
|
|
data.status = songInfo.isPaused ? 'stopped' : 'playing';
|
|
data.isPaused = songInfo.isPaused;
|
|
data.album = songInfo.album;
|
|
data.views = songInfo.views;
|
|
post(data);
|
|
});
|
|
};
|
|
|
|
|