-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscan.js
33 lines (31 loc) · 1.03 KB
/
scan.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const path = require("path");
const config = require("./config");
const fs = require("fs");
const pathCache = [];
const lyrics = [];
function readFilesWithLriExtension(directoryPath) {
const items = fs.readdirSync(directoryPath);
items.forEach((item) => {
const itemPath = path.join(directoryPath, item);
const isDirectory = fs.statSync(itemPath).isDirectory();
if (isDirectory) {
readFilesWithLriExtension(itemPath);
} else {
if (path.extname(item) === ".lrc") {
pathCache.push(path.join(directoryPath, item));
const [song, suffix] = item.split(".lri");
const [singer, title] = song.split(" - ");
lyrics.push({
title: (title ?? "").trim(),
singer: (singer ?? "").trim(),
path: path.join(directoryPath, item),
});
}
}
});
}
module.exports = function scanLyrics() {
const lyricsPath = path.join(__dirname, config.lyricsPath);
readFilesWithLriExtension(lyricsPath);
fs.writeFileSync(config.lyricsCacheFileName, JSON.stringify(lyrics));
};