2025-04-05 23:27:00 +03:00

110 lines
2.2 KiB
Markdown

# Exportify to TuneMyMusic Converter (ett)
A Rust CLI tool to convert Spotify playlist CSV exports from Exportify to TuneMyMusic CSV format.
## Features
- Convert CSV files from Exportify format to TuneMyMusic format
- Process single files or entire directories of CSV files
- Automatically detects when a directory is provided as input
- Detailed validation and statistics reporting
## Build from Source
1. Clone this repository:
```
git clone <repository-url>
cd exportify-to-tunemusic
```
2. Build the project:
```
cargo build --release
```
3. The binary will be available at `target/release/ett`
## Usage
### Single File Processing
Convert a single Exportify CSV file to TuneMyMusic format:
```
ett [INPUT_FILE] [OUTPUT_FILE]
```
Where:
- `[INPUT_FILE]` is the path to your Exportify CSV file (defaults to `exportify.csv`)
- `[OUTPUT_FILE]` is the path where the converted file will be saved (defaults to `converted_tunemymusic.csv`)
Example:
```
ett my_playlist.csv tunemymusic_output.csv
```
### Directory Processing
Process all CSV files in a directory:
```
ett --dir [INPUT_DIRECTORY] [OUTPUT_DIRECTORY]
```
or using the short flag:
```
ett -d [INPUT_DIRECTORY] [OUTPUT_DIRECTORY]
```
Where:
- `[INPUT_DIRECTORY]` is the directory containing Exportify CSV files
- `[OUTPUT_DIRECTORY]` is the directory where converted files will be saved
Example:
```
ett --dir ~/Downloads/playlists ~/converted_playlists
```
Note: You can also omit the `--dir` flag - the tool will automatically detect if the input is a directory:
```
ett ~/Downloads/playlists ~/converted_playlists
```
### Options
- `-d, --dir`: Process all CSV files in a directory
- `-h, --help`: Show help message
- `-V, --version`: Show version information
## Output Format
The output file will have the following columns, exactly matching TuneMyMusic's import format:
- Track name
- Artist name
- Album
- Playlist name
- Type
- ISRC
- Spotify - id
## Dependencies
This project uses the following crates:
- `csv`: For CSV reading and writing
- `serde`: For serialization/deserialization of CSV records
- `clap`: For command-line argument parsing with a modern API
## License
MIT