From dd6e1443a5276e96fb6af8a8c9ed2fd3b4e40e25 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Tue, 5 Jul 2022 19:34:03 -0700 Subject: [PATCH] Scan Local Files now 46 times faster --- package.json | 3 ++- src/main/providers/local/index.ts | 37 ++++++++++++++++--------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index daa903da..830226a4 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,8 @@ "wallpaper": "5.0.1", "ws": "^8.5.0", "xml2js": "^0.4.23", - "youtube-search-without-api-key": "^1.0.7" + "youtube-search-without-api-key": "^1.0.7", + "cider_utils": "git+https://github.com/ciderapp/cider_utils.git" }, "devDependencies": { "@types/adm-zip": "^0.5.0", diff --git a/src/main/providers/local/index.ts b/src/main/providers/local/index.ts index 3993b8d9..26eb24b7 100644 --- a/src/main/providers/local/index.ts +++ b/src/main/providers/local/index.ts @@ -6,8 +6,7 @@ import * as mm from 'music-metadata'; import {Md5} from 'ts-md5/dist/md5'; import e from "express"; import { EventEmitter } from 'events'; - - +import { parseFile } from 'cider_utils'; export class LocalFiles { static localSongs: any = []; @@ -35,6 +34,7 @@ export class LocalFiles { static async scanLibrary() { ProviderDB.init() + console.time('scanLibrary') let folders = utils.getStoreValue("libraryPrefs.localPaths") if (folders == null || folders.length == null || folders.length == 0) folders = [] console.log('folders', folders) @@ -54,7 +54,7 @@ export class LocalFiles { for (var audio of audiofiles) { try { - const metadata = await mm.parseFile(audio); + const metadata = await parseFile(audio); let lochash = Md5.hashStr(audio) ?? numid; if (metadata != null) { let form = { @@ -80,17 +80,17 @@ export class LocalFiles { // "kind": "podcast", // "isLibrary": true, // "reporting": false }, - "trackNumber": metadata.common.track?.no ?? 0, - "discNumber": metadata.common.disk?.no ?? 0, - "name": metadata.common.title ?? audio.substring(audio.lastIndexOf('\\') + 1), - "albumName": metadata.common.album, - "artistName": metadata.common.artist, - "copyright": metadata.common.copyright ?? "", + "trackNumber": metadata.track_number ?? 0, + "discNumber": metadata.disc_number ?? 0, + "name": metadata.title ?? audio.substring(audio.lastIndexOf('\\') + 1), + "albumName": metadata.album, + "artistName": metadata.artist, + "copyright": metadata.copyright ?? "", "assetUrl": "file:///" + audio, "contentAdvisory": "", - "releaseDateTime": `${metadata?.common?.year ?? '2022'}-05-13T00:23:00Z`, - "durationInMillis": Math.floor((metadata.format.duration ?? 0) * 1000), - "bitrate": Math.floor((metadata.format?.bitrate ?? 0) / 1000), + "releaseDateTime": `${metadata.year ?? '2022'}-05-13T00:23:00Z`, + "durationInMillis": metadata.duration_in_ms ?? 0, + "bitrate": metadata.bitrate ?? 0, "offers": [ { "kind": "get", @@ -99,18 +99,18 @@ export class LocalFiles { ], "contentRating": "clean" }, - flavor: Math.floor((metadata.format?.bitrate ?? 0) / 1000), + flavor: metadata.bitrate, localFilesMetadata: { - lossless: metadata.format?.lossless, - container: metadata.format?.container, - bitDepth: metadata.format?.bitsPerSample ?? 0, - sampleRate: metadata.format?.sampleRate ?? 0, + lossless: true, + container: audio.substring(audio.lastIndexOf('.') + 1), + bitDepth: metadata.bit_depth, + sampleRate: metadata.sample_rate ?? 0, }, }; let art = { id: "ciderlocal" + lochash, _id: "ciderlocalart" + lochash, - url: metadata.common.picture != undefined ? metadata.common.picture[0].data.toString('base64') : "", + url: metadata.artwork != undefined ? metadata.artwork : "", } metadatalistart.push(art) numid += 1; @@ -125,6 +125,7 @@ export class LocalFiles { } this.localSongs = metadatalist; this.localSongsArts = metadatalistart; + console.timeEnd('scanLibrary') return metadatalist; }