fluncle 0.211.0 → 0.213.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.
- package/bin/fluncle.mjs +75 -2
- package/package.json +1 -1
package/bin/fluncle.mjs
CHANGED
|
@@ -610,7 +610,7 @@ function parseVersion(version) {
|
|
|
610
610
|
var currentVersion;
|
|
611
611
|
var init_version = __esm(() => {
|
|
612
612
|
init_output();
|
|
613
|
-
currentVersion = "0.
|
|
613
|
+
currentVersion = "0.213.0".trim() ? "0.213.0".trim() : "0.1.0";
|
|
614
614
|
});
|
|
615
615
|
|
|
616
616
|
// src/update-notifier.ts
|
|
@@ -2452,7 +2452,7 @@ function parseVersion2(version) {
|
|
|
2452
2452
|
var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
|
|
2453
2453
|
var init_version2 = __esm(() => {
|
|
2454
2454
|
init_output();
|
|
2455
|
-
currentVersion2 = "0.
|
|
2455
|
+
currentVersion2 = "0.213.0".trim() ? "0.213.0".trim() : "0.1.0";
|
|
2456
2456
|
});
|
|
2457
2457
|
|
|
2458
2458
|
// ../../packages/registry/src/index.ts
|
|
@@ -4455,6 +4455,7 @@ var init_admin_attention = __esm(() => {
|
|
|
4455
4455
|
"anchor-review": "version check",
|
|
4456
4456
|
"artist-review": "artist links",
|
|
4457
4457
|
"attach-cues": "cues",
|
|
4458
|
+
"bio-review": "bio gate",
|
|
4458
4459
|
"capture-suspect": "capture check",
|
|
4459
4460
|
distribute: "distribute",
|
|
4460
4461
|
"drip-empty": "clip drip",
|
|
@@ -4663,6 +4664,7 @@ __export(exports_admin_tracks, {
|
|
|
4663
4664
|
backfillRecordingMbidsCommand: () => backfillRecordingMbidsCommand,
|
|
4664
4665
|
backfillLastfmCommand: () => backfillLastfmCommand,
|
|
4665
4666
|
backfillDiscogsCommand: () => backfillDiscogsCommand,
|
|
4667
|
+
backfillBeatportCommand: () => backfillBeatportCommand,
|
|
4666
4668
|
backfillArtistEdgesCommand: () => backfillArtistEdgesCommand,
|
|
4667
4669
|
backfillArtistCreditsCommand: () => backfillArtistCreditsCommand,
|
|
4668
4670
|
backfillAppleMusicCommand: () => backfillAppleMusicCommand,
|
|
@@ -4846,6 +4848,13 @@ async function backfillAppleMusicCommand(limit, dryRun, cursor) {
|
|
|
4846
4848
|
}
|
|
4847
4849
|
return adminApiPost(`/api/v1/admin/backfill/apple-music?${params.toString()}`);
|
|
4848
4850
|
}
|
|
4851
|
+
async function backfillBeatportCommand(limit, dryRun, cursor) {
|
|
4852
|
+
const params = new URLSearchParams({ dryRun: String(dryRun), limit: String(limit) });
|
|
4853
|
+
if (cursor) {
|
|
4854
|
+
params.set("cursor", cursor);
|
|
4855
|
+
}
|
|
4856
|
+
return adminApiPost(`/api/v1/admin/backfill/beatport?${params.toString()}`);
|
|
4857
|
+
}
|
|
4849
4858
|
async function backfillAppleCatalogueCommand(limit, dryRun) {
|
|
4850
4859
|
const params = new URLSearchParams({ dryRun: String(dryRun), limit: String(limit) });
|
|
4851
4860
|
return adminApiPost(`/api/v1/admin/backfill/apple-catalogue?${params.toString()}`);
|
|
@@ -10408,6 +10417,10 @@ function addAdminCommands(program2) {
|
|
|
10408
10417
|
const { backfillAppleCatalogueCommand: backfillAppleCatalogueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
|
|
10409
10418
|
await runBackfillAppleCatalogue(options, backfillAppleCatalogueCommand2);
|
|
10410
10419
|
});
|
|
10420
|
+
backfill.command("beatport").description("Resolve missing Beatport URLs for published findings (exact ISRC match)").option("--dry-run", "Report the eligible set without resolving or writing", false).option("--limit <limit>", "Max findings to resolve", "50").option("--json", "Print JSON", false).action(async (options) => {
|
|
10421
|
+
const { backfillBeatportCommand: backfillBeatportCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
|
|
10422
|
+
await runBackfillBeatport(options, backfillBeatportCommand2);
|
|
10423
|
+
});
|
|
10411
10424
|
backfill.command("artists").description("Back-fill the artist entity (artists + track_artists) for existing findings").option("--dry-run", "Report which findings would be upserted without touching the DB", false).option("--limit <limit>", "Max findings to process", "50").option("--json", "Print JSON", false).action(async (options) => {
|
|
10412
10425
|
const { backfillArtistsCommand: backfillArtistsCommand2 } = await Promise.resolve().then(() => (init_admin_artists(), exports_admin_artists));
|
|
10413
10426
|
await runBackfillArtists(options, backfillArtistsCommand2);
|
|
@@ -11067,6 +11080,66 @@ async function runBackfillAppleMusic(options, backfillAppleMusicCommand2) {
|
|
|
11067
11080
|
process.exitCode = 1;
|
|
11068
11081
|
}
|
|
11069
11082
|
}
|
|
11083
|
+
async function runBackfillBeatport(options, backfillBeatportCommand2) {
|
|
11084
|
+
const limit = parseListLimit(options.limit);
|
|
11085
|
+
const resolved = [];
|
|
11086
|
+
const unresolved = [];
|
|
11087
|
+
const failed = [];
|
|
11088
|
+
const skipped = [];
|
|
11089
|
+
let cursor;
|
|
11090
|
+
let dryRun = options.dryRun;
|
|
11091
|
+
let configured = true;
|
|
11092
|
+
while (resolved.length + unresolved.length + failed.length < limit) {
|
|
11093
|
+
const remaining = limit - (resolved.length + unresolved.length + failed.length);
|
|
11094
|
+
const result = await backfillBeatportCommand2(remaining, options.dryRun, cursor);
|
|
11095
|
+
dryRun = result.dryRun;
|
|
11096
|
+
configured = result.configured;
|
|
11097
|
+
resolved.push(...result.resolved);
|
|
11098
|
+
unresolved.push(...result.unresolved);
|
|
11099
|
+
failed.push(...result.failed);
|
|
11100
|
+
skipped.push(...result.skipped);
|
|
11101
|
+
if (!options.json) {
|
|
11102
|
+
const verb2 = result.dryRun ? "would resolve" : "resolved";
|
|
11103
|
+
console.log(` \u2026${verb2} ${result.resolvedCount}; ${result.unresolvedCount} unresolved; ${result.failedCount} failed; ${result.skippedCount} skipped`);
|
|
11104
|
+
}
|
|
11105
|
+
if (!result.configured) {
|
|
11106
|
+
break;
|
|
11107
|
+
}
|
|
11108
|
+
if (result.nextCursor === null) {
|
|
11109
|
+
break;
|
|
11110
|
+
}
|
|
11111
|
+
cursor = result.nextCursor;
|
|
11112
|
+
}
|
|
11113
|
+
if (options.json) {
|
|
11114
|
+
printSweepJson({
|
|
11115
|
+
configured,
|
|
11116
|
+
dryRun,
|
|
11117
|
+
failed,
|
|
11118
|
+
resolved,
|
|
11119
|
+
resolvedCount: resolved.length,
|
|
11120
|
+
skipped,
|
|
11121
|
+
skippedCount: skipped.length,
|
|
11122
|
+
unresolved,
|
|
11123
|
+
unresolvedCount: unresolved.length
|
|
11124
|
+
}, failed.length);
|
|
11125
|
+
return;
|
|
11126
|
+
}
|
|
11127
|
+
if (!configured) {
|
|
11128
|
+
console.log("Beatport backfill is not configured (the Worker's Firecrawl key is unset) \u2014 nothing resolved.");
|
|
11129
|
+
return;
|
|
11130
|
+
}
|
|
11131
|
+
const verb = dryRun ? "Would resolve" : "Resolved";
|
|
11132
|
+
console.log(`${verb} ${resolved.length} Beatport URL(s); ${unresolved.length} unresolved; ${failed.length} failed; ${skipped.length} skipped.`);
|
|
11133
|
+
for (const item of resolved) {
|
|
11134
|
+
console.log(` ${item.logId}: ${item.url}`);
|
|
11135
|
+
}
|
|
11136
|
+
for (const item of failed) {
|
|
11137
|
+
console.log(` ${item.logId}: ${item.error}`);
|
|
11138
|
+
}
|
|
11139
|
+
if (failed.length > 0) {
|
|
11140
|
+
process.exitCode = 1;
|
|
11141
|
+
}
|
|
11142
|
+
}
|
|
11070
11143
|
async function runBackfillAppleCatalogue(options, backfillAppleCatalogueCommand2) {
|
|
11071
11144
|
const limit = parseListLimit(options.limit);
|
|
11072
11145
|
const resolved = [];
|
package/package.json
CHANGED