PlaylistSmith is a desktop application that allows you to manage and organize your Spotify playlists in a simple and intuitive way. With a modern and user-friendly interface, you can sort your favorite songs based on different criteria.
🎧 Tired of disorganized playlists?
🔥 Turn chaos into order with PlaylistSmith!
- 🔐 Secure authentication with your Spotify account
- 🎵 View all your playlists
- 🧠 Sort by multiple criteria:
- Artist (A-Z / Z-A)
- Release date (newest / oldest)
- Duration (longest / shortest)
- Popularity (most / least popular)
- 🖥️ Modern and responsive graphical interface
- 💾 100% local: your data stays on your computer
- 🚀 Fast and lightweight
- Python 3.10 or higher
- A Spotify account (free or premium)
- Internet connection
-
Clone the repository
git clone https://github.com/jabelzzz/playlistsmith.git cd playlistsmith -
Create a virtual environment
Using Pipenv (recommended for development):
# Install pipenv if you don't have it pip install --user pipenv # Create and activate the virtual environment pipenv --python 3.10 # Make sure to use the Python >=3.10 pipenv shell # Activate the virtual environment
-
Install dependencies
pipenv install --dev
This will install all the necessary dependencies, including development ones.
-
Set up Spotify credentials
- Create an app in the Spotify Developer Dashboard
- Add
http://127.0.0.1:8888/callbackas a Redirect URI in your app settings (You can use other port if you want)
- Create a
config.envfile in the project root with:SPOTIPY_CLIENT_ID=your_client_id SPOTIPY_CLIENT_SECRET=your_client_secret SPOTIPY_REDIRECT_URI=http://127.0.0.1:8888/callback
-
Start the application
python main.py
-
Log in with Spotify
- Click on "Login with Spotify"
- Your browser will open to authorize the application
- Once authorized, you'll be redirected back to the application
-
Select a playlist
- You'll see all your Spotify playlists
- Click on the one you want to organize
-
Sort your songs
- Use the buttons on the right to sort by:
- Artist (A-Z)
- Release date
- Duration
- Popularity
- Use the buttons on the right to sort by:
- Language: Python 3.10+
- GUI Framework: CustomTkinter
- Spotify API: Spotipy
- Image Handling: Pillow (PIL)
- Environment Variables: python-dotenv
- Dependency Management: Pipenv
playlistsmith/
├── playlistsmith/ # Source code
│ ├── assets/ # Graphical resources (icons, images)
│ ├── services/ # Business logic
│ │ ├── sort_playlist.py # Playlist sorting
│ │ └── spotify_auth.py # Spotify authentication
│ ├── ui/ # User interface
│ │ ├── screens/ # Application screens
│ │ └── main_window.py # Main window
│ └── __init__.py
├── .env.example # Configuration example
├── Pipfile # Dependencies (Pipenv)
├── Pipfile.lock # Lock file for reproducible builds
└── main.py # Entry point
Contributions are welcome! Please follow these steps:
- Fork the project
- Create a new branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- To Spotify for their excellent API
- To the developers of the open-source libraries used
- To you, for using PlaylistSmith 🎵
Made with ❤️ by Jabel Álvarez
