{"id":31762357,"url":"https://github.com/sonicfantech/vidplayer","last_synced_at":"2026-04-19T02:14:08.312Z","repository":{"id":313868995,"uuid":"1051804083","full_name":"sonicFanTech/vidplayer","owner":"sonicFanTech","description":"vidplayer is A lightweight audio player using Tkinter (ttk) + pygame.mixer in Python 3.12+","archived":false,"fork":false,"pushed_at":"2025-09-29T03:28:01.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T05:31:45.713Z","etag":null,"topics":["audio-player","python","software","windows-10"],"latest_commit_sha":null,"homepage":"https://sonicfantech.org/sonic%20Fan%20Games%20Site/Software/Software.html","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sonicFanTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-06T18:51:17.000Z","updated_at":"2025-09-29T03:28:05.000Z","dependencies_parsed_at":"2025-09-09T09:22:01.573Z","dependency_job_id":"b2fbbe8b-4dfc-482d-95ce-61f6acccfbd0","html_url":"https://github.com/sonicFanTech/vidplayer","commit_stats":null,"previous_names":["sonicfantech/vidplayer"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/sonicFanTech/vidplayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonicFanTech%2Fvidplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonicFanTech%2Fvidplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonicFanTech%2Fvidplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonicFanTech%2Fvidplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sonicFanTech","download_url":"https://codeload.github.com/sonicFanTech/vidplayer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonicFanTech%2Fvidplayer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002120,"owners_count":26083307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["audio-player","python","software","windows-10"],"created_at":"2025-10-09T22:18:17.320Z","updated_at":"2026-04-19T02:14:08.300Z","avatar_url":"https://github.com/sonicFanTech.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# VidPlayer\n\n![Platform](https://img.shields.io/badge/Platform-Windows-0078D6?style=for-the-badge)\n![Python](https://img.shields.io/badge/Python-3.13.9-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white)\n![UI](https://img.shields.io/badge/UI-PySide6-41CD52?style=for-the-badge\u0026logo=qt\u0026logoColor=white)\n![Playback](https://img.shields.io/badge/Playback-VLC%203.0.23-FF8800?style=for-the-badge\u0026logo=vlcmediaplayer\u0026logoColor=white)\n![Status](https://img.shields.io/badge/Status-Release-brightgreen?style=for-the-badge)\n![Updater](https://img.shields.io/badge/Updater-External%20Python-blue?style=for-the-badge)\n\nA fast, clean Windows audio player built with **Python + PySide6**, with **portable VLC playback**, **custom .ico-based UI icons**, a reworked **Full Screen Artwork** mode, a more detailed built-in **File Info** window, subtitle / lyrics support, Discord Rich Presence, and an external updater.\n\n---\n\n## Quick Links\n\n- **Releases:** \u003chttps://github.com/sonicFanTech/vidplayer/releases\u003e\n- **Developer:** \u003chttps://github.com/sonicFanTech\u003e\n- **Latest update package source:** \u003chttps://github.com/sonicFanTech/customSetupInstallersPackageDownloads/releases\u003e\n- **Main feature / build log:** [CHANGELOG.md](./CHANGELOG.md)\n\n---\n\n## Screenshots\n\n![VidPlayer Main Window](./Screenshots/Modern/MainWindow.png)\n![VidPlayer Playlist Window](./Screenshots/Modern/PlayListWindow.png)\n![VidPlayer Settings Window Taab 1](./Screenshots/Modern/SettingsWindow.png)\n![VidPlayer Settings Window Tab 2](./Screenshots/Modern/SettingsWindow2.png)\n![VidPlayer Settings Window Tab 3](./Screenshots/Modern/SettingsWindow3.png)\n![VidPlayer Settings Window Tab 4](./Screenshots/Modern/SettingsWindow4.png)\n![VidPlayer File Info Window](./Screenshots/Modern/InfoWindow.png)\n![VidPlayer ACD Ripping ool](./Screenshots/Modern/VPEACDRippingTool.png)\n\n---\n\n## Highlights\n\n- Portable **VLC-based playback engine**\n- Updated portable VLC runtime DLLs to **VLC 3.0.23**\n- Custom **.ico-based** button and menu icon system\n- Reworked **Full Screen Artwork** mode with better artwork refresh behavior\n- Built-in **File Info** window with deeper media / codec details\n- VPLogo placeholder support for no-artwork / no-file-loaded states\n- Playlist save / load support (`.vpl` / JSON)\n- Drag-and-drop audio loading\n- Batch add dialog for large file imports\n- Recent Files menu\n- Discord Rich Presence toggle\n- Subtitle / lyrics support with styling controls\n- Dockable playlist mode\n- Mini Mode UI\n- Experimental live VLC visualizer data mode\n- External updater with hash-based partial updates and rollback manifests\n- External Audio CD ripper tool support\n\n\n---\n\n## Main Features\n\n### Playback\n- Portable VLC playback path for the main player\n- Double-click to play supported files\n- Command-line file opening support\n- Resume last file / position support\n- Auto-play next track option\n- Always-on-top option\n\n### Playlist\n- Add, remove, reorder, save, and load playlists\n- Search / filter playlist entries\n- Dockable playlist mode\n- Drag-and-drop support in the main window and playlist UI\n- Batch loading dialog for large imports\n\n### Artwork / Info\n- Reworked Full Screen Artwork mode\n- Embedded artwork support\n- External artwork fallback support\n- VPLogo placeholder support when no artwork is available\n- File Info dialog with expanded media, container, codec, and artwork details\n- Multi-file File Info list support when more than one track is loaded\n\n### Subtitles / Lyrics\n- Auto-load sidecar subtitle / lyrics files\n- Manual subtitle file loading\n- Font size, bold, color, background, opacity, and position controls\n- Timing offset setting\n- Mini Mode-safe subtitle handling\n\n### Visualizer\n- Multiple visualizer styles\n- Adjustable FPS and size\n- Custom color presets / HEX colors\n- Experimental live VLC callback visualizer mode\n\n### Audio CD / External Tools\n- Audio CD tracks can flow through the main playlist/player path\n- External Audio CD ripper tool support\n- Preferred ripper executable name: `VPACDRipper.exe`\n- Support for local helper tools in `bin\\`\n\n### Updater\n- External updater workflow\n- Python-based updater rework\n- Shared updater settings file in `update\\updater_settings.json`\n- Hash-based partial update logic\n- Preserve rules for local files\n- Rollback snapshots with manifests\n- Auto-launch support back into VidPlayer after update / rollback\n\n---\n\n## Supported Audio Formats\n\n- `.mp3`\n- `.wav`\n- `.ogg`\n- `.flac`\n- `.m4a`\n- `.aac`\n- `.wma`\n\nSome playback behavior can vary depending on codec support inside VLC.\n\n---\n\n## Folder Layout\n\nA typical portable layout looks like this:\n\n```text\nVidPlayer\\\n├─ vidplayer.exe\n├─ config.json\n├─ recents.json\n├─ artmap.json\n├─ visualizer_presets.json\n├─ bin\\\n│  ├─ VLCLibs\\\n│  │  ├─ libvlc.dll\n│  │  ├─ libvlccore.dll\n│  │  └─ plugins\\\n│  ├─ icons\\\n│  │  ├─ VPLogo.ico\n│  │  ├─ buttons\\\n│  │  └─ menubar\\\n│  ├─ ffprobe.exe\n│  ├─ ffmpeg.exe\n│  └─ VPACDRipper.exe\n├─ update\\\n│  ├─ VidPlayerUpdater.exe\n│  ├─ VidPlayerUpdater.py\n│  ├─ updater_settings.json\n│  └─ rollbacks\\\n└─ Ripped CDA\\\n```\n\n---\n\n## Install / Run from Source\n\nThis section is only for running the Python source directly. If you are using a prebuilt release, you do **not** need Python installed.\n\n### Option A — Use **pyIDE** (recommended for editing / running / building)\n\nIf you want a more guided way to work with the VidPlayer source, you can use **SFT pyIDE**, A custom Python IDE.\n\npyIDE is a Windows PySide6 Python IDE with:\n- a tabbed editor\n- interpreter selection\n- two run modes\n- a built-in PyInstaller compiler window\n- project file tree tools\n- settings, autosave, and recent files\n\nLinks:\n- **pyIDE Website:** [SFT pyIDE](https://sonicfantech.org/Site/pyIDE/index.html)\n- **GitHub Repository:** [sonicFanTech/pyIDE](https://github.com/sonicFanTech/pyIDE)\n- **Releases:** [pyIDE v1.2.0](https://github.com/sonicFanTech/pyIDE/releases/tag/v1.2.0)\n\n\u003e pyIDE provides multiple language-specific installers on its release page. Pick the installer / portable build that matches the language you want.\n\n#### 1. Install Python\n\nVidPlayer is currently targeted at **Python 3.13.9 x64**.\n\nDownload:\n- \u003chttps://www.python.org/ftp/python/3.13.9/python-3.13.9-amd64.exe\u003e\n\n#### 2. Install pyIDE\n\nDownload the version you want from the pyIDE release page, then install it or extract the portable version.\n\n#### 3. Open the VidPlayer source in pyIDE\n\nOpen your VidPlayer `.py` source file in pyIDE.\n\n\u003cimg width=\"1198\" height=\"804\" alt=\"mainwindow\" src=\"https://github.com/user-attachments/assets/3b419938-6319-4713-99c3-b14e4b0a89ba\" /\u003e\n\n#### 4. Install the required VidPlayer packages\n\nUse pyIDE's terminal / run tools, or Command Prompt, and install the dependencies:\n\n```bash\npip install PySide6 pygame mutagen Pillow requests pypresence python-vlc numpy py7zr\n```\n\nNotes:\n- `python-vlc` is used for VLC Python bindings.\n- `numpy` is used for visualizer features.\n- `py7zr` is used by the Python updater, with fallback support for external 7-Zip tools when needed.\n\n\u003cimg width=\"1198\" height=\"804\" alt=\"mainwindow\" src=\"https://github.com/user-attachments/assets/e409972f-bbec-4084-b525-7af3990f151d\" /\u003e\n\n#### 5. Run VidPlayer from pyIDE\n\nYou can run VidPlayer in either of pyIDE's run modes:\n- **Run inside pyIDE** for integrated output\n- **Run in external console** for a real terminal window\n\n  \n\u003cimg width=\"1423\" height=\"844\" alt=\"runin\" src=\"https://github.com/user-attachments/assets/b6064f1c-5593-4b62-b421-9cdb464bd4ce\" /\u003e\n\u003cimg width=\"1418\" height=\"819\" alt=\"consolerun\" src=\"https://github.com/user-attachments/assets/51520bb1-f520-461a-8499-cb741218b2cc\" /\u003e\n\nMain source file example:\n\n```bash\npython vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py\n```\n\nYou can also pass a file directly:\n\n```bash\npython vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py \"D:\\Music\\song.mp3\"\n```\n\n#### 6. Build VidPlayer to EXE with pyIDE\n\npyIDE includes a built-in **PyInstaller compiler window**, so you can use that to build VidPlayer and the external updater.\n\nExample targets:\n\n```bash\npyinstaller --noconfirm --onefile --windowed vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py\n```\n\nUpdater example:\n\n```bash\npyinstaller --noconfirm --onefile --windowed VidPlayerUpdater_Python_Reworked_with_settings.py --name VidPlayerUpdater\n```\n\n**Screenshot placeholder:**\n\n[pyIDE PyInstaller compiler window](./Screenshots/VP_pyIDE\\buildwindow.png)\n\n### Option B — Standard Python / Command Prompt workflow\n\nIf you do not want to use pyIDE, you can still run and build VidPlayer the normal way.\n\n#### 1. Install Python\n\nVidPlayer is currently targeted at **Python 3.13.9 x64**.\n\nDownload:\n- \u003chttps://www.python.org/ftp/python/3.13.9/python-3.13.9-amd64.exe\u003e\n\n#### 2. Install required packages\n\n```bash\npip install PySide6 pygame mutagen Pillow requests pypresence python-vlc numpy py7zr\n```\n\n#### 3. Run VidPlayer from source\n\n```bash\npython vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py\n```\n\nYou can also pass a file directly:\n\n```bash\npython vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py \"D:\\Music\\song.mp3\"\n```\n\n#### 4. Build to EXE\n\n```bash\npyinstaller --noconfirm --onefile --windowed vidplayer_2.0.9.1.2_PASSOVER2_portable_vlc_fixed_updater_settings.py\n```\n\nUpdater example:\n\n```bash\npyinstaller --noconfirm --onefile --windowed VidPlayerUpdater_Python_Reworked_with_settings.py --name VidPlayerUpdater\n```\n\n---\n\n### Quick notes\n\n- pyIDE is the better guided option if you want to **edit, test, and build** VidPlayer in one place.\n- The standard workflow is still here if you prefer plain Python + Command Prompt.\n- If you use the updater build path, make sure the built updater ends up in `update\\` in your portable VidPlayer layout.\n\n---\n\n## Updater Notes\n\nThe newer updater system is designed to be safer for portable installs.\n\nIt supports:\n- remote version checks\n- package download\n- hash checking\n- partial update apply\n- local file preserve rules\n- updater-folder exclusion\n- uninstaller-file exclusion\n- rollback snapshots with manifests\n- shared settings between VidPlayer and the updater itself\n\nDefault local-preserve behavior is intended to avoid replacing user data files like `.json` config files.\n\n---\n\n## Themes / UI Modes\n\nVidPlayer supports:\n- Light theme\n- Dark theme\n- System default theme\n- Mini Mode\n- Dockable playlist mode\n- Full Screen Artwork mode\n\nOlder Aero Glass-era wording from previous builds has been replaced by the newer portable VLC branch and newer UI workflow.\n\n---\n\n## Tech Stack\n\n- **UI:** PySide6 / Qt\n- **Playback:** VLC via portable runtime DLLs\n- **Metadata:** mutagen\n- **Artwork:** Pillow\n- **Requests / updater:** requests\n- **Discord integration:** pypresence\n- **Visualizer math:** numpy\n- **Updater extraction:** py7zr with external 7-Zip fallback support\n\n---\n\n## Current Build Notes\n\nCurrent README focus:\n- newer portable VLC branch\n- release build status\n- custom .ico-based UI icon system\n- reworked Full Screen Artwork behavior\n- improved built-in File Info workflow\n- VPLogo placeholder integration\n- updater / visualizer / docking / subtitle systems carried forward from the newer branch\n\n\nFor the full version history, see [CHANGELOG.md](./CHANGELOG.md).\n\n---\n\n## Credits\n\nDeveloped by **sonic Fan Tech / sonic Fan Games**\n\n- GitHub: \u003chttps://github.com/sonicFanTech\u003e\n- Releases: \u003chttps://github.com/sonicFanTech/vidplayer/releases\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonicfantech%2Fvidplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsonicfantech%2Fvidplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonicfantech%2Fvidplayer/lists"}