remove local playback ( it's a mess)

This commit is contained in:
vapormusic 2022-08-27 22:56:12 +07:00
parent 43c07b1168
commit ec8389563e
8 changed files with 80 additions and 86 deletions

View file

@ -22,11 +22,11 @@ jobs:
- run: - run:
name: Fetch Application Version name: Fetch Application Version
command: ./resources/version.sh || true command: ./resources/version.sh || true
# - restore_cache: - restore_cache:
# key: dependency-cache-{{ checksum "pnpm-lock.yaml" }} key: dependency-cache-{{ checksum "pnpm-lock.yaml" }}
# - run: - run:
# name: Clear node_airtunes2 cache name: Clear node_airtunes2 cache
# command: rm -rf ~/.pnpm-store/tmp/cf5bc2de2629636ca224995234b8eaa1 || true command: rm -rf ~/.pnpm-store/tmp/cf5bc2de2629636ca224995234b8eaa1 || true
- run: - run:
name: Install Node Dependencies name: Install Node Dependencies
command: pnpm install --frozen-lockfile command: pnpm install --frozen-lockfile

View file

@ -41,8 +41,6 @@
"dependencies": { "dependencies": {
"@sentry/electron": "^4.0.0", "@sentry/electron": "^4.0.0",
"@sentry/integrations": "^7.8.1", "@sentry/integrations": "^7.8.1",
"@types/pouchdb": "^6.4.0",
"@types/pouchdb-node": "^6.1.4",
"adm-zip": "0.4.10", "adm-zip": "0.4.10",
"airtunes2": "git+https://github.com/ciderapp/node_airtunes2.git", "airtunes2": "git+https://github.com/ciderapp/node_airtunes2.git",
"castv2-client": "^1.2.0", "castv2-client": "^1.2.0",
@ -60,16 +58,11 @@
"get-port": "5.1.1", "get-port": "5.1.1",
"jimp": "^0.16.1", "jimp": "^0.16.1",
"lastfmapi": "^0.1.1", "lastfmapi": "^0.1.1",
"level": "^8.0.0",
"leveldown": "^6.1.1",
"mdns-js": "git+https://github.com/ciderapp/node-mdns-js.git", "mdns-js": "git+https://github.com/ciderapp/node-mdns-js.git",
"mpris-service": "^2.1.2", "mpris-service": "^2.1.2",
"music-metadata": "7.12.6", "music-metadata": "7.12.6",
"node-gyp": "^9.1.0", "node-gyp": "^9.1.0",
"node-ssdp": "^4.0.1", "node-ssdp": "^4.0.1",
"pouchdb-adapter-leveldb": "^7.3.0",
"pouchdb-node": "^7.3.0",
"pouchdb-upsert": "^2.2.0",
"qrcode": "^1.5.1", "qrcode": "^1.5.1",
"request": "^2.88.2", "request": "^2.88.2",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",

View file

@ -1178,13 +1178,14 @@ export class BrowserWindow {
`); `);
}); });
ipcMain.handle("scanLibrary", async (event, folders) => { // ipcMain.handle("scanLibrary", async (event, folders) => {
const oldmetadatalist = await LocalFiles.sendOldLibrary(); // // const oldmetadatalist = await LocalFiles.sendOldLibrary();
BrowserWindow.win.webContents.send("getUpdatedLocalList", oldmetadatalist); // // BrowserWindow.win.webContents.send("getUpdatedLocalList", oldmetadatalist);
const metadatalist = await LocalFiles.scanLibrary(); // const metadatalist = await LocalFiles.scanLibrary();
BrowserWindow.win.webContents.send("getUpdatedLocalList", metadatalist); // BrowserWindow.win.webContents.send("getUpdatedLocalList", metadatalist);
LocalFiles.cleanUpDB(); // LocalFiles.localSongs = metadatalist;
}); // // LocalFiles.cleanUpDB();
// });
LocalFiles.eventEmitter.on("newtracks", (data) => { LocalFiles.eventEmitter.on("newtracks", (data) => {
BrowserWindow.win.webContents.send("getUpdatedLocalList", data); BrowserWindow.win.webContents.send("getUpdatedLocalList", data);

View file

@ -1,12 +1,12 @@
import * as PouchDB from "pouchdb-node"; // import * as PouchDB from "pouchdb-node";
import { join } from "path"; // import { join } from "path";
import { app } from "electron"; // import { app } from "electron";
PouchDB.plugin(require("pouchdb-upsert")); // PouchDB.plugin(require("pouchdb-upsert"));
export class ProviderDB { // export class ProviderDB {
public static db: any = null; // public static db: any = null;
static init() { // static init() {
if (ProviderDB.db == null) { // if (ProviderDB.db == null) {
ProviderDB.db = new PouchDB(join(app.getPath("userData"), "tracksdb")); // ProviderDB.db = new PouchDB(join(app.getPath("userData"), "tracksdb"));
} // }
} // }
} // }

View file

@ -1,4 +1,4 @@
import { ProviderDB } from "./db"; // import { ProviderDB } from "./db";
import * as path from "path"; import * as path from "path";
const { readdir } = require("fs").promises; const { readdir } = require("fs").promises;
import { utils } from "../../base/utils"; import { utils } from "../../base/utils";
@ -10,7 +10,7 @@ import { EventEmitter } from "events";
export class LocalFiles { export class LocalFiles {
static localSongs: any = []; static localSongs: any = [];
static localSongsArts: any = []; static localSongsArts: any = [];
public static DB = ProviderDB.db; // public static DB = ProviderDB.db;
static eventEmitter = new EventEmitter(); static eventEmitter = new EventEmitter();
static getDataType(item_id: String | any) { static getDataType(item_id: String | any) {
@ -18,24 +18,24 @@ export class LocalFiles {
else if ((item_id ?? "").startsWith("ciderlocal")) return "track"; else if ((item_id ?? "").startsWith("ciderlocal")) return "track";
} }
static async sendOldLibrary() { // static async sendOldLibrary() {
ProviderDB.init(); // ProviderDB.init();
let rows = (await ProviderDB.db.allDocs({ include_docs: true, attachments: true })).rows.map((item: any) => { // let rows = (await ProviderDB.db.allDocs({ include_docs: true, attachments: true })).rows.map((item: any) => {
return item.doc; // return item.doc;
}); // });
let tracks = rows.filter((item: any) => { // let tracks = rows.filter((item: any) => {
return this.getDataType(item._id) == "track"; // return this.getDataType(item._id) == "track";
}); // });
let arts = rows.filter((item: any) => { // let arts = rows.filter((item: any) => {
return this.getDataType(item._id) == "artwork"; // return this.getDataType(item._id) == "artwork";
}); // });
this.localSongs = tracks; // this.localSongs = tracks;
this.localSongsArts = arts; // this.localSongsArts = arts;
return tracks; // return tracks;
} // }
static async scanLibrary() { static async scanLibrary() {
ProviderDB.init(); // ProviderDB.init();
let folders = utils.getStoreValue("libraryPrefs.localPaths"); let folders = utils.getStoreValue("libraryPrefs.localPaths");
if (folders == null || folders.length == null || folders.length == 0) folders = []; if (folders == null || folders.length == null || folders.length == 0) folders = [];
let files: any[] = []; let files: any[] = [];
@ -109,8 +109,8 @@ export class LocalFiles {
}; };
metadatalistart.push(art); metadatalistart.push(art);
numid += 1; numid += 1;
ProviderDB.db.putIfNotExists(form); // ProviderDB.db.putIfNotExists(form);
ProviderDB.db.putIfNotExists(art); // ProviderDB.db.putIfNotExists(art);
metadatalist.push(form); metadatalist.push(form);
if (this.localSongs.length === 0 && numid % 10 === 0) { if (this.localSongs.length === 0 && numid % 10 === 0) {
@ -138,42 +138,42 @@ export class LocalFiles {
return Array.prototype.concat(...files); return Array.prototype.concat(...files);
} }
static async cleanUpDB() { // static async cleanUpDB() {
let folders = utils.getStoreValue("libraryPrefs.localPaths"); // let folders = utils.getStoreValue("libraryPrefs.localPaths");
let rows = (await ProviderDB.db.allDocs({ include_docs: true, attachments: true })).rows.map((item: any) => { // let rows = (await ProviderDB.db.allDocs({ include_docs: true, attachments: true })).rows.map((item: any) => {
return item.doc; // return item.doc;
}); // });
let tracks = rows.filter((item: any) => { // let tracks = rows.filter((item: any) => {
return ( // return (
this.getDataType(item._id) == "track" && // this.getDataType(item._id) == "track" &&
!folders.some((i: String) => { // !folders.some((i: String) => {
return item["attributes"]["assetUrl"].startsWith("file:///" + i); // return item["attributes"]["assetUrl"].startsWith("file:///" + i);
}) // })
); // );
}); // });
let hashs = tracks.map((i: any) => { // let hashs = tracks.map((i: any) => {
return i._id; // return i._id;
}); // });
for (let hash of hashs) { // for (let hash of hashs) {
try { // try {
ProviderDB.db.get(hash).then(function (doc: any) { // ProviderDB.db.get(hash).then(function (doc: any) {
return ProviderDB.db.remove(doc); // return ProviderDB.db.remove(doc);
}); // });
} catch (e) {} // } catch (e) {}
try { // try {
ProviderDB.db.get(hash.replace("ciderlocal", "ciderlocalart")).then(function (doc: any) { // ProviderDB.db.get(hash.replace("ciderlocal", "ciderlocalart")).then(function (doc: any) {
return ProviderDB.db.remove(doc); // return ProviderDB.db.remove(doc);
}); // });
} catch (e) {} // } catch (e) {}
} // }
} // }
static setupHandlers() { static setupHandlers() {
const app = utils.getExpress(); const app = utils.getExpress();
console.log("Setting up handlers for local files"); console.log("Setting up handlers for local files");
app.get("/ciderlocal/:songs", (req: any, res: any) => { app.get("/ciderlocal/:songs", (req: any, res: any) => {
const audio = atob(req.params.songs.replace(/_/g, "/").replace(/-/g, "+")); const audio = atob(req.params.songs.replace(/_/g, "/").replace(/-/g, "+"));
//console.log('auss', audio) // console.log('auss', LocalFiles.localSongs)
let data = { let data = {
data: LocalFiles.localSongs.filter((f: any) => audio.split(",").includes(f.id)), data: LocalFiles.localSongs.filter((f: any) => audio.split(",").includes(f.id)),
}; };

View file

@ -397,7 +397,7 @@ const CiderAudio = {
constructor() { constructor() {
super(); super();
this._bufferSize = 1024; this._bufferSize = 128;
this._buffers = null; this._buffers = null;
this._initBuffer(); this._initBuffer();
} }

View file

@ -262,7 +262,7 @@
</label> </label>
</div> </div>
</div> </div>
<div class="md-option-line"> <!-- <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
{{'Local files path'}} {{'Local files path'}}
</div> </div>
@ -271,7 +271,7 @@
{{'Edit Paths'}} {{'Edit Paths'}}
</button> </button>
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>

View file

@ -139,7 +139,7 @@
> >
</sidebar-library-item> </sidebar-library-item>
</template> </template>
<template v-if="$root.cfg.libraryPrefs.localPaths.length != 0"> <!-- <template v-if="$root.cfg.libraryPrefs.localPaths.length != 0">
<div class="app-sidebar-header-text" <div class="app-sidebar-header-text"
@click="$root.cfg.general.sidebarCollapsed.localLibrary = !$root.cfg.general.sidebarCollapsed.localLibrary" @click="$root.cfg.general.sidebarCollapsed.localLibrary = !$root.cfg.general.sidebarCollapsed.localLibrary"
:class="{collapsed: $root.cfg.general.sidebarCollapsed.localLibrary}"> :class="{collapsed: $root.cfg.general.sidebarCollapsed.localLibrary}">
@ -148,7 +148,7 @@
<template v-if="!$root.cfg.general.sidebarCollapsed.localLibrary"> <template v-if="!$root.cfg.general.sidebarCollapsed.localLibrary">
<sidebar-playlist :item="{attributes: { name:'Songs'} , id:'ciderlocal'}"></sidebar-playlist> <sidebar-playlist :item="{attributes: { name:'Songs'} , id:'ciderlocal'}"></sidebar-playlist>
</template> </template>
</template> </template> -->
<template v-if="$root.getPlaylistFolderChildren('p.applemusic').length != 0"> <template v-if="$root.getPlaylistFolderChildren('p.applemusic').length != 0">
<div <div
class="app-sidebar-header-text" class="app-sidebar-header-text"