A cross-platform CLI music player delivering local and online music streaming with User's Spotify playlist integration.
Project description
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
- Table of Contents
- Features
- Preview
- Technologies Used
- Prerequisites
- Quick Start
- Installation
- Usage:
- Troubleshooting
- Repository Structure
- Contributors
- License
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
# Install Ethos
pip install ethos
# Start playing music
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
pipxfor installing Poetry, but you can also usepipifpipxis 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.examplefor reference and create a.envfile 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> # Search and play a track
/pause # Pause current playback
/resume # Resume playback
/volume <0-100> # Set volume level
Queue Management
/queue-add <track> # Add a track to queue
/show-queue # Display current queue
/qp <number> # Play track number from queue
Keyboard Shortcuts
| 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 |
Basic Workflow
-
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
/pauseand/resumeto control playback - Adjust volume with
/volume 75 - View all commands with
/help
Troubleshooting
Common Issues
| 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 |
Repository Structure
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
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ethos_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ethos_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.1 CPython/3.13.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
998c3e3ba5d2da70c2dbff97331efe56bc7c2da2514e53be68c9a50070e6a48c
|
|
| MD5 |
99f7d524e49837622edd08fa39b4b173
|
|
| BLAKE2b-256 |
a9a7df890adfa5d315d3324973695481f0c6ee6fbd54991bf2d26a493902b8dd
|