{"id":47940731,"url":"https://github.com/ccwilliams314/limewire","last_synced_at":"2026-04-04T08:01:41.579Z","repository":{"id":343348012,"uuid":"1176541504","full_name":"Ccwilliams314/LimeWire","owner":"Ccwilliams314","description":"LimeWire is a 20-tab all-in-one audio production studio built with Python and tkinter. It started as a simple YouTube downloader and evolved into a comprehensive music utility — from downloading and converting, to analysis, editing, stem separation, remixing, and batch processing.","archived":false,"fork":false,"pushed_at":"2026-04-04T07:05:38.000Z","size":6932,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T07:05:56.315Z","etag":null,"topics":["audio","audio-analysis","audio-editor","demucs","music-production","python","stems","tkinter","youtube-downloader","yt-dlp"],"latest_commit_sha":null,"homepage":"https://github.com/Ccwilliams314/LimeWire","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/Ccwilliams314.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-09T05:51:26.000Z","updated_at":"2026-04-04T07:05:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ccwilliams314/LimeWire","commit_stats":null,"previous_names":["ccwilliams314/limewire"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Ccwilliams314/LimeWire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ccwilliams314%2FLimeWire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ccwilliams314%2FLimeWire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ccwilliams314%2FLimeWire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ccwilliams314%2FLimeWire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ccwilliams314","download_url":"https://codeload.github.com/Ccwilliams314/LimeWire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ccwilliams314%2FLimeWire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31392188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"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":["audio","audio-analysis","audio-editor","demucs","music-production","python","stems","tkinter","youtube-downloader","yt-dlp"],"created_at":"2026-04-04T08:01:05.700Z","updated_at":"2026-04-04T08:01:41.566Z","avatar_url":"https://github.com/Ccwilliams314.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003c!-- Logo / Hero --\u003e\n\u003cimg src=\"screenshots/01_search.png\" width=\"720\" alt=\"LimeWire Studio Edition\"\u003e\n\n\u003cbr\u003e\n\n# LimeWire Studio Edition\n\n### The Swiss Army Knife of Audio Production\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white)](https://python.org)\n[![License: MIT](https://img.shields.io/github/license/Ccwilliams314/LimeWire?style=for-the-badge\u0026color=2ECC71)](LICENSE)\n[![GitHub Stars](https://img.shields.io/github/stars/Ccwilliams314/LimeWire?style=for-the-badge\u0026color=FFD600\u0026logo=github)](https://github.com/Ccwilliams314/LimeWire/stargazers)\n[![Latest Release](https://img.shields.io/github/v/release/Ccwilliams314/LimeWire?style=for-the-badge\u0026color=00E5FF)](https://github.com/Ccwilliams314/LimeWire/releases)\n\n[![CI](https://img.shields.io/github/actions/workflow/status/Ccwilliams314/LimeWire/check.yml?style=flat-square\u0026label=CI\u0026logo=github)](https://github.com/Ccwilliams314/LimeWire/actions)\n[![Issues](https://img.shields.io/github/issues/Ccwilliams314/LimeWire?style=flat-square\u0026color=FF1744)](https://github.com/Ccwilliams314/LimeWire/issues)\n![25 Tabs](https://img.shields.io/badge/tabs-25-2ECC71?style=flat-square)\n![15 Themes](https://img.shields.io/badge/themes-15-BD93F9?style=flat-square)\n![6 Languages](https://img.shields.io/badge/languages-6-FF9E64?style=flat-square)\n![195 Tests](https://img.shields.io/badge/tests-195-00E676?style=flat-square)\n\n**Download \u0026bull; Play \u0026bull; Analyze \u0026bull; Edit \u0026bull; Separate \u0026bull; Remix \u0026bull; Transfer \u0026bull; Process**\n\n[Getting Started](#-quick-start) \u0026bull; [Features](#-features) \u0026bull; [Screenshots](#-screenshots) \u0026bull; [Themes](#-themes) \u0026bull; [Architecture](#-architecture)\n\n\u003c/div\u003e\n\n---\n\n## What is LimeWire?\n\nA **25-tab all-in-one audio production studio** built with Python and tkinter. From simple YouTube downloads to AI-powered stem separation, professional audio analysis, non-destructive editing, cross-platform playlist transfers, and batch processing — all in a single app with 15 themes and 6 languages.\n\n### Headline Features\n\n| | Feature | What it does |\n|---|---------|-------------|\n| :arrow_down: | **1000+ Site Downloads** | YouTube, Spotify, SoundCloud, Bandcamp via yt-dlp |\n| :brain: | **AI Stem Separation** | Vocals, drums, bass, guitar, piano via Demucs |\n| :bar_chart: | **Audio Analysis** | BPM, key, Camelot, LUFS, waveform, spectrogram |\n| :mag: | **Track Identification** | Shazam, MusicBrainz, Chromaprint, Apple Music |\n| :scissors: | **Non-Destructive Editor** | Cut, trim, fade, merge with full undo/redo |\n| :microphone: | **Recording + Whisper** | Mic capture with AI transcription and SRT export |\n| :control_knobs: | **Effects Chain** | Gain, compressor, reverb, delay, chorus, filters |\n| :musical_score: | **Stem Remixer** | Per-stem volume, pan, mute/solo mixing console |\n| :zap: | **Batch Processor** | Normalize, convert, fade, trim silence at scale |\n| :repeat: | **Cross-Platform Transfers** | Sync playlists, liked songs, artists between Spotify, YouTube, TIDAL, Deezer, SoundCloud |\n| :art: | **15 Live Themes** | Switch instantly — no restart, includes custom theme loader |\n\n---\n\n## :rocket: Quick Start\n\n```bash\n# Prerequisites: Python 3.10+ and FFmpeg on PATH\nwinget install ffmpeg\n\n# Core install (download + playback)\npip install yt-dlp pillow requests mutagen pyglet\n\n# Launch\npython LimeWire.py\n# or: python -m limewire\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOptional modules — install only what you need\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\npip install librosa soundfile pyloudnorm   # BPM/key/loudness analysis\npip install musicbrainzngs pyacoustid      # Track identification\npip install shazamio                       # Shazam (Python \u003c=3.12)\npip install demucs                         # AI stem separation (needs PyTorch)\npip install pydub sounddevice pyrubberband # Editing \u0026 recording\npip install openai-whisper                 # Whisper transcription\npip install pedalboard                     # Audio effects (Spotify)\npip install pyflp                          # FL Studio integration\npip install tkinterdnd2                    # Drag \u0026 drop\n```\n\n**All-in-one:**\n```bash\npip install yt-dlp pillow requests mutagen pyglet librosa soundfile pyloudnorm musicbrainzngs pyacoustid demucs pydub sounddevice pyrubberband openai-whisper pedalboard\n```\n\n\u003e The status bar shows module count (e.g., `12/14`). Click it to see what's missing.\n\n\u003c/details\u003e\n\n### Windows One-Click Setup\n\n```bash\n# Run the automated installer\nsetup.bat\n```\n\n---\n\n## :camera: Screenshots\n\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cstrong\u003eScreenshots (20 of 25 tabs)\u003c/strong\u003e\u003c/summary\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\u003cstrong\u003eSearch \u0026 Grab\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/01_search.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\u003cstrong\u003eBatch Download\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/02_download.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePlaylist\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/03_playlist.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eConverter\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/04_converter.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePlayer\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/05_player.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eAnalyze\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/06_analyze.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eStems (AI)\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/07_stems.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eEffects\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/08_effects.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDiscovery\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/09_discovery.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eSamples\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/10_samples.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eEditor\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/11_editor.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eRecorder\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/12_recorder.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eSpectrogram\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/13_spectrogram.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ePitch/Time\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/14_pitchtime.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eRemixer\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/15_remixer.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eBatch Process\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/16_batch.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eScheduler\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/17_schedule.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eHistory\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/18_history.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eCover Art\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/19_coverart.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eSettings\u003c/strong\u003e\u003cbr\u003e\u003cimg src=\"screenshots/20_settings.png\" width=\"100%\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/details\u003e\n\n---\n\n## :sparkles: Features\n\n### Download \u0026 Library\n\n| Tab | Capabilities |\n|-----|-------------|\n| **Search \u0026 Grab** | Paste any URL, auto-detect source, choose format (MP3/WAV/FLAC/OGG/M4A/AAC/OPUS), quality selector |\n| **Batch Download** | Queue multiple URLs, persistent queue, retry failed, progress tracking |\n| **Playlist** | YouTube playlist fetch, cross-service transfer (Spotify, YouTube, TIDAL, Deezer, SoundCloud, Apple Music, Amazon Music), sync liked songs, artists, albums |\n| **Converter** | Format conversion via ffmpeg, metadata preservation |\n| **History** | Searchable download log with replay and management |\n| **Scheduler** | Schedule downloads for specific times with background polling |\n| **Cover Art** | View, add, fetch (iTunes/MusicBrainz), batch-apply album artwork |\n\n### Playback \u0026 Analysis\n\n| Tab | Capabilities |\n|-----|-------------|\n| **Player** | Waveform display, EQ spectrum, album art, speed control, A-B loop, crossfade, M3U playlists |\n| **Analyze** | BPM, key, Camelot, LUFS, true peak. Shazam/MusicBrainz/Chromaprint/Apple Music identification |\n| **Discovery** | Library scanner, BPM/key caching, harmonic mixing suggestions, smart playlists, CSV export |\n| **Spectrogram** | Linear/Mel/CQT with viridis/magma/plasma/inferno colormaps, PNG export |\n\n### Production \u0026 Editing\n\n| Tab | Capabilities |\n|-----|-------------|\n| **Stems** | AI separation via Demucs (htdemucs, htdemucs_ft, mdx_extra) — vocals, drums, bass, other, piano, guitar |\n| **Remixer** | Mix stems: per-stem volume (0-150%), pan (L-R), mute/solo, preview, export |\n| **Editor** | Non-destructive trim/cut/fade/merge, undo/redo, waveform selection, 32x zoom |\n| **Recorder** | Mic recording, VU meter, live waveform, Whisper AI transcription, SRT export |\n| **Pitch/Time** | Pitch shift (semitones), time stretch, BPM auto-detect, vocal isolation |\n| **Effects** | Pedalboard chain: gain, compressor, limiter, reverb, delay, chorus, filters. Save/load presets |\n| **Batch Process** | Bulk normalize loudness (dBFS), convert format, fade in/out, trim silence, strip metadata |\n| **Samples** | Freesound.org browser with preview and download |\n| **Lyrics** | Fetch and display synced lyrics, search by title/artist |\n| **Visualizer** | Real-time audio visualizations with multiple modes |\n| **Library** | Local music library management with smart folders |\n| **DJ** | Dual-deck mixing with crossfader and BPM sync |\n| **Image Scraper** | Web image extraction, SoundCloud artwork, MP3+art download |\n\n### Settings \u0026 Customization\n\n- **15 built-in themes** with instant live switching (no restart)\n- **Community theme loader** — load custom JSON themes via Tools menu\n- **Skin Customizer** (`skin_customizer.py`) — visual theme editor with live preview\n- **6 languages** — English, Spanish, French, German, Japanese, Portuguese\n- **Plugin system** — SHA-256 hash-trusted custom audio processors\n- **VST3/AU hosting** — load VST3 plugins in the effects chain\n- **MIDI Learn** — map hardware controllers in the Remixer\n- **Discord Rich Presence** — show currently playing track\n- **Cloud sync** — export/import settings to Dropbox/OneDrive/Google Drive\n\n---\n\n## :keyboard: Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| `Ctrl+K` | Command Palette — fuzzy search pages, history, library |\n| `Ctrl+D` | Download / Grab URL |\n| `Ctrl+O` | Open downloads folder |\n| `Space` | Play / Pause |\n| `Ctrl+Right/Left` | Next / Previous track |\n| `Ctrl+Up/Down` | Volume up / down |\n| `Shift+Escape` | Quick close |\n| `Ctrl+?` | Show shortcuts dialog |\n\n---\n\n## :art: Themes\n\n15 built-in themes with **instant live switching** — no restart required:\n\n| Theme | Preview |\n|-------|---------|\n| **LiveWire** (default) | Electric cyan on dark navy |\n| **Light** | Clean white, green accents |\n| **Dark** | Rich dark, green accents |\n| **Modern** | GitHub-inspired, high contrast |\n| **Synthwave** | Neon pink/purple retro |\n| **Dracula** | Purple/pink, dev favorite |\n| **Catppuccin** | Soft pastels, easy on the eyes |\n| **Tokyo Night** | Blue-tinted calm palette |\n| **Spotify** | Green on black |\n| **Classic** | OG lime green nostalgia |\n| **Nord** | Arctic blue-grey |\n| **Gruvbox** | Warm retro earth tones |\n| **High Contrast** | Maximum accessibility |\n| **Solarized** | Precision colors, reduced eye strain |\n| **Monokai** | Vibrant developer classic |\n\nEach theme defines **37 semantic color tokens** (backgrounds, text, accents, borders, cards, states, surfaces, focus rings) for pixel-perfect consistency across all 25 tabs.\n\n**Create your own:** Run `python skin_customizer.py` to visually design custom themes and export them as JSON files loadable via **Tools \u003e Load Community Theme**.\n\n---\n\n## :building_construction: Architecture\n\nLimeWire ships as both a **modular package** (`limewire/`) and a backward-compatible **single-file launcher** (`LimeWire.py`):\n\n```\nLimeWire/\n  LimeWire.py                 # Thin launcher (backward compat)\n  skin_customizer.py          # Visual theme editor\n  limewire/\n    __init__.py               # __version__ = \"4.0.0\"\n    __main__.py               # python -m limewire\n    app.py                    # App(tk.Tk) main class\n    core/\n      theme.py                # T namespace, 15 themes, apply_theme()\n      constants.py            # Timing, dimension, format constants\n      config.py               # JSON persistence, file paths\n      platform.py             # OS detection\n      deps.py                 # Optional dependency flags \u0026 lazy loaders\n      audio_backend.py        # Playback engine\n    i18n/                     # 6-language localization\n    utils/                    # Helpers, sanitization\n    services/\n      analysis.py             # BPM/key, loudness, harmonics, Camelot\n      metadata.py             # Shazam, MusicBrainz, AcoustID, lyrics\n      cover_art.py            # Extract/embed/fetch album artwork\n      audio_processing.py     # Waveform, demucs, pydub, spectrogram\n      connectors/             # Music service connectors (7 services)\n        base.py               # ConnectorBase ABC, TrackResult, PlaylistResult\n        oauth.py              # OAuth 2.0 with PKCE + CSRF state\n        storage.py            # DPAPI-encrypted token storage\n        spotify.py            # Spotify connector\n        youtube.py            # YouTube Music connector\n        tidal.py              # TIDAL connector\n        soundcloud.py         # SoundCloud connector\n        deezer.py             # Deezer connector\n        transfer.py           # Cross-service playlist/library transfer engine\n    security/                 # Path confinement, subprocess allowlist, JSON validation\n    ui/                       # Widgets, styles, tooltips, toasts, command palette\n    pages/                    # 25 page classes (one per tab)\n  tests/                      # 195 tests (pytest)\n```\n\n### Module Dependency Flow\n\n```\ncore/ \u003c-- utils/ \u003c-- services/ \u003c-- ui/ \u003c-- pages/ \u003c-- app.py\n         ^                                              ^\n     security/                                     __main__.py\n```\n\nPages receive `app` as a constructor arg — they never import `app.py` directly. No circular imports.\n\n### Security Layer\n\n| Module | Purpose |\n|--------|---------|\n| `safe_paths.py` | Path traversal prevention, atomic writes, symlink checks |\n| `safe_subprocess.py` | Binary allowlist (ffmpeg, ffprobe, yt-dlp only) |\n| `safe_json.py` | Size limits (5 MB), depth checks (10), key allowlists |\n| `plugin_policy.py` | SHA-256 hash trust — scan without execute |\n| `connectors/oauth.py` | OAuth 2.0 PKCE + CSRF state validation for all services |\n| `connectors/storage.py` | Windows DPAPI token encryption at rest |\n| `network.py` | SSRF prevention — DNS resolution checks, public IP validation |\n\n### Connector Security\n\nAll 7 music service connectors are hardened with:\n- **OAuth 2.0 PKCE** — Proof Key for Code Exchange prevents authorization code interception\n- **CSRF Protection** — Cryptographic state parameter validates OAuth callbacks\n- **Encrypted Storage** — Tokens encrypted at rest via Windows DPAPI (`CryptProtectData`)\n- **Input Validation** — Regex-based ID validation on all service-specific identifiers\n- **SSRF Prevention** — URL domain allowlists block server-side request forgery\n- **Error Sanitization** — Tokens and secrets stripped from error messages before display\n\n### Data Files\n\nAll stored in `~/.limewire_*.json`: history, settings, schedule, queue, analysis cache, session state, recent files.\n\n---\n\n## :test_tube: Testing\n\n```bash\npip install pytest\npython -m pytest tests/ -v\n```\n\n**195 tests** covering security modules, core systems, utilities, and services. CI runs on Python 3.10 through 3.14.\n\n---\n\n## :wrench: Tech Stack\n\n| | Component | Technology |\n|---|-----------|-----------|\n| :snake: | Language | Python 3.10+ (tested through 3.14) |\n| :desktop_computer: | GUI | tkinter / ttk |\n| :arrow_down: | Downloads | yt-dlp |\n| :speaker: | Playback | pyglet |\n| :label: | Metadata | mutagen |\n| :gear: | Processing | pydub, ffmpeg |\n| :bar_chart: | Analysis | librosa, pyloudnorm |\n| :brain: | AI Stems | Demucs (Meta AI) |\n| :musical_note: | Pitch/Time | pyrubberband |\n| :microphone: | Recording | sounddevice |\n| :speech_balloon: | Transcription | openai-whisper |\n| :control_knobs: | Effects | pedalboard (Spotify) |\n| :mag: | Track ID | shazamio, pyacoustid, musicbrainzngs |\n\n---\n\n## :books: Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Wiki](https://github.com/Ccwilliams314/LimeWire/wiki) | Complete documentation for every module and page (34 pages) |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | Developer guide, project structure, how to contribute |\n| [SECURITY.md](SECURITY.md) | Security policy, vulnerability scan report |\n| [CHANGELOG.md](CHANGELOG.md) | Version history |\n| [ROADMAP.md](ROADMAP.md) | Feature roadmap |\n\n---\n\n## :handshake: Contributing\n\n1. Fork \u0026 clone\n2. `pip install -r requirements.txt`\n3. Create a branch, make changes\n4. Run tests: `python -m pytest tests/ -v`\n5. Submit a PR\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for full details.\n\n---\n\n## :scroll: License\n\n[MIT License](LICENSE) — free for personal and commercial use.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003csub\u003e\u003cem\u003e\"Definitely virus-free since 2024\"\u003c/em\u003e\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccwilliams314%2Flimewire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccwilliams314%2Flimewire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccwilliams314%2Flimewire/lists"}