Scan Local Files now 46 times faster
This commit is contained in:
parent
9d9447f6cb
commit
dd6e1443a5
2 changed files with 21 additions and 19 deletions
|
@ -80,7 +80,8 @@
|
||||||
"wallpaper": "5.0.1",
|
"wallpaper": "5.0.1",
|
||||||
"ws": "^8.5.0",
|
"ws": "^8.5.0",
|
||||||
"xml2js": "^0.4.23",
|
"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": {
|
"devDependencies": {
|
||||||
"@types/adm-zip": "^0.5.0",
|
"@types/adm-zip": "^0.5.0",
|
||||||
|
|
|
@ -6,8 +6,7 @@ import * as mm from 'music-metadata';
|
||||||
import {Md5} from 'ts-md5/dist/md5';
|
import {Md5} from 'ts-md5/dist/md5';
|
||||||
import e from "express";
|
import e from "express";
|
||||||
import { EventEmitter } from 'events';
|
import { EventEmitter } from 'events';
|
||||||
|
import { parseFile } from 'cider_utils';
|
||||||
|
|
||||||
|
|
||||||
export class LocalFiles {
|
export class LocalFiles {
|
||||||
static localSongs: any = [];
|
static localSongs: any = [];
|
||||||
|
@ -35,6 +34,7 @@ export class LocalFiles {
|
||||||
|
|
||||||
static async scanLibrary() {
|
static async scanLibrary() {
|
||||||
ProviderDB.init()
|
ProviderDB.init()
|
||||||
|
console.time('scanLibrary')
|
||||||
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 = []
|
||||||
console.log('folders', folders)
|
console.log('folders', folders)
|
||||||
|
@ -54,7 +54,7 @@ export class LocalFiles {
|
||||||
|
|
||||||
for (var audio of audiofiles) {
|
for (var audio of audiofiles) {
|
||||||
try {
|
try {
|
||||||
const metadata = await mm.parseFile(audio);
|
const metadata = await parseFile(audio);
|
||||||
let lochash = Md5.hashStr(audio) ?? numid;
|
let lochash = Md5.hashStr(audio) ?? numid;
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
let form = {
|
let form = {
|
||||||
|
@ -80,17 +80,17 @@ export class LocalFiles {
|
||||||
// "kind": "podcast",
|
// "kind": "podcast",
|
||||||
// "isLibrary": true,
|
// "isLibrary": true,
|
||||||
// "reporting": false },
|
// "reporting": false },
|
||||||
"trackNumber": metadata.common.track?.no ?? 0,
|
"trackNumber": metadata.track_number ?? 0,
|
||||||
"discNumber": metadata.common.disk?.no ?? 0,
|
"discNumber": metadata.disc_number ?? 0,
|
||||||
"name": metadata.common.title ?? audio.substring(audio.lastIndexOf('\\') + 1),
|
"name": metadata.title ?? audio.substring(audio.lastIndexOf('\\') + 1),
|
||||||
"albumName": metadata.common.album,
|
"albumName": metadata.album,
|
||||||
"artistName": metadata.common.artist,
|
"artistName": metadata.artist,
|
||||||
"copyright": metadata.common.copyright ?? "",
|
"copyright": metadata.copyright ?? "",
|
||||||
"assetUrl": "file:///" + audio,
|
"assetUrl": "file:///" + audio,
|
||||||
"contentAdvisory": "",
|
"contentAdvisory": "",
|
||||||
"releaseDateTime": `${metadata?.common?.year ?? '2022'}-05-13T00:23:00Z`,
|
"releaseDateTime": `${metadata.year ?? '2022'}-05-13T00:23:00Z`,
|
||||||
"durationInMillis": Math.floor((metadata.format.duration ?? 0) * 1000),
|
"durationInMillis": metadata.duration_in_ms ?? 0,
|
||||||
"bitrate": Math.floor((metadata.format?.bitrate ?? 0) / 1000),
|
"bitrate": metadata.bitrate ?? 0,
|
||||||
"offers": [
|
"offers": [
|
||||||
{
|
{
|
||||||
"kind": "get",
|
"kind": "get",
|
||||||
|
@ -99,18 +99,18 @@ export class LocalFiles {
|
||||||
],
|
],
|
||||||
"contentRating": "clean"
|
"contentRating": "clean"
|
||||||
},
|
},
|
||||||
flavor: Math.floor((metadata.format?.bitrate ?? 0) / 1000),
|
flavor: metadata.bitrate,
|
||||||
localFilesMetadata: {
|
localFilesMetadata: {
|
||||||
lossless: metadata.format?.lossless,
|
lossless: true,
|
||||||
container: metadata.format?.container,
|
container: audio.substring(audio.lastIndexOf('.') + 1),
|
||||||
bitDepth: metadata.format?.bitsPerSample ?? 0,
|
bitDepth: metadata.bit_depth,
|
||||||
sampleRate: metadata.format?.sampleRate ?? 0,
|
sampleRate: metadata.sample_rate ?? 0,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
let art = {
|
let art = {
|
||||||
id: "ciderlocal" + lochash,
|
id: "ciderlocal" + lochash,
|
||||||
_id: "ciderlocalart" + 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)
|
metadatalistart.push(art)
|
||||||
numid += 1;
|
numid += 1;
|
||||||
|
@ -125,6 +125,7 @@ export class LocalFiles {
|
||||||
}
|
}
|
||||||
this.localSongs = metadatalist;
|
this.localSongs = metadatalist;
|
||||||
this.localSongsArts = metadatalistart;
|
this.localSongsArts = metadatalistart;
|
||||||
|
console.timeEnd('scanLibrary')
|
||||||
return metadatalist;
|
return metadatalist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue