From ae0fbbc1d3f8d2d2d6edd3217c7e373f842f8c39 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Sun, 26 Jun 2022 08:02:19 +0700 Subject: [PATCH] worki v1 --- src/main/base/browserwindow.ts | 32 ++++------- src/main/base/store.ts | 1 + src/main/base/vcomponents.json | 1 + src/renderer/main/vueapp.js | 5 +- src/renderer/views/app/panels.ejs | 3 + src/renderer/views/components/pathmenu.ejs | 65 ++++++++++++++++++++++ src/renderer/views/pages/settings.ejs | 14 ++++- 7 files changed, 98 insertions(+), 23 deletions(-) create mode 100644 src/renderer/views/components/pathmenu.ejs diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index fd698ad4..caf2d4e5 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -1,5 +1,5 @@ -import { join } from "path"; -import { app, BrowserWindow as bw, ipcMain, ShareMenu, shell, screen } from "electron"; +import {join} from "path"; +import {app, BrowserWindow as bw, ipcMain, ShareMenu, shell, screen, dialog} from "electron"; import * as windowStateKeeper from "electron-window-state"; import * as express from "express"; import * as getPort from "get-port"; @@ -122,6 +122,7 @@ export class BrowserWindow { "components/fullscreen", "components/miniplayer", "components/castmenu", + "components/pathmenu", "components/airplay-modal", "components/artist-chip", "components/hello-world", @@ -1256,7 +1257,7 @@ export class BrowserWindow { "copyright": metadata.common.copyright ?? "", "assetUrl": "file:///" +audio, "contentAdvisory": "", - "releaseDateTime": "2022-05-13T00:23:00Z", + "releaseDateTime": `${metadata?.common?.year ?? '2022'}-05-13T00:23:00Z`, "durationInMillis": Math.floor((metadata.format.duration?? 0) * 1000), "offers": [ @@ -1268,24 +1269,6 @@ export class BrowserWindow { "contentRating": "clean" } }; - - - // let form = {"id": "/ciderlocal?" + audio, - // "type": "library-songs", - // "href": "/ciderlocal?" + audio, - // "artwork": { - // "url": metadata.common.picture != undefined ? "data:image/png;base64,"+metadata.common.picture[0].data.toString('base64')+"" : "", - // }, - // "attributes": - // { "durationInMillis": Math.floor((metadata.format.duration?? 0) * 1000), - // "hasLyrics": false, - // "playParams": { "id": "/ciderlocal?" + audio, "kind": "song", "isLibrary": true, "reporting": false }, - // "trackNumber": 0, - // "discNumber": 0, - // "genreNames": [""], - // "name": metadata.common.title, - // "albumName": metadata.common.album, - // "artistName": metadata.common.artist}} metadatalistart.push({ id : "ciderlocal" + numid, url: metadata.common.picture != undefined ? metadata.common.picture[0].data.toString('base64') : "", @@ -1497,10 +1480,17 @@ export class BrowserWindow { } }); + ipcMain.on('open-appdata', (_event) => { shell.openPath(app.getPath('userData')); }); + ipcMain.handle('folderSelector', async (_event) => { + let u = await dialog.showOpenDialog({ + properties: ['openDirectory','multiSelections'] + }); + return u.filePaths + }); //#region Cider Connect ipcMain.on('cc-auth', (_event) => { diff --git a/src/main/base/store.ts b/src/main/base/store.ts index 6bf6071c..a4fda8a7 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -155,6 +155,7 @@ export class Store { "sortOrder": "asc", "viewAs": "covers" }, + "localPaths": [] }, "audio": { "volume": 1, diff --git a/src/main/base/vcomponents.json b/src/main/base/vcomponents.json index 42f86c68..53232dc8 100644 --- a/src/main/base/vcomponents.json +++ b/src/main/base/vcomponents.json @@ -60,6 +60,7 @@ "components/fullscreen", "components/miniplayer", "components/castmenu", + "components/pathmenu", "components/airplay-modal", "components/artist-chip", "components/hello-world", diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 37ade84b..52d9b817 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -216,6 +216,7 @@ const app = new Vue({ audioPlaybackRate: false, showPlaylist: false, castMenu: false, + pathMenu: false, moreInfo: false, airplayPW: false, settings: false @@ -858,7 +859,7 @@ const app = new Vue({ }) ipcRenderer.on('getUpdatedLocalList', (event, data) => { - console.log("cider-local", data); + // console.log("cider-local", data); this.library.localsongs = data; }) @@ -1072,6 +1073,8 @@ const app = new Vue({ if (this.cfg.general.themeUpdateNotification && !this.isDev) { this.checkForThemeUpdates() } + + ipcRenderer.send("scanLibrary",app.cfg.libraryPrefs.localPaths) }, showFoo(querySelector, time) { clearTimeout(this.idleTimer); diff --git a/src/renderer/views/app/panels.ejs b/src/renderer/views/app/panels.ejs index 2489a2a5..cd5783a1 100644 --- a/src/renderer/views/app/panels.ejs +++ b/src/renderer/views/app/panels.ejs @@ -25,6 +25,9 @@ + + + diff --git a/src/renderer/views/components/pathmenu.ejs b/src/renderer/views/components/pathmenu.ejs new file mode 100644 index 00000000..560bc1e4 --- /dev/null +++ b/src/renderer/views/components/pathmenu.ejs @@ -0,0 +1,65 @@ + + \ No newline at end of file diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index f67799af..a287d74d 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -1147,7 +1147,16 @@ - +
+
+ {{'Local Songs'}} +
+
+ +
+
{{$root.getLz('settings.option.experimental.reinstallwidevine')}} @@ -1523,6 +1532,9 @@ }, filterChange(e) { this.$root.cfg.connectivity.lastfm.filter_types[e.target.value] = e.target.checked; + }, + openLocalSongsPathMenu() { + app.modals.pathMenu = true } } })