Skip to main content

Fire-and-Forget Music CLI

Project description

Yit (No Tabs. Just Tunes.) Player 🎵

PyPI version License: MIT Python 3.7+

The Fire-and-Forget Music Player for Developers.

Yit is a lightweight, headless, terminal-based audio player designed for flow states. It allows you to search, queue, and control music directly from your CLI without ever touching a browser or a heavy GUI.

It runs in the background (daemonized), meaning you can close your terminal, switch tabs, or keep coding while the music plays.


🚀 Features

  • Daemon Architecture: The player runs as a detached background process. Your terminal is never blocked.
  • Instant Search: Uses yt-dlp to fetch metadata in milliseconds.
  • Smart Queue: Manage your playlist (add, next, back, Loop) with simple commands.
  • Cross-Platform: Works natively on Windows, macOS, and Linux.
  • Agent-Native: Built from the ground up to be controlled by AI Agents (Vibe Coding).

📦 Installation

pip install yit-player

Requirements

  • None! Yit automatically manages the mpv audio engine internally.
  • Windows: Auto-downloads a portable mpv.exe if missing.
  • Mac/Linux: Uses system MPV (install via brew or apt if needed).

Troubleshooting: "Command/Path not found"

If you run yit and get an error, your Python scripts folder is not in your system PATH. Solution: Run it like this instead (works 100% of the time):

python -m yit search "slava funk" -p

⚡ Quick Start

1. Search & Play

# Search for a song
yit search "funk sigilo"

# Auto-play the first result immediately
yit search "funk infernal" -p

2. Control Playback

yit pause    # (or 'p')
yit resume   # (or 'r')
yit toggle   # Toggle play/pause
yit stop     # Kill the player

3. Queue Management

yit add 1    # Add result #1 from your last search to the queue (use 1 - 5 to choose from search results)
yit queue    # Show the current queue
yit next     # Skip track (or 'n')
yit back     # Previous track (or 'b')
yit clear    # Wipe the queue

4. Looping

yit loop     # Loop the current track indefinitely
yit unloop   # Return to normal playback

5. Status

yit status   # Check if currently Playing/Paused and Looped

🤖 For AI Agents & Vibe Coding

Yit is designed to be self-documenting for AI context. If you are building an AI agent or using an LLM in your IDE:

  1. Read context: Point your agent to AI_INSTRUCTIONS.md (included in the repo).
  2. Discovery: Run yit commands to get a JSON list of all capabilities.
  3. State: Run yit agent to get the full player state (Track, Time, Queue) in pure JSON.

Example Agent Output (yit agent):

{
  "status": "playing",
  "track": {
    "title": "Never Gonna Give You Up",
    "url": "https://..."
  },
  "position": 45.2,
  "duration": 212.0,
  "queue_length": 5
}

🛠️ Architecture

  • Client: Python CLI (yit) handles argument parsing and user signals.
  • Daemon: A detached mpv process handles audio decoding and network streaming.
  • Communication: IPC (Inter-Process Communication) via Named Pipes (Windows) or Unix Sockets (Linux/Mac).
  • Persistence: ~/.yit/history.json stores your playback history and queue metadata.

⚠️ Disclaimer and Legal Notice

1. Educational Purpose Only This software (Yit) is a proof-of-concept project designed strictly for educational and research purposes. Its primary goal is to demonstrate:

  • Advanced Python subprocess management and Daemon architecture.
  • Inter-Process Communication (IPC) using sockets and named pipes.
  • Memory-efficient resource management in CLI environments.

2. Third-Party Content This tool acts as a command-line interface (CLI) wrapper for open-source media engines (mpv) and network libraries (yt-dlp).

  • No Content Hosting: This application does not host, store, distribute, or decrypt any copyrighted media content.
  • Streaming Only: It is designed for transient streaming of publicly available content. It does not include features to permanently download or "rip" media to the disk.

3. Terms of Service Users are responsible for ensuring their use of this tool complies with the Terms of Service of any third-party platforms they interact with. The developer of this tool assumes no liability for misuse, account suspensions, or legal consequences arising from the use of this software.

4. No Monetization This project is free and open-source. It is not monetized in any way, nor does it generate revenue from the content it accesses.

License

This project is licensed under the GNU General Public License v3.0 (GPLv3). This ensures the software remains free and open-source. Commercial distribution of this software as a closed-source product is strictly prohibited.

Contact

For any questions, please contact vijayaraj.devworks@gmail.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yit_player-0.1.10.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yit_player-0.1.10-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file yit_player-0.1.10.tar.gz.

File metadata

  • Download URL: yit_player-0.1.10.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yit_player-0.1.10.tar.gz
Algorithm Hash digest
SHA256 9ada10893de95bcc3a4b740beddbcd23962c9d78491dd150755a12b41a6f4dad
MD5 d5ce091b9445c08aacb42834cc52dbd1
BLAKE2b-256 daf0ed7c1876328c7ff101d481b7e7f23cff237fc5d8bf71595e26fbda4c9ecb

See more details on using hashes here.

Provenance

The following attestation bundles were made for yit_player-0.1.10.tar.gz:

Publisher: publish.yml on VijayarajParamasivam/yit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yit_player-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: yit_player-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yit_player-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 1f2be23fa59e8a242bad9267976031b64e088769769e46a3b21c51e64294b6f7
MD5 8b896275201341a29a052820c9f673f6
BLAKE2b-256 4a32d4d634b2d6a128cb2a3997ae3f78469acec03fa83a7038d5bc1981138590

See more details on using hashes here.

Provenance

The following attestation bundles were made for yit_player-0.1.10-py3-none-any.whl:

Publisher: publish.yml on VijayarajParamasivam/yit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page