ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

FckSignups 的 Python 管理工具拆解:从 Issue 到 JSON 的自动化

FckSignups 的 Python 管理工具拆解:从 Issue 到 JSON 的自动化 FckSignups 的 Python 管理工具拆解从 Issue 到 JSON 的自动化【免费下载链接】FckSignupsA list of tools that are open-source, in-browser, and require no-signups!项目地址: https://gitcode.com/GitHub_Trending/fc/FckSignupsFckSignups现已更名 NoSignups是一个收录开源、浏览器内即用、无需注册工具的精选目录所有收录数据都集中存放在一个 tools.json 文件中。那么维护者是怎么把散落在 GitHub Issue 里的用户投稿高效地变成结构化数据的呢答案就在management_tools/目录下的 4 个 Python 脚本——它们构成了一条完整的从 Issue 到 JSON的自动化流水线 ⚙️整体架构一个 JSON 驱动的目录站这个项目的数据设计非常简洁数据源tools.json —— 包含categories分类和tools工具列表两大块每个工具记录id、name、url、github、license、stars等字段数据入口访客通过网站的 SUBMIT A TOOL 按钮提交工具由 Cloudflare Worker 后台cloudflare-worker/urlHandlers/handleSubmitTool.ts自动生成一个带SUBMISSION标签的 GitHub Issue数据处理management_tools/里的 Python 脚本读取 Issue、抓取 Star 数、写回 JSON这种网站收数据 → Python 管数据的分工是学习小型社区项目如何自动化维护的绝佳样本。目录里的 4 个 Python 脚本脚本职责一句话概括addTool.py手动录入交互式问答式新建工具githubBridge.pyAPI 桥梁封装 GitHub 仓库与 Issue 查询addToolAutomation.py自动录入粘贴 Issue URL 一键入库updateStarsAutomation.py数据保鲜批量刷新所有工具的 Star 数四个脚本由浅入深依赖关系是addTool.py是基础提供 JSON 读写githubBridge.py提供 API 能力后两个自动化脚本都复用了它们。第一步addTool.py —— 交互式的手动录入addTool.py 是整条流水线的基础它的运行方式是问答式的读取tools.json先打印所有可用的分类 idaddTool.py#L97-L99按字段逐个提示你输入 name、description、url、tags 等调用slugify()把工具名转成 URL 友好的idaddTool.py#L37-L42比如 My Cool Tool 会变成my-cool-tool把新工具追加进tools数组再以 2 空格缩进写回文件addTool.py#L86-L88对新手来说它演示了两个很实用的模式表单式输入校验getInput会拒绝空输入和JSON 文件的原子读写封装loadJSONFile/updateJSONFile两个函数被其他脚本反复复用。第二步githubBridge.py —— 给 Python 装上 GitHub 触角githubBridge.py 是一个只有 80 多行的桥梁模块核心价值是把 GitHub 的 HTTP API 抽象成好用的类GitHubRepoBridge传入仓库 URL它自动转换成 API 地址githubBridge.py#L15-L26请求一次就能拿到stargazers_countStar 数和licenseSPDX 标识GitHubIssueBridge传入 Issue URL它去拉取 Issue 正文并用正则提取SUBMISSION.../SUBMISSION标签里的内容githubBridge.py#L80-L83这个设计有个巧妙之处网站提交表单时Issue 正文里同时包含人类可读的表格和机器可解析的SUBMISSION串格式定义在 handleSubmitTool.ts#L39。两者用;;分隔顺序固定为名称;;描述;;工具URL;;标签;;GitHub仓库;;分类人类审 Issue 看表格脚本抓数据看标签——一份内容两种消费方式。第三步addToolAutomation.py —— 从 Issue 到 JSON 的一键自动化这是整条流水线的主角。运行 addToolAutomation.py 后粘贴 Issue URLGitHubIssueBridge自动拉取并解析出 6 个字段校验addToolAutomation.py#L23-L31字段数必须是 6 个且 GitHub 链接不能缺失自动补全通过GitHubRepoBridge实时请求真实仓库自动填入最新的 Star 数和开源许可证人工兜底只手动补问三个字段——分类、标签、描述写回tools.json完成入库原本需要手工复制粘贴 10 个字段、查仓库、数 Star 的工作压缩成了粘贴一个链接 回答三个问题。第四步updateStarsAutomation.py —— 用 GraphQL 批量刷新 Star工具的 Star 数会随时间变化updateStarsAutomation.py 负责给整个目录保鲜。它有两个值得学习的设计分块查询GraphQL 单次查询不能塞进太多仓库脚本用chunks()把 URL 列表按每 100 个一批切分updateStarsAutomation.py#L36-L38逐批生成别名查询repo0、repo1……Token 认证从环境变量GITHUB_TOKEN读取令牌避免触发 GitHub 匿名 API 的速率限制最后遍历tools数组把抓到的最新 Star 数写回每个工具一次性完成全站数据更新。如何本地跑一遍这条流水线仓库是只读的先把它克隆到本地再操作git clone https://gitcode.com/GitHub_Trending/fc/FckSignups cd FckSignups/management_tools pip install requests python addToolAutomation.py # 粘贴一个 tool-submission Issue 的 URL想手动加一个工具就运行python addTool.py定期维护则运行python updateStarsAutomation.py。注意JSON_PATH ../tools.json是相对路径所以脚本必须在management_tools/目录内执行这是新手最容易踩的坑 总结小项目里的工程智慧这套不到 300 行代码的管理工具浓缩了社区项目数据维护的完整思路单一数据源一切以 tools.json 为准前端直接消费它人机双通道同一份提交人和机器各取所需脚本分层复用基础读写 → API 封装 → 自动化编排层层递进防御性校验从空输入、字段数量到 JSON 格式错误都有兜底如果你想给自己的开源项目设计一套贡献数据自动化流程management_tools/目录就是一个可以直接抄作业的最小参考实现。【免费下载链接】FckSignupsA list of tools that are open-source, in-browser, and require no-signups!项目地址: https://gitcode.com/GitHub_Trending/fc/FckSignups创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表