{"id":38236908,"url":"https://github.com/duan602728596/48tools","last_synced_at":"2026-01-17T01:06:58.921Z","repository":{"id":41233237,"uuid":"98806656","full_name":"duan602728596/48tools","owner":"duan602728596","description":"48工具，提供公演、口袋48直播录源，公演、口袋48录播下载，封面下载，B站直播抓取，B站视频下载，A站直播抓取，A站视频下载，抖音视频下载，视频截取，视频导出gif，视频合并等功能。口袋48的pc版，可以看成员的直播、弹幕和录播。","archived":false,"fork":false,"pushed_at":"2025-09-16T16:53:42.000Z","size":32497,"stargazers_count":583,"open_issues_count":33,"forks_count":73,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-09-16T19:30:06.563Z","etag":null,"topics":["acfun","bej48","bilibili","cgt48","ckg48","gnz48","shy48","snh48"],"latest_commit_sha":null,"homepage":"https://yzb1g5r02h.feishu.cn/docx/MxfydWlNaovZ5sxsbJ5crnAlnVb","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duan602728596.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-07-30T15:28:53.000Z","updated_at":"2025-09-16T16:47:23.000Z","dependencies_parsed_at":"2023-10-10T18:35:21.525Z","dependency_job_id":"f7af98d7-51f4-4989-9bba-9e2a7bda6b0e","html_url":"https://github.com/duan602728596/48tools","commit_stats":null,"previous_names":[],"tags_count":140,"template":false,"template_full_name":null,"purl":"pkg:github/duan602728596/48tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duan602728596%2F48tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duan602728596%2F48tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duan602728596%2F48tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duan602728596%2F48tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duan602728596","download_url":"https://codeload.github.com/duan602728596/48tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duan602728596%2F48tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28490982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"ssl_error","status_checked_at":"2026-01-17T00:43:11.982Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["acfun","bej48","bilibili","cgt48","ckg48","gnz48","shy48","snh48"],"created_at":"2026-01-17T01:06:55.707Z","updated_at":"2026-01-17T01:06:58.910Z","avatar_url":"https://github.com/duan602728596.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 口袋48工具\n\n![GitHub Release](https://img.shields.io/github/v/release/duan602728596/48tools)\n   ![GitHub License](https://img.shields.io/github/license/duan602728596/48tools)   ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/duan602728596/48tools/.github%2Fworkflows%2Fbuild.yml?style=flat\u0026label=Build%20apps%20CI%20(Intel))   ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/duan602728596/48tools/.github%2Fworkflows%2Fbuild-xlarge.yml?style=flat\u0026label=Build%20apps%20CI%20in%20xlarge%20runner%20(ARM))   \n![Static Badge](https://img.shields.io/badge/Win10-fa541c?style=for-the-badge)   ![Static Badge](https://img.shields.io/badge/Win11-fa8c16?style=for-the-badge)   ![Static Badge](https://img.shields.io/badge/Linux-722ed1?style=for-the-badge)   ![Static Badge](https://img.shields.io/badge/MacOS-eb2f96?style=for-the-badge)   \n\n\u003e 根据[Electron的支持政策](https://www.electronjs.org/docs/latest/tutorial/electron-timelines)，软件将会在下一个版本升级Electron的版本。Electron版本大于v22，软件将不支持win8及以下版本。\n\n## 使用文档\n\n文档地址：[https://yzb1g5r02h.feishu.cn/docx/MxfydWlNaovZ5sxsbJ5crnAlnVb](https://yzb1g5r02h.feishu.cn/docx/MxfydWlNaovZ5sxsbJ5crnAlnVb) 。\n\n## 软件下载链接\n\n* Github：https://github.com/duan602728596/48tools/releases\n* 百度网盘：https://github.com/duan602728596/document/blob/master/48/README.md\n\n## 软件功能\n\n\u003e 1. 使用前，需要先下载FFmpeg，并配置FFmpeg的软件位置。播放视频功能需要配置后重新启动软件。   \n\u003e 2. 使用48相关的功能，需要配置App Data目录来保存网易云信的SDK生成的数据。   \n\u003e 3. 微博超话签到，需要配置无头浏览器的地址。\n\n* SNH48\n  * 口袋48直播录源\n  * 口袋48录播下载\n  * PC端观看口袋48直播（有弹幕）\n  * PC端观看口袋48录播（有弹幕）\n  * SNH48官方公演直播录制\n  * SNH48官方公演录播下载\n* B站 \n  * 直播录源\n  * 视频下载\n* A站\n  * 直播录源\n  * 视频下载\n* 抖音\n  * 直播录源\n  * 视频下载（支持视频ID、账户ID、视频地址、账户主页、分享地址，支持一键下载） \n* 快手\n  * 直播录源\n  * 视频下载\n* 小红书直播录源\n* SHOWROOM直播录源\n* 微博\n  * 超级话题签到\n  * 直播录制\n  * 微博图片下载\n* 视频处理\n  * 视频剪切\n  * 视频合并\n  * 直接执行FFmpeg命令（支持命令的本地保存）\n\n### MacOS的ARM版本运行时会提示软件已损坏，无法打开\n\n在软件目录打开终端，运行`sudo xattr -rd com.apple.quarantine 48tools.app`或`sudo xattr -cr 48tools.app`。然后尝试重新运行。\n\n\u003cimg src=\"statics/macos-arm-run-app.png\" width=\"580\"\u003e\n\n## 许可证\n\n本软件以及所有源代码受**GNU General Public License v3.0**许可证的约束。\n\n## 软件开发\n\n### 技术栈\n\nPug + Sass + TypeScript + React + antd + Webpack + TailwindCSS + Electron。包管理工具使用corepack。   \n使用jest + ts-jest进行单元测试，使用playwright + @playwright/test进行E2E测试。   \n\n### 模块\n\n* 48tools: 软件源代码。\n* main：Electron主程序运行源代码。\n* help：软件本地帮助文件源代码。\n* test：E2E测试代码。\n* babel-plugin-delay-require：Babel插件，支持Node模块的按需加载。\n* postcss-plugin-remove-classnames：postcss插件，删除TailwindCSS生成的无用的class。\n\n### 开发过程\n\n\u003e 在使用WebStorm开发时，如果出现提示eslint检测超时的错误，需要按照[**这个步骤**](https://youtrack.jetbrains.com/issue/WEB-63073/ESLint-creates-a-lot-of-node-processes#focus=Comments-27-8111996.0-0)来配置。\n\n1. main模块：进入`packages/main`，运行`node --run start`，开发主程序源代码；或运行`npm run dev`，编译开发环境的主程序源代码。\n2. 48tools模块：进入`packages/48tools`，运行`node --run dll`。\n3. 48tools模块：该模块有两种开发方式可选择。进入`packages/48tools`，\n   1. 启动开发服务器：\n      1. 运行`node --run start:serve`，启动开发服务器。\n      2. 运行`node --run runel:serve`，启动软件。\n   2. 编译文件到本地硬盘：\n      1. 运行`node --run start`，开始开发。\n      2. 运行`node --run runel`，启动软件。\n4. help模块：进入`packages/help`，运行`node --run start`，开发帮助文件源代码。\n\n### 编译\n\n\u003e 运行`node scripts/delivery.mjs`，完成整个编译过程。\n\n1. main模块：进入`packages/main`，运行`node --run build`，编译主程序源代码。\n2. 48tools模块：进入`packages/48tools`，运行`node --run build`，编译软件源代码。\n3. help模块：进入`packages/help`，运行`node --run build`，编译帮助文件源代码。\n4. 运行`node scripts/unpack.mjs`，打包软件。\n5. 运行`node scripts/clean.mjs`，删除软件中的无用的文件。\n\n### 测试\n\n1. 完成开发的所有编译过程。\n2. 进入`packages/48tools`，运行`node --run test`，运行单元测试。\n3. 进入`packages/test`，运行`node --run test`，运行E2E测试。\n\n### 源代码托管地址\n\ngithub：[https://github.com/duan602728596/48tools](https://github.com/duan602728596/48tools)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduan602728596%2F48tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduan602728596%2F48tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduan602728596%2F48tools/lists"}