Skip to content

Commit

Permalink
Updated the Readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Itz-Agasta committed Feb 9, 2025
1 parent 2ef6769 commit 8d70b55
Show file tree
Hide file tree
Showing 5 changed files with 240 additions and 32 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ docs/_build/

#extra
.cache
private/

#shell-script
./run_ui.sh
21 changes: 21 additions & 0 deletions License
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) [2025] [Rupam Golui]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
250 changes: 218 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,112 @@
# ethos
**<h1 align="center">Ethos</h1>**

cli music player (Coming Soon)
<p align="center">
<img src="src/img/ethos_logo.jpg" alt="Logo of Ethos" width="300", height="300">
</p>

## Repository Structure
<div align="center">

[![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Itz-Agasta/ethos/pulls)
[![Code Coverage](https://img.shields.io/codecov/c/github/Itz-Agasta/ethos)](https://codecov.io/gh/Itz-Agasta/ethos)
[![Downloads](https://img.shields.io/pypi/dm/ethos)](https://pypi.org/project/ethos/)
[![GitHub Issues](https://img.shields.io/github/issues/Itz-Agasta/ethos)](https://github.com/Itz-Agasta/ethos/issues)
[![GitHub Stars](https://img.shields.io/github/stars/Itz-Agasta/ethos)](https://github.com/Itz-Agasta/ethos/stargazers)
[![Last Commit](https://img.shields.io/github/last-commit/Itz-Agasta/ethos)](https://github.com/Itz-Agasta/ethos/commits/main)

</div>

<p align="center">
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.
<br />
<br />
<a href="https://www.youtube.com/watch?v=E1AjSHxe5NU&feature=youtu.be">View Demo</a>
·
<a href="https://github.com/Itz-Agasta/ethos/issues">Report Bug</a>
·
<a href="https://github.com/Itz-Agasta/ethos/issues">Request Feature</a>
·
<a href="https://github.com/Itz-Agasta/ethos/pulls">Send a Pull Request</a>
</p>
</p>

## Table of Contents

- [Table of Contents](#table-of-contents)
- [Features](#features)
- [Preview](#preview)
- [Technologies Used](#technologies-used)
- [Prerequisites](#prerequisites)
- [Quick Start](#quick-start)
- [Installation](#installation)
- [For Development:](#for-development)
- [For Distribution:](#for-distribution)
- [Usage:](#usage)
- [Basic Commands](#basic-commands)
- [Queue Management](#queue-management)
- [Keyboard Shortcuts](#keyboard-shortcuts)
- [Basic Workflow](#basic-workflow)
- [Troubleshooting](#troubleshooting)
- [Common Issues](#common-issues)
- [Repository Structure](#repository-structure)
- [Contributors](#contributors)
- [License](#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

<p align="center">
<img src="src/img/ethos_ui.jpg" alt="Logo of Ethos">
</p>

## 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

```bash
ethos/
├── .editorconfig
├── .gitignore
├── .github/
│ ├── ISSUE_TEMPLATE/
│ └── workflows/
├── docker/
│ ├── dockerfile
│ ├── compose.yaml
│ └── readme.md
├── 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.
│ ├── ui/ # Manages the tui interface.
│ ├── utils.py # Contains utility functions and other helper functions.
│ └── hotkeys.py # Defines hotkeys for controlling the music player.
├── tests/
│ ├── __init__.py
│ ├── test_cli.py
│ ├── test_config.py
│ ├── test_player.py
│ ├── test_ui.py
│ └── test_utils.py
├── LICENSE
├── README.md
├── setup.py # Contains the setup script
└── requirements.txt
# Install Ethos
pip install ethos

# Start playing music
ethos
```

## Installation
Expand Down Expand Up @@ -68,3 +141,116 @@ ethos/
### For Distribution:

Coming Soon

## Usage:

[![Watch the video](src/img/ethos_ui.jpg)](https://www.youtube.com/watch?v=E1AjSHxe5NU&feature=youtu.be)

### Basic Commands

```bash
/play <track name> # Search and play a track
/pause # Pause current playback
/resume # Resume playback
/volume <0-100> # Set volume level
```

### Queue Management

```bash
/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

1. Search for a track:

```bash
/play never gonna give you up
```

2. Select from search results by entering the track number (e.g. 1)

3. Control playback:

- Use `/pause` and `/resume` to 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

```bash
ethos/
├── .env.example
├── .gitignore
├── .github/
│ ├── ISSUE_TEMPLATE/
│ └── workflows/
├── docker/
│ ├── dockerfile
│ ├── compose.yaml
│ └── readme.md
├── 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

<a href="https://github.com/Itz-Agasta/ethos/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Itz-Agasta/ethos" />
</a>

## License

This project is licensed under the [MIT License](https://github.com/Itz-Agasta/ethos/blob/main/License). See the LICENSE file for more details.

Feel free to Send a [Pull Request](https://github.com/Itz-Agasta/ethos/pulls) if you have improvements or fixes.
Binary file added src/img/ethos_logo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/img/ethos_ui.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 8d70b55

Please sign in to comment.