Media-TUI
Media-TUI is a terminal-based media player built using Python. It integrates with services such as Spotify and provides a simple, curses-based user interface to browse, play, and control music. It also supports local file navigation and playback.
Features
- Spotify Integration: Authenticate with Spotify to control your playlists, albums, and songs directly from the terminal.
- Curses-based UI: Browse playlists, tracks, albums, and control playback using a keyboard-driven terminal interface.
- ASCII Art: Displays album art in the form of ASCII art for currently playing tracks.
- Device Management: View and switch between available Spotify devices for playback.
- Playback Controls: Control volume, skip tracks, play/pause functionality, and more directly from the terminal.
Requirements
- Python 3.7+
- Spotipy (Spotify API Python client)
- Pillow (Python Imaging Library for handling images)
- Curses (terminal UI library)
- Requests (for making HTTP requests)
- dotenv (for loading environment variables)
Python Libraries
Install the dependencies using pip:
pip install spotipy pillow python-dotenv requests
Installation
-
Clone the Repository:
git clone https://github.com/your-username/media-tui.git cd media-tui -
Set up Spotify Credentials:
To authenticate with Spotify, you'll need to set up a Spotify developer application. Follow these steps:
- Go to Spotify Developer Dashboard and create a new application.
- Add a redirect URI like
http://localhost:8888/callbackto your application settings.
Create a
.envfile in the project root and add your credentials:SPOTIPY_CLIENT_ID=your-client-id SPOTIPY_CLIENT_SECRET=your-client-secret SPOTIPY_REDIRECT_URI=http://localhost:8888/callback -
Activate Virtual Environment (Optional but recommended):
If you'd like to use a virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate` -
Install Dependencies:
Inside your virtual environment (if you're using one), install the dependencies:
pip install -r requirements.txt -
Run the Application:
python main.py
How to Use
Keybindings:
-
Explorer Mode:
j/k: Navigate up and down in the playlists or albums.a: Switch to albums view.p: Switch to playlists view.Enter: Select a playlist or album and view its tracks.c: View the currently playing song.Backspace: Exit the current view.
-
Tracks View:
j/k: Navigate through tracks.Enter: Play the selected track.c: View the currently playing song.d: Open device management view.Backspace: Return to the explorer view.
-
Player View:
p: Toggle Play/Pause.n: Next track.b: Previous track.+/-: Increase or decrease volume.d: Open device management view.Backspace: Return to the tracks view.
-
Device Management:
j/k: Navigate through available devices.Enter: Switch playback to the selected device.Backspace: Return to the player view.
Features in Detail
- Spotify Authentication: Media-TUI authenticates with Spotify using OAuth and provides access to your personal Spotify playlists, albums, and playback devices.
- ASCII Art: Album art for the currently playing track is converted into ASCII art and displayed in the player view.
- Device Management: Easily switch between your available Spotify devices such as phones, computers, and smart speakers for playback.
Troubleshooting
Common Errors
-
Spotify Authentication Error:
- Make sure you've correctly set the environment variables for Spotify credentials in the
.envfile. - Ensure the redirect URI in the
.envmatches the one in your Spotify Developer Dashboard.
- Make sure you've correctly set the environment variables for Spotify credentials in the
-
No Active Device Found:
- If no active device is found, make sure you have the Spotify app open on one of your devices and logged in with the same account.
-
Album Art Not Displaying:
- If album art does not appear as ASCII, ensure you have a stable internet connection, and the required libraries (
requests,Pillow) are installed.
- If album art does not appear as ASCII, ensure you have a stable internet connection, and the required libraries (
Contributing
If you'd like to contribute to this project:
- Fork the repository.
- Create a new branch for your feature/bugfix.
- Submit a pull request.
License
This project is licensed under the MIT License.