Skip to content

TeamStarWolf/LimeWire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
LimeWire Studio V 4.0

LimeWire Studio V 4.0

Python desktop audio studio for download, analysis, editing, stem separation, playlist transfer, and batch processing

Python 3.10+ License: MIT GitHub Stars Latest Release

CI Issues 25 Tabs 25 Themes 6 Languages 195 Tests

Download • Analyze • Edit • Separate • Transfer • Batch Process

Quick StartFeature HighlightsDocsApplication OverviewRoadmap


What LimeWire Is

LimeWire is a Windows-friendly Python audio application that brings downloading, playback, analysis, editing, stem separation, playlist transfer, and batch processing into one desktop workspace. It is designed to feel like a practical production tool rather than a collection of disconnected utilities.

What LimeWire Focuses On

  1. keeping common audio tasks in one desktop application instead of sending users between specialist tools
  2. supporting both quick utility workflows and deeper production workflows, from grabbing a track to editing stems
  3. pairing broad feature coverage with security controls, documentation, and release hygiene

Core Workflows

Workflow What it supports
Download and library intake Capture audio from major platforms, queue jobs, convert formats, and organize metadata
Analysis and identification Review BPM, key, loudness, waveform, spectrogram, and identification results in one place
Editing and remixing Trim, fade, merge, record, separate stems, apply effects, and export updated audio
Cross-platform music management Move playlists, liked tracks, artists, and albums between supported services
Batch processing Normalize, convert, trim silence, apply fades, and clean metadata at scale

Quick Start

# Prerequisites: Python 3.10+ and FFmpeg on PATH
winget install ffmpeg

# Core install (download + playback)
pip install yt-dlp pillow requests mutagen pyglet

# Launch
python LimeWire.py
# or: python -m limewire
Optional modules - install only what you need
pip install librosa soundfile pyloudnorm   # BPM/key/loudness analysis
pip install musicbrainzngs pyacoustid      # Track identification
pip install shazamio                       # Shazam (Python <=3.12)
pip install demucs                         # AI stem separation (needs PyTorch)
pip install pydub sounddevice pyrubberband # Editing & recording
pip install openai-whisper                 # Whisper transcription
pip install pedalboard                     # Audio effects (Spotify)
pip install pyflp                          # FL Studio integration
pip install tkinterdnd2                    # Drag & drop

All-in-one:

pip install yt-dlp pillow requests mutagen pyglet librosa soundfile pyloudnorm musicbrainzngs pyacoustid demucs pydub sounddevice pyrubberband openai-whisper pedalboard

The status bar shows module count (e.g., 12/14). Click it to see what's missing.

Windows One-Click Setup

# Run the automated installer
setup.bat

macOS Setup

# 1. Install FFmpeg via Homebrew
brew install ffmpeg

# 2. Install core Python dependencies
pip3 install yt-dlp pillow requests mutagen pyglet

# 3. Launch
python3 LimeWire.py

Note: sounddevice requires PortAudio on macOS: brew install portaudio && pip install sounddevice pedalboard is fully supported on macOS (Apple Silicon and Intel). tkinterdnd2 requires: brew install python-tk

Linux Setup

# 1. Install FFmpeg (Debian/Ubuntu)
sudo apt install ffmpeg python3-tk

# Fedora/RHEL:
# sudo dnf install ffmpeg python3-tkinter

# 2. Install core Python dependencies
pip3 install yt-dlp pillow requests mutagen pyglet

# 3. Launch
python3 LimeWire.py

Note: Audio playback uses sounddevice which requires libportaudio2: sudo apt install libportaudio2 && pip install sounddevice tkinterdnd2 on Linux: pip install tkinterdnd2 (no extra system packages needed on most distros)


Screenshots

Screenshots (20 of 25 tabs — Lyrics, Visualizer, Library, DJ, and Image Scraper tabs pending screenshots)
Search & Grab
Batch Download
Playlist
Converter
Player
Analyze
Stems (AI)
Effects
Discovery
Samples
Editor
Recorder
Spectrogram
Pitch/Time
Remixer
Batch Process
Scheduler
History
Cover Art
Settings

Feature Highlights

Download & Library

Tab Capabilities
Search & Grab Paste any URL, auto-detect source, choose format (MP3/WAV/FLAC/OGG/M4A/AAC/OPUS), quality selector
Batch Download Queue multiple URLs, persistent queue, retry failed, progress tracking
Playlist YouTube playlist fetch, cross-service transfer (Spotify, YouTube, TIDAL, Deezer, SoundCloud, Apple Music, Amazon Music), sync liked songs, artists, albums
Converter Format conversion via ffmpeg, metadata preservation
History Searchable download log with replay and management
Scheduler Schedule downloads for specific times with background polling
Cover Art View, add, fetch (iTunes/MusicBrainz), batch-apply album artwork

Playback & Analysis

Tab Capabilities
Player Waveform display, EQ spectrum, album art, speed control, A-B loop, crossfade, M3U playlists
Analyze BPM, key, Camelot, LUFS, true peak. Shazam/MusicBrainz/Chromaprint/Apple Music identification
Discovery Library scanner, BPM/key caching, harmonic mixing suggestions, smart playlists, CSV export
Spectrogram Linear/Mel/CQT with viridis/magma/plasma/inferno colormaps, PNG export

Production & Editing

Tab Capabilities
Stems AI separation via Demucs (htdemucs, htdemucs_ft, mdx_extra) — vocals, drums, bass, other, piano, guitar
Remixer Mix stems: per-stem volume (0-150%), pan (L-R), mute/solo, preview, export
Editor Non-destructive trim/cut/fade/merge, undo/redo, waveform selection, 32x zoom
Recorder Mic recording, VU meter, live waveform, Whisper AI transcription, SRT export
Pitch/Time Pitch shift (semitones), time stretch, BPM auto-detect, vocal isolation
Effects Pedalboard chain: gain, compressor, limiter, reverb, delay, chorus, filters. Save/load presets
Batch Process Bulk normalize loudness (dBFS), convert format, fade in/out, trim silence, strip metadata
Samples Freesound.org browser with preview and download
Lyrics Fetch and display synced lyrics, search by title/artist
Visualizer Real-time audio visualizations with multiple modes
Library Local music library management with smart folders
DJ Dual-deck mixing with crossfader and BPM sync
Image Scraper Web image extraction, SoundCloud artwork, MP3+art download

Settings & Customization

  • 25 built-in themes with instant live switching (no restart)
  • Community theme loader — load custom JSON themes via Tools menu
  • Skin Customizer (skin_customizer.py) — visual theme editor with live preview
  • 6 languages — English, Spanish, French, German, Japanese, Portuguese
  • Plugin system — SHA-256 hash-trusted custom audio processors
  • VST3/AU hosting — load VST3 plugins in the effects chain
  • MIDI Learn — map hardware controllers in the Remixer
  • Discord Rich Presence — show currently playing track
  • Cloud sync — export/import settings to Dropbox/OneDrive/Google Drive

Keyboard Shortcuts

Shortcut Action
Ctrl+K Command Palette — fuzzy search pages, history, library
Ctrl+D Download / Grab URL
Ctrl+O Open downloads folder
Space Play / Pause
Ctrl+Right/Left Next / Previous track
Ctrl+Up/Down Volume up / down
Shift+Escape Quick close
Ctrl+? Show shortcuts dialog

Themes

25 built-in themes with instant live switching — no restart required:

Theme Preview
LiveWire (default) Electric cyan on dark navy
Light Clean white, green accents
Dark Rich dark, green accents
Modern GitHub-inspired, high contrast
Synthwave Neon pink/purple retro
Dracula Purple/pink, dev favorite
Catppuccin Soft pastels, easy on the eyes
Tokyo Night Blue-tinted calm palette
Spotify Green on black
Classic OG lime green nostalgia
Nord Arctic blue-grey
Gruvbox Warm retro earth tones
High Contrast Maximum accessibility
Solarized Dark Precision colors, reduced eye strain
Monokai Pro Vibrant developer classic
Midnight Rose Deep plum with rose gold accents
Ocean Depths Deep sea blue with bioluminescent teal
Sunset Boulevard Warm amber/coral gradients on charcoal
Emerald Forest Rich greens with gold highlights
Lavender Haze Soft purple pastels on dark base
Cherry Blossom Soft pink/white Japanese spring aesthetic
Cyberpunk Neon yellow/magenta with glitch energy
Arctic Icy white/blue Scandinavian minimal

Each theme defines 37 semantic color tokens (backgrounds, text, accents, borders, cards, states, surfaces, focus rings) for pixel-perfect consistency across all 25 tabs.

Create your own: Run python skin_customizer.py to visually design custom themes and export them as JSON files loadable via Tools > Load Community Theme.


Architecture

LimeWire ships as both a modular package (limewire/) and a backward-compatible single-file launcher (LimeWire.py):

LimeWire/
  LimeWire.py                 # Thin launcher (backward compat)
  skin_customizer.py          # Visual theme editor
  limewire/
    __init__.py               # __version__ = "4.0.0"
    __main__.py               # python -m limewire
    app.py                    # App(tk.Tk) main class
    core/
      theme.py                # T namespace, 25 themes, apply_theme()
      constants.py            # Timing, dimension, format constants
      config.py               # JSON persistence, file paths
      platform.py             # OS detection
      deps.py                 # Optional dependency flags & lazy loaders
      audio_backend.py        # Playback engine
    i18n/                     # 6-language localization
    utils/                    # Helpers, sanitization
    services/
      analysis.py             # BPM/key, loudness, harmonics, Camelot
      metadata.py             # Shazam, MusicBrainz, AcoustID, lyrics
      cover_art.py            # Extract/embed/fetch album artwork
      audio_processing.py     # Waveform, demucs, pydub, spectrogram
      connectors/             # Music service connectors (7 services)
        base.py               # ConnectorBase ABC, TrackResult, PlaylistResult
        oauth.py              # OAuth 2.0 with PKCE + CSRF state
        storage.py            # DPAPI-encrypted token storage
        spotify.py            # Spotify connector
        youtube.py            # YouTube Music connector
        tidal.py              # TIDAL connector
        soundcloud.py         # SoundCloud connector
        deezer.py             # Deezer connector
        transfer.py           # Cross-service playlist/library transfer engine
    security/                 # Path confinement, subprocess allowlist, JSON validation
    ui/                       # Widgets, styles, tooltips, toasts, command palette
    pages/                    # 25 page classes (one per tab)
  tests/                      # 195 tests (pytest)

Module Dependency Flow

core/ <-- utils/ <-- services/ <-- ui/ <-- pages/ <-- app.py
         ^                                              ^
     security/                                     __main__.py

Pages receive app as a constructor arg — they never import app.py directly. No circular imports.

Security Layer

Module Purpose
safe_paths.py Path traversal prevention, atomic writes, symlink checks
safe_subprocess.py Binary allowlist (ffmpeg, ffprobe, yt-dlp only)
safe_json.py Size limits (5 MB), depth checks (10), key allowlists
plugin_policy.py SHA-256 hash trust — scan without execute
connectors/oauth.py OAuth 2.0 PKCE + CSRF state validation for all services
connectors/storage.py Windows DPAPI token encryption at rest
network.py SSRF prevention — DNS resolution checks, public IP validation

Connector Security

All 7 music service connectors are hardened with:

  • OAuth 2.0 PKCE — Proof Key for Code Exchange prevents authorization code interception
  • CSRF Protection — Cryptographic state parameter validates OAuth callbacks
  • Encrypted Storage — Tokens encrypted at rest via Windows DPAPI (CryptProtectData)
  • Input Validation — Regex-based ID validation on all service-specific identifiers
  • SSRF Prevention — URL domain allowlists block server-side request forgery
  • Error Sanitization — Tokens and secrets stripped from error messages before display

Data Files

All stored in ~/.limewire_*.json: history, settings, schedule, queue, analysis cache, session state, recent files.


Testing

pip install pytest
python -m pytest tests/ -v

195 tests covering security modules, core systems, utilities, and services. CI runs on Python 3.10 through 3.14.


Tech Stack

Component Technology
🐍 Language Python 3.10+ (tested through 3.14)
🖥️ GUI tkinter / ttk
⬇️ Downloads yt-dlp
🔈 Playback pyglet
🏷️ Metadata mutagen
⚙️ Processing pydub, ffmpeg
📊 Analysis librosa, pyloudnorm
🧠 AI Stems Demucs (Meta AI)
🎵 Pitch/Time pyrubberband
🎤 Recording sounddevice
💬 Transcription openai-whisper
🎛️ Effects pedalboard (Spotify)
🔍 Track ID shazamio, pyacoustid, musicbrainzngs

Documentation

Document Description
docs/README.md Documentation index and recommended reading order
docs/application-overview.md Product-level overview of workflows, architecture, strengths, and current limits
Wiki Complete documentation for every module and page (34 pages)
CONTRIBUTING.md Developer guide, project structure, how to contribute
SECURITY.md Security policy, vulnerability scan report
CHANGELOG.md Version history
ROADMAP.md Feature roadmap

Contributing

  1. Fork & clone
  2. pip install -r requirements.txt
  3. Create a branch, make changes
  4. Run tests: python -m pytest tests/ -v
  5. Submit a PR

See CONTRIBUTING.md for full details.


Project Status

LimeWire is the most productized repository in the current set. The application already covers the full path from audio intake to analysis, editing, transfer, and batch processing, and it has the strongest release and desktop-tooling baseline.

Current documentation work is focused on making the repo easier to understand as an application: which workflows are strongest today, how the modular package is organized, and where optional dependencies or third-party services change the feature surface.


License

MIT License for the code in this repository.


Packages

 
 
 

Contributors

Languages