{"id":30859208,"url":"https://github.com/satvikvirmani/musicfp","last_synced_at":"2026-04-28T23:36:42.293Z","repository":{"id":57444140,"uuid":"371712525","full_name":"satvikvirmani/musicfp","owner":"satvikvirmani","description":"A terminal based media player for programmers","archived":false,"fork":false,"pushed_at":"2025-10-10T12:57:01.000Z","size":157,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-28T01:29:00.745Z","etag":null,"topics":["hactoberfest","linux","macos","media","multimedia","playback","playmedia","python","python-vlc","songs","videos","vlc"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/musicfp/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/satvikvirmani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-28T13:38:13.000Z","updated_at":"2025-10-10T12:57:05.000Z","dependencies_parsed_at":"2022-09-26T17:21:23.107Z","dependency_job_id":null,"html_url":"https://github.com/satvikvirmani/musicfp","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/satvikvirmani/musicfp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/satvikvirmani%2Fmusicfp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/satvikvirmani%2Fmusicfp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/satvikvirmani%2Fmusicfp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/satvikvirmani%2Fmusicfp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/satvikvirmani","download_url":"https://codeload.github.com/satvikvirmani/musicfp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/satvikvirmani%2Fmusicfp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32404340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hactoberfest","linux","macos","media","multimedia","playback","playmedia","python","python-vlc","songs","videos","vlc"],"created_at":"2025-09-07T14:57:30.369Z","updated_at":"2026-04-28T23:36:42.287Z","avatar_url":"https://github.com/satvikvirmani.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎵 musicfp\r\n\r\n\u003e A sleek, terminal-based media player built for programmers who love their command line.\r\n\r\n[![Python Version](https://img.shields.io/badge/python-3.0%2B-blue.svg)](https://www.python.org/downloads/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![Development Status](https://img.shields.io/badge/status-stable-green.svg)](https://github.com/SatvikVirmani/musicfp)\r\n\r\n---\r\n\r\n## 🎯 What is musicfp?\r\n\r\n**musicfp** (music for programmers) is a powerful yet minimalist media player that lives entirely in your terminal. No GUI bloat, no unnecessary features—just pure, efficient audio playback controlled by simple commands. Perfect for developers who want to stay in the terminal while enjoying their favorite music.\r\n\r\n## ✨ Features\r\n\r\n- 🎼 **Dual Playback Modes** - Play single files or entire directories\r\n- 🔀 **Shuffle Support** - Randomize your playlist with a simple flag\r\n- 🎚️ **Real-time Volume Control** - Adjust volume on the fly\r\n- ⏯️ **Complete Playback Controls** - Pause, skip, next, previous, and more\r\n- 🧵 **Multi-threaded Architecture** - Responsive controls that don't block playback\r\n- 📊 **Metadata Display** - See song and album information for single files\r\n- 🎭 **Wide Format Support** - Supports MP3, FLAC, M4A, MP4, WAV, WMA, AAC, and MKV\r\n- 💻 **Terminal-native** - Stay productive without leaving your workflow\r\n\r\n---\r\n\r\n## 🚀 Installation\r\n\r\n### Using pip (Recommended)\r\n\r\n```bash\r\npip install musicfp\r\n```\r\n\r\n### From Source\r\n\r\n```bash\r\ngit clone https://github.com/SatvikVirmani/musicfp.git\r\ncd musicfp\r\npip install -e .\r\n```\r\n\r\n### Requirements\r\n\r\n- Python 3.0 or higher\r\n- python-vlc library (automatically installed)\r\n\r\n---\r\n\r\n## 📖 Usage\r\n\r\n### Basic Commands\r\n\r\n```bash\r\n# Play a single audio file\r\nmusicfp /path/to/song.mp3\r\n\r\n# Play all songs in a directory\r\nmusicfp /path/to/music/folder\r\n\r\n# Play with shuffle enabled\r\nmusicfp /path/to/music/folder --shuffle\r\n# or\r\nmusicfp /path/to/music/folder -s\r\n\r\n# Play all songs in current directory\r\nmusicfp current\r\n```\r\n\r\n### In-Player Commands\r\n\r\n#### When Playing a Single File\r\n\r\n| Command | Description |\r\n|---------|-------------|\r\n| `skip` | Skip the current song |\r\n| `pause` | Pause playback |\r\n| `resume` | Resume playback |\r\n| `repeat` | Restart the current song |\r\n| `vol\u003cnumber\u003e` | Set volume (e.g., `vol75` for 75%) |\r\n| `quit` | Exit the player |\r\n| `help` | Show available commands |\r\n\r\n#### When Playing Multiple Files (Directory)\r\n\r\n| Command | Description |\r\n|---------|-------------|\r\n| `pause` | Pause/resume playback |\r\n| `next` | Play next song |\r\n| `previous` | Play previous song |\r\n| `vol\u003cnumber\u003e` | Set volume (e.g., `vol50` for 50%) |\r\n| `quit` | Exit the player |\r\n| `help` | Show available commands |\r\n\r\n---\r\n\r\n## 🎮 Examples\r\n\r\n### Example 1: Playing a Single Song\r\n\r\n```bash\r\n$ musicfp ~/Music/favorite-song.mp3\r\nPlaying \"Favorite Song\" from \"Best Album\"\r\n\u003e\u003e  vol80\r\nVolume set to 80%\r\n\u003e\u003e  pause\r\nPaused\r\n\u003e\u003e  resume\r\nResumed\r\n\u003e\u003e  quit\r\n```\r\n\r\n### Example 2: Playing a Directory with Shuffle\r\n\r\n```bash\r\n$ musicfp ~/Music/Playlist --shuffle\r\nPlaying all songs from directory: /home/user/Music/Playlist with shuffle ON\r\n\u003e\u003e  next\r\n\u003e\u003e  vol60\r\nVolume set to 60%\r\n\u003e\u003e  quit\r\n```\r\n\r\n### Example 3: Quick Play from Current Directory\r\n\r\n```bash\r\n$ cd ~/Music/WorkoutMix\r\n$ musicfp current -s\r\nPlaying all songs from directory: /home/user/Music/WorkoutMix with shuffle ON\r\n\u003e\u003e  \r\n```\r\n\r\n---\r\n\r\n## 🎨 Supported Formats\r\n\r\nmusicfp supports a wide range of audio and video formats:\r\n\r\n- **Audio**: MP3, FLAC, M4A, WAV, WMA, AAC\r\n- **Video**: MP4, MKV (audio extraction)\r\n\r\n---\r\n\r\n## 🏗️ Project Structure\r\n\r\n```\r\nmusicfp/\r\n├── LICENSE                 # MIT License\r\n├── pyproject.toml         # Build configuration\r\n├── setup.py               # Package setup\r\n├── README.md              # This file\r\n└── src/\r\n    └── musicfp/\r\n        ├── __init__.py    # Package initializer\r\n        └── __main__.py    # Main application logic\r\n```\r\n\r\n---\r\n\r\n## 🔧 How It Works\r\n\r\nmusicfp uses a multi-threaded architecture to provide responsive controls:\r\n\r\n1. **Playback Thread** - Handles media loading and playback using VLC\r\n2. **Input Thread** - Listens for user commands without blocking playback\r\n\r\nThe application leverages `python-vlc`, Python bindings for the powerful VLC media player, ensuring robust and reliable playback across all supported formats.\r\n\r\n---\r\n\r\n## 👨‍💻 About the Author\r\n\r\n**Satvik Virmani**\r\n\r\n- 📧 Email: virmanisatvik01@gmail.com\r\n- 🐙 GitHub: [@satvikvirmani](https://github.com/satvikvirmani)\r\n- 🔗 Project: [musicfp](https://github.com/SatvikVirmani/musicfp)\r\n\r\n---\r\n\r\n## 🐛 Bug Reports \u0026 Feature Requests\r\n\r\nFound a bug or have an idea for a new feature? \r\n\r\n- **Report issues**: [GitHub Issues](https://github.com/SatvikVirmani/musicfp/issues)\r\n- **Contribute**: Pull requests are welcome!\r\n\r\n---\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\r\n\r\n```\r\nCopyright (c) 2018 The Python Packaging Authority\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n```\r\n\r\n---\r\n\r\n## 🌟 Show Your Support\r\n\r\nIf you find musicfp useful, please consider:\r\n\r\n- ⭐ Starring the repository\r\n- 🐦 Sharing it with fellow developers\r\n- 🍴 Forking and contributing improvements\r\n\r\n---\r\n\r\n## 💡 Why musicfp?\r\n\r\nAs developers, we spend countless hours in the terminal. Why switch contexts just to control music? musicfp keeps you in your flow state, letting you control your soundtrack with the same efficiency you bring to your code.\r\n\r\n**Stay in the terminal. Stay productive. Stay in the zone.**\r\n\r\n---\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\r\nMade with ❤️ by Satvik Virmani\r\n\r\n**[⬆ back to top](#-musicfp)**\r\n\r\n\u003c/div\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatvikvirmani%2Fmusicfp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsatvikvirmani%2Fmusicfp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatvikvirmani%2Fmusicfp/lists"}