@emgeebee/music_downcoder 1.1.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"cleanEmptyFolders.d.ts","sourceRoot":"","sources":["../src/cleanEmptyFolders.ts"],"names":[],"mappings":";AAuEA,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,KAAG,MA0B/D,CAAC"}
1
+ {"version":3,"file":"cleanEmptyFolders.d.ts","sourceRoot":"","sources":["../src/cleanEmptyFolders.ts"],"names":[],"mappings":";AAyFA,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,KAAG,MAgC/D,CAAC"}
@@ -16,6 +16,10 @@ const MEDIA_EXTENSIONS = new Set([
16
16
  ".aif",
17
17
  ]);
18
18
  const isMediaFile = (filename) => MEDIA_EXTENSIONS.has(path.extname(filename).toLowerCase());
19
+ const formatError = (error) => error instanceof Error ? error.message : String(error);
20
+ const logAccessError = (action, dirPath, error) => {
21
+ console.warn(`Could not ${action} ${dirPath}: ${formatError(error)}`);
22
+ };
19
23
  const directoryHasMedia = (dirPath) => {
20
24
  let entries;
21
25
  try {
@@ -43,7 +47,14 @@ const cleanEmptyDirectories = (dirPath) => {
43
47
  return 0;
44
48
  }
45
49
  let removed = 0;
46
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
50
+ let entries;
51
+ try {
52
+ entries = fs.readdirSync(dirPath, { withFileTypes: true });
53
+ }
54
+ catch (error) {
55
+ logAccessError("read", dirPath, error);
56
+ return 0;
57
+ }
47
58
  for (const entry of entries) {
48
59
  if (!entry.isDirectory()) {
49
60
  continue;
@@ -51,9 +62,15 @@ const cleanEmptyDirectories = (dirPath) => {
51
62
  removed += cleanEmptyDirectories(path.join(dirPath, entry.name));
52
63
  }
53
64
  if (!directoryHasMedia(dirPath)) {
54
- fs.rmSync(dirPath, { recursive: true, force: true });
55
- console.log(`Removed ${dirPath}`);
56
- return removed + 1;
65
+ try {
66
+ fs.rmSync(dirPath, { recursive: true, force: true });
67
+ console.log(`Removed ${dirPath}`);
68
+ return removed + 1;
69
+ }
70
+ catch (error) {
71
+ logAccessError("remove", dirPath, error);
72
+ return removed;
73
+ }
57
74
  }
58
75
  return removed;
59
76
  };
@@ -70,7 +87,14 @@ export const cleanEncoderOutputFolders = (configPath) => {
70
87
  continue;
71
88
  }
72
89
  console.log(`Cleaning ${outputRoot}...`);
73
- const entries = fs.readdirSync(outputRoot, { withFileTypes: true });
90
+ let entries;
91
+ try {
92
+ entries = fs.readdirSync(outputRoot, { withFileTypes: true });
93
+ }
94
+ catch (error) {
95
+ logAccessError("read", outputRoot, error);
96
+ continue;
97
+ }
74
98
  for (const entry of entries) {
75
99
  if (!entry.isDirectory()) {
76
100
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"cleanEmptyFolders.js","sourceRoot":"","sources":["../src/cleanEmptyFolders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanEmptyFolders.js","sourceRoot":"","sources":["../src/cleanEmptyFolders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAYA,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,12 @@ if (command === "serve") {
6
6
  else if (command === "clean-empty") {
7
7
  await import("./cleanEmptyFolders.js");
8
8
  }
9
+ else if (command === "sync-meta") {
10
+ await import("./syncMetaFromLocal.js");
11
+ }
12
+ else if (command === "repair-meta-years") {
13
+ await import("./repairMetaYears.js");
14
+ }
9
15
  else {
10
16
  await import("./cli.js");
11
17
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IACxB,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;KAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;IACrC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACzC,CAAC;KAAM,CAAC;IACN,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IACxB,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;KAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;IACrC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACzC,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;IACnC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACzC,CAAC;KAAM,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;IAC3C,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC;KAAM,CAAC;IACN,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AppConfig } from "./config.js";
2
+ import type { Metadata } from "./getMeta.js";
3
+ export declare const isValidMetadata: (value: unknown) => value is Metadata;
4
+ export declare const loadCentralMeta: (metaFile: string) => Record<string, Metadata>;
5
+ export declare const findMetaKey: (central: Record<string, Metadata>, sourcePath: string) => string | null;
6
+ export declare const getMetaForSource: (config: AppConfig, sourcePath: string) => Metadata | null;
7
+ export declare const saveMetaEntry: (config: AppConfig, sourcePath: string, meta: Metadata) => string;
8
+ //# sourceMappingURL=metaStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaStore.d.ts","sourceRoot":"","sources":["../src/metaStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,QAWzD,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,EAAE,QAAQ,CAUzB,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACjC,YAAY,MAAM,KACjB,MAAM,GAAG,IAcX,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,SAAS,EACjB,YAAY,MAAM,KACjB,QAAQ,GAAG,IAIb,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,EACjB,YAAY,MAAM,EAClB,MAAM,QAAQ,KACb,MAYF,CAAC"}
@@ -0,0 +1,57 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { normalizeDir } from "./paths.js";
4
+ export const isValidMetadata = (value) => {
5
+ if (!value || typeof value !== "object") {
6
+ return false;
7
+ }
8
+ const meta = value;
9
+ return (typeof meta.fullArtist === "string" &&
10
+ typeof meta.fullAlbum === "string" &&
11
+ typeof meta.genre === "string" &&
12
+ meta.year !== undefined);
13
+ };
14
+ export const loadCentralMeta = (metaFile) => {
15
+ try {
16
+ const parsed = JSON.parse(fs.readFileSync(metaFile, "utf-8"));
17
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
18
+ return {};
19
+ }
20
+ return parsed;
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ };
26
+ export const findMetaKey = (central, sourcePath) => {
27
+ const normalized = normalizeDir(sourcePath);
28
+ if (central[sourcePath]) {
29
+ return sourcePath;
30
+ }
31
+ if (central[normalized]) {
32
+ return normalized;
33
+ }
34
+ for (const key of Object.keys(central)) {
35
+ if (normalizeDir(key) === normalized) {
36
+ return key;
37
+ }
38
+ }
39
+ return null;
40
+ };
41
+ export const getMetaForSource = (config, sourcePath) => {
42
+ const central = loadCentralMeta(config.metaFile);
43
+ const key = findMetaKey(central, sourcePath);
44
+ return key ? central[key] : null;
45
+ };
46
+ export const saveMetaEntry = (config, sourcePath, meta) => {
47
+ const central = loadCentralMeta(config.metaFile);
48
+ const key = findMetaKey(central, sourcePath) ?? normalizeDir(sourcePath);
49
+ central[key] = meta;
50
+ fs.writeFileSync(config.metaFile, JSON.stringify(central, undefined, 2));
51
+ const albumDir = normalizeDir(sourcePath);
52
+ if (fs.existsSync(albumDir)) {
53
+ fs.writeFileSync(path.join(albumDir, "meta.json"), JSON.stringify(meta));
54
+ }
55
+ return key;
56
+ };
57
+ //# sourceMappingURL=metaStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaStore.js","sourceRoot":"","sources":["../src/metaStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const sanitiseMeta: (meta: string) => string;
2
+ export declare const sanitisePathSegment: (segment: string) => string;
3
+ export declare const buildArtistDirName: (fullArtist: string) => string;
4
+ export declare const buildArtistOutputDir: (outputRoot: string, genre: string, fullArtist: string) => string;
5
+ export interface AlbumFolderMatch {
6
+ folderName: string;
7
+ year: string;
8
+ }
9
+ export declare const findAlbumFolderOnDisk: (artistDir: string, albumName: string) => AlbumFolderMatch | null;
10
+ //# sourceMappingURL=outputPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputPaths.d.ts","sourceRoot":"","sources":["../src/outputPaths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MACC,CAAC;AAE9C,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MACxB,CAAC;AAE/B,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,KAAG,MAGnB,CAAC;AAEtC,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,EAClB,OAAO,MAAM,EACb,YAAY,MAAM,KACjB,MAKA,CAAC;AAKJ,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,gBAAgB,GAAG,IAgCrB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ export const sanitiseMeta = (meta) => meta.replace(/\//g, "_").replace(/:/g, "_");
4
+ export const sanitisePathSegment = (segment) => sanitiseMeta(segment).trim();
5
+ export const buildArtistDirName = (fullArtist) => fullArtist === "Various Artists"
6
+ ? "Compilations"
7
+ : sanitisePathSegment(fullArtist);
8
+ export const buildArtistOutputDir = (outputRoot, genre, fullArtist) => path.join(outputRoot, sanitisePathSegment(genre), buildArtistDirName(fullArtist));
9
+ const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
10
+ export const findAlbumFolderOnDisk = (artistDir, albumName) => {
11
+ if (!fs.existsSync(artistDir)) {
12
+ return null;
13
+ }
14
+ const sanitisedAlbum = sanitisePathSegment(albumName);
15
+ const escapedAlbum = escapeRegex(sanitisedAlbum);
16
+ const yearPrefixPattern = new RegExp(`^\\((\\d{4})\\)\\s+${escapedAlbum}$`, "i");
17
+ const plainPattern = new RegExp(`^${escapedAlbum}$`, "i");
18
+ let plainMatch = null;
19
+ for (const entry of fs.readdirSync(artistDir, { withFileTypes: true })) {
20
+ if (!entry.isDirectory()) {
21
+ continue;
22
+ }
23
+ const yearMatch = entry.name.match(yearPrefixPattern);
24
+ if (yearMatch) {
25
+ return { folderName: entry.name, year: yearMatch[1] };
26
+ }
27
+ if (plainPattern.test(entry.name)) {
28
+ plainMatch = entry.name;
29
+ }
30
+ }
31
+ if (plainMatch) {
32
+ return { folderName: plainMatch, year: "" };
33
+ }
34
+ return null;
35
+ };
36
+ //# sourceMappingURL=outputPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputPaths.js","sourceRoot":"","sources":["../src/outputPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE,CACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE,CAC7D,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAC/D,UAAU,KAAK,iBAAiB;IAC9B,CAAC,CAAC,cAAc;IAChB,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAAkB,EAClB,KAAa,EACb,UAAkB,EACV,EAAE,CACV,IAAI,CAAC,IAAI,CACP,UAAU,EACV,mBAAmB,CAAC,KAAK,CAAC,EAC1B,kBAAkB,CAAC,UAAU,CAAC,CAC/B,CAAC;AAEJ,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAC5C,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAO/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,SAAiB,EACjB,SAAiB,EACQ,EAAE;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,sBAAsB,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;IAE1D,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -23,5 +23,6 @@ export declare const processEncoder: (configKey: ConfigKey, startFolder: string,
23
23
  export declare const listCommandScripts: (appConfig: AppConfig) => string[];
24
24
  export declare const prepareCommandFolders: (appConfig: AppConfig) => void;
25
25
  export declare const clearCommandScripts: (appConfig: AppConfig) => number;
26
+ export declare const regenerateScript: (scriptPath: string, sourcePath: string, appConfig: AppConfig, prompts: Prompts) => Promise<void>;
26
27
  export {};
27
28
  //# sourceMappingURL=processEncoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processEncoder.d.ts","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyB5C,UAAU,aAAa;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAC5C,KAAK,YAAY,CAAC,CAAC,IAAI,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC,CAAC,CAAC,CAAC;AAuDhB,eAAO,MAAM,QAAQ,GAAmB,CAAC,EACvC,OAAO,MAAM,EACb,UAAU,YAAY,CAAC,CAAC,CAAC,EACzB,aAAY,UAAuB,KAClC,OAAO,CAAC,CAAC,EAAE,CAqCb,CAAC;AA8RF,eAAO,MAAM,cAAc,GACzB,WAAW,SAAS,EACpB,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,YAAY,UAAU,EACtB,SAAS,OAAO,KACf,OAAO,CAAC,cAAc,CAsCxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW,SAAS,KAAG,MAAM,EAkB/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,IAO5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,KAAG,MAI1D,CAAC"}
1
+ {"version":3,"file":"processEncoder.d.ts","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA0B5C,UAAU,aAAa;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAC5C,KAAK,YAAY,CAAC,CAAC,IAAI,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC,CAAC,CAAC,CAAC;AAuDhB,eAAO,MAAM,QAAQ,GAAmB,CAAC,EACvC,OAAO,MAAM,EACb,UAAU,YAAY,CAAC,CAAC,CAAC,EACzB,aAAY,UAAuB,KAClC,OAAO,CAAC,CAAC,EAAE,CAqCb,CAAC;AA8RF,eAAO,MAAM,cAAc,GACzB,WAAW,SAAS,EACpB,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,YAAY,UAAU,EACtB,SAAS,OAAO,KACf,OAAO,CAAC,cAAc,CAsCxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW,SAAS,KAAG,MAAM,EAkB/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,IAO5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,KAAG,MAI1D,CAAC;AAoCF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,EAClB,YAAY,MAAM,EAClB,WAAW,SAAS,EACpB,SAAS,OAAO,KACf,OAAO,CAAC,IAAI,CAwDd,CAAC"}
@@ -2,6 +2,9 @@
2
2
  import fs from "fs";
3
3
  import fse from "fs-extra";
4
4
  import path from "path";
5
+ import { buildConfigMap } from "./config.js";
6
+ import { MetaGetter } from "./getMeta.js";
7
+ import { parseEncoderFromFilename } from "./scripts.js";
5
8
  import { relativeFrom, normalizeDir, shellQuote } from "./paths.js";
6
9
  import { setJobProgress } from "./progress.js";
7
10
  const pathSanitiser = (i) => i.replace(/[`\$\"]/g, "\\$&");
@@ -300,4 +303,70 @@ export const clearCommandScripts = (appConfig) => {
300
303
  prepareCommandFolders(appConfig);
301
304
  return count;
302
305
  };
306
+ const findStartFolderForSource = (sourcePath, appConfig) => {
307
+ const normalized = normalizeDir(sourcePath);
308
+ for (const folder of appConfig.startFolders) {
309
+ const base = normalizeDir(folder.path);
310
+ const rel = path.relative(base, normalized);
311
+ if (!rel.startsWith("..")) {
312
+ return base;
313
+ }
314
+ }
315
+ throw new Error(`Source path is not under any configured start folder: ${sourcePath}`);
316
+ };
317
+ const writeScriptFile = (scriptPath, commands, folders) => {
318
+ const mkdirLines = [...folders].sort().map((folder) => `mkdir -p ${shellQuote(folder)}`);
319
+ const scriptBody = commands.join("\n");
320
+ const content = mkdirLines.length > 0 ? `${mkdirLines.join("\n")}\n${scriptBody}` : scriptBody;
321
+ fs.rmSync(scriptPath, { force: true });
322
+ fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
323
+ fs.writeFileSync(scriptPath, content);
324
+ };
325
+ export const regenerateScript = async (scriptPath, sourcePath, appConfig, prompts) => {
326
+ if (!fs.existsSync(scriptPath)) {
327
+ throw new Error(`Script not found: ${scriptPath}`);
328
+ }
329
+ const encoder = parseEncoderFromFilename(path.basename(scriptPath), appConfig);
330
+ const configKey = encoder.id;
331
+ const normalizedSource = normalizeDir(sourcePath);
332
+ const startFolder = findStartFolderForSource(normalizedSource, appConfig);
333
+ const configMap = buildConfigMap(startFolder, [configKey]);
334
+ const noRenamePrompts = {
335
+ ...prompts,
336
+ confirm: async (message, defaultYes) => {
337
+ if (message.startsWith("Rename ")) {
338
+ return false;
339
+ }
340
+ return prompts.confirm(message, defaultYes);
341
+ },
342
+ };
343
+ const metaGetter = new MetaGetter(appConfig, noRenamePrompts);
344
+ const files = fs
345
+ .readdirSync(normalizedSource, { withFileTypes: true })
346
+ .filter((entry) => entry.isFile() && !shouldSkipFile(entry.name))
347
+ .map((entry) => entry.name);
348
+ const context = {
349
+ configKey,
350
+ startFolder,
351
+ metaCache: {},
352
+ configMap,
353
+ metaGetter,
354
+ prompts: noRenamePrompts,
355
+ appConfig,
356
+ };
357
+ const results = await checkFiles(normalizedSource, [], files, context);
358
+ metaGetter.writeBack();
359
+ const commands = [];
360
+ const folders = new Set();
361
+ for (const albumKey of Object.keys(results.commands)) {
362
+ commands.push(...results.commands[albumKey]);
363
+ for (const folder of results.foldersByAlbum[albumKey] ?? []) {
364
+ folders.add(folder);
365
+ }
366
+ }
367
+ if (!commands.length && folders.size === 0) {
368
+ throw new Error("No commands generated — output files may already exist at the new paths");
369
+ }
370
+ writeScriptFile(scriptPath, commands, folders);
371
+ };
303
372
  //# sourceMappingURL=processEncoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processEncoder.js","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processEncoder.js","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ export declare const repairMetaYearsFromAlac: (configPath?: string) => Promise<{
3
+ checked: number;
4
+ updated: number;
5
+ missing: number;
6
+ matched: number;
7
+ }>;
8
+ //# sourceMappingURL=repairMetaYears.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repairMetaYears.d.ts","sourceRoot":"","sources":["../src/repairMetaYears.ts"],"names":[],"mappings":";AAkCA,eAAO,MAAM,uBAAuB,GAClC,aAAa,MAAM,KAClB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA8DhF,CAAC"}
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { getConfig, loadConfig } from "./config.js";
5
+ import { buildArtistOutputDir, findAlbumFolderOnDisk, } from "./outputPaths.js";
6
+ import { createCliPrompts } from "./prompts.js";
7
+ const normalizeYear = (year) => year?.trim() ?? "";
8
+ const loadMetaCache = (metaFile) => {
9
+ try {
10
+ return JSON.parse(fs.readFileSync(metaFile, "utf-8"));
11
+ }
12
+ catch {
13
+ return {};
14
+ }
15
+ };
16
+ const writeLocalBackup = (sourcePath, meta) => {
17
+ const backupFile = path.join(sourcePath, "meta.json");
18
+ if (!fs.existsSync(sourcePath)) {
19
+ return;
20
+ }
21
+ fs.writeFileSync(backupFile, JSON.stringify(meta));
22
+ };
23
+ export const repairMetaYearsFromAlac = async (configPath) => {
24
+ loadConfig(configPath ? path.resolve(configPath) : undefined);
25
+ const config = getConfig();
26
+ const prompts = createCliPrompts();
27
+ const alacEncoder = config.encoders.find((encoder) => encoder.id === "alac");
28
+ if (!alacEncoder) {
29
+ throw new Error("No alac encoder found in config");
30
+ }
31
+ const metaData = loadMetaCache(config.metaFile);
32
+ const entries = Object.entries(metaData);
33
+ let checked = 0;
34
+ let updated = 0;
35
+ let missing = 0;
36
+ let matched = 0;
37
+ for (const [sourcePath, meta] of entries) {
38
+ checked++;
39
+ const artistDir = buildArtistOutputDir(alacEncoder.out, meta.genre, meta.fullArtist);
40
+ const folderMatch = findAlbumFolderOnDisk(artistDir, meta.fullAlbum);
41
+ if (!folderMatch) {
42
+ missing++;
43
+ continue;
44
+ }
45
+ matched++;
46
+ const metaYear = normalizeYear(meta.year);
47
+ const diskYear = normalizeYear(folderMatch.year);
48
+ if (metaYear === diskYear) {
49
+ continue;
50
+ }
51
+ const accept = await prompts.confirm(`Update ${meta.fullArtist} / ${meta.fullAlbum}\n` +
52
+ ` folder: ${folderMatch.folderName}\n` +
53
+ ` meta year: ${metaYear || "(none)"} -> ${diskYear || "(none)"}?`, true);
54
+ if (!accept) {
55
+ continue;
56
+ }
57
+ meta.year = diskYear;
58
+ metaData[sourcePath] = meta;
59
+ writeLocalBackup(sourcePath, meta);
60
+ updated++;
61
+ }
62
+ if (updated > 0) {
63
+ fs.writeFileSync(config.metaFile, JSON.stringify(metaData, undefined, 2));
64
+ }
65
+ return { checked, updated, missing, matched };
66
+ };
67
+ const configArgIndex = process.argv.indexOf("-c");
68
+ const configPath = configArgIndex >= 0 ? process.argv[configArgIndex + 1] : undefined;
69
+ const result = await repairMetaYearsFromAlac(configPath);
70
+ console.log(`Checked ${result.checked} meta entries.`);
71
+ console.log(` matched on disk: ${result.matched}`);
72
+ console.log(` no album folder: ${result.missing}`);
73
+ console.log(` updated: ${result.updated}`);
74
+ //# sourceMappingURL=repairMetaYears.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repairMetaYears.js","sourceRoot":"","sources":["../src/repairMetaYears.ts"],"names":[],"mappings":"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"}
package/dist/run.d.ts CHANGED
@@ -22,6 +22,6 @@ export declare const executeAllScripts: (scripts: string[], config?: AppConfig)
22
22
  output: string;
23
23
  }>;
24
24
  export declare const runBatchShell: (config?: AppConfig) => void;
25
- export { listCommandScripts, prepareCommandFolders, clearCommandScripts } from "./processEncoder.js";
25
+ export { listCommandScripts, prepareCommandFolders, clearCommandScripts, regenerateScript, } from "./processEncoder.js";
26
26
  export { createAutoPrompts, createCliPrompts };
27
27
  //# sourceMappingURL=run.d.ts.map
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAgBjF,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,KAAG,SAOjD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,SAAS,CAiDzE,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA+C1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EAAE,EACjB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAU1C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAQ,SAAuB,KAAG,IAS/D,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAgBjF,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,KAAG,SAOjD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,SAAS,CAiDzE,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA+C1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EAAE,EACjB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAU1C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAQ,SAAuB,KAAG,IAS/D,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/run.js CHANGED
@@ -133,6 +133,6 @@ export const runBatchShell = (config = getConfig()) => {
133
133
  const scripts = listCommandScripts(config);
134
134
  void executeAllScripts(scripts, config);
135
135
  };
136
- export { listCommandScripts, prepareCommandFolders, clearCommandScripts } from "./processEncoder.js";
136
+ export { listCommandScripts, prepareCommandFolders, clearCommandScripts, regenerateScript, } from "./processEncoder.js";
137
137
  export { createAutoPrompts, createCliPrompts };
138
138
  //# sourceMappingURL=run.js.map
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
package/dist/scripts.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { AppConfig } from "./config.js";
2
+ import type { Metadata } from "./getMeta.js";
2
3
  export interface ScriptInfo {
3
4
  path: string;
4
5
  name: string;
@@ -8,7 +9,14 @@ export interface ScriptInfo {
8
9
  type: string;
9
10
  trackCount: number;
10
11
  commands: string[];
12
+ sourcePath: string | null;
13
+ meta: Metadata | null;
11
14
  }
15
+ export declare const parseEncoderFromFilename: (basename: string, config: AppConfig) => {
16
+ id: string;
17
+ label: string;
18
+ };
19
+ export declare const extractSourceDirFromScript: (lines: string[]) => string | null;
12
20
  export declare const describeScript: (scriptPath: string, config: AppConfig) => ScriptInfo;
13
21
  export declare const describeScripts: (scriptPaths: string[], config: AppConfig) => ScriptInfo[];
14
22
  //# sourceMappingURL=scripts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgED,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,QAAQ,SAAS,KAChB,UA8CF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EAAE,EACrB,QAAQ,SAAS,KAChB,UAAU,EAAyE,CAAC"}
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB;AA4BD,eAAO,MAAM,wBAAwB,GACnC,UAAU,MAAM,EAChB,QAAQ,SAAS,KAChB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAS7B,CAAC;AA2BF,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,EAAE,KAAG,MAAM,GAAG,IAkBrE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,QAAQ,SAAS,KAChB,UAmDF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EAAE,EACrB,QAAQ,SAAS,KAChB,UAAU,EAAyE,CAAC"}
package/dist/scripts.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import { getMetaForSource } from "./metaStore.js";
3
4
  import { normalizeDir } from "./paths.js";
4
5
  const extractLastQuotedPath = (line) => {
5
6
  const matches = [...line.matchAll(/"([^"]+)"/g)];
@@ -20,7 +21,7 @@ const countTracks = (lines) => {
20
21
  }
21
22
  return lines.filter((line) => line.trim().length > 0).length;
22
23
  };
23
- const parseEncoderFromFilename = (basename, config) => {
24
+ export const parseEncoderFromFilename = (basename, config) => {
24
25
  for (const encoder of config.encoders) {
25
26
  const suffix = `-${encoder.id}-commands.sh`;
26
27
  if (basename.endsWith(suffix)) {
@@ -45,6 +46,23 @@ const encoderOutForId = (encoderId, config) => {
45
46
  const encoder = config.encoders.find((entry) => entry.id === encoderId);
46
47
  return encoder ? normalizeDir(encoder.out) : null;
47
48
  };
49
+ const unescapeShellPath = (value) => value.replace(/\\([`$"\\])/g, "$1");
50
+ export const extractSourceDirFromScript = (lines) => {
51
+ for (const line of lines) {
52
+ if (line.trimStart().startsWith("mkdir ")) {
53
+ continue;
54
+ }
55
+ const rsyncMatch = line.match(/\brsync\b[^"\n]*"([^"]+)"/);
56
+ if (rsyncMatch) {
57
+ return path.dirname(unescapeShellPath(rsyncMatch[1]));
58
+ }
59
+ const ffmpegMatch = line.match(/\bffmpeg\b[^"\n]*-i\s+"([^"]+)"/);
60
+ if (ffmpegMatch) {
61
+ return path.dirname(unescapeShellPath(ffmpegMatch[1]));
62
+ }
63
+ }
64
+ return null;
65
+ };
48
66
  export const describeScript = (scriptPath, config) => {
49
67
  const basename = path.basename(scriptPath);
50
68
  const encoder = parseEncoderFromFilename(basename, config);
@@ -53,9 +71,10 @@ export const describeScript = (scriptPath, config) => {
53
71
  let album = "Unknown album";
54
72
  let trackCount = 0;
55
73
  let commands = [];
74
+ let lines = [];
56
75
  try {
57
76
  const content = fs.readFileSync(scriptPath, "utf-8");
58
- const lines = content.split("\n");
77
+ lines = content.split("\n");
59
78
  trackCount = countTracks(lines);
60
79
  commands = lines.map((line) => line.trimEnd()).filter((line) => line.length > 0);
61
80
  if (encoderOut) {
@@ -77,6 +96,8 @@ export const describeScript = (scriptPath, config) => {
77
96
  // fall back to filename-based labels below
78
97
  }
79
98
  const displayName = `${artist} / ${album} / ${encoder.label} / ${trackCount}`;
99
+ const sourcePath = extractSourceDirFromScript(lines);
100
+ const meta = sourcePath ? getMetaForSource(config, sourcePath) : null;
80
101
  return {
81
102
  path: scriptPath,
82
103
  name: path.relative(config.commandsFolder, scriptPath),
@@ -86,6 +107,8 @@ export const describeScript = (scriptPath, config) => {
86
107
  type: encoder.label,
87
108
  trackCount,
88
109
  commands,
110
+ sourcePath,
111
+ meta,
89
112
  };
90
113
  };
91
114
  export const describeScripts = (scriptPaths, config) => scriptPaths.map((scriptPath) => describeScript(scriptPath, config));
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -5,8 +5,9 @@ import path from "path";
5
5
  import { fileURLToPath } from "url";
6
6
  import minimist from "minimist";
7
7
  import { getConfig } from "./config.js";
8
- import { createAutoPrompts, clearCommandScripts, executeAllScripts, executeScript, initRuntime, listCommandScripts, runDowncoder, } from "./run.js";
8
+ import { createAutoPrompts, clearCommandScripts, executeAllScripts, executeScript, initRuntime, listCommandScripts, regenerateScript, runDowncoder, } from "./run.js";
9
9
  import { describeScripts } from "./scripts.js";
10
+ import { isValidMetadata, saveMetaEntry } from "./metaStore.js";
10
11
  import { getJobProgress } from "./progress.js";
11
12
  import { appendJobLog, getJobLogs } from "./jobLog.js";
12
13
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -129,6 +130,42 @@ const server = http.createServer(async (req, res) => {
129
130
  sendJson(res, 200, { cleared });
130
131
  return;
131
132
  }
133
+ if (req.method === "POST" && url.pathname === "/api/meta") {
134
+ const body = JSON.parse(await readBody(req));
135
+ if (!body.sourcePath) {
136
+ sendJson(res, 400, { error: "sourcePath is required" });
137
+ return;
138
+ }
139
+ if (!body.scriptPath) {
140
+ sendJson(res, 400, { error: "scriptPath is required" });
141
+ return;
142
+ }
143
+ const meta = {
144
+ fullArtist: body.fullArtist ?? "",
145
+ fullAlbum: body.fullAlbum ?? "",
146
+ genre: body.genre ?? "",
147
+ year: body.year ?? "",
148
+ };
149
+ if (!isValidMetadata(meta)) {
150
+ sendJson(res, 400, { error: "Invalid metadata" });
151
+ return;
152
+ }
153
+ try {
154
+ const metaKey = saveMetaEntry(config, body.sourcePath, meta);
155
+ await regenerateScript(body.scriptPath, body.sourcePath, config, prompts);
156
+ appendJobLog(`Updated metadata and regenerated script for ${meta.fullArtist} / ${meta.fullAlbum}`);
157
+ sendJson(res, 200, {
158
+ metaKey,
159
+ meta,
160
+ scripts: toScriptResponse(listCommandScripts(config)),
161
+ });
162
+ }
163
+ catch (error) {
164
+ const message = error instanceof Error ? error.message : String(error);
165
+ sendJson(res, 500, { error: message });
166
+ }
167
+ return;
168
+ }
132
169
  if (req.method === "POST" && url.pathname === "/api/scripts/run") {
133
170
  if (runningJob) {
134
171
  sendJson(res, 409, { error: "A job is already running" });
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GAEb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC3C,CAAC;AACzB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;AAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC3C,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACvB,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE;IAC5C,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;IAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAgB,CAAC;IACrC,CAAC,CAAC,SAAS,CAAC;AACd,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,WAAW,CAAC,UAAU,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE1C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,YAAY,CACV,mCAAmC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,EACjE,MAAM,CACP,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;AAEjC,MAAM,gBAAgB,GAAG,CAAC,WAAqB,EAAE,EAAE,CACjD,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEvC,IAAI,UAAU,GAAiE,IAAI,CAAC;AACpF,IAAI,WAAW,GAAa,EAAE,CAAC;AAE/B,MAAM,QAAQ,GAAG,CAAC,GAAyB,EAAmB,EAAE,CAC9D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,IAAI,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,MAAM,QAAQ,GAAG,CACf,GAAwB,EACxB,MAAc,EACd,OAAgB,EACV,EAAE;IACR,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3D,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAElE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACjD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QAC5D,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,IAAI,EAAE,UAAU,KAAK,IAAI;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAI1C,CAAC;QAEF,IAAI,CAAC;YACH,UAAU,GAAG,YAAY,CAAC;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,UAAU;gBACV,OAAO;aACR,CAAC;iBACC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAc,CAAC;YAC/C,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,GAAG,MAAM;gBACT,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,YAAY,CAAC,gBAAgB,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACjD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACnE,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5C,WAAW,GAAG,EAAE,CAAC;QACjB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAO1C,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG;YACX,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7D,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1E,YAAY,CACV,+CAA+C,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,SAAS,EAAE,CACrF,CAAC;YACF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,OAAO;gBACP,IAAI;gBACJ,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAqC,CAAC;QACjF,IAAI,CAAC;YACH,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAC3C,OAAO,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;YAChC,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;gBACjB,GAAG,MAAM;gBACT,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IAC7B,YAAY,CACV,oBAAoB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CACtE,CAAC;IACF,YAAY,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,sCAAsC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CACxF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ interface SyncMetaResult {
3
+ updated: number;
4
+ unchanged: number;
5
+ missingFolder: number;
6
+ failed: number;
7
+ total: number;
8
+ }
9
+ export declare const syncMetaToLocal: (configPath?: string) => SyncMetaResult;
10
+ export {};
11
+ //# sourceMappingURL=syncMetaFromLocal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncMetaFromLocal.d.ts","sourceRoot":"","sources":["../src/syncMetaFromLocal.ts"],"names":[],"mappings":";AAQA,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AA2CD,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,cA6CrD,CAAC"}
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { getConfig, loadConfig } from "./config.js";
5
+ import { normalizeDir } from "./paths.js";
6
+ const isValidMetadata = (value) => {
7
+ if (!value || typeof value !== "object") {
8
+ return false;
9
+ }
10
+ const meta = value;
11
+ return (typeof meta.fullArtist === "string" &&
12
+ typeof meta.fullAlbum === "string" &&
13
+ typeof meta.genre === "string" &&
14
+ meta.year !== undefined);
15
+ };
16
+ const readLocalMeta = (dirPath) => {
17
+ const backupFile = path.join(dirPath, "meta.json");
18
+ try {
19
+ const parsed = JSON.parse(fs.readFileSync(backupFile, "utf-8"));
20
+ if (isValidMetadata(parsed)) {
21
+ return parsed;
22
+ }
23
+ }
24
+ catch {
25
+ // no local meta.json or invalid contents
26
+ }
27
+ return null;
28
+ };
29
+ const loadCentralMeta = (metaFile) => {
30
+ try {
31
+ const parsed = JSON.parse(fs.readFileSync(metaFile, "utf-8"));
32
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
33
+ return {};
34
+ }
35
+ return parsed;
36
+ }
37
+ catch {
38
+ return {};
39
+ }
40
+ };
41
+ const formatError = (error) => error instanceof Error ? error.message : String(error);
42
+ export const syncMetaToLocal = (configPath) => {
43
+ loadConfig(configPath ? path.resolve(configPath) : undefined);
44
+ const config = getConfig();
45
+ const central = loadCentralMeta(config.metaFile);
46
+ let updated = 0;
47
+ let unchanged = 0;
48
+ let missingFolder = 0;
49
+ let failed = 0;
50
+ for (const [dirPath, meta] of Object.entries(central)) {
51
+ if (!isValidMetadata(meta)) {
52
+ continue;
53
+ }
54
+ const albumDir = normalizeDir(dirPath);
55
+ if (!fs.existsSync(albumDir)) {
56
+ missingFolder++;
57
+ continue;
58
+ }
59
+ const localMeta = readLocalMeta(albumDir);
60
+ if (localMeta && JSON.stringify(localMeta) === JSON.stringify(meta)) {
61
+ unchanged++;
62
+ continue;
63
+ }
64
+ const backupFile = path.join(albumDir, "meta.json");
65
+ try {
66
+ fs.writeFileSync(backupFile, JSON.stringify(meta));
67
+ updated++;
68
+ }
69
+ catch (error) {
70
+ console.warn(`Could not write ${backupFile}: ${formatError(error)}`);
71
+ failed++;
72
+ }
73
+ }
74
+ return {
75
+ updated,
76
+ unchanged,
77
+ missingFolder,
78
+ failed,
79
+ total: Object.keys(central).length,
80
+ };
81
+ };
82
+ const configArgIndex = process.argv.indexOf("-c");
83
+ const configPath = configArgIndex >= 0 ? process.argv[configArgIndex + 1] : undefined;
84
+ const result = syncMetaToLocal(configPath);
85
+ console.log(`Synced ${getConfig().metaFile} to local album meta.json files.`);
86
+ console.log(` updated: ${result.updated}`);
87
+ console.log(` unchanged: ${result.unchanged}`);
88
+ console.log(` missing folder: ${result.missingFolder}`);
89
+ console.log(` failed: ${result.failed}`);
90
+ console.log(` total entries: ${result.total}`);
91
+ //# sourceMappingURL=syncMetaFromLocal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncMetaFromLocal.js","sourceRoot":"","sources":["../src/syncMetaFromLocal.ts"],"names":[],"mappings":"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"}
@@ -385,6 +385,56 @@
385
385
  #filter-dropdown li:focus {
386
386
  background: var(--accent-soft);
387
387
  }
388
+ .script-actions {
389
+ display: flex;
390
+ flex-shrink: 0;
391
+ gap: 0.4rem;
392
+ }
393
+ .meta-dialog {
394
+ border: 1px solid var(--border);
395
+ border-radius: var(--radius);
396
+ box-shadow: var(--shadow);
397
+ max-width: 28rem;
398
+ padding: 1.25rem 1.35rem;
399
+ width: calc(100% - 2rem);
400
+ }
401
+ .meta-dialog::backdrop {
402
+ background: #0006;
403
+ }
404
+ .meta-dialog h3 {
405
+ margin: 0 0 0.35rem;
406
+ }
407
+ .meta-source-path {
408
+ color: var(--text-muted);
409
+ font-size: 0.82rem;
410
+ margin: 0 0 1rem;
411
+ word-break: break-all;
412
+ }
413
+ .meta-field {
414
+ margin-bottom: 0.75rem;
415
+ }
416
+ .meta-field label {
417
+ color: var(--text-muted);
418
+ display: block;
419
+ font-size: 0.78rem;
420
+ font-weight: 650;
421
+ letter-spacing: 0.04em;
422
+ margin-bottom: 0.35rem;
423
+ text-transform: uppercase;
424
+ }
425
+ .meta-field input {
426
+ background: var(--surface-raised);
427
+ border: 1px solid var(--border);
428
+ border-radius: var(--radius-sm);
429
+ box-sizing: border-box;
430
+ padding: 0.55rem 0.7rem;
431
+ width: 100%;
432
+ }
433
+ .meta-field input:focus {
434
+ border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
435
+ box-shadow: 0 0 0 3px var(--accent-soft);
436
+ outline: none;
437
+ }
388
438
  </style>
389
439
  </head>
390
440
  <body>
@@ -444,6 +494,33 @@
444
494
  </aside>
445
495
  </div>
446
496
 
497
+ <dialog id="meta-dialog" class="meta-dialog">
498
+ <form id="meta-form">
499
+ <h3>Edit metadata</h3>
500
+ <p class="meta-source-path" id="meta-source-path"></p>
501
+ <div class="meta-field">
502
+ <label for="meta-artist">Artist</label>
503
+ <input id="meta-artist" type="text" required />
504
+ </div>
505
+ <div class="meta-field">
506
+ <label for="meta-album">Album</label>
507
+ <input id="meta-album" type="text" required />
508
+ </div>
509
+ <div class="meta-field">
510
+ <label for="meta-genre">Genre</label>
511
+ <input id="meta-genre" type="text" />
512
+ </div>
513
+ <div class="meta-field">
514
+ <label for="meta-year">Year</label>
515
+ <input id="meta-year" type="text" inputmode="numeric" />
516
+ </div>
517
+ <div class="btn-row">
518
+ <button type="submit" class="btn-primary">Save</button>
519
+ <button type="button" class="btn-secondary" id="meta-cancel">Cancel</button>
520
+ </div>
521
+ </form>
522
+ </dialog>
523
+
447
524
  <script>
448
525
  const logEl = document.getElementById("log");
449
526
  const scriptsSection = document.getElementById("scripts-section");
@@ -452,6 +529,10 @@
452
529
  const encodersEl = document.getElementById("encoders");
453
530
  const filterInput = document.getElementById("filter");
454
531
  const filterDropdown = document.getElementById("filter-dropdown");
532
+ const metaDialog = document.getElementById("meta-dialog");
533
+ const metaForm = document.getElementById("meta-form");
534
+ let editingSourcePath = null;
535
+ let editingScriptPath = null;
455
536
 
456
537
  const FILTER_HISTORY_KEY = "music_downcoder_filter_history";
457
538
  const MAX_FILTER_HISTORY = 15;
@@ -562,6 +643,69 @@
562
643
  }
563
644
  };
564
645
 
646
+ const openMetaEditor = (script) => {
647
+ if (!script.sourcePath) {
648
+ return;
649
+ }
650
+ editingSourcePath = script.sourcePath;
651
+ editingScriptPath = script.path;
652
+ document.getElementById("meta-source-path").textContent = script.sourcePath;
653
+ document.getElementById("meta-artist").value =
654
+ script.meta?.fullArtist ?? script.artist ?? "";
655
+ document.getElementById("meta-album").value =
656
+ script.meta?.fullAlbum ?? script.album ?? "";
657
+ document.getElementById("meta-genre").value = script.meta?.genre ?? "";
658
+ document.getElementById("meta-year").value = script.meta?.year ?? "";
659
+ metaDialog.showModal();
660
+ };
661
+
662
+ metaForm.addEventListener("submit", async (event) => {
663
+ event.preventDefault();
664
+ if (!editingSourcePath || !editingScriptPath) {
665
+ return;
666
+ }
667
+
668
+ const payload = {
669
+ sourcePath: editingSourcePath,
670
+ scriptPath: editingScriptPath,
671
+ fullArtist: document.getElementById("meta-artist").value,
672
+ fullAlbum: document.getElementById("meta-album").value,
673
+ genre: document.getElementById("meta-genre").value,
674
+ year: document.getElementById("meta-year").value,
675
+ };
676
+
677
+ setBusy(true);
678
+ try {
679
+ const res = await fetch("/api/meta", {
680
+ method: "POST",
681
+ headers: { "Content-Type": "application/json" },
682
+ body: JSON.stringify(payload),
683
+ });
684
+ const data = await res.json();
685
+ if (data.error) {
686
+ appendLog(`Error: ${data.error}`);
687
+ } else {
688
+ appendLog(
689
+ `Updated metadata and regenerated script for ${payload.fullArtist} / ${payload.fullAlbum}`
690
+ );
691
+ metaDialog.close();
692
+ editingSourcePath = null;
693
+ editingScriptPath = null;
694
+ if (data.scripts) {
695
+ renderScripts(data.scripts);
696
+ }
697
+ }
698
+ } finally {
699
+ setBusy(false);
700
+ }
701
+ });
702
+
703
+ document.getElementById("meta-cancel").addEventListener("click", () => {
704
+ metaDialog.close();
705
+ editingSourcePath = null;
706
+ editingScriptPath = null;
707
+ });
708
+
565
709
  const renderScripts = (scripts) => {
566
710
  scriptsList.innerHTML = "";
567
711
  if (!scripts.length) {
@@ -583,6 +727,22 @@
583
727
  title.textContent = script.displayName;
584
728
  title.title = script.name;
585
729
 
730
+ const actions = document.createElement("div");
731
+ actions.className = "script-actions";
732
+
733
+ if (script.sourcePath) {
734
+ const editBtn = document.createElement("button");
735
+ editBtn.type = "button";
736
+ editBtn.className = "btn-secondary btn-sm";
737
+ editBtn.textContent = "Edit";
738
+ editBtn.addEventListener("click", (event) => {
739
+ event.preventDefault();
740
+ event.stopPropagation();
741
+ openMetaEditor(script);
742
+ });
743
+ actions.append(editBtn);
744
+ }
745
+
586
746
  const btn = document.createElement("button");
587
747
  btn.type = "button";
588
748
  btn.className = "btn-primary btn-sm";
@@ -610,7 +770,8 @@
610
770
  setBusy(false);
611
771
  });
612
772
 
613
- summary.append(title, btn);
773
+ actions.append(btn);
774
+ summary.append(title, actions);
614
775
  item.append(summary);
615
776
 
616
777
  if (script.commands?.length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emgeebee/music_downcoder",
3
- "version": "1.1.8",
3
+ "version": "1.2.0",
4
4
  "description": "Scan music libraries and generate ffmpeg conversion scripts with a CLI or web UI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,6 +19,8 @@
19
19
  "list": "find ./cmd/**/*.sh -type f 2>/dev/null | sort -nr",
20
20
  "convert": "./batch.sh",
21
21
  "clean-empty": "tsx src/cleanEmptyFolders.ts -c docker/conf.local.json",
22
+ "sync-meta": "tsx src/syncMetaFromLocal.ts -c docker/conf.local.json",
23
+ "repair-meta-years": "tsx src/repairMetaYears.ts -c docker/conf.local.json",
22
24
  "type-check": "tsc --noEmit"
23
25
  },
24
26
  "dependencies": {