diff --git a/package.json b/package.json index 73f8bc1..6f4bca7 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "SSPM Simply Plays Music", "main": "src/main.js", + "type": "module", "scripts": { "start": "electron .", "test": "echo \"Error: no test specified\" && exit 1" @@ -13,6 +14,7 @@ "electron": "^33.0.1" }, "dependencies": { - "@electron/remote": "^2.1.2" + "id3js": "^2.1.1", + "mp3-duration": "^1.1.0" } } diff --git a/src/id3-parse.js b/src/id3-parse.js new file mode 100644 index 0000000..292e1f0 --- /dev/null +++ b/src/id3-parse.js @@ -0,0 +1,16 @@ +const id3 = require('id3js'); +const ipcMain = require('ipc-main'); + +ipcMain.on('getAudioInfo', function(event, file) { + let id3tags; + + id3.fromFile(file).then(function(tags) { + id3tags = tags; + }).catch(function(reason) { + console.log(reason); + }) + + return id3tags; +}); + + diff --git a/src/index.html b/src/index.html index c5f6731..922cc50 100644 --- a/src/index.html +++ b/src/index.html @@ -1,21 +1,22 @@ - - - - - - Hello from Electron renderer! - - -

Hello from Electron renderer!

-

👋

- - - \ No newline at end of file + + + + + + Menu + + +
Library
+
+ + + + diff --git a/src/main.js b/src/main.js index 79a8abd..a8e6b73 100644 --- a/src/main.js +++ b/src/main.js @@ -1,16 +1,25 @@ -const { app, BrowserWindow } = require('electron'); -// const { initialize, enable } = require('@electron/remote/main'); -const path = require('node:path'); +// const { app, BrowserWindow, ipcMain } = require('electron'); +// const { fromUrl } = require('id3js'); +// const path = require('node:path'); +import { app, BrowserWindow, ipcMain } from 'electron'; +import { fromPath } from 'id3js'; +import path from 'node:path'; +import { dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { readdir, promises } from 'fs'; -// initialize(); +let win; const createWindow = () => { - const win = new BrowserWindow({ + const filename = fileURLToPath(import.meta.url); + + win = new BrowserWindow({ width: 800, height: 600, webPreferences: { - preload: path.join(__dirname, 'preload.js') + preload: path.join(dirname(filename), 'preload.js'), + contextIsolation: true } }); @@ -19,6 +28,18 @@ const createWindow = () => { }; app.whenReady().then(() => { + // ipcMain.handle('getAudioInfo', function(event, url) { + // let info; + + // fromUrl(url).then(function(tags) { + // info = tags; + // }).catch(function(reason) { + // console.log(reason); + // }); + + // return info; + // }); + createWindow(); app.on('activate', () => { @@ -32,4 +53,43 @@ app.on('window-all-closed', () => { app.quit(); }); +ipcMain.handle('readMusicLibrary', function(event, path) { + let files = promises.readdir(path) + .then(function(files) { + if (files) { + return files; + } else { + return -1; + } + }) + .catch(err => { + console.log(err); + }); + + return files; +}); + +ipcMain.handle('getAudioInfo', function(event, url) { + let id3tags = fromPath(url).then(function(tags) { + return tags; + }).catch(function(reason) { + console.log(reason); + }) + + return id3tags; +}); + +// function getAudioInfo(url) { +// let info; + +// fromUrl(url).then((tags) => { +// info = tags; +// }); + +// return info; +// } + +// ipcMain.on('A', (event, args) => { + +// }); diff --git a/src/preload.js b/src/preload.js index 561df48..540e870 100644 --- a/src/preload.js +++ b/src/preload.js @@ -1,7 +1,24 @@ -const { contextBridge } = require('electron/renderer') +const { ipcRenderer, contextBridge } = require('electron/renderer'); +// const { fromUrl } = require('id3js'); -contextBridge.exposeInMainWorld('versions', { - node: () => process.versions.node, - chrome: () => process.versions.chrome, - electron: () => process.versions.electron -}) +// import { ipcRenderer, contextBridge, ipcMain } from "electron"; +// import Main from "electron/main"; +// import { fromUrl } from "id3js"; + +contextBridge.exposeInMainWorld('api', { + // sendToA: function() { + // ipcRenderer.send('A'); + // }, + // recieveFromD: function(func){ + // ipcRenderer.on('D', (event, args) => func(event, args)); + // }, + // getAudioInfo: function(url) { + // return Main.getAudioInfo(url); + // } + getAudioInfo: function(url) { + return ipcRenderer.invoke('getAudioInfo', url); + }, + readMusicLibrary: function(path) { + return ipcRenderer.invoke('readMusicLibrary', path); + } +}); diff --git a/src/renderer.js b/src/renderer.js index d4022b2..87cd24e 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -1,6 +1,40 @@ +// const { fromUrl } = require('id3js'); +// const { fromUrl } = id3js; + +// import fromUrl from id3js; + console.log('test'); -const player = new Audio('file://C:\\Users\\JISAUAY\\Documents\\misc\\sspm\\test.mp3'); -player.play().catch(e => - console.error("Audio play failed with " + e) -); \ No newline at end of file +// const url = 'file://C:\\Users\\JISAUAY\\Documents\\misc\\sspm\\test.ogg'; +// const path = 'C:\\Users\\JISAUAY\\Documents\\misc\\sspm\\ChangelingForest.mp3'; +const libPath = 'C:\\Users\\JISAUAY\\Documents\\misc\\sspm\\test-library\\' + +// const player = new Audio(url); + +// let info = window.api.getAudioInfo(url); +// const test = async function() { +// const info = await window.api.getAudioInfo(path); +// console.log(info); +// }; +async function getLibraryFiles() { + const dirInfo = await window.api.readMusicLibrary(libPath); + console.log(dirInfo); +} + + +document.addEventListener('DOMContentLoaded', async () => { + const libContentDisplay = document.getElementById('libContents'); + + let files = await getLibraryFiles(); +}); + +// fromUrl(url).then((tags) => { +// console.log(tags); +// }); + +// player.play().catch(e => +// console.error("Audio play failed with " + e) +// ); + + +// https://www.debugandrelease.com/the-ultimate-electron-guide/ seems decent \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..e69de29 diff --git a/test-library/ChangelingForest.mp3 b/test-library/ChangelingForest.mp3 new file mode 100644 index 0000000..e44fe11 Binary files /dev/null and b/test-library/ChangelingForest.mp3 differ diff --git a/test-library/ORDER.mp3 b/test-library/ORDER.mp3 new file mode 100644 index 0000000..f80bd19 Binary files /dev/null and b/test-library/ORDER.mp3 differ diff --git a/test.mp3 b/test-library/test.mp3 similarity index 100% rename from test.mp3 rename to test-library/test.mp3 diff --git a/test-library/test.ogg b/test-library/test.ogg new file mode 100644 index 0000000..6547a3b Binary files /dev/null and b/test-library/test.ogg differ