Files
Tunetti/README.md
NikkeDoy 5f417396ff
All checks were successful
SonarQube Code Quality Scan / SonarQube Scan (push) Successful in 27s
📝 | Update README.md
2026-05-31 23:38:45 +03:00

120 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tunetti 🎵
[![Quality Gate Status](https://sonarqube.huitsinnevada.fi/api/project_badges/measure?project=Tunetti&metric=alert_status&token=sqb_a08ffa8615e77ac20c6f7e0aa58a93e643a85666)](https://sonarqube.huitsinnevada.fi/dashboard?id=Tunetti)
A desktop YouTube Music player — search, play, and manage your music without opening a browser. 🖥️
<p align="center">
<img src="docs/screenshots/screenshot-1.avif" alt="Tunetti screenshot" width="800">
</p>
> ### 🤖 A note about this project
>
> This project is **approximately 99% AI-generated code**. It was created by prompting large language models — not by hand. The code works, but it may not follow every best practice you'd expect from hand-written software. Contributions, bug reports, and suggestions are very welcome! 🙏
---
## ✨ What can it do?
- **🎶 YouTube Music search & playback** — Find songs, albums, and artists right from the app.
- **🎧 Play music in the background** — Keep listening while you work.
- **🎨 Good-looking interface** — Dark theme with a modern, clean design.
- **🎤 Discord Rich Presence** — Show your friends what you're listening to.
- **📊 Play history & stats** — See your most-played tracks, listening trends, and daily counts.
- **⭐ Favourites** — Save songs you love and find them again instantly.
- **📈 Audio visualizer** — A colorful spectrum display that moves with the music.
- **⏯️ Full playback controls** — Play, pause, skip, seek, volume, loop, shuffle, and queue.
- **⚙️ Configurable** — Toggle Discord RPC, visualizer, and more in settings.
- **💾 Lightweight** — Streams audio on demand; no big music library to store.
---
## 📋 What you'll need
- **Python 3.10 or newer**
- **Linux** with **PulseAudio** or **PipeWire** for sound
- **FFmpeg** installed and on your `PATH`
## 🚀 Getting started
```bash
# Download the code
git clone https://git.huitsinnevada.fi/NikkeDoy/Tunetti.git
cd Tunetti
# Set up a virtual environment
python -m venv .venv
source .venv/bin/activate
# Install everything
pip install -r requirements.txt
```
> ⚠️ You might also need system packages like `libegl1` or `libxkbcommon0` — your package manager will tell you what's missing.
### ▶️ Running Tunetti
```bash
# Normal mode
python main.py
# Debug mode (see what's happening under the hood)
TUNETTI_VERBOSE=1 python main.py
```
On first launch, Tunetti creates `~/.config/tunetti/` and sets everything up for you.
### 🔧 Environment variables
| Variable | What it does |
|---|---|
| `TUNETTI_VERBOSE` | Set to `1`, `true`, or `yes` to see detailed debug logs. |
---
## 📁 How the code is organized
```
Tunetti/
├── main.py # App start & logging
├── gui.py # All the visual stuff (window, search bar, visualizer, stats, settings)
├── player.py # Audio playback, downloads, queue
├── config.py # Settings loader
├── music_db.py # History, favourites, stats database
├── discord_rpc.py # Discord integration
├── requirements.txt # List of Python packages needed
├── sonar-project.properties
└── .gitea/
└── workflows/
└── sonar.yaml # Automated code checks
```
## ⚙️ Settings
Tunetti stores its settings in `~/.config/tunetti/config.json`. Here's what you can change:
| Setting | Default | What it does |
|---|---|---|
| `volume` | `50` | Playback volume (0100) |
| `max_history` | `5000` | Max number of plays to remember |
| `discord_rpc_enabled` | `true` | Show what you're listening to on Discord |
| `visualizer_enabled` | `true` | Show the audio spectrum visualizer |
| `db_path` | `~/.config/tunetti/music_history.db` | Where the database is stored |
## 📦 What's under the hood
| Package | What it's used for |
|---|---|
| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Downloads audio from YouTube |
| [ytmusicapi](https://github.com/sigma67/ytmusicapi) | Searches YouTube Music |
| [PySide6](https://pypi.org/project/PySide6/) | The graphical interface (Qt6) |
| [pypresence](https://github.com/qwertyquerty/pypresence) | Discord Rich Presence |
## 🧪 Quality checks
Code quality is analyzed automatically by SonarQube whenever changes are pushed.
## 📄 License
See [LICENSE](./LICENSE).