Import your Last.fm and Spotify listening history to the AT Protocol network using the fm.teal.alpha.feed.play lexicon.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: bump version number to 0.6.1

+7 -7
+3 -3
README.md
··· 256 256 - **trackName**: The name of the track 257 257 - **artists**: Array of artist objects (requires `artistName`, optional `artistMbId` for Last.fm) 258 258 - **playedTime**: ISO 8601 timestamp of when you listened 259 - - **submissionClientAgent**: Identifies this importer (`malachite/v0.6.0`) 259 + - **submissionClientAgent**: Identifies this importer (`malachite/v0.6.1`) 260 260 - **musicServiceBaseDomain**: Set to `last.fm` or `spotify.com` 261 261 262 262 ### Optional Fields ··· 283 283 "recordingMbId": "3a390ad3-fe56-45f2-a073-bebc45d6bde1", 284 284 "playedTime": "2025-11-13T23:49:36Z", 285 285 "originUrl": "https://www.last.fm/music/Cjbeards/_/Paint+My+Masterpiece", 286 - "submissionClientAgent": "malachite/v0.6.0", 286 + "submissionClientAgent": "malachite/v0.6.1", 287 287 "musicServiceBaseDomain": "last.fm" 288 288 } 289 289 ``` ··· 301 301 "releaseName": "Twenty", 302 302 "playedTime": "2021-09-09T10:34:08Z", 303 303 "originUrl": "https://open.spotify.com/track/3gZqDJkMZipOYCRjlHWgOV", 304 - "submissionClientAgent": "malachite/v0.6.0", 304 + "submissionClientAgent": "malachite/v0.6.1", 305 305 "musicServiceBaseDomain": "spotify.com" 306 306 } 307 307 ```
+1 -1
package.json
··· 1 1 { 2 2 "name": "malachite", 3 - "version": "0.6.0", 3 + "version": "0.6.1", 4 4 "description": "Import Last.fm scrobbles to ATProto with rate limiting", 5 5 "type": "module", 6 6 "main": "./dist/index.js",
+2 -2
src/config.ts
··· 22 22 // Build client agent string 23 23 export function buildClientAgent(debug = false) { 24 24 if (!debug) { 25 - return 'malachite/v0.6.0'; 25 + return 'malachite/v0.6.1'; 26 26 } 27 27 28 28 const PLATFORM_LABELS: Record<string, string> = { ··· 34 34 const platform = 35 35 PLATFORM_LABELS[process.platform] ?? process.platform; 36 36 37 - return `malachite/v0.6.0 (${platform}; Node/${process.version})`; 37 + return `malachite/v0.6.1 (${platform}; Node/${process.version})`; 38 38 } 39 39 40 40 // Default batch configuration - conservative for PDS safety
+1 -1
src/lib/cli.ts
··· 26 26 */ 27 27 export function showHelp(): void { 28 28 console.log(` 29 - ${'\x1b[1m'}Last.fm to ATProto Importer v0.6.0${'\x1b[0m'} 29 + ${'\x1b[1m'}Last.fm to ATProto Importer v0.6.1${'\x1b[0m'} 30 30 31 31 ${'\x1b[1m'}USAGE:${'\x1b[0m'} 32 32 npm start [options]