my pkgs monorepo
at main 38 lines 1.2 kB view raw
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}