110 lines
2.2 KiB
Markdown
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
|