This repository has been archived on 2023-08-30. You can view files and clone it, but cannot push or open issues/pull-requests.
appcat
/
sonist
Archived
1
0
Fork 0
sonist/main.js

69 lines
1.6 KiB
JavaScript

const { app, BrowserWindow, protocol, Tray } = require('electron')
const path = require('path')
const fs = require('iofs')
const log = console.log
const ROOT = __dirname
const HOME = app.getPath('home')
const MIME_TYPES = {
js: 'application/javascript',
html: 'text/html',
htm: 'text/html',
css: 'text/css',
jpg: 'image/jpg',
png: 'image/png',
gif: 'image/gif'
}
let win = null
let tray = null
function createWindow() {
// 创建浏览器窗口
win = new BrowserWindow({
title: 'sonist',
width: 1024,
height: 600,
frame: false,
resizable: false,
webPreferences: {
webSecurity: false,
experimentalFeatures: true
}
})
// 然后加载应用的 index.html。
win.loadURL('app://sonist/index.html')
}
app.commandLine.appendSwitch('--autoplay-policy', 'no-user-gesture-required')
app.setPath('appData', path.resolve(HOME, '.sonist/'))
protocol.registerStandardSchemes(['app'], { secure: true })
let appPath = app.getPath('appData')
if (!fs.exists(appPath)) {
fs.mkdir(appPath)
fs.mkdir(path.join(appPath, 'lyrics'))
fs.echo('{}', path.join(appPath, 'app.ini'))
fs.echo('[]', path.join(appPath, 'music.db'))
}
// 创建窗口
app.on('ready', () => {
protocol.registerBufferProtocol('app', (req, cb) => {
let file = req.url.replace(/^app:\/\/sonist\//, '')
let ext = path.extname(req.url).slice(1)
let buf = fs.cat(path.resolve(ROOT, file))
cb({ data: buf, mimeType: MIME_TYPES[ext] })
})
tray = new Tray('./images/trays/trayTemplate.png')
tray.on('click', _ => {
win.show()
})
createWindow()
win.tray = tray
win.webContents.openDevTools()
})
一个音乐播放器, 主打本地音乐播放。支持 自动歌词/自动封面/均衡器等常见功能。
JavaScript 60.1%
SCSS 19.2%
HTML 16.9%
CSS 3.8%