like malachite (atproto-lastfm-importer) but in go and bluer
go spotify tealfm lastfm atproto
0
fork

Configure Feed

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

doc: README

karitham 7849f8fe 47416f66

+24 -40
+24 -40
README.md
··· 21 21 22 22 ### Commands 23 23 24 - #### Export 25 - 26 - Parse and merge Last.fm/Spotify exports, output as JSON: 27 - 28 - ```sh 29 - lazuli export --lastfm=history.csv --spotify=streaming_history.json --output=merged.json 30 - ``` 31 - 32 - #### Import 33 - 34 - Import listening history to Bluesky with proper rate limiting: 35 - 36 - ```sh 37 - lazuli import --lastfm=history.csv --spotify=streaming_history.json 38 - ``` 39 - 40 - Resume is automatic - if interrupted, re-running skips already-imported records: 41 - 42 - Import modes: 43 - 44 - - `lastfm` - Import only Last.fm data 45 - - `spotify` - Import only Spotify data 46 - - `combined` - Merge both sources (default) 47 - 48 - #### Sync 49 - 50 - Fetch existing records and show statistics: 51 - 52 - ```sh 53 - lazuli sync 54 - ``` 55 - 56 - #### Dedupe 24 + | Command | Usage | 25 + | :--- | :--- | 26 + | `export` | Parse and merge Last.fm/Spotify exports into a JSON file | 27 + | `import` | Import new records to Bluesky (auto-skips existing) | 28 + | `sync` | Refresh the local cache with records from Bluesky | 29 + | `stats` | Show database status and daily rate limit consumption | 30 + | `failed` | List records that failed to import | 31 + | `retry` | Attempt to re-import failed records | 32 + | `dedupe` | Remove duplicate records from your Bluesky profile | 33 + | `debug` | Dump raw records from Bluesky for troubleshooting | 57 34 58 - Find and remove duplicate records from your Bluesky profile: 35 + ### Advanced Options 59 36 60 - ```sh 61 - lazuli dedupe --dry-run # Preview without deleting 62 - ``` 37 + - **Rate Limiting**: Lazuli automatically respects Bluesky/ATProto rate limits (default 9,000 writes/day). Use `lazuli stats` to see your remaining quota. 38 + - **Automatic Resume**: The local cache tracks which records were successfully imported. If a process is interrupted, re-running the same command will skip already-published entries. 39 + - **Output Formats**: Most commands support `--output-format=json` for machine-readable output. 40 + - **Fresh Sync**: Use `--fresh` to bypass the local cache and fetch everything directly from the server. 63 41 64 42 ## Environment Variables 65 43 ··· 88 66 89 67 ### Spotify 90 68 91 - Download your extended streaming history from Spotify (Privacy settings). Lazuli accepts: 69 + Lazuli is designed to work with your **Extended Streaming History** from Spotify. You can request this from your [Spotify Privacy Settings](https://www.spotify.com/account/privacy/). 92 70 93 - - Single JSON files 71 + The recommended way to use Spotify data is by passing the **ZIP archive** you receive from Spotify directly. Lazuli will automatically find and parse all streaming history files within it. 72 + 73 + Lazuli accepts: 74 + - **ZIP archives** containing extended history (Recommended) 94 75 - Directories containing `Streaming_History_Audio_*.json` files 95 - - ZIP archives of the above 76 + - Single `Streaming_History_Audio_*.json` files 77 + 78 + > [!IMPORTANT] 79 + > Make sure to request "Extended streaming history", as the standard "Account data" export does not contain your full listening history. 96 80 97 81 ## Features 98 82