my pkgs monorepo
1/**
2 * Last.fm CSV — CLI wrapper.
3 * Re-exports the environment-agnostic core and adds a Node.js fs loader.
4 */
5
6import * as fs from 'fs';
7import type { LastFmCsvRecord, PlayRecord } from '../types.js';
8import { parseLastFmCsvContent, convertToPlayRecord as coreConvert } from '../core/csv.js';
9import { VERSION } from '../core/config.js';
10
11export { parseLastFmCsvContent };
12export type { LastFmCsvRecord };
13
14const CLI_AGENT = `malachite/v${VERSION}`;
15
16/**
17 * Read a Last.fm CSV file from disk and return normalised records.
18 */
19export function parseLastFmCsv(filePath: string): LastFmCsvRecord[] {
20 console.log(`Reading CSV file: ${filePath}`);
21 const content = fs.readFileSync(filePath, 'utf-8');
22 const records = parseLastFmCsvContent(content);
23 console.log(`✓ Parsed ${records.length} scrobbles\n`);
24 return records;
25}
26
27/**
28 * Convert a normalised Last.fm CSV record to an ATProto play record.
29 * The CLI agent string is injected automatically; pass `debug=true` for
30 * future extension (currently has no effect).
31 */
32export function convertToPlayRecord(
33 csv: LastFmCsvRecord,
34 _configOrUnused?: unknown,
35 _debug?: boolean
36): PlayRecord {
37 return coreConvert(csv, CLI_AGENT);
38}