Files
splirate/README.md
2026-08-05 21:39:14 -05:00

66 lines
2.7 KiB
Markdown

# Firefox Splice Download Helper
This Firefox extension captures Splice sample preview context from GraphQL responses, then attempts to download full-file URLs when available. If full retrieval is unavailable, it falls back to decoding preview audio bytes (splicedd-style) and downloads decoded MP3.
## Features
- Captures sample context from Splice GraphQL responses (`preview_mp3`, sample UUID/hash).
- Tracks observed audio sample URLs from network/probe fallback.
- Download action is orchestrated as:
1. Attempt full-file URL retrieval first.
2. If unavailable, decode scrambled preview bytes and download decoded MP3.
- Injects two controls in the target row:
- **Download**: full-first, decoded-preview fallback
- **History**: opens extension history page with past captured URLs
- Popup/history show each captured sample with source and mode hints.
## Targeted Page Element
Inline controls are injected into:
- `.playbar-playback-info-bar.playback-row-section.svelte-11gjrk3`
The inserted controls use sibling-style wrappers based on:
- `bordered-item meta-item svelte-11gjrk3`
## URL Rules
- Page scope: `*://*.splice.com/*`
- Audio sample paths include `/audio_samples/`
- Waveform files (`.wv.json`) are excluded from download candidates
## Load in Firefox (Temporary Add-on)
1. Open `about:debugging#/runtime/this-firefox`
2. Click **Load Temporary Add-on...**
3. Select this extension's `manifest.json`
4. Visit a matching `*.splice.com` page
## Usage
1. Open a page under `*.splice.com` that loads S3 audio links.
2. Wait for inline `Download` and `History` controls to appear in the playback info bar.
3. Click:
- **Download** to run full-first retrieval, then decode fallback if needed
- **History** to open full captured history
4. Optionally click the extension icon to open popup for current-tab entries.
## Manual Verification Checklist
- [ ] On matching domain, controls appear in target playback row.
- [ ] Controls remain after SPA/Svelte rerenders.
- [ ] GraphQL preview context is captured for visible samples.
- [ ] `Download` attempts full retrieval first.
- [ ] When full retrieval is unavailable, fallback decoded MP3 is downloaded and playable.
- [ ] `History` opens and allows downloading older entries.
- [ ] Popup updates with captured entries for active tab.
- [ ] Non-`*.splice.com` pages do not capture/store URLs.
## Known Limitations
- Full-file URL retrieval depends on backend behavior and session state; it may fail for some assets.
- Fallback decode uses scrambled preview streams, so fallback output follows preview-source quality/availability.
- Signed preview URLs can expire; expired URLs require recapture.
- `saveAs: true` prompts download location each time by design.