Skip to content

l1veIn/sunohits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SunoHits Logo

SunoHits

B站 Suno AI 音乐排行榜
发现热门 AI 生成音乐

🔗 在线演示一键部署功能特性技术栈本地开发


📸 截图预览

桌面端 移动端

⚠️ Demo 服务可能随时关闭,建议自己部署以获得最佳体验。


🚀 一键部署

第一步:Fork 并部署到 Vercel

Deploy with Vercel

  1. 点击上方按钮,登录 Vercel(没有账号会引导注册)
  2. Add Integrations 部分,点击 Supabase 旁边的 Add 按钮
  3. 如果没有 Supabase 账号,会引导你注册并创建项目
  4. 授权 Vercel 访问 Supabase 后,环境变量会自动配置
  5. 点击 Deploy 开始部署

第二步:初始化数据库

部署完成后,需要创建数据表:

  1. 打开 Supabase Dashboard
  2. 选择刚创建的项目
  3. 进入 SQL Editor(左侧菜单)
  4. 复制 sql/setup.sql 的全部内容
  5. 粘贴到编辑器并点击 Run 执行

第三步:配置环境变量

先生成一个随机密钥:

openssl rand -base64 32

在 Vercel 添加:进入项目 → Settings → Environment Variables

变量名 说明
CRON_SECRET 刚生成的密钥 API 验证请求用

在 GitHub 添加:进入仓库 → Settings → Secrets → Actions → Repository secrets

Secret 名
CRON_SECRET 与 Vercel 相同的密钥
VERCEL_URL 你的部署地址(如 https://sunohits.vercel.app

⚠️ 两边的 CRON_SECRET 必须一致!GitHub Actions 用它调用 Vercel API。

第四步:触发首次爬取

GitHub Actions 会每 6 小时自动爬取数据(免费!)。

首次需要手动触发:GitHub → Actions → Crawl Charts → Run workflow


✨ 功能特性

📊 多榜单系统

  • 总榜 - 半年内播放量最高 (Top 200)
  • 日榜 - 24小时内播放量最高
  • 周榜 - 一周内播放量最高
  • 新歌榜 - 一周内最新发布
  • 弹幕榜 - 半年内弹幕数最多
  • 收藏榜 - 半年内收藏数最多

🎧 完整播放器

  • 播放/暂停、上一首/下一首
  • 进度条拖拽
  • 音量控制、播放模式(顺序/随机/单曲/列表循环)
  • 播放列表抽屉
  • 「播放全部」按钮
  • 「清空列表」按钮

💾 本地存储功能

  • 收藏夹 - 收藏喜欢的歌曲
  • 屏蔽列表 - 屏蔽非音乐内容
  • 播放列表持久化 - 刷新页面不丢失

📱 响应式设计

  • 桌面端:侧边栏 + 播放器栏
  • 移动端:底部标签 + 紧凑播放器

🛠 技术栈

  • 框架: Next.js 15 (App Router)
  • 数据库: Supabase (PostgreSQL)
  • 样式: Tailwind CSS + shadcn/ui
  • 状态管理: Zustand + localStorage
  • 部署: Vercel

📁 项目结构

sunohits/
├── app/
│   ├── api/
│   │   ├── charts/       # 榜单数据 API
│   │   ├── crawl/        # 爬虫触发器
│   │   └── play/         # 音频流代理
│   ├── favorites/        # 收藏页面
│   └── page.tsx          # 首页
├── components/
│   ├── layout/           # 侧边栏、移动端导航
│   ├── player/           # 播放器组件
│   └── song-list/        # 歌曲列表组件
├── lib/
│   ├── bili/             # B站客户端
│   ├── services/         # 爬虫服务
│   └── store/            # 状态管理
└── sql/
    └── setup.sql         # 数据库初始化

🧪 本地开发

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 运行测试
npm test

# 手动爬取数据
npx tsx scripts/run-crawl.ts

🙏 致谢

本项目参考了以下优秀开源项目:


⚠️ 免责声明

本项目仅供学习交流使用,请勿用于商业用途。

  • 本项目不存储任何音视频资源,所有内容均来自 B站 公开 API
  • 使用本项目产生的任何法律责任由使用者自行承担
  • 请尊重 UP 主的劳动成果,喜欢请到 B站 点赞、投币、收藏
  • 如有侵权,请联系删除

📜 开源协议

MIT


为 AI 音乐爱好者用 ❤️ 打造

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors