Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 104 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,105 @@
# CDPrintable
This program makes a label for your CD cases that has all of the track listings. It can print this info out for you.

![GitHub License](https://img.shields.io/github/license/EatSleepProgramRepeat/CDPrintable?style=flat)
![GitHub Release](https://img.shields.io/github/v/release/EatSleepProgramRepeat/CDPrintable?style=flat)
![GitHub Issues](https://img.shields.io/github/issues/EatSleepProgramRepeat/CDPrintable?style=flat)
![GitHub Forks](https://img.shields.io/github/forks/EatSleepProgramRepeat/CDPrintable?style=flat)
![GitHub Stars](https://img.shields.io/github/stars/EatSleepProgramRepeat/CDPrintable?style=flat)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/EatSleepProgramRepeat/CDPrintable/test.yml?style=flat)

CDPrintable is a lightweight, easy-to-use program for generating and printing labels with CD track listings for your CD collection.

> [!NOTE]\
> **This project is still in development.** There is a bunch of stuff that might not work, and some things that are planned but not implemented yet. Please bear with me because I am working alone on this project.

## 🎯 Features
- 🔍 Automatically fetches and tables information from the MusicBrainz database.
- 🖨️ Generates a printable image with the track listings.
- 📦 Portable and easy to use on most desktop operating systems.
- 💱 Changeable user agents.
- 🧠 Saves configurations in a JSON file.

## 🚀 Getting Started
### Prerequisites
- Java 22 or higher
- Internet connection (For gradle downloads and MusicBrainz API requests)

### Installation

There are releases that are provided on GitHub. I suggest using those, but feel free to build from source if you want to. If you download it, you can execute the following command on windows or linux:

```bash
java -jar CDPrintable.jar
```

### Building from Source

#### 1. Clone the repo (Linux & Windows):

```bash
git clone https://github.com/EatSleepProgramRepeat/CDPrintable.git
cd CDPrintable
```

#### Build and run using Gradle (Linux)

```bash
./gradlew build
cd build/libs
java -jar CDPrintable.jar # This may have a different name when generated by gradle. Find the right one.
```

#### Build and run using Gradle (Windows)

```batch
./gradlew.bat build
cd build/libs

@rem This may have a different name when generated by gradle. Find the right one.
java -jar CDPrintable.jar
```

## ✨ Usage

1. Change the dropdown at the bottom of the screen to:
- 'CDStub' to search for a CD by its album name.
- 'Artist' to search for an artist by their name.
- 'Release' to search for a release (ex. a physical or digital album, etc.) by its name.
2. Type a query into the text box.
3. Click the search button.
4. Voilà! You should see a table of results.

## ⚙️ Configuration

### Settings Page

The settings page contains many options such as user agent customization and printer font settings.
This page is not done yet, so expect more settings as the program develops.

### Configuration File

The configuration file is located in the users home directory in a subdirectory called 'CDPrintable'.

The configuration file is a JSON file that contains the following fields:
- `userAgent`: The user agent that the program will use to make requests to the MusicBrainz API.
- `printerFont`: The font that the program will use to print the labels.
- `printerFontSize`: The font size that the program will use to print the labels.
- `userAgentEmail`: The email that the program will use to make requests to the MusicBrainz API.
TODO

## 🛠️ Built With

- [Java](https://www.java.com/en/) - The programming language used.
- [Gradle](https://gradle.org/) - Dependency Management.
- [Javax.Swing](https://docs.oracle.com/javase/8/docs/api/javax/swing/package-summary.html) - GUI framework.
- [MusicBrainz API](https://musicbrainz.org/doc/MusicBrainz_API) - The API used to fetch data.
- [Google Gson](https://github.com/google/gson) - JSON parsing.

## 📦 Roadmap
- [ ] Add more settings to the settings page.
- [ ] Printer communication.
- [ ] Search for albums, releases, and CDStubs by artists.

## 📜 License

This project is licensed under the GNU GPL-3.0 License - see the [LICENSE](LICENSE) file for details.