JS音乐播放器,实现获取存储本地音频文件,原生JS实现播放,内含可执行程序

完整代码下载地址:JS音乐播放器,实现获取存储本地音频文件
在这里插入图片描述
在这里插入图片描述
main.js

const { app, BrowserWindow, ipcMain, dialog } = require("electron");
const DataStore = require("./utils/DataStore");
let updatedTracks = [];

const myStore = new DataStore({
    name: "Music Data"
})
// console.log(app.getPath('userData'));

app.on("ready", () => {

    let mainWindow = new BrowserWindow({
        width: 600,
        height: 600,
        title: "音乐播放器",
        resizable: false,
        autoHideMenuBar: true,
        webPreferences: {
            nodeIntegration: true
        },
        show: false
    });
    mainWindow.setMenu(null);
    mainWindow.loadFile("./renderer/index.html");
    mainWindow.once("ready-to-show", () => {
        mainWindow.show();
    });
    mainWindow.webContents.on("did-finish-load", () => {
        mainWindow.send("init-data", {
            tracks: myStore.getTracks(),
            volume: myStore.getVolume()
        });
    });
    
//    mainWindow.webContents.openDevTools();

    let addWindow;
    ipcMain.on("set-volume",(event,args)=>{
        myStore.setVolume(args);
    })
    ipcMain.on("add", (event, args) => {
        addWindow = createAddWindow(500, 400, "添加歌曲", mainWindow);
    });
    ipcMain.on("select-music", (event, args) => {
        dialog.showOpenDialog({
            title: "选择音乐",
            properties: ["openFile", "multiSelections"],
            filters: [{ name: 'music', extensions: ['mp3'] }],
            buttonLabel: "选择"
        }).then(files => {
            if (files) event.sender.send("select-files", files);
        });
    });
    ipcMain.on("add-music", (event, args) => {
        if (args.length <= 0) return;
        updatedTracks = myStore.addTracks(args).getTracks();
        mainWindow.send("init-data", updatedTracks);
        addWindow.close();
    });
    ipcMain.on("delete-music", (event, id) => {
        if (id == null) return;
        updatedTracks = myStore.deleteTracks(id).getTracks();
        mainWindow.send("init-data", updatedTracks);
    });
})

function createAddWindow(width, height, title, parent) {
    let win = new BrowserWindow({
        width,
        height,
        title,
        resizable: false,
        webPreferences: {
            nodeIntegration: true
        },
        parent,
        modal: true,
        show: false
    });
    win.setMenu(null);
    win.loadFile("./renderer/add.html");
    win.once("ready-to-show", () => {
        win.show();
    });
    return win;
    // addWindow.webContents.openDevTools();
}

完整代码下载地址:JS音乐播放器,实现获取存储本地音频文件

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐