π FlowPick
August 10, 2026 Β· View on GitHub
Smart Media Sniffer Β· Preview & Download β Automatically capture video streams, audio, and images from web pages with built-in playback and instant download.
π¨π³ δΈζζζ‘£ | π¬π§ English
π― Core Features
π‘ Universal Media Sniffing
Four-layer detection mechanism for precise media capture:
| Category | Supported Formats |
|---|---|
| Streaming | M3U8 (HLS), MPD (DASH), HTTP-FLV, MPEG-TS |
| Video | MP4, WebM, MKV, AVI, MOV, WMV, FLV, OGV, 3GP, 3G2, MPEG |
| Audio | MP3, M4A, OGA, WEBA, WAV, FLAC, AAC, OGG |
| Image | GIF, JPG, PNG, WebP, SVG, BMP, ICO, data: URL (base64) |
| Document | PDF and other document resources |
| Subtitle | SRT, VTT, ASS and other subtitle files |
- Network Request Interception β Real-time monitoring via
webRequestAPI - Content-Type Priority β Analyzes response headers first for accurate format detection
- URL Pattern Matching β Smart recognition of media signatures in URL paths and parameters
- Fetch/XHR Injection β Injected scripts capture dynamically loaded media requests
- MSE Stream Capture β Intercepts MediaSource streams to capture videos with no direct URL (e.g. some web players); captured MSE streams can be downloaded
- Platform-specific Adapters β Built-in scripts for Douyin and similar sites parse page JSON to extract multi-bitrate video/audio candidates; extensible to more platforms via the generic
PlatformMediaTaskinterface
π¬ Built-in Playback & Preview
Preview media without leaving the extension panel:
- Stream Playback β Built-in HLS.js / DASH.js / mpegts.js players supporting M3U8, MPD, HTTP-FLV, MPEG-TS with automatic error recovery
- Stream Thumbnails β Auto-decodes the first frame of streams as list thumbnails, with LRU cache + concurrency control + retry
- HLS Proxy Loader β Fetches segments via the background proxy with auth headers and Referer, bypassing CORS and hotlink protection
- DRM Detection β Automatically detects Widevine / PlayReady DRM-protected content and warns it cannot be previewed
- Live Recording β Record HTTP-FLV / MPEG-TS live streams while playing; auto-stops at the 500MB limit
- Audio Spectrum β Real-time frequency visualization powered by Web Audio API
- Image Preview β Full-screen lightbox with automatic dimension detection
π Smart Filtering
Quickly locate target resources:
- Category Tabs β One-click switch between All / Stream / Video / Audio / Image
- Format Filter β Filter by specific media format
- Size Filter β Set min/max file size range
- Resolution Filter β Filter by video resolution (8K/4K/1080P/720P, etc.)
- Dimension Filter β Filter by image width and height
- Regex Search β Toggle between plain and regex matching for URL search, with real-time regex validation
- Time Sorting β Sort by detection time ascending/descending
βοΈ Flexible Sniffing Rules
Fine-grained control over sniffing behavior:
- Per-type Toggle β Independently enable/disable sniffing for streaming/video/audio/image/document/subtitle
- Minimum Capture Size β Set file size thresholds per type to filter out fragments
- Domain Exclusion β Exclude specific domains to avoid unwanted captures
- Hide Stream Segments β Hide HLS/DASH .ts/.m4s segments and show only the playlist entry (m3u8/mpd) to keep the list clean
- data: Image Capture β Detect
<img src="data:image/...">inline base64 images, with a configurable min size to filter 1Γ1 tracking pixels - Per-tab Item Limit β Configurable 10β5000 items per tab; oldest items are evicted automatically to avoid memory bloat
π Stream Manifest Parsing
Deep parsing of M3U8 / MPD manifests for complete metadata:
- Multi-bitrate Variants β Lists all quality variants (resolution + bandwidth + label)
- Audio Tracks β Identifies detached audio tracks (EXT-X-MEDIA)
- Duration Estimation β Sums EXTINF or parses MPD
mediaPresentationDuration - Size Estimation β Prefers byterange summation; otherwise multi-point segment sampling Γ count (HEAD + Range probing, saves bandwidth)
π Batch Operations
- Select All β Quickly select all media items
- Batch Download β Download multiple selected files at once
- Copy URL β One-click copy media links to clipboard
π·οΈ Rich Media Information
Automatically fetched and displayed:
- File Size β Real-time file size display
- Video Resolution β MediaInfo-powered width/height parsing with resolution labels
- Audio Duration β Automatic duration detection
- Image Dimensions β Automatic width/height recognition
- Stream Duration/Size β Estimated total duration and size for VOD streams via manifest parsing
π More Features
- Side Panel Mode β Supports Chrome Side Panel and Firefox Sidebar for a more spacious panel, easier for long lists
- Welcome Guide β First-run 6-step tutorial and 9 FAQ entries
- Downloader Page Redirect β One-click jump to dedicated flowpick.net downloaders (m3u8 / dash / video) with multi-language routing
- M3U8 Extension Integration β Detects and integrates with external M3U8 download extensions
- Tab Isolation β Independent media list per browser tab
- Badge Counter β Real-time capture count on the extension icon
- Theme β System / Light / Dark themes
- List Density β Compact / Comfortable display densities
- i18n β English, Simplified Chinese, Traditional Chinese, Japanese, German, Spanish, Korean (7 languages, can follow system)
- Keyboard Shortcuts β Configurable shortcut to open the panel
π¦ Installation
Install from Stores
| Browser | Link |
|---|---|
| Chrome | Chrome Web Store |
| Edge | Edge Add-ons |
| Firefox | Firefox Add-ons |
π Website: flowpick.net
Build from Source
- Clone the repository:
git clone https://github.com/ezwebtools/flowpick.git
cd flowpick
- Install dependencies:
npm install
- Build for production:
# Chrome
npm run build
# Firefox
npm run build:firefox
- Load the extension:
- Chrome/Edge: Go to
chrome://extensions/, enable "Developer mode", click "Load unpacked", and select the.output/chrome-mv3directory - Firefox: Go to
about:debugging#/runtime/this-firefox, click "Load Temporary Add-on", and select.output/firefox-mv2/manifest.json
- Chrome/Edge: Go to
Development Mode
# Chrome (hot reload)
npm run dev
# Firefox (hot reload)
npm run dev:firefox
π Usage
- Auto Sniffing β FlowPick automatically captures media requests as you browse
- View List β Click the extension icon to see all detected media for the current tab
- Filter & Sort β Use tabs and filters to quickly locate target resources
- Preview & Play β Click play to stream video/audio in-panel, or preview images full-screen
- Copy URL β One-click copy media URL to clipboard
- Download β Click download to save media files directly
π‘ Tip: Some videos must start playing on the page before they can be detected.
π οΈ Tech Stack
| Technology | Purpose |
|---|---|
| WXT | Modern web extension framework |
| Vue 3 | Composition API-driven UI |
| TypeScript | Type safety |
| Tailwind CSS v4 | Utility-first styling |
| hls.js | HLS streaming playback / first-frame thumbnails |
| dash.js | DASH streaming playback / first-frame thumbnails |
| mpegts.js | HTTP-FLV / MPEG-TS live stream playback and recording |
| m3u8-parser | M3U8 manifest parsing |
| mpd-parser | MPD manifest parsing |
| mediainfo.js | Media metadata parsing |
| Vite | Build tooling |
π Project Structure
flowpick/
βββ entrypoints/
β βββ background.ts # Background: network monitoring, media detection, download, proxy fetch, DRM detection
β βββ content.ts # Content script: page injection, message relay, MSE stream capture
β βββ douyin.content.ts # Douyin platform adapter: parses page JSON for multi-bitrate candidates
β βββ injected.ts # Injected script: Fetch/XHR interception, MSE interception
β βββ popup/ # Popup panel UI
β β βββ App.vue # Main component: list, playback, settings (also drives the side panel)
β β βββ components/
β β β βββ SettingsView.vue # Settings panel component
β β βββ composables/
β β β βββ useMediaFilters.ts # Filter/search/sort (incl. regex search)
β β β βββ useMediaStore.ts # Media list state management
β β β βββ useMediaViewModels.ts # Media view-model cache
β β β βββ useStreamThumbnails.ts # Stream first-frame thumbnails
β β βββ utils/
β β β βββ hlsProxyLoader.ts # HLS background proxy loader
β β βββ main.ts # Entry point
β β βββ style.css # Styles
β βββ sidepanel/ # Side panel entry (Chrome Side Panel / Firefox Sidebar)
β βββ welcome/ # Welcome guide: tutorial + FAQ
β βββ download/ # Download page
β β βββ App.vue # Download progress component
β β βββ index.html # Download page entry
β βββ options/ # Options page
β βββ App.vue # Settings component
βββ utils/
β βββ detect.ts # Media format detection (Content-Type + URL pattern)
β βββ settings.ts # Settings management (sniffing rules, domain exclusion, capture toggles)
β βββ storage.ts # Storage management (per-tab data persistence)
β βββ stream-parser.ts # M3U8/MPD manifest parsing (variants/duration/size estimation)
β βββ platform-media.ts # Generic platform adapter interface (PlatformMediaTask)
β βββ useM3u8Ext.ts # External M3U8 download extension integration
β βββ i18n.ts # i18n + theme/density management (7 languages)
βββ public/
β βββ _locales/ # Internationalization (en / zh_CN / zh_TW / ja / de / es / ko)
β βββ icon/ # Extension icons
β βββ MediaInfoModule.wasm # MediaInfo WASM module
βββ wxt.config.ts # WXT configuration (permissions, Side Panel, Sidebar)
βββ package.json # Project dependencies
π Permissions
| Permission | Purpose |
|---|---|
storage | Store detected media lists and user settings |
tabs | Manage tab-specific media lists |
webRequest | Monitor network requests for media detection |
declarativeNetRequest | Strip Origin/Cookie headers during proxy fetch to bypass hotlink protection |
downloads | Enable file download functionality |
notifications | Download completion and status notifications |
sidePanel | Chrome side panel mode (Chromium only) |
<all_urls> | Access all URLs for media detection |
π Browser Support
- Chrome / Edge / Chromium (Manifest V3)
- Firefox (Manifest V2)
π€ Contributing
Contributions are welcome! Feel free to submit a Pull Request.
π License
MIT License β see LICENSE for details.
π Acknowledgments
- WXT β Excellent web extension framework
- hls.js β HLS streaming playback support
- dash.js β DASH streaming playback support
- mpegts.js β HTTP-FLV / MPEG-TS live stream support
- m3u8-parser / mpd-parser β Stream manifest parsing
- mediainfo.js β Media metadata parsing
- Tailwind CSS β Utility-first CSS framework