Ethos
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
ยท
Report Bug
ยท
Request Feature
ยท
Send a Pull Request
Table of Contents
Features
๐ต 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
Preview
Technologies Used
- Backend: yt-dlp, python-vlc, spotify API, spotipy
- Frontend: Rich, Textual
- Language: Python
Prerequisites
Make sure you have the following installed:
- Python 3.8 or later
- pip (Python package installer)
- VLC media player
Quick Start
pip install ethos
ethos
Installation
For Development:
-
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 use pip
if pipx
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
-
Setup the .env file: see the .env.example
for reference and create a .env
file in the root.
-
Start the application:
poetry run python ethos/main.py
For Distribution:
Coming Soon
Usage:
https://github.com/user-attachments/assets/e46a7585-ccf1-4e30-bc20-3c48b0767969
Basic Commands
/play <track name>
/pause
/resume
/volume <0-100>
Queue Management
/queue-add <track>
/show-queue
/qp <number>
Keyboard Shortcuts
Ctrl+C or Ctrl+Q | Quit application |
Ctrl+M | Pause playback |
Ctrl+R | Resume playback |
Ctrl+1 | Increase volume |
Ctrl+2 | Decrease volume |
Basic Workflow
- Use
/pause
and /resume
to control playback
- Adjust volume with
/volume 75
- View all commands with
/help
Troubleshooting
Common Issues
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 |
Repository Structure
ethos/
โโโ .env.example
โโโ .gitignore
โโโ .github/
โ โโโ ISSUE_TEMPLATE/
โ โโโ workflows/
โโโ docker/
โ โโโ dockerfile
โ โโโ compose.yaml
โ โโโ readme.md
โโโ src/
โ โโโ img/
โโโ ethos/
โ โโโ __init__.py
โ โโโ main.py
โ โโโ config.py
โ โโโ player.py
โ โโโ utils.py
โ โโโ spotify_importer.py
โโโ โโโ tools/
โ โ โโโ __init__.py
โ โ โโโ endless_playback.py
โ โ โโโ helper.py
โ โโโ ui/
โ โ โโโ __init__.py
โ โ โโโ rich_layout.py
โ โ โโโ styles.tcss
โ โ โโโ textual_app.py
โ โ โโโ ui.py
โโโ tests/
โ โโโ __init__.py
โ โโโ conftest.py
โ โโโ test_player/
โ โโโ __init__.py
โ โโโ test_playback.py
โโโ LICENSE
โโโ README.md
โโโ pyproject.toml
โโโ pytest.ini
โโโ setup.py
โโโ requirements.txt
Contributors
License
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.