这个项目能做什么
Game Sales Aggregator 是一个开源项目(采用 MIT 许可证),能够自动收集多个数字商店的当前游戏优惠,并将其发布在静态网站和 Telegram 频道中。已部署版本可通过 GitHub Pages 访问。
追踪范围:Epic Games 免费赠送(当前及即将推出)、Epic Games Store 折扣、Steam 限时免费、Steam 热销折扣(5% 以上),以及 Xbox Game Pass for PC 的新入库和预期游戏。
网站功能:支持 300 毫秒防抖的游戏标题搜索;按类别(Epic/Steam、免费/折扣、Game Pass 新游戏)筛选;按价格、折扣百分比或标题排序;价格区间过滤;存储在 localStorage 中的愿望清单;最近 30 天的通知历史;支持深色/浅色主题切换;双语界面(乌克兰语和英语);支持安装到手机或 PC 的 PWA 模式及通过 Service Worker 实现的离线缓存;SEO 标记(Open Graph、Twitter Cards、JSON-LD、sitemap.xml)。
工作原理:通过 GitHub Actions 定时任务(每小时),脚本从 Steam、Epic Games 和 Xbox Game Pass API 收集数据。随后更新仓库中的 deals.json,生成 sitemap.xml,构建 React 应用并部署到 GitHub Pages,同时通过 Bot API 将新折扣、赠品和入库信息发送至 Telegram 频道。
技术栈:React 19 + TypeScript + Vite + React Router;样式采用带有毛玻璃效果的原生 CSS;通过 LocaleContext 实现自定义本地化;数据采集使用 Node.js 和 tsx;基于 vite-plugin-pwa 和 Service Worker 的 PWA;托管于 GitHub Pages;自动化通过 GitHub Actions 的每小时 cron 任务实现。
本地启动:需要 Node.js 20+ 和 npm。项目提供 Ubuntu/Debian(scripts/install.sh)和 Windows(scripts/install.ps1)的自动安装脚本。手动步骤包括:git clone、npm install,随后运行 npm run fetch(获取数据)、npm run dev(本地站点)、npm run build(生产构建)、npm run lint 和 npm test。构建、测试和部署在 CI 的 ubuntu-latest 环境中运行;由于应用是静态的,dist/ 目录可部署在任何 Web 服务器(如 nginx、Caddy 等)上。
若要在 GitHub Actions 中启用通知,需在 Settings -> Secrets and variables -> Actions 中添加 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID。README 中详细说明了获取频道 Chat ID 的方法:将机器人添加为管理员,向频道发送消息,并通过 getUpdates 方法查看响应。
仓库结构涵盖了工作流 .github/workflows/scheduler.yml、数据 public/data/deals.json、脚本 fetch-deals.ts 和 generate-sitemap.ts、组件(GameCard 及 Epic/Steam/Xbox 部分)、上下文(LocaleContext, WishlistContext)、钩子(useDebounce, useInstallPWA, useLocalStorage)、本地化字典、路由 App.tsx、用于加载 deals.json 的 DataContext、Service Worker src/sw.ts 以及 Vite 配置。该项目还维护了一个公共 Telegram 频道,用于推送免费游戏、折扣和 Game Pass 新增内容的通知。
评论
0 评分人数达到10人后显示
登录后参与讨论。