mediago:基于多技术栈的跨平台视频下载器项目

跨平台视频提取工具:支持流媒体下载、视频下载、m3u8 下载及 B站视频下载,提供 Windows 和 Mac 桌面客户端。Cross-platform video extraction tool: Supports streaming download, video download, m3u8 download, and Bilibili video download, with desktop clients for Windows and Mac.

分支20Tags0
文件最后提交记录最后更新时间
chore: add vercel-react-best-practices skill Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
fix(ci): move secrets check off if: to dodge Unrecognized named-value: 'secrets' The Docker Hub mirror workflow used secrets.DOCKERHUB_USERNAME != '' directly inside step if: conditions and step-level env: expressions. GitHub's expression parser now rejects that with Unrecognized named-value: 'secrets' — the secrets context is only allowed in a narrow set of positions (mostly with: inputs and step env: values, not inside if: expressions). Route the check through a dedicated detection step whose env: reads the secrets (the one permitted way to surface them) and writes a plain boolean to step outputs. Every downstream conditional then guards on steps.dockerhub.outputs.enabled == 'true' instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
chore: migrate from Prettier to oxlint + oxfmt toolchain Replace Prettier with oxfmt for formatting and expand oxlint config with full rule categories, React/TS overrides, and per-app config inheritance. Add husky + lint-staged for pre-commit hooks to incrementally enforce formatting on changed files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 2 个月前
feat(core,player-ui): refactor video API to use database and fix playback Refactor video player API from filesystem scanning to database-backed: - Video list queries downloads with status="success" + file existence check - Add GET /api/v1/videos/:id endpoint for playing specific video by task ID - Add playerUrl to /api/env response (computed from request host) - Whitelist player/video paths in auth middleware - Fix video URL generation to preserve folder structure (relative path) - Fix player-ui Vite base path and video URL resolution under /player/ - Add openUrl implementation to web platform stubs - Player-UI supports ?id= query param to auto-play specific video - Play button now passes task.id instead of filename Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
fix: package.json name 1 个月前
fix: server build 6 个月前
docs: remove commercial entrypoints 1 个月前
feat(core): switch direct downloader from gopeed to aria2 Gopeed's last release is aging and its SChannel-linked Windows build chokes on modern CDN TLS handshakes (we hit SEC_I_MESSAGE_FRAGMENT on twimg.com). Replace it with aria2 — same short flags (-x/-s/-k carry over verbatim), stricter arg handling, and well-trodden cross-platform builds. Binaries are vendored in-tree at extra/aria2/<os>/<arch>/ rather than pulled from a single GitHub release, because aria2 static builds for Linux / macOS / Windows come from different upstream repos. To keep the deps pipeline unified: - scripts/download-deps.ts grows a "source": "local" branch that copies from extra/<tool>/<os>/<arch>/ into .deps/<os>-<arch>/ instead of fetching from GitHub. Resulting layout matches the rest of the tools, so binaryResolver.ts needs no changes. - scripts/deps-versions.json: gopeed entry removed, aria2 entry added with source:"local" + path:"extra/aria2". - apps/core/internal/core/types.go: BinaryNames[TypeDirect] "gopeed""aria2c". - apps/core/internal/core/schema/loader.go: direct schema's Args map to aria2's flags (-d / -o, plus --console-log-level=notice / --summary-interval=1 / --allow-overwrite=true / --auto-file-renaming=false for parseable output and predictable rerun behaviour). ConsoleReg regexes updated to aria2's summary line format (e.g. "DL:512KiB" for speed, "(83%)" for percent). --check-certificate=false tacked on as a workaround for the SChannel handshake issue on the bundled 1.19.0 Windows build — proper fix is upgrading the vendored binary to a build that links against OpenSSL (e.g. 1.37.0), comment calls that out. - apps/core/.env, Dockerfile, apps/electron/scripts/build.ts, apps/core/README.md: gopeed → aria2c / aria2 references. No DB migration: existing type: "direct" rows keep working, the underlying binary just swaps. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
docs(readme): use English-localized screenshots in English README The English README was reusing the Chinese-localized screenshots (home.png, home-dark.png, settings.png, browser.png), which left English readers staring at a UI they could not read. Ship a parallel set of English screenshots under the _en suffix and point README.md at them; README.zh.md / README.jp.md keep their own assets untouched. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
feat(i18n): add Italian localization (#646)1 个月前
fix(docker): use --deps-dir and move CMD flags into entrypoint script The image was failing at startup with: flag provided but not defined: -m3u8-bin mediago-core consolidated the per-downloader --*-bin flags into a single --deps-dir in 3.5.0-beta.1, but the Dockerfile was still passing the old five flags (--m3u8-bin, --bilibili-bin, --direct-bin, --mediago-bin, --ffmpeg-bin). Go flag parsing rejects unknown flags, so the container exited immediately. While fixing, extracted the invocation into scripts/docker-entrypoint.sh rather than leaving a nine-line quoted-array CMD at the bottom of the Dockerfile: - exec mediago-core … replaces the shell so SIGTERM from docker stop reaches the Go process directly — no shell parent to swallow signals. - "$@" forwards any extra flags from docker run image … --foo=bar so callers can override individual options without replacing the whole command. - Switching from CMD to ENTRYPOINT makes the script the fixed launch path; runtime overrides still work via the forwarded "$@". - Editing default args no longer touches the Dockerfile (and thus doesn't invalidate the full image layer). New .gitattributes pins *.sh to LF line endings so a Windows checkout doesn't turn the entrypoint into a /bin/sh^M: bad interpreter error inside the Linux container. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
feat(skills,docs,ui): add OpenClaw Skill with docs and settings tab Skills: - Rewrite SKILL.md as OpenClaw Skill (remove scripts dependency) - Guide users to install MediaGo + initialize config in one message - Support Chinese and English natural language commands - Remove mediago-api.sh (use curl directly, cross-platform) Docs: - Add OpenClaw Skill page (zh/en/jp) with install, config, usage guide - Add to VitePress sidebar for all 3 languages Settings UI: - Add "Skills 设置" tab with install command + init command - Electron mode: init shows URL only - Docker mode: init shows URL + API key - One-click copy buttons Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
fix(docker): fix build failures for UI, Go deps, and unzip - Install unzip in Node builder for zip-format deps (BBDown, gopeed) - Copy apps/electron/app/package.json needed by UI vite config - Add second go mod download after full source copy to fix go.sum Verified: docker build + run succeeds locally (healthy + player UI ok) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
chore(repo): convert text files to CRLF line endings 6 个月前
chore: update app name to mediago-community and disable mac signing - Rename APP_NAME to mediago-community in .env - Update APP_ID to mediago.caorushizi.cn - Set mac identity: null to skip code signing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
feat: 添加 sentry 6 个月前
feat: 添加 sentry 6 个月前
fix(docker): use --deps-dir and move CMD flags into entrypoint script The image was failing at startup with: flag provided but not defined: -m3u8-bin mediago-core consolidated the per-downloader --*-bin flags into a single --deps-dir in 3.5.0-beta.1, but the Dockerfile was still passing the old five flags (--m3u8-bin, --bilibili-bin, --direct-bin, --mediago-bin, --ffmpeg-bin). Go flag parsing rejects unknown flags, so the container exited immediately. While fixing, extracted the invocation into scripts/docker-entrypoint.sh rather than leaving a nine-line quoted-array CMD at the bottom of the Dockerfile: - exec mediago-core … replaces the shell so SIGTERM from docker stop reaches the Go process directly — no shell parent to swallow signals. - "$@" forwards any extra flags from docker run image … --foo=bar so callers can override individual options without replacing the whole command. - Switching from CMD to ENTRYPOINT makes the script the fixed launch path; runtime overrides still work via the forwarded "$@". - Editing default args no longer touches the Dockerfile (and thus doesn't invalidate the full image layer). New .gitattributes pins *.sh to LF line endings so a Windows checkout doesn't turn the entrypoint into a /bin/sh^M: bad interpreter error inside the Linux container. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
feat(docs): add seo blog pillar pages 1 个月前
chore: migrate from Prettier to oxlint + oxfmt toolchain Replace Prettier with oxfmt for formatting and expand oxlint config with full rule categories, React/TS overrides, and per-app config inheritance. Add husky + lint-staged for pre-commit hooks to incrementally enforce formatting on changed files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 2 个月前
chore: migrate from Prettier to oxlint + oxfmt toolchain Replace Prettier with oxfmt for formatting and expand oxlint config with full rule categories, React/TS overrides, and per-app config inheritance. Add husky + lint-staged for pre-commit hooks to incrementally enforce formatting on changed files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 2 个月前
style: apply oxfmt formatting across codebase Also fix pre-existing lint errors exposed by staging: - Merge duplicate 'eventsource' imports in eventEmitter.ts - Remove unused catch parameter in eventEmitter.ts - Merge duplicate 'react' imports in app-side-bar.tsx Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
fix: upgrade zustand to stable and fix broken player build scripts - Upgrade zustand from 5.0.0-rc.2 to ^5.0.0 (resolved 5.0.12) - Fix player:dev and player:build scripts that referenced non-existent @mediago/player-build, now correctly point to @mediago/core-build Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
docs: rewrite README (zh/en/jp) around user-facing features, extract dev setup The three READMEs had drifted into a dev-first shape — the first screen of each started with pnpm / install commands before telling end users what the product actually does — and the Japanese version had fallen behind (outdated commands, no v3.5.x downloads, screenshots pointing at an external CDN rather than the in-repo images). Rework all three around the v3.5.0 user-friendly feature story and move the developer setup into its own file: - Unified skeleton across zh/en/jp: header badges → one-sentence pitch → six feature sections (browser extension · YouTube / 1000+ sites · OpenClaw Skill · HTTP API · in-app format conversion · Docker + LAN) → screenshots → v3.5.0 downloads (+ BT Panel one-click) → v3.5.0 highlights → tech-stack badge row → acknowledgements → disclaimer → link to CONTRIBUTING. - Header elements preserved verbatim: nav links, language switcher, MediaGo Pro / Try Now banners, downloads / stars / forks / GitCode / Trendshift badges, 4 screenshots, BT Panel one-click deployment, the full 5-point disclaimer. - Tech-stack prose list compressed to a single row of shields.io badges (React / Electron / Vite / TypeScript / Tailwind / shadcn/ui / Go / Ant Design). - Acknowledgements gain aria2 (now powering direct downloads after the gopeed swap). - README.jp.md specifically: fixed four static.ziying.site/images/* references to use the in-repo ./images/* (matching zh/en); replaced the outdated v3.0.0-only download block with v3.5.0; added the English-language switcher link that was missing from the header. - README.md/zh.md: dropped the v3.0.0 changelog block (history lives on GitHub Releases) and the "Quick Start" / "Running locally" pnpm command blocks. New file: CONTRIBUTING.md. English only — prerequisites, repo layout, a short list of the commands contributors actually type (deps:download / dev:electron / dev:server / pack:electron / release:electron / check), Conventional Commits note, PR guidance. Each README ends with a one- line pointer to it in the local language. No product behaviour change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
fix(docker): copy extra/ into build context so aria2 ships in the image scripts/download-deps.ts treats the aria2 entry as source: "local" and copies from extra/aria2/<os>/<arch>/aria2c into .deps/. Every other downloader (ffmpeg / N_m3u8DL-RE / BBDown / yt-dlp / mediago) is source: "github" and fetched over the network, so they reach the image fine — but the Docker build context never included extra/, which made copyLocalTool() hit its "source missing" branch and silently skip aria2. Resulting image had no aria2c, any direct download inside the container failed with a binary-not-found error the moment a task was dispatched. Add a COPY extra/ extra/ in the node-builder stage, right before pnpm deps:download runs, so the vendored binary is actually visible to the script. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
new branch. 3 年前
docs: remove commercial entrypoints 1 个月前
docs: remove commercial entrypoints 1 个月前
docs: remove commercial entrypoints 1 个月前
docs: remove commercial entrypoints 1 个月前
feat(i18n): add Italian localization (#646)1 个月前
feat: replace Node.js server with Go Core direct connection - Remove old Koa/Socket.IO server, replace with minimal ServiceRunner launcher - UI now connects directly to Go Core via SDK (HTTP + SSE), no middleware - Add GoEventBridge for SSE events and progress polling - Add Dockerfile and docker-compose for single-container deployment - Fix web mode adapter Proxy ownKeys for proper method enumeration - Fix auth flow: setupAuth now sets apiKey, App.tsx passes stored apiKey - Add error handling in download-form for getVideoFolders - Remove conversion.controller import (file was deleted) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
refactor: merge player Go backend into core Merge the standalone mediago-player binary into mediago-core. The core now serves the player UI at /player/ via go:embed, and provides video listing/streaming endpoints. Video root reuses the existing download directory (local-dir) so no separate flag is needed. Changes: - Add internal/video package to core (handler, service, types) - Embed player-ui assets via //go:embed in assets/embed.go - Add SPA handler for /player/ path - Register /api/v1/videos and /videos/* routes in core router - core:build now builds player-ui before Go compilation - Remove apps/player/ entirely (Go app, scripts, configs) - Remove VideoServer from Electron, derive playerUrl from coreUrl - Remove player binary management from server app - Update CI workflow to remove player go.sum cache path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
chore: add build:docker npm script for local image builds Wraps docker build -t mediago:local . so contributors don't have to remember the tag convention, and keeps local Docker builds discoverable alongside pack:electron / release:electron in pnpm run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
feat(extension): add i18n with system/zh/en language toggle The MediaGo extension shipped Chinese-only (50+ hardcoded strings across popup, options, background). Wire up i18next + react-i18next so the UI follows the browser language by default and lets the user override to zh / en in a new LanguageCard on the options page. - ExtensionSettings.language: "system" | "zh" | "en" (default system), persisted via existing chrome.storage.local - resolveLanguage() maps system -> chrome.i18n.getUILanguage() or navigator.language with a zh/en fallback - Bootstrap one i18next instance per page (popup / options), subscribe to chrome.storage.onChanged so switching on one surface updates the other without a reload - Background service worker emits LocalizedMessage descriptors ({ key, values? }) for toast copy; popup calls t(key, values) so the SW never has to carry an i18n instance - Full zh/en coverage for popup, options, error paths - Chrome-native _locales/{en,zh_CN}/messages.json + __MSG_*__ for manifest.name / description / action.default_title so the chrome://extensions row and toolbar tooltip follow the browser UI language (independent dimension from the in-UI toggle, by design) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 1 个月前
chore: migrate player-ui to oxlint and upgrade to React 19, Vite 8, TS 6 - Remove biome.json from apps/player (use root oxlint/oxfmt config) - Remove eslint from apps/player-ui, switch lint script to oxlint - Upgrade React 18 → 19, Vite 7 → 8, TypeScript 5.9 → 6.0 - Upgrade @vitejs/plugin-react 5 → 6, @types/react to v19 - Fix vite.config.ts: __dirname → import.meta.dirname (ESM compat) - Fix tsconfig.app.json: remove deprecated baseUrl option Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
chore: add vercel-react-best-practices skill Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> 1 个月前
refactor: remove shared-browser, shared-node, config packages - shared-browser: inline createBrowserI18n into apps/ui/src/i18n/ - shared-node: move code into apps/electron by function: - i18n → core/i18n.ts - handle decorator → core/decorators.ts - registerControllerHandlers → core/registerControllerHandlers.ts - TYPES → types/symbols.ts - binaryResolver → utils/binaryResolver.ts - DownloaderServer/VideoServer → services/ - copy binaryResolver to apps/server for resolveCoreBinaries - config: move tsconfig.{base,app,node}.json to monorepo root Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
refactor: remove shared-browser, shared-node, config packages - shared-browser: inline createBrowserI18n into apps/ui/src/i18n/ - shared-node: move code into apps/electron by function: - i18n → core/i18n.ts - handle decorator → core/decorators.ts - registerControllerHandlers → core/registerControllerHandlers.ts - TYPES → types/symbols.ts - binaryResolver → utils/binaryResolver.ts - DownloaderServer/VideoServer → services/ - copy binaryResolver to apps/server for resolveCoreBinaries - config: move tsconfig.{base,app,node}.json to monorepo root Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
refactor: remove shared-browser, shared-node, config packages - shared-browser: inline createBrowserI18n into apps/ui/src/i18n/ - shared-node: move code into apps/electron by function: - i18n → core/i18n.ts - handle decorator → core/decorators.ts - registerControllerHandlers → core/registerControllerHandlers.ts - TYPES → types/symbols.ts - binaryResolver → utils/binaryResolver.ts - DownloaderServer/VideoServer → services/ - copy binaryResolver to apps/server for resolveCoreBinaries - config: move tsconfig.{base,app,node}.json to monorepo root Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
refactor: remove shared-browser, shared-node, config packages - shared-browser: inline createBrowserI18n into apps/ui/src/i18n/ - shared-node: move code into apps/electron by function: - i18n → core/i18n.ts - handle decorator → core/decorators.ts - registerControllerHandlers → core/registerControllerHandlers.ts - TYPES → types/symbols.ts - binaryResolver → utils/binaryResolver.ts - DownloaderServer/VideoServer → services/ - copy binaryResolver to apps/server for resolveCoreBinaries - config: move tsconfig.{base,app,node}.json to monorepo root Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前
refactor(ipc): namespace IPC events and consolidate similar methods Replace flat IPC string constants with namespaced groups (browser.*, app.*, dialog.*, shell.*, contextMenu.*, update.*) and consolidate similar operations into generic methods: - dialog.open/save replaces selectFile, selectDownloadDir, export/import - shell.open replaces openDir, openUrl, openBrowser - contextMenu.show replaces 3 separate context menu handlers - on/off replaces rendererEvent/removeEventListener Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> 1 个月前

MediaGo

快速开始   •   官网   •   文档   •   Discussions   •   Discord   •   Reddit

English   •   日本語   •   Italiano

GitHub Downloads (all assets, all releases) GitHub Downloads (all assets, latest release) GitHub Repo stars GitHub forks GitCode
caorushizi%2Fmediago | Trendshift

跨平台视频下载器,内置嗅探 —— 打开网页、选一下想要的资源、保存完事。不用抓包、不用折腾浏览器插件、不用面对命令行。

应用界面目前内置中文、英文和意大利语。

✨ 主打功能

🌐 浏览器扩展(Chrome / Edge)

浏览网页时遇到想下的视频 → 点扩展图标 → 一键发到 MediaGo。自动识别页面里的可下载资源,工具栏图标显示检测到的数量,主流视频网站(包括 YouTube、Bilibili 等)都能覆盖。扩展随桌面端安装包一起打包,在 设置 → 更多设置 → 浏览器扩展目录 就能找到安装文件夹。

🎬 支持 YouTube 和 1000+ 站点

底层用的是 yt-dlp。支持 YouTube、Twitter/X、Instagram、Reddit 等 一千多个视频站点

🦞 让 AI 助手帮你下载 —— OpenClaw Skill

在用 Claude Code、Cursor 等 AI 编程助手?装上 MediaGo Skill 后直接跟 AI 说"帮我下载这个视频:<链接>"就行,剩下的交给 AI。

npx clawhub@latest install mediago

🔌 可以和其他工具联动

MediaGo 提供一整套 HTTP 接口 —— 脚本、自动化工具、其他 App 都能直接调用 MediaGo 创建下载任务、查询进度、管理列表。浏览器扩展就是通过这套接口和桌面端对话的,你也可以接入自己的工作流。

🎞️ 内置格式转换

下载完成后可以直接在 MediaGo 里转换格式、选画质,不用再打开别的软件。

🐳 Docker 一键部署

服务器端一条命令部署,局域网内任意设备都能打开 Web 界面:

docker run -d --name mediago -p 8899:8899 -v /path/to/mediago:/app/mediago caorushizi/mediago:3.5.0

Docker Hub 和 GHCR(ghcr.io/caorushizi/mediago)上同步发布 —— 同一份镜像,哪个源更快用哪个。支持 Intel / AMD (amd64) 和 ARM (arm64) 两种架构。桌面版同时监听 127.0.0.1 和局域网 IP,同一个 Wi-Fi 下的手机、平板可以直接打开 Web 界面。

📷 软件截图

首页

首页 — 深色模式

设置

资源提取

📥 下载

v3.5.0(正式版)

查看历史版本请移步 GitHub Releases

🪄 宝塔面板一键部署 Docker

  1. 安装宝塔面板,前往 宝塔面板官网 选择正式版的脚本下载安装
  2. 登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装 Docker 服务,点击立即安装并按提示完成
  3. 在应用商店中找到 MediaGo,点击安装,配置域名等基本信息即可

📝 v3.5.0 更新要点

  • 🌐 浏览器扩展:任意网站一键嗅探视频、一键发到 MediaGo
  • 🎬 YouTube + 1000+ 站点:集成 yt-dlp
  • 🦞 OpenClaw Skill:通过 AI 编程助手下载视频
  • 🔌 开放 HTTP 接口:接入脚本、自动化工具和其他应用
  • 🎞️ 内置格式转换:选输出格式和画质
  • 🐳 Docker 部署简化:挂载一个目录即可,多架构镜像已迁至 GHCR
  • ⚡ 启动更快:后端重写,资源占用更低,内置视频播放器

🛠️ 技术栈

React Electron Vite TypeScript Tailwind CSS shadcn/ui Go Ant Design

🙏 鸣谢

⚖️ 免责声明

本项目仅供学习和研究使用,请勿用于任何商业或非法用途。

  1. 本项目提供的所有代码和功能仅作为学习流媒体技术的参考,使用者需自行遵守所在地区的法律法规。
  2. 使用本项目下载的任何内容,其版权归原始内容所有者所有。使用者应在下载后 24 小时内删除,或取得版权方授权。
  3. 本项目开发者不对使用者的任何行为承担责任,包括但不限于:下载受版权保护的内容、对第三方平台造成的影响等。
  4. 禁止将本项目用于大规模抓取、破坏平台服务或任何侵犯他人合法权益的行为。
  5. 使用本项目即表示您已阅读并同意本免责声明。如不同意,请立即停止使用并删除本项目。

想从源码构建?见 CONTRIBUTING.md(英文)。

想为 MediaGo 做翻译?见 TRANSLATION.md(英文)。

尾注: 感谢吾爱破解论坛
lp_Zain@www.52pojie.cn

项目介绍

跨平台视频提取工具:支持流媒体下载、视频下载、m3u8 下载及 B站视频下载,提供 Windows 和 Mac 桌面客户端。Cross-platform video extraction tool: Supports streaming download, video download, m3u8 download, and Bilibili video download, with desktop clients for Windows and Mac.

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

TypeScript43.73%
TSX26.57%
Go25.72%
CSS2.67%
Dockerfile0.51%