@emgeebee/music_downcoder 1.1.6 → 1.1.7
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.
- package/dist/scripts.d.ts +1 -0
- package/dist/scripts.d.ts.map +1 -1
- package/dist/scripts.js +3 -0
- package/dist/scripts.js.map +1 -1
- package/dist/web/index.html +92 -23
- package/package.json +1 -1
package/dist/scripts.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface ScriptInfo {
|
|
|
7
7
|
album: string;
|
|
8
8
|
type: string;
|
|
9
9
|
trackCount: number;
|
|
10
|
+
commands: string[];
|
|
10
11
|
}
|
|
11
12
|
export declare const describeScript: (scriptPath: string, config: AppConfig) => ScriptInfo;
|
|
12
13
|
export declare const describeScripts: (scriptPaths: string[], config: AppConfig) => ScriptInfo[];
|
package/dist/scripts.d.ts.map
CHANGED
|
@@ -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;CACpB;AAgED,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,QAAQ,SAAS,KAChB,
|
|
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"}
|
package/dist/scripts.js
CHANGED
|
@@ -52,10 +52,12 @@ export const describeScript = (scriptPath, config) => {
|
|
|
52
52
|
let artist = "Unknown artist";
|
|
53
53
|
let album = "Unknown album";
|
|
54
54
|
let trackCount = 0;
|
|
55
|
+
let commands = [];
|
|
55
56
|
try {
|
|
56
57
|
const content = fs.readFileSync(scriptPath, "utf-8");
|
|
57
58
|
const lines = content.split("\n");
|
|
58
59
|
trackCount = countTracks(lines);
|
|
60
|
+
commands = lines.map((line) => line.trimEnd()).filter((line) => line.length > 0);
|
|
59
61
|
if (encoderOut) {
|
|
60
62
|
for (const line of lines) {
|
|
61
63
|
const outputPath = extractLastQuotedPath(line);
|
|
@@ -83,6 +85,7 @@ export const describeScript = (scriptPath, config) => {
|
|
|
83
85
|
album,
|
|
84
86
|
type: encoder.label,
|
|
85
87
|
trackCount,
|
|
88
|
+
commands,
|
|
86
89
|
};
|
|
87
90
|
};
|
|
88
91
|
export const describeScripts = (scriptPaths, config) => scriptPaths.map((scriptPath) => describeScript(scriptPath, config));
|
package/dist/scripts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
|
package/dist/web/index.html
CHANGED
|
@@ -95,6 +95,20 @@
|
|
|
95
95
|
.form-group {
|
|
96
96
|
margin-bottom: 1.1rem;
|
|
97
97
|
}
|
|
98
|
+
.form-row {
|
|
99
|
+
display: grid;
|
|
100
|
+
gap: 1rem;
|
|
101
|
+
grid-template-columns: 1fr 1fr;
|
|
102
|
+
margin-bottom: 1.1rem;
|
|
103
|
+
}
|
|
104
|
+
.form-row .form-group {
|
|
105
|
+
margin-bottom: 0;
|
|
106
|
+
}
|
|
107
|
+
@media (max-width: 900px) {
|
|
108
|
+
.form-row {
|
|
109
|
+
grid-template-columns: 1fr;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
98
112
|
.form-group:last-of-type {
|
|
99
113
|
margin-bottom: 0;
|
|
100
114
|
}
|
|
@@ -283,29 +297,64 @@
|
|
|
283
297
|
gap: 0.45rem;
|
|
284
298
|
margin-bottom: 0.25rem;
|
|
285
299
|
}
|
|
286
|
-
.
|
|
287
|
-
color: var(--text-muted);
|
|
288
|
-
font-size: 0.92rem;
|
|
289
|
-
padding: 0.5rem 0;
|
|
290
|
-
}
|
|
291
|
-
.script-row {
|
|
292
|
-
align-items: center;
|
|
300
|
+
.script-accordion {
|
|
293
301
|
background: var(--surface-raised);
|
|
294
302
|
border: 1px solid var(--border);
|
|
295
303
|
border-radius: var(--radius-sm);
|
|
304
|
+
overflow: hidden;
|
|
305
|
+
}
|
|
306
|
+
.script-accordion[open] {
|
|
307
|
+
border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
|
|
308
|
+
}
|
|
309
|
+
.script-summary {
|
|
310
|
+
align-items: center;
|
|
311
|
+
cursor: pointer;
|
|
296
312
|
display: flex;
|
|
297
313
|
gap: 0.75rem;
|
|
298
314
|
justify-content: space-between;
|
|
315
|
+
list-style: none;
|
|
299
316
|
padding: 0.55rem 0.65rem 0.55rem 0.8rem;
|
|
300
317
|
}
|
|
301
|
-
.script-
|
|
318
|
+
.script-summary::-webkit-details-marker {
|
|
319
|
+
display: none;
|
|
320
|
+
}
|
|
321
|
+
.script-summary::before {
|
|
322
|
+
color: var(--text-muted);
|
|
323
|
+
content: "▸";
|
|
324
|
+
flex-shrink: 0;
|
|
325
|
+
font-size: 0.75rem;
|
|
326
|
+
transition: transform 0.15s;
|
|
327
|
+
width: 0.75rem;
|
|
328
|
+
}
|
|
329
|
+
.script-accordion[open] .script-summary::before {
|
|
330
|
+
transform: rotate(90deg);
|
|
331
|
+
}
|
|
332
|
+
.script-title {
|
|
302
333
|
flex: 1;
|
|
303
334
|
font-family: ui-monospace, "Cascadia Code", "SF Mono", monospace;
|
|
304
335
|
font-size: 0.84rem;
|
|
336
|
+
min-width: 0;
|
|
305
337
|
overflow: hidden;
|
|
306
338
|
text-overflow: ellipsis;
|
|
307
339
|
white-space: nowrap;
|
|
308
340
|
}
|
|
341
|
+
.script-commands {
|
|
342
|
+
background: #00000010;
|
|
343
|
+
border-top: 1px solid var(--border);
|
|
344
|
+
font-family: ui-monospace, "Cascadia Code", "SF Mono", monospace;
|
|
345
|
+
font-size: 0.78rem;
|
|
346
|
+
line-height: 1.45;
|
|
347
|
+
margin: 0;
|
|
348
|
+
max-height: 16rem;
|
|
349
|
+
overflow: auto;
|
|
350
|
+
padding: 0.65rem 0.8rem;
|
|
351
|
+
white-space: pre-wrap;
|
|
352
|
+
}
|
|
353
|
+
.empty-state {
|
|
354
|
+
color: var(--text-muted);
|
|
355
|
+
font-size: 0.92rem;
|
|
356
|
+
padding: 0.5rem 0;
|
|
357
|
+
}
|
|
309
358
|
.app-version {
|
|
310
359
|
color: var(--text-muted);
|
|
311
360
|
font-size: 0.82rem;
|
|
@@ -352,13 +401,15 @@
|
|
|
352
401
|
<h2>Scan library</h2>
|
|
353
402
|
</div>
|
|
354
403
|
<form id="run-form">
|
|
355
|
-
<div class="form-
|
|
356
|
-
<
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
<
|
|
361
|
-
|
|
404
|
+
<div class="form-row">
|
|
405
|
+
<div class="form-group">
|
|
406
|
+
<h3 class="form-label">Source folder</h3>
|
|
407
|
+
<div class="option-grid" id="start-folders"></div>
|
|
408
|
+
</div>
|
|
409
|
+
<div class="form-group">
|
|
410
|
+
<h3 class="form-label">Encoders</h3>
|
|
411
|
+
<div class="option-grid" id="encoders"></div>
|
|
412
|
+
</div>
|
|
362
413
|
</div>
|
|
363
414
|
<label class="filter-field">
|
|
364
415
|
<span>Artist filter (prefix)</span>
|
|
@@ -521,16 +572,24 @@
|
|
|
521
572
|
return;
|
|
522
573
|
}
|
|
523
574
|
for (const script of scripts) {
|
|
524
|
-
const
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
575
|
+
const item = document.createElement("details");
|
|
576
|
+
item.className = "script-accordion";
|
|
577
|
+
|
|
578
|
+
const summary = document.createElement("summary");
|
|
579
|
+
summary.className = "script-summary";
|
|
580
|
+
|
|
581
|
+
const title = document.createElement("span");
|
|
582
|
+
title.className = "script-title";
|
|
583
|
+
title.textContent = script.displayName;
|
|
584
|
+
title.title = script.name;
|
|
585
|
+
|
|
529
586
|
const btn = document.createElement("button");
|
|
530
587
|
btn.type = "button";
|
|
531
588
|
btn.className = "btn-primary btn-sm";
|
|
532
589
|
btn.textContent = "Run";
|
|
533
|
-
btn.addEventListener("click", async () => {
|
|
590
|
+
btn.addEventListener("click", async (event) => {
|
|
591
|
+
event.preventDefault();
|
|
592
|
+
event.stopPropagation();
|
|
534
593
|
setBusy(true);
|
|
535
594
|
appendLog(`Running ${script.displayName}...`);
|
|
536
595
|
const res = await fetch("/api/scripts/run", {
|
|
@@ -550,8 +609,18 @@
|
|
|
550
609
|
}
|
|
551
610
|
setBusy(false);
|
|
552
611
|
});
|
|
553
|
-
|
|
554
|
-
|
|
612
|
+
|
|
613
|
+
summary.append(title, btn);
|
|
614
|
+
item.append(summary);
|
|
615
|
+
|
|
616
|
+
if (script.commands?.length) {
|
|
617
|
+
const commands = document.createElement("pre");
|
|
618
|
+
commands.className = "script-commands";
|
|
619
|
+
commands.textContent = script.commands.join("\n");
|
|
620
|
+
item.append(commands);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
scriptsList.append(item);
|
|
555
624
|
}
|
|
556
625
|
};
|
|
557
626
|
|