A modern, resource-efficient CLI music player that seamlessly integrates local music libraries with online streaming services. Experience high-quality audio playback, Spotify playlist synchronization, and an intuitive terminal interface designed for both developers and music enthusiasts.
View Demo
Β·
Documentation
.
Report Bug
Β·
Request Feature
Β·
Send a Pull Request
- Table of Contents
- Features
- Preview
- Technologies Used
- Prerequisites
- Quick Start
- Installation
- Usage:
- Troubleshooting
- Repository Structure
- Contributors
- License
π΅ Universal Accessibility
- High-quality terminal music playback accessible to both developers and general users
- Modern and feature-rich interface in your terminal
- Support for multiple audio formats (MP3, FLAC, WAV, AAC)
π» Resource Efficient
- Lightweight application with minimal system resource consumption
- Can be used in devices like Raspberry Pi
- Optimized for lower-end devices without compromising functionality
π Unified Music Experience
- Seamlessly bridges local music libraries with online streaming services
- All your music needs handled from a single terminal interface
- Import and sync your Spotify playlists
- Offline playback for downloaded tracks
β‘ Developer-Centric
- Terminal-native music solution that integrates with your development workflow
- Enhances productivity by keeping you in your preferred environment
- Backend: yt-dlp, python-vlc, spotify API, spotipy
- Frontend: Rich, Textual
- Language: Python
Make sure you have the following installed:
- Python 3.9 or later
- pipx (Recommended) or pip
- VLC media player
For detailed system-specific requirements and setup instructions, please refer to our official documentation.
# Install using pipx (recommended)
pipx install ethos-cli
# Or using pip
pip install ethos-cli
# Start playing music
ethos
-
Clone the Repository:
git clone https://github.com//Itz-Agasta/ethos.git cd ethos
-
Install Poetry:
pipx install poetry
Note: It is recommended to use
pipx
for installing Poetry, but you can also usepip
ifpipx
is not available. For more information, please refer to the official documentation. -
Configure Poetry to Create Virtual Environment in Project Root:
poetry config virtualenvs.in-project true
-
Install Dependencies:
poetry install
-
Install Development Dependencies:
poetry install --with dev # install all the necessary dependencies for development. (eg: pytest)
-
Setup the .env file: see the
.env.example
for reference and create a.env
file in the root. -
Start the application:
poetry run ethos
Visit the Official Ethos Documentation for detailed installation instructions based on your system.
ethos_demo.mp4
/play <track name> # Search and play a track
/pause # Pause current playback
/resume # Resume playback
/volume <0-100> # Set volume level
/queue-add <track> # Add a track to queue
/show-queue # Display current queue
/qp <number> # Play track number from queue
Shortcut | Action |
---|---|
Ctrl+C or Ctrl+Q |
Quit application |
Ctrl+M |
Pause playback |
Ctrl+R |
Resume playback |
Ctrl+1 |
Increase volume |
Ctrl+2 |
Decrease volume |
-
Search for a track:
/play never gonna give you up
-
Select from search results by entering the track number (e.g. 1)
-
Control playback:
- Use
/pause
and/resume
to control playback - Adjust volume with
/volume 75
- View all commands with
/help
Issue | Solution |
---|---|
No audio output | Check system volume and VLC installation |
Spotify integration fails | Verify .env configuration |
Installation errors | Update pip: python -m pip install --upgrade pip |
ethos/
βββ .env.example
βββ .gitignore
βββ .github/
β βββ ISSUE_TEMPLATE/
β βββ workflows/
βββ docker/
β βββ dockerfile
β βββ compose.yaml
β βββ readme.md
βββ src/
β βββ img/
βββ ethos/
β βββ __init__.py
β βββ main.py # entry point of the application.
β βββ config.py # Manages configuration settings.
β βββ player.py # Handles the core functionality of the music player.
β βββ utils.py # Contains utility functions and other helper functions.
β βββ spotify_importer.py # User's Spotify playlist integration
βββ βββ tools/ # Helper tools and utilities
β β βββ __init__.py
β β βββ endless_playback.py
β β βββ helper.py
β βββ ui/ # Terminal UI components
β β βββ __init__.py
β β βββ rich_layout.py
β β βββ styles.tcss
β β βββ textual_app.py
β β βββ ui.py
βββ tests/ # Test suite
β βββ __init__.py
β βββ conftest.py
β βββ test_player/
β βββ __init__.py
β βββ test_playback.py
βββ LICENSE
βββ README.md
βββ pyproject.toml # Project configuration and dependencies
βββ pytest.ini # PyTest configuration
βββ setup.py # Contains the setup script
βββ requirements.txt
This project is licensed under the MIT License. See the LICENSE file for more details.
Feel free to Send a Pull Request if you have improvements or fixes.