├── src ├── mcp.md ├── v3 │ ├── 音乐模块 │ │ └── QQ音乐 │ │ │ ├── 专辑相关接口 │ │ │ ├── 1-info.md │ │ │ └── 2-song.md │ │ │ ├── 歌手相关接口 │ │ │ ├── 1-info.md │ │ │ ├── 2-song.md │ │ │ ├── 4-mv.md │ │ │ └── 3-album.md │ │ │ ├── 点歌相关接口 │ │ │ ├── 8-ai.md │ │ │ ├── 2-link.md │ │ │ ├── 3-ekey.md │ │ │ └── 1-info.md │ │ │ ├── 视频相关接口(MV) │ │ │ ├── 1-info.md │ │ │ └── 2-link.md │ │ │ ├── 用户相关接口 │ │ │ ├── 4-SongListImport.md │ │ │ ├── 3-PlayRecentlyCount.md │ │ │ ├── 1-info.md │ │ │ └── 2-playlist.md │ │ │ ├── 搜索相关接口 │ │ │ ├── 8-user.md │ │ │ ├── 7-lyric.md │ │ │ ├── 2-song.md │ │ │ ├── 1-smartbox.md │ │ │ ├── 5-album.md │ │ │ ├── 3-singer.md │ │ │ ├── 4-playlist.md │ │ │ └── 6-mv.md │ │ │ └── Cookie相关接口 │ │ │ ├── 2-fastlogin.md │ │ │ ├── 1-refreshCookie.md │ │ │ └── 3-qrcodelogin.md │ ├── 指南 │ │ ├── status.data.ts │ │ └── status.md │ ├── index.md │ └── 其他模块 │ │ └── 腾讯云COS │ │ └── sign.md ├── v1 │ └── index.md ├── v2 │ ├── 指南 │ │ └── status.md │ ├── 工具类 │ │ ├── qrcode.md │ │ └── email.md │ ├── index.md │ └── 音乐模块 │ │ ├── QQ音乐 │ │ ├── 13-qrcode.md │ │ ├── 11-mv.md │ │ ├── 3-search.md │ │ ├── 10-dissInfo.md │ │ ├── 12-refreshCookie.md │ │ ├── 5-singerSearch.md │ │ ├── 9-userInfo.md │ │ ├── 2-geturl.md │ │ ├── 6-songList.md │ │ ├── 7-albumList.md │ │ ├── 4-smartbox.md │ │ ├── 1-tencent.md │ │ └── 8-lyric.md │ │ └── 网易云音乐 │ │ ├── 1-netease.md │ │ └── 2-lyric.md ├── index.md └── jieshao.md ├── .env.production ├── .env.development ├── public ├── favicon-16x16.ico ├── images │ ├── pwa-192x192.png │ └── pwa-512x512.png └── svg │ └── json.svg ├── .gitignore ├── vue.d.ts ├── .vitepress ├── theme │ ├── layout │ │ ├── hooks │ │ │ ├── useBprogress.ts │ │ │ ├── useThemeTransition.ts │ │ │ ├── live2d-models.json │ │ │ ├── useRegisterSW.ts │ │ │ └── useLive2D.ts │ │ └── index.vue │ ├── index.ts │ └── style.scss └── config.mts ├── tsconfig.json ├── .github └── workflows │ └── vitepress-gh-pages.yml ├── package.json ├── vite.config.mts └── scripts ├── Cos.vue └── qqkey.ps1 /src/mcp.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/专辑相关接口/1-info.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/专辑相关接口/2-song.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/歌手相关接口/1-info.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/歌手相关接口/2-song.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/歌手相关接口/4-mv.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/歌手相关接口/3-album.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | VITE_APP_MODE=production 2 | VITE_API_URL=https://api.vkeys.cn 3 | -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | VITE_APP_MODE=development 2 | VITE_API_URL=http://localhost:9681 3 | -------------------------------------------------------------------------------- /public/favicon-16x16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvluoyue/api-doc/HEAD/public/favicon-16x16.ico -------------------------------------------------------------------------------- /public/images/pwa-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvluoyue/api-doc/HEAD/public/images/pwa-192x192.png -------------------------------------------------------------------------------- /public/images/pwa-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lvluoyue/api-doc/HEAD/public/images/pwa-512x512.png -------------------------------------------------------------------------------- /src/v1/index.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 落月API的V1版本使用的是原生php开发的自研框架,由QR网络词库改进而来,开发效率低下而被废弃。 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /node_modules 3 | /.vitepress/cache/ 4 | /.idea 5 | /.cache 6 | /src/dist/ 7 | /dev-dist/ 8 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/点歌相关接口/8-ai.md: -------------------------------------------------------------------------------- 1 | # AI演唱信息API 2 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/视频相关接口(MV)/1-info.md: -------------------------------------------------------------------------------- 1 | # 获取视频MV信息 2 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/视频相关接口(MV)/2-link.md: -------------------------------------------------------------------------------- 1 | # 获取视频MV播放链接 2 | -------------------------------------------------------------------------------- /src/v3/指南/status.data.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | async load () { 3 | return (await fetch('https://api.vkeys.cn/system/info/code')).json() 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /vue.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/用户相关接口/4-SongListImport.md: -------------------------------------------------------------------------------- 1 | # 使用图片导入到音乐平台 2 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/用户相关接口/3-PlayRecentlyCount.md: -------------------------------------------------------------------------------- 1 | # 获取收藏歌曲听歌次数API 2 | -------------------------------------------------------------------------------- /src/v2/指南/status.md: -------------------------------------------------------------------------------- 1 | # 全局错误码 2 | 3 | | 错误码 | 错误解释 | 4 | |:-----:|-----------------| 5 | | 200 | 请求成功 | 6 | | 302 | 请求参数错误 | 7 | | 303 | token失效 | 8 | | 500 | 业务运行异常 | 9 | | 501 | 接口未开放 | 10 | | 502 | 接口已废弃 | 11 | | 503 | 系统运行错误 | 12 | | 504 | 服务器异常 | 13 | | 600 | 自定义提示信息(业务提示信息) | 14 | | 601 | 自定义提示信息(业务错误信息) | 15 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/hooks/useBprogress.ts: -------------------------------------------------------------------------------- 1 | import {BProgress} from "@bprogress/core"; 2 | import {useRouter} from "vitepress"; 3 | import '@bprogress/core/css' 4 | 5 | export default () => { 6 | 7 | const router = useRouter(); 8 | 9 | BProgress.configure({ 10 | easing: "ease-in-out", 11 | showSpinner: false, 12 | speed: 100, 13 | trickleSpeed: 100, 14 | positionUsing: "width", 15 | }) 16 | router.onBeforeRouteChange = () => { 17 | BProgress.start() // 开始进度条 18 | } 19 | router.onAfterRouteChange = () => { 20 | BProgress.done() // 停止进度条 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/v3/指南/status.md: -------------------------------------------------------------------------------- 1 | # code状态码大全 2 | code状态码的设计思路是:模块编号(00-99)+子模块编号(00-99)+具体状态码(00-99) 3 | 模块编号为0时表示通用的状态码,所有接口都可以返回该状态码。 4 | 这种模式据说也是`微服务`的一种设计模式。 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
状态码解释
{{ code.code }}{{ code.message }}
20 | 21 | 25 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "incremental": false, 4 | "target": "ES2020", 5 | "module": "ESNext", 6 | "moduleResolution": "node", 7 | "lib": ["ES2020", "DOM","DOM.Iterable"], 8 | "types": [ 9 | "vite/client", 10 | "vitepress", 11 | "vite-plugin-pwa/client" 12 | ], 13 | "esModuleInterop": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "strictNullChecks": true, 17 | "noUnusedLocals": true, 18 | "skipLibCheck": true 19 | }, 20 | "include": [ 21 | "**/*.ts", 22 | "**/*.d.ts", 23 | "**/*.vue" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /src/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # https://vitepress.dev/reference/default-theme-home-page 3 | layout: home 4 | 5 | hero: 6 | name: "落月API" 7 | text: "为开发者提供高效、稳定、便捷的接口" 8 | image: 9 | src: /images/pwa-512x512.png 10 | alt: 落月 11 | actions: 12 | - theme: brand 13 | text: 开始使用 14 | link: /v2 15 | - theme: alt 16 | text: Github 17 | link: https://github.com/lvluoyue/api-doc 18 | 19 | features: 20 | - title: 高效性 21 | details: 落月API使用了协程等技术,确保在高并发场景下提供高效且高质量的服务。 22 | - title: 稳定性 23 | details: 项目采用了接口参数校验、异常处理、日志等技术,确保接口的稳定性和高质量。 24 | - title: 便捷性 25 | details: 落月API设计简洁易用,提供了详细的文档,帮助开发者快速上手并集成到自己的项目中。 26 | - title: 高质量 27 | details: 项目严格遵循高质量编码规范,确保代码的可维护性和可读性。 28 | --- 29 | -------------------------------------------------------------------------------- /src/v2/工具类/qrcode.md: -------------------------------------------------------------------------------- 1 | # 二维码生成 2 | 3 | ## 简要描述 4 | 5 | - 二维码生成接口 6 | 7 | ## 请求URL 8 | - ` https://api.vkeys.cn/v2/tool/qrcode 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/tool/qrcode?text=https://doc.vkeys.cn 15 | 16 | 17 | ## 参数 18 | 19 | | 参数名 | 必选 | 类型 | 说明 | 20 | |:----------:|:---:|:-------:|:----------------| 21 | | text | 是 | string | 二维码数据 | 22 | | size | 否 | int | 二维码大小 默认值300 | 23 | | margin | 否 | int | 二维码外边距 默认值15 | 24 | | labelText | 否 | string | 标签文本 | 25 | | labelsize | 否 | int | 标签大小 默认值20 | 26 | | logo | 否 | string | log标志 | 27 | | logoSize | 否 | string | log大小 默认值120 | 28 | 29 | ## 返回示例 30 | 31 | ``` text 32 | 返回二维码图片 33 | ``` 34 | -------------------------------------------------------------------------------- /src/v2/工具类/email.md: -------------------------------------------------------------------------------- 1 | # 发送邮件API 2 | 3 | ## 简要描述 4 | 5 | - 发送邮件接口 6 | 7 | ## 请求URL 8 | - ` https://api.vkeys.cn/v2/tool/email ` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/tool/email?mail[]=1569097443@qq.com&title=标题&body=正文 15 | 16 | ## 参数 17 | 18 | | 参数名 | 必选 | 类型 | 说明 | 19 | |:------:|:---:|:-------:|:-----------| 20 | | mail | 是 | array | 收件人,可指定多个 | 21 | | title | 是 | string | 邮件标题 | 22 | | body | 是 | string | 邮件内容 | 23 | | cc | 否 | array | 添加抄送邮件地址 | 24 | | bcc | 否 | array | 添加密送邮件地址 | 25 | 26 | ## 返回示例 27 | 28 | ``` json 29 | { 30 | "code": 200, 31 | "message": "请求成功!", 32 | "data": { 33 | "err": "" 34 | }, 35 | "time": "2024-08-27 17:46:52", 36 | "pid": 18172, 37 | "tips": "欢迎使用API-Server" 38 | } 39 | ``` 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/v3/index.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | ::: warning 3 | 当前文档为v3版本(正在开发),v2版本接口因腾讯官方接口调整,无法获取会员歌曲以及高音质音乐。 4 | ::: 5 | 6 | 1. 为了使接口拥有更强大的功能,我们重构了之前的所有代码,包括框架底层。 7 | 2. 该框架已从本接口系统分离出来,有兴趣可访问 [lvluoyue/webman-mvc](https://github.com/lvluoyue/webman-mvc) 8 | 3. 为什么要重构呢?因为V2的设计是针对`无cookie接口`设计的,由于腾讯修复了相关接口,导致当前接口无法很好的正常运行,如无法正确获取到音乐数据。 9 | 4. 近期腾讯官方也在接口中加入了`接口限流`、`风控机制`,导致高并发时账号被风控。V3就是围绕这些问题进行了优化。 10 | 11 | ## 更新变动 12 | - [x] 更改了所有接口的code代码以及错误信息。 13 | - [x] 更改了音乐搜索返回数据的格式,提供更详细的数据。 14 | - [x] 更改了缓存策略。 15 | - [x] 增加了多种cookie轮询算法(负载均衡算法)。 16 | - [ ] 提供在线获取QQ音乐cookie功能,也可提供给我们。 17 | - [x] 使用接口限流,防止接口被封。 18 | - [ ] 新增接口token功能,区分付费接口。 19 | 20 | ## 系统特性 21 | - [x] 使用webman+swoole实现接口协程。 22 | - [x] 使用swoole的redis,mysql等连接池。 23 | - [x] 使用GlobalData组件,实现进程间数据共享。 24 | - [x] 使用Channel分布式通讯组件,实现进程间通讯。 25 | - [x] 使用crontab组件,实现定时任务功能。 26 | - [x] 使用自研框架(仿springboot)。 27 | - [x] 使用前后端自动化部署方案。 28 | - [ ] 编写接口统计算法,实时分析接口请求情况。 29 | 30 | ## 废弃的功能 31 | - [x] 弃用GET参数与POST参数混合 32 | - [x] 不再使用版本号作为路径(将V3作为最终版发布) 33 | -------------------------------------------------------------------------------- /public/svg/json.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/index.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 43 | -------------------------------------------------------------------------------- /src/v2/index.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | ::: warning 3 | v2版本接口因腾讯官方接口调整,无法获取会员歌曲以及高音质音乐。但仍然可以获取免费歌曲。我们正在编写v3接口,请大家耐心等待。 4 | ::: 5 | 6 | 当前文档为v2版本,v1版本长时间不维护bug较多所以不再维护。 7 | v2版本相对于v1版本进行了一定的优化,主要围绕性能以及功能上的优化,后面会介绍。 8 | 为了更好的提供api服务,我在2024-06-10正式决定与小杰合作开发。 9 | api后端使用webman框架(https://www.workerman.net) 10 | 11 | ## 关于域名 12 | 13 | [doc.vkeys.cn](https://doc.vkeys.cn "doc.vkeys.cn") 相关接口文档 14 | [api.vkeys.cn](https://api.vkeys.cn "api.vkeys.cn") 后端接口域名 15 | 16 | ## API路径及请求规范 17 | 18 | - 第二版- API:https://{域名}/v2/{接口分类}/{接口功能} 19 | - 第一版API(废弃):https://{域名}/v1/{接口分类}/{接口功能} 20 | - 请求方式`GET`和`POST`任意即可 21 | 22 | ## 文档路径规范 23 | 24 | `接口分类` -> `数据提供商` -> `接口名称(包含多级目录)` 25 | 26 | ## 新特性 27 | 28 | - 使用了连接池、请求合并等技术,具有更高效的请求速度。 29 | - 使用了redis缓存、消息队列等技术,实现高并发环境下正常使用。 30 | - 使用了跨域技术,允许不同域名的情况下访问我站API。 31 | - 使用验证器,在进行接口提交时,API会验证参数是否合法。 32 | - 使用错误处理和日志处理,在程序出现异常时,系统自动中断执行并保存相关信息,以便修复bug。 33 | 34 | ## 后续开发计划 35 | 36 | 1. 开发后台管理(学完vue3之后) 37 | 2. 开发QQ音乐相关具体功能(如搜索模块新增搜索歌手、搜索歌词、搜索专辑、搜索歌单等) 38 | 3. 开发网易云音乐相关功能 39 | 4. 开发酷狗音乐相关功能 40 | 5. 开发网站工具类相关功能 41 | 42 | ## 联系方式 43 | 44 | 落月:`1569097443@qq.com` 45 | 小杰:`2772655946@qq.com` 46 | QQ群:`暂无` 47 | 48 | ## 关于服务器 49 | 50 | 数据缓存时间:`5分钟 ~ 1天`(5分钟内重复请求延长缓存时间,最长不超过1天) 51 | QPS限制:`暂无` 52 | 53 | ## 整站调用量(待实现) 54 | 55 | https://api.vkeys.cn/Call 56 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/hooks/useThemeTransition.ts: -------------------------------------------------------------------------------- 1 | import { useData } from 'vitepress' 2 | import { nextTick, provide } from 'vue' 3 | 4 | /** 5 | * 主题切换动画 6 | */ 7 | const useThemeTransition = () => { 8 | const { isDark } = useData() 9 | const enableTransitions = () => 10 | 'startViewTransition' in document 11 | && window.matchMedia('(prefers-reduced-motion: no-preference)').matches 12 | 13 | provide('toggle-appearance', async ({ clientX: x, clientY: y }: MouseEvent) => { 14 | if (!enableTransitions()) { 15 | isDark.value = !isDark.value 16 | return 17 | } 18 | 19 | const clipPath = [ 20 | `circle(0px at ${x}px ${y}px)`, 21 | `circle(${Math.hypot( 22 | Math.max(x, innerWidth - x), 23 | Math.max(y, innerHeight - y) 24 | )}px at ${x}px ${y}px)` 25 | ] 26 | 27 | await document.startViewTransition(async () => { 28 | isDark.value = !isDark.value 29 | await nextTick() 30 | }).ready 31 | 32 | document.documentElement.animate( 33 | { clipPath: isDark.value ? clipPath.reverse() : clipPath }, 34 | { 35 | duration: 360, 36 | easing: 'ease-in', 37 | pseudoElement: `::view-transition-${isDark.value ? 'old' : 'new'}(root)` 38 | } 39 | ) 40 | }) 41 | } 42 | 43 | export default useThemeTransition 44 | -------------------------------------------------------------------------------- /src/jieshao.md: -------------------------------------------------------------------------------- 1 | 2 | # 前言 3 | 欢迎使用落月api,当前文档为v2版本,v1版本长时间不维护bug较多所以不再维护。 4 | v2版本相对于v1版本进行了一定的优化,主要围绕性能以及功能上的优化,后面会介绍。 5 | 为了更好的提供api服务,我在2024-06-10正式决定与小杰合作开发。 6 | doc前端使用ShowDoc项目(https://github.com/star7th/showdoc) 7 | api后端使用webman框架(https://www.workerman.net) 8 | 9 | - ## 关于域名 10 | [doc.vkeys.cn](https://doc.vkeys.cn "doc.vkeys.cn") 相关接口文档 11 | [api.vkeys.cn](https://api.vkeys.cn "api.vkeys.cn") 后端接口域名 12 | [api.epdd.cn](https://api.epdd.cn "api.vkeys.cn") 后端接口备用域名,用于测试 13 | 14 | - ## API路径及请求规范 15 | - 第二版- API:https://{域名}/v2/{接口分类}/{接口功能} 16 | - 第一版API(废弃):https://{域名}/v1/{接口分类}/{接口功能} 17 | 请求方式`GET`和`POST`任意即可 18 | 19 | - ## 文档路径规范 20 | `接口分类` -> `数据提供商` -> `接口名称(包含多级目录)` 21 | 22 | - ## 新特性 23 | - 使用了连接池、请求合并等技术,具有更高效的请求速度。 24 | - 使用了redis缓存、消息队列等技术,实现高并发环境下正常使用。 25 | - 使用了跨域技术,允许不同域名的情况下访问我站API。 26 | - 使用验证器,在进行接口提交时,API会验证参数是否合法。 27 | - 使用错误处理和日志处理,在程序出现异常时,系统自动中断执行并保存相关信息,以便修复bug。 28 | 29 | - ## 后续开发计划 30 | 1. 开发后台管理(学完vue3之后) 31 | 2. 开发QQ音乐相关具体功能(如搜索模块新增搜索歌手、搜索歌词、搜索专辑、搜索歌单等) 32 | 3. 开发网易云音乐相关功能 33 | 4. 开发酷狗音乐相关功能 34 | 5. 开发网站工具类相关功能 35 | 36 | - ## 联系方式 37 | 落月:`1569097443@qq.com` 38 | 小杰:`2772655946@qq.com` 39 | QQ群:`暂无` 40 | 41 | - ## 关于服务器 42 | 数据缓存时间:`5分钟 ~ 1天`(5分钟内重复请求延长缓存时间,最长不超过1天) 43 | QPS限制:`暂无` 44 | 45 | 46 | - ## 整站调用量(待实现) 47 | https://api.vkeys.cn/Call 48 | -------------------------------------------------------------------------------- /.github/workflows/vitepress-gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: Deploy VitePress to GitHub Pages 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: read 10 | pages: write 11 | id-token: write 12 | 13 | concurrency: 14 | group: "pages" 15 | cancel-in-progress: false 16 | 17 | jobs: 18 | build: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: Checkout code 22 | uses: actions/checkout@v4 23 | with: 24 | fetch-depth: 0 25 | 26 | - name: Setup Node.js 27 | uses: actions/setup-node@v4 28 | with: 29 | node-version: 20 # 推荐使用 LTS 版本(如 18.x 或 20.x) 30 | cache: yarn # 启用 npm 依赖缓存 31 | 32 | - name: Setup Pages 33 | uses: actions/configure-pages@v4 34 | 35 | - name: Install dependencies 36 | run: yarn 37 | 38 | - name: Build VitePress 39 | run: yarn run build # 确保 package.json 中有 "build": "vitepress build" 40 | 41 | - name: Upload artifact 42 | uses: actions/upload-pages-artifact@v3 43 | with: 44 | path: dist # VitePress 默认输出目录 45 | 46 | deploy: 47 | environment: 48 | name: github-pages 49 | url: ${{ steps.deployment.outputs.page_url }} 50 | runs-on: ubuntu-latest 51 | needs: build 52 | steps: 53 | - name: Deploy to GitHub Pages 54 | id: deployment 55 | uses: actions/deploy-pages@v4 56 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vitepress", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "dev": "vitepress dev", 9 | "build": "vitepress build", 10 | "preview": "vitepress build && vitepress preview" 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "ISC", 15 | "devDependencies": { 16 | "@nolebase/vitepress-plugin-enhanced-mark": "^2.18.2", 17 | "@nolebase/vitepress-plugin-enhanced-readabilities": "^2.18.2", 18 | "@nolebase/vitepress-plugin-git-changelog": "^2.18.2", 19 | "@nolebase/vitepress-plugin-page-properties": "^2.18.2", 20 | "@shikijs/vitepress-twoslash": "^3.12.2", 21 | "@types/node": "^24.3.1", 22 | "@vite-pwa/vitepress": "^1.0.0", 23 | "markdown-it-task-checkbox": "^1.0.6", 24 | "pixi-live2d-display": "^0.4.0", 25 | "sass": "^1.92.1", 26 | "vite-plugin-pwa": "^1.0.3", 27 | "vite-plugin-vue-devtools": "^8.0.1", 28 | "vitepress": "^2.0.0-alpha.12", 29 | "vitepress-i18n": "^1.3.4", 30 | "vitepress-plugin-comment-with-giscus": "^1.1.15", 31 | "vitepress-plugin-group-icons": "^1.6.3", 32 | "vitepress-sidebar": "^1.33.0" 33 | }, 34 | "dependencies": { 35 | "@bprogress/core": "^1.3.4", 36 | "@vueuse/core": "^13.9.0", 37 | "axios": "^1.11.0", 38 | "oh-my-live2d": "^0.19.3", 39 | "typescript": "^5.9.2", 40 | "vite": "^7.1.5", 41 | "vue": "^3.5.21" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/hooks/live2d-models.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "雷姆", 4 | "path": "https://proxy.pipers.cn/https://raw.githubusercontent.com/imuncle/live2d/refs/heads/master/model/rem/model.json", 5 | "volume": 1, 6 | "scale": 0.13, 7 | "position": [-30, 80], 8 | "stageStyle": { 9 | "height": 440, 10 | "width": 240 11 | }, 12 | "mobileScale": 0.08, 13 | "mobilePosition": [-15, 80], 14 | "mobileStageStyle": { 15 | "height": 300, 16 | "width": 150 17 | } 18 | }, 19 | { 20 | "name": "初音未来", 21 | "path": "https://proxy.pipers.cn/https://raw.githubusercontent.com/iCharlesZ/vscode-live2d-models/master/model-library/miku/miku.model.json", 22 | "volume": 1, 23 | "scale": 0.30, 24 | "position": [0, 75], 25 | "stageStyle": { 26 | "height": 440, 27 | "width": 220 28 | }, 29 | "mobileScale": 0.2, 30 | "mobilePosition": [0, 95], 31 | "mobileStageStyle": { 32 | "height": 315, 33 | "width": 160 34 | } 35 | }, 36 | { 37 | "name": "ATRI", 38 | "path": "https://proxy.pipers.cn/https://raw.githubusercontent.com/lvluoyue/Live2D-ATRI/refs/heads/main/atri_8.model3.json", 39 | "volume": 1, 40 | "scale": 0.23, 41 | "position": [-90, 100], 42 | "stageStyle": { 43 | "height": 570, 44 | "width": 280 45 | }, 46 | "mobileScale": 0.11, 47 | "mobilePosition": [-20, 100], 48 | "mobileStageStyle": { 49 | "height": 330, 50 | "width": 160 51 | } 52 | } 53 | ] 54 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/13-qrcode.md: -------------------------------------------------------------------------------- 1 | # 扫码获取cookie 2 | 3 | ## 简要描述 4 | 5 | - 通过用户扫描二维码获取QQ音乐的cookie,获取成功后系统会将结果发送到目标邮箱中。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/qrcode` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/qrcode 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:---:|:----:|:----:|:---| 20 | | 无 | 无 | 无 | 无 | 21 | 22 | ## 返回示例 23 | 24 | 25 | 26 |
27 |
28 | × 29 | 30 |
31 |
32 | 33 | 39 | 74 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/hooks/useRegisterSW.ts: -------------------------------------------------------------------------------- 1 | import {onBeforeMount} from 'vue' 2 | import {useWebNotification} from '@vueuse/core' 3 | import {registerSW} from 'virtual:pwa-register' 4 | 5 | const intervalMS = 60 * 1000; 6 | 7 | const {isSupported, show} = useWebNotification({ 8 | requestPermissions: true 9 | }) 10 | 11 | const showNotification = (title: string) => { 12 | if (isSupported) { 13 | return show({ 14 | title, 15 | icon: './images/pwa-512x512.png', 16 | dir: 'auto', 17 | renotify: true, 18 | tag: 'pwa-update' 19 | }) 20 | } 21 | } 22 | 23 | export default () => { 24 | if (!isSupported) { 25 | console.error('Service Worker is not supported in this browser.') 26 | } 27 | 28 | onBeforeMount(() => { 29 | registerSW({ 30 | immediate: true, 31 | onOfflineReady: () => showNotification('网页已完成更新,您可以在断网后依然可以访问页面!'), 32 | onNeedRefresh: () => showNotification('检测到页面有更新,正在为您自动更新!'), 33 | onRegisteredSW(swUrl: string, r) { 34 | r.addEventListener('updatefound', () => { 35 | showNotification('检测到页面有更新,正在为您自动更新!') 36 | }) 37 | r && 38 | setInterval(async () => { 39 | if (r.installing || !navigator) return; 40 | 41 | if ('connection' in navigator && !navigator.onLine) return; 42 | 43 | const {status} = await fetch(swUrl, { 44 | cache: 'no-store', 45 | headers: { 46 | cache: 'no-store', 47 | 'cache-control': 'no-cache', 48 | }, 49 | }); 50 | if (status === 200) await r.update() 51 | }, intervalMS); 52 | }, 53 | onRegisterError(e) { 54 | console.error('Service Worker registration error!', e) 55 | }, 56 | }) 57 | }) 58 | } 59 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/11-mv.md: -------------------------------------------------------------------------------- 1 | # 获取MV链接API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个获取QQ音乐MV链接,可配合其他接口获取相关信息,并把vid提交至此接口即可使用。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/mv` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/mv?vid=013WEw5m1IGTul&type=m3u8 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:----:|:----:|:------:|:--------------| 20 | | vid | 是 | string | MV的vid | 21 | | type | 否 | string | 视频格式,mp4,m3u8 | 22 | 23 | ## 返回示例 24 | ``` json 25 | { 26 | "code": 200, 27 | "message": "请求成功!", 28 | "data": { 29 | "info": { 30 | "name": "【MMD】ロミオとシンデレラ / 初音未来 #初音未来# #初音ミク#", 31 | "desc": "【MMD】ロミオとシンデレラ / 初音未来", 32 | "vid": "013WEw5m1IGTul", 33 | "uploader_nick": "刘冬浩", 34 | "uploader_uin": "4295068995", 35 | "uploader_headurl": "http://y.gtimg.cn/music/photo_new/T001R500x500M000001R1AHM47u2HO_5.jpg", 36 | "pubdate": 1627730768, 37 | "duration": 194 38 | }, 39 | "urls": [ 40 | { 41 | "url": "http://v19.stream.tencentmusic.com/dis_kt_0545f9911a85d6505ba0e2d6c4ffbf39_1723704881/0b53oaaiuaaaqyaaynauivq2c4gdrjyabcqa.f220001.m3u8?local=1&fromtag=1192011", 42 | "fileSize": 10737620 43 | }, 44 | { 45 | "url": "http://v19.stream.tencentmusic.com/dis_kt_657773f999962d1068494a1e222c478c_1723704881/0b53oaaiuaaaqyaaynauivq2c4gdrjyabcqa.f220000.m3u8?local=1&fromtag=1192012", 46 | "fileSize": 25827064 47 | }, 48 | { 49 | "url": "http://v19.stream.tencentmusic.com/dis_kt_231f985d1253ca5b2a66b6f636f42ad1_1723704881/0b53oaaiuaaaqyaaynauivq2c4gdrjyabcqa.f240000.m3u8?local=1&fromtag=1192013", 50 | "fileSize": 53092516 51 | } 52 | ] 53 | }, 54 | "time": "2024-08-15 14:54:41", 55 | "pid": 2844, 56 | "tips": "欢迎使用API-Server" 57 | } 58 | ``` 59 | 60 | -------------------------------------------------------------------------------- /vite.config.mts: -------------------------------------------------------------------------------- 1 | import {defineConfig} from 'vite'; 2 | import {groupIconVitePlugin, localIconLoader} from 'vitepress-plugin-group-icons' 3 | import { 4 | GitChangelog, 5 | GitChangelogMarkdownSection, 6 | } from '@nolebase/vitepress-plugin-git-changelog/vite' 7 | import { 8 | PageProperties, 9 | PagePropertiesMarkdownSection 10 | } from '@nolebase/vitepress-plugin-page-properties/vite'; 11 | import {ConfigEnv, loadEnv} from "vitepress"; 12 | import VueDevTools from 'vite-plugin-vue-devtools' 13 | 14 | export default defineConfig(({mode}: ConfigEnv) => { 15 | const env = loadEnv(mode, process.cwd()); 16 | return { 17 | optimizeDeps: { 18 | exclude: [ 19 | '@nolebase/*', 20 | 'vitepress', 21 | ], 22 | }, 23 | ssr: { 24 | noExternal: [ 25 | '@nolebase/*', 26 | 'virtual:pwa-register' 27 | ], 28 | }, 29 | plugins: [ 30 | VueDevTools({ 31 | launchEditor: 'webstorm' 32 | }), 33 | groupIconVitePlugin({ 34 | customIcon: { 35 | json: localIconLoader(import.meta.url, './public/svg/json.svg') 36 | }, 37 | }), 38 | GitChangelog({ 39 | // 填写在此处填写您的仓库链接 40 | repoURL: 'https://github.com/lvluoyue/api-doc', 41 | }), 42 | GitChangelogMarkdownSection({ 43 | exclude: (id) => id.endsWith('index.md'), 44 | sections: { 45 | // 禁用页面历史 46 | disableChangelog: false, 47 | // 禁用贡献者 48 | disableContributors: true, 49 | }, 50 | }), 51 | PageProperties(), 52 | PagePropertiesMarkdownSection({ 53 | excludes: [ 54 | 'index.md', 55 | ], 56 | }) 57 | ], 58 | server: { 59 | open: true 60 | }, 61 | // https://cn.vitejs.dev/config/shared-options.html#publicdir 62 | publicDir: "../public", // 指定 public 目录路径 63 | build: { 64 | chunkSizeWarningLimit: 1000, // 设置为 1 MB 65 | rollupOptions: { 66 | external: ['oh-my-live2d'], 67 | } 68 | } 69 | } 70 | }); 71 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/3-search.md: -------------------------------------------------------------------------------- 1 | # 歌曲搜索API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个QQ音乐搜索接口,只能用于搜索,其他参数无效。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/search/song` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/search/song?word=狐妖小红娘 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:-----:|:-----:|:-------:|:----------------------| 20 | | word | 是 | string | 歌名 | 21 | | page | 否 | int | 页数,默认为1 | 22 | | num | 否 | int | 每页显示数,默认为10,区间:[1,60] | 23 | 24 | ## 返回示例 25 | ``` json 26 | { 27 | "code": 200, 28 | "message": "请求成功!", 29 | "data": [ 30 | { 31 | "id": 105648974, 32 | "mid": "0023CVP23SH17s", 33 | "vid": "v00199a1i1e", 34 | "song": "梦回还", 35 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 36 | "album": "狐妖小红娘 动画原声带", 37 | "singer": "呦猫UNEKO", 38 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 39 | "pay": "付费", 40 | "time": "2016-07-08", 41 | "type": 0, 42 | "bpm": 84, 43 | "quality": "臻品母带2.0", 44 | "grp": [ 45 | { 46 | "id": 235069670, 47 | "mid": "001SYUfq0ou27J", 48 | "vid": "i0031dmklxx", 49 | "song": "梦回还", 50 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 51 | "album": "狐妖小红娘·王权篇 动画原声大碟 轮转", 52 | "singer": "呦猫UNEKO", 53 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000LAXp222pE4w.jpg", 54 | "pay": "付费", 55 | "time": "2019-07-31", 56 | "type": 0, 57 | "bpm": 84, 58 | "quality": "臻品母带2.0", 59 | "grp": [] 60 | } 61 | ] 62 | } 63 | ], 64 | "time": "2024-08-03 18:37:34", 65 | "pid": 12, 66 | "tips": "欢迎使用API-Server" 67 | } 68 | ``` 69 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/10-dissInfo.md: -------------------------------------------------------------------------------- 1 | # 获取歌单的歌曲列表API 2 | 3 | ## 简要描述 4 | 5 | - 获取账号上的收藏歌曲,自建歌单等信息,需配合歌单列表使用。 6 | - 所需参数在搜索或获取播放地址时获取 7 | 8 | ## 请求URL 9 | - `/v2/music/tencent/dissinfo` 10 | 11 | ## 请求方式 12 | - `GET` / `POST` 13 | 14 | ## 请求示例 15 | - https://api.vkeys.cn/v2/music/tencent/dissinfo?id=1754192231 16 | 17 | ## 请求参数 18 | 19 | | 参数名 | 是否必选 | 数据类型 | 说明 | 20 | |:----:|:----:|:----:|:---------------------------| 21 | | id | 是 | int | 歌单id | 22 | | page | 否 | int | 页数,默认为1 | 23 | | num | 否 | int | 每页显示数,默认为10 | 24 | | uin | 否 | int | QQ账号,当歌单为我的收藏且无权限时可使用此参数绕过 | 25 | 26 | ## 返回示例 27 | ``` json 28 | { 29 | "code": 200, 30 | "message": "请求成功!", 31 | "data": { 32 | "info": { 33 | "title": "〖洛天依〗恋爱理论", 34 | "picurl": "http://qpic.y.qq.com/music_cover/3o3EV9KZWcK7icPUAuETxpQ25J4GZ7icmbygc90z8jTvsj4NtBeAmTPw/600?n=1", 35 | "songnum": 8, 36 | "listennum": 859 37 | }, 38 | "list": [ 39 | { 40 | "id": 107542381, 41 | "mid": "003NDtKy262sXZ", 42 | "vid": "", 43 | "song": "心加心", 44 | "subtitle": "", 45 | "singer": "阿良良木健", 46 | "album": "恋爱理论", 47 | "type": 0, 48 | "quality": "臻品全景声", 49 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000004cub0316PRb9.jpg" 50 | }, 51 | { 52 | "id": 237937622, 53 | "mid": "002juEC83xBZ0b", 54 | "vid": "", 55 | "song": "白夜梦", 56 | "subtitle": "", 57 | "singer": "洛天依/乐正绫/阿良良木健", 58 | "album": "恋爱理论", 59 | "type": 0, 60 | "quality": "臻品全景声", 61 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000002Hu2oC1nnVAw.jpg" 62 | } 63 | ] 64 | }, 65 | "time": "2024-08-12 19:56:38", 66 | "pid": 20, 67 | "tips": "欢迎使用API-Server" 68 | } 69 | ``` 70 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/12-refreshCookie.md: -------------------------------------------------------------------------------- 1 | # cookie刷新API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个获取QQ音乐账号的cookie信息。 6 | - 根据过期/未过期的CK生成一个新的CK,可刷新3-6个月。 7 | - 此接口不会存储您的ck数据,请放心使用。 8 | 9 | ## 请求URL 10 | - `/v2/music/tencent/cookie` 11 | 12 | ## 请求方式 13 | - `GET` / `POST` 14 | 15 | ## 请求示例 16 | - https://api.vkeys.cn/v2/music/tencent/cookie?uin=1569097443&musickey=Q_H_L_59H1q...... 17 | 18 | ## 请求参数 19 | 20 | | 参数名 | 是否必选 | 数据类型 | 说明 | 21 | |:---------------:|:------:|:--------:|:---------------------------| 22 | | uin | 是 | int | 你的QQ号 | 23 | | musickey | 是 | string | 带有Q_H_L_或W_X_的字符串 | 24 | | refresh_key | 否 | string | CK刷新key,已失效cookie带上这个刷新 | 25 | | refresh_token | 否 | string | CK刷新令牌,已失效cookie带上这个刷新 | 26 | 27 | ## 关于uin和musickey 28 | | music值 | uin值 | 说明 | 29 | |:-----------|:------|:-------| 30 | | Q_H_L_ | 6-11位 | QQ账号ck | 31 | | W_X_ | 最大19位 | 微信账号ck | 32 | 33 | ## 返回示例 34 | ``` 35 | { 36 | "code": 200, 37 | "message": "请求成功!", 38 | "data": { 39 | "cookie": { 40 | "uin": 1569097443, 41 | "musickey": "Q_H_L_63kfNuk1fUK-t9Rshh-NGQrRsuQmM8eCpOAo4TtgtNtGBY7_4KESYJVVrXh35gdQrsbIJhHLcKGsNEjHRzwHMZ-CPaFB-i6gAsgcCLTYB-4KIh_SwMdTWUVWrZf-LyAhajDfpv5uwvu0-k0KiS3w", 42 | "refresh_token": "", 43 | "refresh_key": "", 44 | "musickeyCreateTimestamp": 1722693959, 45 | "musickeyCreateTime": "2024-08-03 22:05:59", 46 | "keyExpiresIn": 259200, 47 | "musickeyLastTimestamp": 1722953159, 48 | "musickeyLastTime": "2024-08-06 22:05:59" 49 | }, 50 | "info": { 51 | "vip": false, 52 | "vipEndTimestamp": 1694733645, 53 | "vipEndTime": "2023-09-15 07:20:45", 54 | "vipDateDiff": 323, 55 | "svip": false, 56 | "svipEndTimestamp": 1692660579, 57 | "svipEndTime": "2023-08-22 07:29:39", 58 | "svipDateDiff": 347 59 | } 60 | }, 61 | "time": "2024-08-03 22:05:59", 62 | "pid": 14, 63 | "tips": "欢迎使用API-Server" 64 | } 65 | ``` 66 | 67 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/5-singerSearch.md: -------------------------------------------------------------------------------- 1 | # 歌手搜索API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个QQ音乐搜索接口,只能用于搜索,其他参数无效。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/search/singer` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/search/singer?word=洛天依 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:----:|:----:|:------:|:----------------------| 20 | | word | 是 | string | 歌手 | 21 | | page | 否 | int | 页数,默认为1 | 22 | | num | 否 | int | 每页显示数,默认为10,区间:[1,60] | 23 | 24 | ## 返回示例 25 | ``` json 26 | { 27 | "code": 200, 28 | "message": "请求成功!", 29 | "data": [ 30 | { 31 | "albumNum": 1454, 32 | "concern_status": 0, 33 | "docid": "14665351520814081", 34 | "mvNum": 994, 35 | "singerID": 61386, 36 | "singerMID": "003ktdcg3E4kaG", 37 | "singerName": "洛天依", 38 | "singerName_hilight": "洛天依", 39 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000003ktdcg3E4kaG_7.jpg", 40 | "songNum": 7949 41 | }, 42 | { 43 | "albumNum": 312, 44 | "concern_status": 0, 45 | "docid": "9701185836794926196", 46 | "mvNum": 153, 47 | "singerID": 980372, 48 | "singerMID": "000yjTkK2E7Rpz", 49 | "singerName": "乐正绫", 50 | "singerName_hilight": "乐正绫", 51 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000000yjTkK2E7Rpz_3.jpg", 52 | "songNum": 2967 53 | }, 54 | { 55 | "albumNum": 171, 56 | "concern_status": 0, 57 | "docid": "9573184170621566308", 58 | "mvNum": 273, 59 | "singerID": 170683, 60 | "singerMID": "002OBqhv118O38", 61 | "singerName": "言和", 62 | "singerName_hilight": "言和", 63 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000002OBqhv118O38_3.jpg", 64 | "songNum": 2128 65 | } 66 | ], 67 | "time": "2024-08-03 21:13:20", 68 | "pid": 12, 69 | "tips": "欢迎使用API-Server" 70 | } 71 | ``` 72 | -------------------------------------------------------------------------------- /src/v2/音乐模块/网易云音乐/1-netease.md: -------------------------------------------------------------------------------- 1 | # 点歌API(歌曲搜索+播放链接整合) 2 | 3 | ## 简要描述 4 | 5 | - 这是一个把音乐搜索和获取url等接口进行合并的接口,同旧版本的网易云音乐点歌。 6 | - 支持所有音乐,支持9种音质和音质自动选择(可限制最大音质)等。 7 | - 支持付费歌曲,但是付费专辑无法获取。 8 | 9 | ## 请求URL 10 | - `/v2/music/netease` 11 | 12 | ## 请求方式 13 | - `GET` / `POST` 14 | 15 | ## 请求示例 16 | - https://api.vkeys.cn/v2/music/netease?word=勾指起誓 17 | - https://api.vkeys.cn/v2/music/netease?word=勾指起誓&choose=2&quality=9 18 | - https://api.vkeys.cn/v2/music/netease?id=1345872140 19 | 20 | ## 请求参数 21 | 22 | | 参数名 | 是否必选 | 数据类型 | 说明 | 23 | |:-------:|:----:|:------:|:----------------------------| 24 | | word | 是 | string | 歌名,有id或mid参数可不填 | 25 | | page | 否 | int | 页数,默认为1 | 26 | | num | 否 | int | 每页显示数,默认为10 | 27 | | choose | 否 | int | 选择歌曲,0不可填 | 28 | | quality | 否 | int | 最大支持音质,默认最大 | 29 | | id | 是/否 | int | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 30 | 31 | ## 参数q可选值(音质选择) 32 | 33 | | 可选值 | 音质 | 34 | |:----:|:----------------------| 35 | | 1 | 标准(64k) | 36 | | 2 | 标准(128k) | 37 | | 3 | HQ极高(192k) | 38 | | 4 | HQ极高(320k) | 39 | | 5 | SQ无损 | 40 | | 6 | 高解析度无损(Hi-Res) | 41 | | 7 | 高清臻音(Spatial Autio) | 42 | | 8 | 沉浸环绕声(Surround Autio) | 43 | | 9 | 超清母带(Master) | 44 | 45 | ## 返回示例 46 | ``` json 47 | { 48 | "code": 200, 49 | "message": "请求成功!", 50 | "data": { 51 | "id": 1345872140, 52 | "song": "勾指起誓", 53 | "singer": "洛天依Official/ilem", 54 | "album": "2:3", 55 | "time": "2019-02-13", 56 | "quality": "超清母带(Master)", 57 | "cover": "http://p4.music.126.net/NmeYMyXytmcAWGO3RBJtlA==/109951169676463967.jpg", 58 | "interval": "3分3秒", 59 | "link": "https://music.163.com/#/song?id=1345872140", 60 | "size": "65.69MB", 61 | "kbps": "3002kbps", 62 | "url": "http://m801.music.126.net/20240824160555/be1b37c067648deea65ea1b234a231e6/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/26298006755/a103/4f7f/67b7/a88e565c22661c2f5b0d189c857c34a6.flac" 63 | }, 64 | "time": "2024-08-24 15:40:55", 65 | "pid": 27, 66 | "tips": "欢迎使用API-Server" 67 | } 68 | ``` 69 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/8-user.md: -------------------------------------------------------------------------------- 1 | # 用户搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于用户列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/user` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/user?keyword=洛天依 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 用户名 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": {// [!code ++] 37 | "total": 1001,//搜索结果总数 [!code ++] 38 | "nextPage": 2,//下一页的页码 [!code ++] 39 | "perPage": 10//当前每页显示数 [!code ++] 40 | },// [!code ++] 41 | "list": [ 42 | { 43 | "id": 105648974,//歌曲ID 44 | "mid": "0023CVP23SH17s",//歌曲mid 45 | "vid": "v00199a1i1e",//mv的vid 46 | "song": "梦回还",//歌曲名 47 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲",//副标题 48 | "album": "狐妖小红娘 动画原声带",//专辑名 49 | "singer": "呦猫UNEKO",//歌手名(多个歌手以/分割) 50 | "singer_list": [//歌手列表 51 | { 52 | "id": 1092914,//歌手ID 53 | "mid": "003VD9fu3Eh1q4",//歌手mid 54 | "name": "呦猫UNEKO",//歌手名 55 | "pmid": "", 56 | "title": "呦猫UNEKO",//歌手名 57 | "type": 1, 58 | "uin": 0 59 | } 60 | ], 61 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg",//封面地址 62 | "pay": "付费",//是否付费(初步判断) 63 | "time": "2016-07-08",//发布时间 64 | "type": 0,//歌曲类型(点歌时需要用到) 65 | "bpm": 84,//BPM值 66 | "content": "",//歌词(仅在歌词搜索时有效) 67 | "quality": "无音质", 68 | "grp": []//多版本列表,与list保持一致 69 | } 70 | ] 71 | } 72 | } 73 | ``` 74 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/9-userInfo.md: -------------------------------------------------------------------------------- 1 | # QQ账号歌单API 2 | 3 | ## 简要描述 4 | 5 | - 获取账号上的收藏歌曲,自建歌单等信息,需配合歌单列表使用。 6 | - 所需参数在搜索或获取播放地址时获取 7 | 8 | ## 请求URL 9 | - `/v2/music/tencent/info` 10 | 11 | ## 请求方式 12 | - `GET` / `POST` 13 | 14 | ## 请求示例 15 | - https://api.vkeys.cn/v2/music/tencent/info?uin=1569097443 16 | 17 | ## 请求参数 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:---:|:----:|:----:|:-----| 20 | | uin | 是 | int | QQ账号 | 21 | 22 | ## 返回示例 23 | ``` json 24 | { 25 | "code": 200, 26 | "message": "请求成功!", 27 | "data": { 28 | "info": { 29 | "encrypt_uin": "oK4sNKnq7ivPoz**", 30 | "name": "落月", 31 | "pic": "http://thirdqq.qlogo.cn/g?b=sdk&k=pib6ZaK9mQY9Sv8kTLgQM0Q&kti=ZqeuEQAAAAI&s=140&t=1707413444", 32 | "bigpic": "http://thirdqq.qlogo.cn/g?b=sdk&k=pib6ZaK9mQY9Sv8kTLgQM0Q&kti=ZqeuEQAAAAI&s=640&t=1707413444", 33 | "ip": "美国", 34 | "Constellation": "双鱼座", 35 | "Gender": "女" 36 | }, 37 | "likesong": { 38 | "id": 1754192231, 39 | "title": "喜欢", 40 | "picurl": "http://y.gtimg.cn/music/photo_new/T002R300x300M000004Zii1c1otbSw_1.jpg", 41 | "song_num": "432首歌曲", 42 | "album_num": "9张专辑", 43 | "diss_num": "7张歌单" 44 | }, 45 | "mydiss": [ 46 | { 47 | "id": 8315602051, 48 | "title": "水·花", 49 | "picurl": "", 50 | "song_num": "11首", 51 | "album_num": "10次播放", 52 | "diss_num": "" 53 | } 54 | ], 55 | "likediss": [ 56 | { 57 | "id": 7853791967, 58 | "title": "妄想症系列", 59 | "picurl": "http://qpic.y.qq.com/music_cover/EEIuGFXJcibxA80v5Hc1RNhwkFJ8zwicIQkIG2hyGSUYrGkRvxp8J6NQ/300?n=1", 60 | "song_num": "10首歌曲", 61 | "listen_num": 93493 62 | }, 63 | { 64 | "id": 7793074360, 65 | "title": "〖洛天依〗恋爱理论", 66 | "picurl": "http://qpic.y.qq.com/music_cover/3o3EV9KZWcK7icPUAuETxpQ25J4GZ7icmbygc90z8jTvsj4NtBeAmTPw/300?n=1", 67 | "song_num": "8首歌曲", 68 | "listen_num": 859 69 | } 70 | ] 71 | }, 72 | "time": "2024-08-04 13:33:49", 73 | "pid": 17936, 74 | "tips": "欢迎使用API-Server" 75 | } 76 | ``` 77 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/7-lyric.md: -------------------------------------------------------------------------------- 1 | # 歌词搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 根据歌词搜索歌曲列表,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/lyric` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/lyric?keyword=梨花香缠着衣角掠过熙攘 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 歌词片段 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": {// [!code ++] 37 | "total": 1001,//搜索结果总数 [!code ++] 38 | "nextPage": 2,//下一页的页码 [!code ++] 39 | "perPage": 10//当前每页显示数 [!code ++] 40 | },// [!code ++] 41 | "list": [ 42 | { 43 | "id": 105648974,//歌曲ID 44 | "mid": "0023CVP23SH17s",//歌曲mid 45 | "vid": "v00199a1i1e",//mv的vid 46 | "song": "梦回还",//歌曲名 47 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲",//副标题 48 | "album": "狐妖小红娘 动画原声带",//专辑名 49 | "singer": "呦猫UNEKO",//歌手名(多个歌手以/分割) 50 | "singer_list": [//歌手列表 51 | { 52 | "id": 1092914,//歌手ID 53 | "mid": "003VD9fu3Eh1q4",//歌手mid 54 | "name": "呦猫UNEKO",//歌手名 55 | "pmid": "", 56 | "title": "呦猫UNEKO",//歌手名 57 | "type": 1, 58 | "uin": 0 59 | } 60 | ], 61 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg",//封面地址 62 | "pay": "付费",//是否付费(初步判断) 63 | "time": "2016-07-08",//发布时间 64 | "type": 0,//歌曲类型(点歌时需要用到) 65 | "bpm": 84,//BPM值 66 | "content": "",//歌词(仅在歌词搜索时有效) 67 | "quality": "无音质", 68 | "grp": []//多版本列表,与list保持一致 69 | } 70 | ] 71 | } 72 | } 73 | ``` 74 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/2-song.md: -------------------------------------------------------------------------------- 1 | # 歌曲搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于歌曲列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/song` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/song?keyword=狐妖小红娘 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:--------------------| 24 | | keyword | 是 | string | / | 歌名 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json{12-13,15,19,30} 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": { // [!code ++] 37 | "total": 1001, //搜索结果总数 [!code ++] 38 | "nextPage": 2, //下一页的页码 [!code ++] 39 | "perPage": 10 //当前每页显示数 [!code ++] 40 | }, // [!code ++] 41 | "list": [ 42 | { 43 | "songID": 105648974, //歌曲ID 44 | "songMID": "0023CVP23SH17s", //歌曲mid 45 | "vid": "v00199a1i1e", //mv的vid 46 | "title": "梦回还", //歌曲名 47 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", //副标题 48 | "album": "狐妖小红娘 动画原声带", //专辑名 49 | "singer": "呦猫UNEKO", //歌手名(多个歌手以/分割) 50 | "singerList": [ //歌手列表 51 | { 52 | "id": 1092914, //歌手ID 53 | "mid": "003VD9fu3Eh1q4", //歌手mid 54 | "name": "呦猫UNEKO", //歌手名 55 | "pmid": "", 56 | "title": "呦猫UNEKO", //歌手名 57 | "type": 1, 58 | "uin": 0 59 | } 60 | ], 61 | "albumImage": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg",//封面地址 62 | "pay": "付费", //是否付费(初步判断) 63 | "time": "2016-07-08", //发布时间 64 | "type": 0, //歌曲类型(点歌时需要用到) 65 | "bpm": 84, //BPM值 66 | "interval": 250, //时长(单位:秒) [!code ++] 67 | "content": "", //歌词(仅在歌词搜索时有效) 68 | "quality": "无音质", //已删除,如有需要请使用歌曲信息及音质列表API [!code --] 69 | "grp": [] //多版本列表,与list保持一致 70 | } 71 | ] 72 | } 73 | } 74 | ``` 75 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/Cookie相关接口/2-fastlogin.md: -------------------------------------------------------------------------------- 1 | # pc端快速登录API 2 | ::: warning 3 | 此功能需要使用电脑端QQ登录账号。登录成功后执行key获取脚本,根据返回值填入接口参数即可获取cookie。 4 | ::: 5 | 6 | ## 接口描述 7 | - 使用电脑端QQ自动化获取cookie。 8 | 9 | ## 接口地址 10 | - `GET` `/music/tencent/cookie/fastlogin` 11 | 12 | ## 请求数据类型 13 | - `application/x-www-form-urlencoded` 14 | 15 | ## 请求示例 16 | - https://api.vkeys.cn/music/tencent/cookie/fastlogin?client_uin=1569097443&client_key=0c3a26879b28c497fdfc464chc9047bdf2c42d774et6ab65dfc6ds752893095a5b77y87c61b7de6c8729e30r0cb6cfbd 17 | 18 | ## 请求参数 19 | 20 |
21 | 22 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 23 | |:----------:|:----:|:------:|:-----:|:--------------------------------| 24 | | client_uin | 是 | string | / | 登录账号ID | 25 | | client_key | 是 | string | / | 临时授权码(96字节或224字节) | 26 | | save | 否 | bool | false | 是否将cookie保存在服务器中 | 27 | 28 |
29 | 30 | ## key获取脚本 31 | ::: info 32 | GitHub链接:https://github.com/lvluoyue/api-doc/blob/main/scripts/qqkey.ps1 33 | ::: 34 | 使用方法:在windows中登录QQ,然后打开cmd命令行,输入以下命令 35 | ```shell 36 | powershell "irm https://gh-proxy.com/raw.githubusercontent.com/lvluoyue/api-doc/refs/heads/main/scripts/qqkey.ps1 | iex" 37 | ``` 38 | 39 | ## 返回示例 40 | ``` json 41 | { 42 | "code": 200, 43 | "message": "请求成功!", 44 | "data": { 45 | "cookie": { 46 | "uin": 1569097443, // 账号ID 47 | "musickey": "Q_H_L_63kfNuk1fUK-t9Rshh-NGQrRsuQmM8eCpOAo4TtgtNtGBY7_4KESYJVVrXh35gdQrsbIJhHLcKGsNEjHRzwHMZ-CPaFB-i6gAsgcCLTYB-4KIh_SwMdTWUVWrZf-LyAhajDfpv5uwvu0-k0KiS3w",// token字段 48 | "refresh_token": "", // 刷新key 49 | "refresh_key": "", // 刷新token 50 | "musickeyCreateTimestamp": 1722693959, // token创建时间戳 51 | "musickeyCreateTime": "2024-08-03 22:05:59", // token创建时间 52 | "keyExpiresIn": 259200, // token过期时间 53 | "musickeyLastTimestamp": 1722953159, // token最后更新时间戳 54 | "musickeyLastTime": "2024-08-06 22:05:59" // token最后更新时间 55 | }, 56 | "info": { 57 | "vip": false, // 是否为vip 58 | "vipEndTimestamp": 1694733645, // vip到期时间戳 59 | "vipEndTime": "2023-09-15 07:20:45", // vip到期时间 60 | "vipDateDiff": 323, // vip到期时间与当前时间差(永远为正数) 61 | "svip": false, // 是否为svip 62 | "svipEndTimestamp": 1692660579, // svip到期时间戳 63 | "svipEndTime": "2023-08-22 07:29:39", // svip到期时间 64 | "svipDateDiff": 347 // svip到期时间与当前时间差(永远为正数) 65 | } 66 | }, 67 | "time": "2024-08-03 22:05:59", 68 | "pid": 14, 69 | "tips": "欢迎使用API-Server" 70 | } 71 | ``` 72 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/Cookie相关接口/1-refreshCookie.md: -------------------------------------------------------------------------------- 1 | # cookie刷新API 2 | ::: info 3 | 该接口中cookie的值缓存1分钟,info的值缓存30分钟。 4 | ::: 5 | 6 | ## 接口描述 7 | - 生成一个新的cookie,并返回账号的相关信息。 8 | - 携带refresh_key和refresh_token时可使用过期的key生成新的cookie(退出登录后不可生成)。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/cookie/refresh` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/cookie/refresh?uin=1569097443&music_key=Q_H_L_59H1q...... 18 | 19 | ## 请求参数 20 | 21 |
22 | 23 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 24 | |:-------------:|:----:|:------:|:-----:|:--------------------------------| 25 | | uin | 是 | int | / | 你的QQ号 | 26 | | music_key | 是 | string | / | 账号key,带有Q_H_L_或W_X_的字符串 | 27 | | refresh_key | 否 | string | null | CK刷新key,已失效cookie带上这个刷新 | 28 | | refresh_token | 否 | string | null | CK刷新令牌,已失效cookie带上这个刷新 | 29 | | save | 否 | bool | false | 是否将cookie保存在服务器中 | 30 |
31 | 32 | ## 区分微信账号和QQ账号 33 | 34 |
35 | 36 | | music值 | uin值 | 说明 | 37 | |:-----------|:------|:-------| 38 | | Q_H_L_ | 6-11位 | QQ账号ck | 39 | | W_X_ | 最大19位 | 微信账号ck | 40 | 41 |
42 | 43 | ## 返回示例 44 | ``` json 45 | { 46 | "code": 200, 47 | "message": "请求成功!", 48 | "data": { 49 | "cookie": { 50 | "uin": 1569097443, // 账号ID 51 | "musickey": "Q_H_L_63kfNuk1fUK-t9Rshh-NGQrRsuQmM8eCpOAo4TtgtNtGBY7_4KESYJVVrXh35gdQrsbIJhHLcKGsNEjHRzwHMZ-CPaFB-i6gAsgcCLTYB-4KIh_SwMdTWUVWrZf-LyAhajDfpv5uwvu0-k0KiS3w",// token字段 52 | "refresh_token": "", // 刷新key 53 | "refresh_key": "", // 刷新token 54 | "musickeyCreateTimestamp": 1722693959, // token创建时间戳 55 | "musickeyCreateTime": "2024-08-03 22:05:59", // token创建时间 56 | "keyExpiresIn": 259200, // token过期时间 57 | "musickeyLastTimestamp": 1722953159, // token最后更新时间戳 58 | "musickeyLastTime": "2024-08-06 22:05:59" // token最后更新时间 59 | }, 60 | "info": { 61 | "vip": false, // 是否为vip 62 | "vipEndTimestamp": 1694733645, // vip到期时间戳 63 | "vipEndTime": "2023-09-15 07:20:45", // vip到期时间 64 | "vipDateDiff": 323, // vip到期时间与当前时间差(永远为正数) 65 | "svip": false, // 是否为svip 66 | "svipEndTimestamp": 1692660579, // svip到期时间戳 67 | "svipEndTime": "2023-08-22 07:29:39", // svip到期时间 68 | "svipDateDiff": 347 // svip到期时间与当前时间差(永远为正数) 69 | } 70 | }, 71 | "time": "2024-08-03 22:05:59", 72 | "pid": 14, 73 | "tips": "欢迎使用API-Server" 74 | } 75 | ``` 76 | 77 | -------------------------------------------------------------------------------- /.vitepress/theme/layout/hooks/useLive2D.ts: -------------------------------------------------------------------------------- 1 | import {onMounted} from "vue" 2 | import type {Models} from "oh-my-live2d/dist/modules/models"; 3 | import type {Oml2dEvents, Oml2dMethods, Oml2dProperties} from "oh-my-live2d"; 4 | import axios from "axios"; 5 | import modelsData from './live2d-models.json'; 6 | import {ModelOptions} from "oh-my-live2d/dist/types/options/model"; 7 | 8 | type Oml2d = Oml2dProperties & Oml2dMethods & Oml2dEvents & { 9 | models: InstanceType; 10 | } 11 | 12 | /** 13 | * oh-my-live2d 14 | */ 15 | export default () => { 16 | onMounted(async () => { 17 | // @ts-ignore 18 | const {loadOml2d} = import.meta.env.DEV ? await import('oh-my-live2d') : window.OML2D 19 | let models: ModelOptions[] 20 | try { 21 | models = (await axios.get('https://api.vkeys.cn/system/info/live2d')).data.data || modelsData 22 | } catch (e) { 23 | models = modelsData as ModelOptions[] 24 | } 25 | loadOml2d({ 26 | mobileDisplay: true, 27 | initialStatus: 'active', 28 | dockedPosition: 'right', 29 | menus: { 30 | disable: false, 31 | items: [ 32 | { 33 | id: 'Rest', 34 | icon: 'icon-rest', 35 | title: '休息', 36 | onClick(oml2d) { 37 | oml2d.statusBarOpen(oml2d.options.statusBar?.restMessage); // 展示状态条 38 | oml2d.clearTips(); // 清除当前提示框内容, 并停止空闲消息播放器 39 | 40 | // 为状态条绑定点击事件 41 | oml2d.setStatusBarClickEvent(() => { 42 | void oml2d.statusBarClose(); // 关闭状态条 43 | void oml2d.stageSlideIn(); // 舞台滑入 44 | oml2d.statusBarClearEvents(); // 清除所有事件 45 | }); 46 | 47 | void oml2d.stageSlideOut(); // 舞台滑出 48 | } 49 | }, 50 | { 51 | id: 'SwitchModelClothes', 52 | icon: 'icon-skin', 53 | title: '切换衣服', 54 | onClick: async (oml2d: Oml2d) => { 55 | if (models[oml2d.modelIndex]?.name === 'ATRI') { 56 | const result = await oml2d.models.model?.expression() 57 | oml2d.tipsMessage(result ? '衣服切换成功~' : '没有可用衣服哦~', 5000, 3); 58 | } else { 59 | await oml2d.loadNextModelClothes(); 60 | } 61 | } 62 | }, 63 | // { 64 | // id: 'face', 65 | // icon: 'icon-Expression-2', 66 | // title: '更换表情', 67 | // onClick: async (oml2d: Oml2d) => { 68 | // const result = await oml2d.models.model?.expression() 69 | // oml2d.tipsMessage(result ? '表情切换~' : '没有可用表情哦~', 5000, 3); 70 | // } 71 | // }, 72 | { 73 | id: 'SwitchModel', 74 | icon: 'icon-switch', 75 | title: '切换模型', 76 | onClick(oml2d): void { 77 | void oml2d.loadNextModel(); 78 | } 79 | } 80 | ], 81 | }, 82 | models 83 | }) 84 | } 85 | ) 86 | } 87 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/2-geturl.md: -------------------------------------------------------------------------------- 1 | # 获取播放链接API 2 | 3 | ## 简要描述 4 | 5 | - 此接口可以根据音乐id或mid获取QQ音乐链接以及相关信息。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/geturl` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/geturl?id=105648974 15 | - https://api.vkeys.cn/v2/music/tencent/geturl?mid=0023CVP23SH17s 16 | - https://api.vkeys.cn/v2/music/tencent/geturl?mid=0023CVP23SH17s&quality=8 17 | 18 | ## 请求参数 19 | 20 | | 参数名 | 是否必选 | 数据类型 | 说明 | 21 | |:--------|:----:|:------:|:----------------------------| 22 | | id | 否 | int | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 23 | | mid | 否 | string | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 24 | | quality | 否 | int | 最大支持音质,默认最大 | 25 | | type | 否 | int | 歌曲类型,默认为0 | 26 | | ekey | 否 | bool | 是否获取加密的音乐链接 | 27 | 28 | ## 参数q可选值(音质选择) 29 | - 默认值14。音质15、16不推荐使用。 30 | 31 | | 值 | 备注 | 32 | |:---:|:------------------| 33 | | 0 | 音乐试听 | 34 | | 1 | 有损音质 | 35 | | 2 | 有损音质 | 36 | | 3 | 有损音质 | 37 | | 4 | 标准音质 | 38 | | 5 | 标准音质 | 39 | | 6 | 标准音质 | 40 | | 7 | 标准音质 | 41 | | 8 | HQ高音质 | 42 | | 9 | HQ高音质(音质增强) | 43 | | 10 | SQ无损音质 | 44 | | 11 | Hi-Res音质 | 45 | | 12 | 杜比全景声 | 46 | | 13 | 臻品全景声 | 47 | | 14 | 臻品母带2.0 | 48 | | 15 | AI伴唱模式(4轨,2原唱2伴唱) | 49 | | 16 | AI5.1音质(6音轨) | 50 | 51 | 52 | ## 参数type可选值(歌曲类型) 53 | 54 | ::: warning 55 | 此参数只对id点歌和mid点歌有效,此模式由于无法确定歌曲类型,所以由用户提供。同一个id的情况下不同歌曲类型返回不同歌曲 56 | ::: 57 | 58 | | 值 | 备注 | 59 | |:----:|:--------:| 60 | | 0或1 | 常规歌曲 | 61 | | 111 | 华语群星 | 62 | | 112 | 铃声 | 63 | | 113 | 伴奏 | 64 | 65 | ## 关于ekey 66 | - ekey是加密音乐文件的密钥,可使用解密网站获取对应的解密文件 67 | - ekey解密网站:https://um-react.netlify.app/ 68 | 69 | 70 | ## 返回示例 71 | ``` json [geturl.json] 72 | { 73 | "code": 200, 74 | "message": "请求成功!", 75 | "data": { 76 | "id": 105648974, 77 | "mid": "0023CVP23SH17s", 78 | "vid": "v00199a1i1e", 79 | "song": "梦回还", 80 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 81 | "album": "狐妖小红娘 动画原声带", 82 | "singer": "呦猫UNEKO", 83 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 84 | "pay": "付费", 85 | "time": "2016-07-08", 86 | "type": 0, 87 | "bpm": 84, 88 | "quality": "SQ无损音质", 89 | "interval": "4分10秒", 90 | "link": "https://i.y.qq.com/v8/playsong.html?songmid=0023CVP23SH17s&type=0", 91 | "size": "56.05MB", 92 | "kbps": "1862kbps", 93 | "url": "http://ws.stream.qqmusic.qq.com/F000003t4TGX46UGp7.flac?guid=api.vkeys.cn&vkey=F052EA8F74368F9021DE77360BA46DD0F10BC87EA5749271DC4B1F50258B00C258FC2D95EEB95A516470289AC1A11FE56AF09877E8225816&uin=3503185131&fromtag=119114", 94 | "ekey": "" 95 | }, 96 | "time": "2024-08-01 12:25:49", 97 | "pid": 19236, 98 | "tips": "欢迎使用API-Server" 99 | } 100 | ``` 101 | -------------------------------------------------------------------------------- /src/v3/其他模块/腾讯云COS/sign.md: -------------------------------------------------------------------------------- 1 | # 腾讯云存储签名 2 | ::: warning 3 | 此功能只能上传图片,其他文件不支持。 4 | ::: 5 | 6 | ## 接口描述 7 | - 腾讯云存储签名,用于上传图片。 8 | - 此接口仅作为签名,并不进行上传,需要与返回的url进行put请求进行上传。 9 | 10 | ## 接口地址 11 | - `GET` `/tool/cos/sign` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/tool/cos/sign?sha1=4fbfbc28bbc4a67850fa90823fcea389fcfcd48d&md5=f853b39f8d7c2e617dbde77dca66d413&size=51458 18 | 19 | ## 请求参数 20 | 21 |
22 | 23 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 24 | |:----:|:----:|:------:|:---:|:---------| 25 | | sha1 | 是 | string | / | 文件的sha1值 | 26 | | md5 | 是 | string | / | 文件的md5值 | 27 | | size | 是 | int | / | 文件的大小 | 28 | | ext | 否 | string | png | 文件的扩展名 | 29 | 30 |
31 | 32 | ## 支持的扩展名 33 | - png、jpg、jpeg、gif、webp、bmp、svg 34 | 35 | ## 返回示例 36 | ``` json 37 | { 38 | "code": 0, 39 | "message": "访问成功", 40 | "data": { 41 | "url": "https://music-file-1258344705.cos.ap-guangzhou.myqcloud.com/songlist/p/1147c/4fbfbc28bbc4a67850fa90823fcea389fcfcd48d_c902.png", // 上传地址 42 | "method": "PUT", // 请求方法 43 | "header": { // 请求头 44 | "Host": "music-file-1258344705.cos.ap-guangzhou.myqcloud.com", 45 | "User-Agent": "workerman/http-client", 46 | "Connection": "keep-alive", 47 | "Content-Length": "51458", 48 | "content-md5": "+FOzn418LmF9ved9ymbUEw==", 49 | "x-cos-security-token": "GIzUbkNQfZH0Q4V27p2vHL75iRJ7tbha95c7097b1d14c7841cc356f2b5f5fde5nmIWL_hRE2_mVvAGwAqCv3Rrfhx3s6nAKSgHxZq1vawdWHrH7YnX1NM7UPEgPSMgE466zts5CRzMbgFfEYBv0AEzh5iKkfS0kuQVudbrPNGloJwSGh9ZJg5lvIB7J-dt_rbtlqqImTNrvMPpFJmB9Ugyus4WJk_TVieUUafxixaXvNjhItDeRnb6xa403LV33dSbNaa_1dq5AmNw0wEVy2scKrtRtChNyn1G3TndRcUcqfxrYbbfT2NdGoKR4-kPVPmp8qkhOWzIPLv9ss7pMfJ6jR8xVZNF6cVgR7bdADUuMHMvRZmlwOhSaW7y3gIfaLcKLEzOVM0Jfa-k8SUJ2V5JUCdMu7nxYlQMvUuycn-AqOEAlM8UNtcC7pDexu_D3aR8zsEGtaPjVID5eSqEphjwg93zPsi6YS83uGrwqyfaj5vAewuOuqEHW-_GDbiUF21ebmGmFysI0V6U6UiwOsg9twv5AM4PFM_Snu8TNEG8u6CYUTsqsccAtYHaoD_Gg-IDqevp2tHm-wG29LGHgMIXhAimJXRz8E2NS_bLUm6vUSypPApEuwk8c-T-d7sNKKQ3NLNRHnQXfwV01H2eFLhZ4MZ2_V7qCnH-oi7CHjnbo_yJpY9nix2zHQ-QyL8nHGQ3O7p1F7GdcjfZNueFOUN_lmOyxsrwrEBaCxaeSFQ0sq0qClUqnZAy6UoHKCqjmymsCFp3IKJbok5TAXPSsSEvZXOvYMcwtiQkGcAjVBpFlc43u-f-1lRqrcCLwZgW3WXnDB90M2QNfejIb19j_AVX3A9IpZk8xUuQmA0SsEiID55VQMg01MgCVPfp-8M21xVqDiVi3VAYlR-nu4aiBJzPJ9SfTUwDDqP3Yz4LCl6vsrxgFk3hHgMNy1juD28za_K8D1qgaaT8z53uc9vLlkWc6Wky_Zffv_cf4f4VIN7myW_si7XHr4_Y4OYshk1TJldOg2BXUsaGaxVEpspnzg48a2xa_GTeGb89V_H1RK7K3F854VYBK3ITRMFD-rCL6rbCMpHR3iBZ3qGuQWAzsQ", 50 | "Authorization": "q-sign-algorithm=sha1&q-ak=AKIDT4q2N7IcbGEJoS1J2U7y0eAqY4ndvk3TzzFa_avW2x3vbHMrmWbdtQQmnpTQz-Qp&q-sign-time=1746537582;1746539442&q-key-time=1746537582;1746539442&q-header-list=content-length;content-md5;host;x-cos-security-token&q-url-param-list=&q-signature=cd9d5033f413b66abbc91eae0c16a979bbed50ad" 51 | }, 52 | "CDN": "https://music-file.y.qq.com/songlist/p/1147c/4fbfbc28bbc4a67850fa90823fcea389fcfcd48d_c902.png" // 访问地址 53 | }, 54 | "time": "2025-05-06 21:20:42", 55 | "pid": 25, 56 | "tips": "欢迎使用落月API-V3" 57 | } 58 | ``` 59 | 60 | ## 前端示例(需解决跨域问题) 61 | - 代码地址:https://github.com/lvluoyue/api-doc/blob/main/scripts/Cos.vue 62 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/6-songList.md: -------------------------------------------------------------------------------- 1 | # 歌手歌曲列表API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个QQ音乐搜索接口,只能用于搜索,其他参数无效。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/singer/songlist` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/singer/songlist?mid=003ktdcg3E4kaG 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:----:|:----:|:-------:|:----------------------| 20 | | mid | 是 | string | 歌手mid | 21 | | page | 否 | int | 页数,默认为1 | 22 | | num | 否 | int | 每页显示数,默认为10,区间:[1,60] | 23 | 24 | ## 返回示例 25 | ``` json 26 | { 27 | "code": 200, 28 | "message": "请求成功!", 29 | "data": [ 30 | { 31 | "id": 104797698, 32 | "mid": "001mzBxY4UVcAH", 33 | "vid": "0114VB5m1yuCFa", 34 | "song": "霜雪千年", 35 | "subtitle": "", 36 | "album": "洛天依作品集", 37 | "singer": "洛天依/乐正绫", 38 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000001gQ5oZ3ZIbAw.jpg", 39 | "pay": "免费", 40 | "time": "2016-01-01", 41 | "type": 0, 42 | "bpm": 70, 43 | "quality": "臻品母带2.0", 44 | "grp": [] 45 | }, 46 | { 47 | "id": 102176361, 48 | "mid": "001xZXiW4aAhkL", 49 | "vid": "x00174lez93", 50 | "song": "权御天下", 51 | "subtitle": "", 52 | "album": "2015哔哩哔哩般年纪", 53 | "singer": "洛天依", 54 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000001CCsrz3ly1sO.jpg", 55 | "pay": "付费", 56 | "time": "2016-01-01", 57 | "type": 0, 58 | "bpm": 92, 59 | "quality": "臻品母带2.0", 60 | "grp": [ 61 | { 62 | "id": 333956330, 63 | "mid": "000MOYMy0M57cJ", 64 | "vid": "x00174lez93", 65 | "song": "权御天下", 66 | "subtitle": "", 67 | "album": "Vsinger作品集-2", 68 | "singer": "洛天依", 69 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000YfWpa47hP2m.jpg", 70 | "pay": "免费", 71 | "time": "2019-01-01", 72 | "type": 0, 73 | "bpm": 92, 74 | "quality": "HQ高音质", 75 | "grp": [] 76 | } 77 | ] 78 | }, 79 | { 80 | "id": 293676135, 81 | "mid": "003DFkIK2D51yp", 82 | "vid": "z0035z9jlmu", 83 | "song": "勾指起誓", 84 | "subtitle": "", 85 | "album": "2:3", 86 | "singer": "洛天依/ilem", 87 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000003aefaS3BdrXi.jpg", 88 | "pay": "付费", 89 | "time": "2019-02-24", 90 | "type": 0, 91 | "bpm": 0, 92 | "quality": "臻品母带2.0", 93 | "grp": [] 94 | } 95 | ], 96 | "time": "2024-08-18 21:30:19", 97 | "pid": 30, 98 | "tips": "欢迎使用API-Server" 99 | } 100 | ``` 101 | -------------------------------------------------------------------------------- /.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | // https://vitepress.dev/guide/custom-theme 2 | import giscusTalk from 'vitepress-plugin-comment-with-giscus' 3 | import {type Theme, useData, useRoute} from 'vitepress' 4 | import DefaultTheme from 'vitepress/theme' 5 | import Layout from './layout/index.vue' 6 | 7 | // @ts-ignore 8 | import TwoslashFloatingVue from '@shikijs/vitepress-twoslash/client' 9 | // @ts-ignore 10 | import {NolebaseGitChangelogPlugin} from '@nolebase/vitepress-plugin-git-changelog/client' 11 | import { 12 | InjectionKey, 13 | LayoutMode, 14 | type Options as InjectionKeyOptions, 15 | SpotlightStyle 16 | // @ts-ignore 17 | } from '@nolebase/vitepress-plugin-enhanced-readabilities/client' 18 | import { 19 | type DynamicProperty, 20 | NolebasePagePropertiesPlugin, 21 | type Options 22 | // @ts-ignore 23 | } from '@nolebase/vitepress-plugin-page-properties/client' 24 | import 'virtual:group-icons.css' 25 | import '@shikijs/vitepress-twoslash/style.css' 26 | import '@nolebase/vitepress-plugin-git-changelog/client/style.css' 27 | import '@nolebase/vitepress-plugin-page-properties/client/style.css' 28 | 29 | export default { 30 | extends: DefaultTheme, 31 | Layout, 32 | setup() { 33 | // Get frontmatter and route 34 | const {frontmatter} = useData(); 35 | const route = useRoute(); 36 | // giscus配置 37 | giscusTalk({ 38 | repo: 'lvluoyue/api-doc', //仓库 39 | repoId: 'R_kgDONdDcpg', //仓库ID 40 | category: 'Announcements', // 讨论分类 41 | categoryId: 'DIC_kwDONdDcps4CnEHS', //讨论分类ID 42 | mapping: 'title', 43 | inputPosition: 'bottom', 44 | loading: 'lazy', 45 | lang: 'zh-CN', 46 | }, 47 | { 48 | frontmatter, route 49 | }, 50 | //默认值为true,表示已启用,此参数可以忽略; 51 | //如果为false,则表示未启用 52 | //您可以使用“comment:true”序言在页面上单独启用它 53 | true 54 | ); 55 | }, 56 | enhanceApp({app}) { 57 | app.use(TwoslashFloatingVue) 58 | .use(NolebaseGitChangelogPlugin) 59 | .use(NolebasePagePropertiesPlugin(), { 60 | properties: { 61 | 'zh-CN': [ 62 | { 63 | key: 'tags', 64 | type: 'tags', 65 | title: '标签', 66 | }, 67 | { 68 | key: 'progress', 69 | type: 'progress', 70 | title: '开发进度', 71 | }, 72 | { 73 | key: 'wordCount', 74 | type: 'dynamic', 75 | title: '字数', 76 | options: { 77 | type: 'wordsCount', 78 | }, 79 | }, 80 | { 81 | key: 'readingTime', 82 | type: 'dynamic', 83 | title: '阅读时间', 84 | options: { 85 | type: 'readingTime', 86 | dateFnsLocaleName: 'zhCN', 87 | }, 88 | }, 89 | ], 90 | }, 91 | } as Options) 92 | .provide(InjectionKey, { 93 | layoutSwitch: { 94 | disableHelp: true, 95 | defaultMode: LayoutMode.Original, 96 | contentLayoutMaxWidth: { 97 | defaultMaxWidth: 100 98 | }, 99 | }, 100 | spotlight: { 101 | defaultToggle: true, 102 | defaultStyle: SpotlightStyle.Aside 103 | } 104 | } as InjectionKeyOptions) 105 | }, 106 | } satisfies Theme 107 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/点歌相关接口/2-link.md: -------------------------------------------------------------------------------- 1 | # 获取播放链接API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ::: danger 7 | 此接口与V2版本不同,当所选音质无法获取时不会自动切换音质,而是返回一个错误。因为V2版本无法准确知道返回的音质,实现逻辑需要自己去实现。 8 | ::: 9 | 10 | ## 接口描述 11 | 12 | - 此接口可以根据音乐id或mid获取QQ音乐链接以及相关信息。 13 | 14 | ## 接口地址 15 | - `GET` `/music/tencent/song/link` 16 | 17 | ## 请求数据类型 18 | - `application/x-www-form-urlencoded` 19 | 20 | ## 请求示例 21 | - https://api.vkeys.cn/music/tencent/song/link?id=105648974 22 | - https://api.vkeys.cn/music/tencent/song/link?mid=0023CVP23SH17s 23 | - https://api.vkeys.cn/music/tencent/song/link?mid=0023CVP23SH17s&quality=8 24 | 25 | ## 请求参数 26 | 27 |
28 | 29 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 30 | |:-------:|:----:|:------:|:---:|:----------------------------| 31 | | id | 否 | int | 0 | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 32 | | mid | 否 | string | / | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 33 | | quality | 否 | int | 14 | 音质ID,不会降级 | 34 | | type | 否 | int | 1 | 歌曲类型 | 35 | 36 |
37 | 38 | ## 参数q可选值(音质选择) 39 | ::: info 40 | 默认值14。音质15、16不推荐使用。 41 | ::: 42 | 43 |
44 | 45 | | 值 | 备注 | 46 | |:---:|:------------------| 47 | | 0 | 音乐试听 | 48 | | 1 | 有损音质 | 49 | | 2 | 有损音质 | 50 | | 3 | 有损音质 | 51 | | 4 | 标准音质 | 52 | | 5 | 标准音质 | 53 | | 6 | 标准音质 | 54 | | 7 | 标准音质 | 55 | | 8 | HQ高音质 | 56 | | 9 | HQ高音质(音质增强) | 57 | | 10 | SQ无损音质 | 58 | | 11 | Hi-Res音质 | 59 | | 12 | 杜比全景声 | 60 | | 13 | 臻品全景声 | 61 | | 14 | 臻品母带2.0 | 62 | | 15 | AI伴唱模式(4轨,2原唱2伴唱) | 63 | | 16 | AI5.1音质(6音轨) | 64 | 65 |
66 | 67 | ## 参数type可选值(歌曲类型) 68 | 69 | ::: warning 70 | 此参数只对id点歌和mid点歌有效,此模式由于无法确定歌曲类型,所以由用户提供。同一个id的情况下不同歌曲类型返回不同歌曲 71 | ::: 72 | 73 |
74 | 75 | | 值 | 备注 | 76 | |:----:|:--------:| 77 | | 0或1 | 常规歌曲 | 78 | | 111 | 华语群星 | 79 | | 112 | 铃声 | 80 | | 113 | 伴奏 | 81 | 82 |
83 | 84 | ## 返回示例 85 | ``` json [geturl.json] 86 | { 87 | "code": 200, 88 | "message": "请求成功!", 89 | "data": { 90 | "id": 105648974, 91 | "mid": "0023CVP23SH17s", 92 | "vid": "v00199a1i1e", 93 | "song": "梦回还", 94 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 95 | "album": "狐妖小红娘 动画原声带", 96 | "singer": "呦猫UNEKO", 97 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 98 | "pay": "付费", 99 | "time": "2016-07-08", 100 | "type": 0, 101 | "bpm": 84, 102 | "quality": "SQ无损音质", 103 | "interval": "4分10秒", 104 | "link": "https://i.y.qq.com/v8/playsong.html?songmid=0023CVP23SH17s&type=0", 105 | "size": "56.05MB", 106 | "kbps": "1862kbps", 107 | "url": "http://ws.stream.qqmusic.qq.com/F000003t4TGX46UGp7.flac?guid=api.vkeys.cn&vkey=F052EA8F74368F9021DE77360BA46DD0F10BC87EA5749271DC4B1F50258B00C258FC2D95EEB95A516470289AC1A11FE56AF09877E8225816&uin=3503185131&fromtag=119114", 108 | "ekey": "" 109 | }, 110 | "time": "2024-08-01 12:25:49", 111 | "pid": 19236, 112 | "tips": "欢迎使用API-Server" 113 | } 114 | ``` 115 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/点歌相关接口/3-ekey.md: -------------------------------------------------------------------------------- 1 | # 获取加密播放链接API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 此接口可以根据音乐id或mid获取QQ音乐加密链接以及相关信息。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/song/ekey` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/song/ekey?id=105648974 18 | - https://api.vkeys.cn/music/tencent/song/ekey?mid=0023CVP23SH17s 19 | - https://api.vkeys.cn/music/tencent/song/ekey?mid=0023CVP23SH17s&quality=8 20 | 21 | ## 请求参数 22 | 23 |
24 | 25 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 26 | |:-------:|:----:|:------:|:---:|:----------------------------| 27 | | id | 否 | int | 0 | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 28 | | mid | 否 | string | / | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 29 | | quality | 否 | int | 14 | 音质ID,不会降级 | 30 | | type | 否 | int | 1 | 歌曲类型 | 31 | 32 |
33 | 34 | ## 参数q可选值(音质选择) 35 | - 默认值14。音质15、16不推荐使用。 36 | 37 |
38 | 39 | | 值 | 备注 | 40 | |:---:|:------------------| 41 | | 0 | 音乐试听 | 42 | | 1 | 有损音质 | 43 | | 2 | 有损音质 | 44 | | 3 | 有损音质 | 45 | | 4 | 标准音质 | 46 | | 5 | 标准音质 | 47 | | 6 | 标准音质 | 48 | | 7 | 标准音质 | 49 | | 8 | HQ高音质 | 50 | | 9 | HQ高音质(音质增强) | 51 | | 10 | SQ无损音质 | 52 | | 11 | Hi-Res音质 | 53 | | 12 | 杜比全景声 | 54 | | 13 | 臻品全景声 | 55 | | 14 | 臻品母带2.0 | 56 | | 15 | AI伴唱模式(4轨,2原唱2伴唱) | 57 | | 16 | AI5.1音质(6音轨) | 58 | 59 |
60 | 61 | ## 参数type可选值(歌曲类型) 62 | 63 | ::: warning 64 | 此参数只对id点歌和mid点歌有效,此模式由于无法确定歌曲类型,所以由用户提供。同一个id的情况下不同歌曲类型返回不同歌曲 65 | ::: 66 | 67 |
68 | 69 | | 值 | 备注 | 70 | |:----:|:--------:| 71 | | 0或1 | 常规歌曲 | 72 | | 111 | 华语群星 | 73 | | 112 | 铃声 | 74 | | 113 | 伴奏 | 75 | 76 |
77 | 78 | ## 关于ekey 79 | - ekey是加密音乐文件的密钥,可使用解密网站获取对应的解密文件 80 | - ekey解密网站:https://um-react.netlify.app/ 81 | 82 | ## 返回示例 83 | ``` json [geturl.json] 84 | { 85 | "code": 200, 86 | "message": "请求成功!", 87 | "data": { 88 | "id": 105648974, 89 | "mid": "0023CVP23SH17s", 90 | "vid": "v00199a1i1e", 91 | "song": "梦回还", 92 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 93 | "album": "狐妖小红娘 动画原声带", 94 | "singer": "呦猫UNEKO", 95 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 96 | "pay": "付费", 97 | "time": "2016-07-08", 98 | "type": 0, 99 | "bpm": 84, 100 | "quality": "SQ无损音质", 101 | "interval": "4分10秒", 102 | "link": "https://i.y.qq.com/v8/playsong.html?songmid=0023CVP23SH17s&type=0", 103 | "size": "56.05MB", 104 | "kbps": "1862kbps", 105 | "url": "http://ws.stream.qqmusic.qq.com/F000003t4TGX46UGp7.flac?guid=api.vkeys.cn&vkey=F052EA8F74368F9021DE77360BA46DD0F10BC87EA5749271DC4B1F50258B00C258FC2D95EEB95A516470289AC1A11FE56AF09877E8225816&uin=3503185131&fromtag=119114", 106 | "ekey": "" 107 | }, 108 | "time": "2024-08-01 12:25:49", 109 | "pid": 19236, 110 | "tips": "欢迎使用API-Server" 111 | } 112 | ``` 113 | -------------------------------------------------------------------------------- /scripts/Cos.vue: -------------------------------------------------------------------------------- 1 | 91 | 92 | 93 | 103 | 104 | 156 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/1-smartbox.md: -------------------------------------------------------------------------------- 1 | --- 2 | tags: 3 | - QQ音乐 4 | progress: 85 5 | --- 6 | 7 | # 快捷搜索API 8 | ::: danger 9 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 10 | ::: 11 | 12 | ## 接口描述 13 | 14 | - 用于歌单列表搜索,支持分页。 15 | 16 | ## 接口地址 17 | - `GET` `/music/tencent/search/smartbox` 18 | 19 | ## 请求数据类型 20 | - `application/x-www-form-urlencoded` 21 | 22 | ## 请求示例 23 | - https://api.vkeys.cn/music/tencent/search/smartbox?keyword=洛天依 24 | 25 | ## 请求参数 26 |
27 | 28 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 29 | |:-------:|:----:|:------:|:---:|:-----| 30 | | keyword | 是 | string | / | 歌单名称 | 31 | 32 |
33 | 34 | ## 返回示例 35 | ``` json 36 | { 37 | "code": 0, 38 | "message": "访问成功", 39 | "data": { 40 | "album": { 41 | "count": 2, // 专辑数量 42 | "itemlist": [ 43 | { 44 | "id": "1283240", // 专辑id 45 | "mid": "001gQ5oZ3ZIbAw", // 专辑mid 46 | "name": "洛天依作品集", // 专辑名称 47 | "pic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000001gQ5oZ3ZIbAw_2.jpg", // 专辑图片 48 | "singer": "洛天依" // 专辑作者 49 | }, 50 | { 51 | "id": "22330356", 52 | "mid": "001CCsrz3ly1sO", 53 | "name": "2015哔哩哔哩拜年纪", 54 | "pic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000001CCsrz3ly1sO_1.jpg", 55 | "singer": "洛天依" 56 | } 57 | ], 58 | "name": "专辑", 59 | "order": 2 60 | }, 61 | "mv": { 62 | "count": 2, // MV数量 63 | "itemlist": [ 64 | { 65 | "id": "1394231", // 歌曲id 66 | "mid": "001ldqdG4b0HfK", // MV mid 67 | "name": "【全职高手】达拉崩吧", // MV名称 68 | "singer": "洛天依", // 歌手名称 69 | "vid": "n00253s8ixk" // MV id 70 | }, 71 | { 72 | "id": "1514774", 73 | "mid": "003Of2TX2aQWV5", 74 | "name": "非人哉", 75 | "singer": "洛天依", 76 | "vid": "w00303rq8yt" 77 | } 78 | ], 79 | "name": "MV", 80 | "order": 3 81 | }, 82 | "singer": { 83 | "count": 1, // 歌手数量 84 | "itemlist": [ 85 | { 86 | "id": "61386", // 歌手id 87 | "mid": "003ktdcg3E4kaG", // 歌手mid 88 | "name": "洛天依", // 歌手名称 89 | "pic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000003ktdcg3E4kaG_7.jpg", // 歌手图片 90 | "singer": "洛天依" // 歌手名称 91 | } 92 | ], 93 | "name": "歌手", 94 | "order": 1 95 | }, 96 | "song": { 97 | "count": 4, // 歌曲数量 98 | "itemlist": [ 99 | { 100 | "id": "104797698", // 歌曲id 101 | "mid": "001mzBxY4UVcAH", // 歌曲mid 102 | "name": "霜雪千年", // 歌曲名称 103 | "singer": "洛天依/乐正绫" // 歌手名称 104 | }, 105 | { 106 | "id": "102176361", 107 | "mid": "001xZXiW4aAhkL", 108 | "name": "权御天下", 109 | "singer": "洛天依" 110 | }, 111 | { 112 | "id": "102366907", 113 | "mid": "000eBrFh2kXacf", 114 | "name": "东京不太热", 115 | "singer": "洛天依" 116 | }, 117 | { 118 | "id": "230393569", 119 | "mid": "0034QZCD0BISWP", 120 | "name": "非人哉", 121 | "singer": "洛天依" 122 | } 123 | ], 124 | "name": "单曲", 125 | "order": 0 126 | } 127 | }, 128 | "time": "2025-04-07 08:05:48", 129 | "pid": 17908, 130 | "tips": "欢迎使用落月API-V3" 131 | } 132 | ``` 133 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/7-albumList.md: -------------------------------------------------------------------------------- 1 | # 歌手专辑列表API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个QQ音乐搜索接口,只能用于搜索,其他参数无效。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/singer/albumlist` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/singer/albumlist?mid=003ktdcg3E4kaG 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:----:|:----:|:------:|:----------------------| 20 | | mid | 是 | string | 歌手mid | 21 | | page | 否 | int | 页数,默认为1 | 22 | | num | 否 | int | 每页显示数,默认为10,区间:[1,60] | 23 | 24 | ## 返回示例 25 | ``` json 26 | { 27 | "code": 200, 28 | "message": "请求成功!", 29 | "data": [ 30 | { 31 | "albumMid": "001gQ5oZ3ZIbAw", 32 | "albumName": "洛天依作品集", 33 | "albumTranName": "", 34 | "publishDate": "2016-01-01", 35 | "totalNum": 0, 36 | "albumType": "录音室专辑", 37 | "pmid": "001gQ5oZ3ZIbAw_2", 38 | "albumID": 1283240, 39 | "singerName": "洛天依" 40 | }, 41 | { 42 | "albumMid": "001E8Dko2o1D6p", 43 | "albumName": "末日DISCO", 44 | "albumTranName": "", 45 | "publishDate": "2013-06-05", 46 | "totalNum": 0, 47 | "albumType": "录音室专辑", 48 | "pmid": "001E8Dko2o1D6p_1", 49 | "albumID": 1283028, 50 | "singerName": "洛天依" 51 | }, 52 | { 53 | "albumMid": "000s9Xs623THdK", 54 | "albumName": "Sing Sing Sing", 55 | "albumTranName": "", 56 | "publishDate": "2012-07-12", 57 | "totalNum": 0, 58 | "albumType": "录音室专辑", 59 | "pmid": "000s9Xs623THdK_1", 60 | "albumID": 1283081, 61 | "singerName": "洛天依" 62 | }, 63 | { 64 | "albumMid": "0003jG162JjJGO", 65 | "albumName": "洛天依精选集二", 66 | "albumTranName": "", 67 | "publishDate": "2014-05-11", 68 | "totalNum": 0, 69 | "albumType": "录音室专辑", 70 | "pmid": "0003jG162JjJGO_1", 71 | "albumID": 515710, 72 | "singerName": "洛天依" 73 | }, 74 | { 75 | "albumMid": "002BqWJr1jwHIF", 76 | "albumName": "百转千回", 77 | "albumTranName": "", 78 | "publishDate": "2013-07-22", 79 | "totalNum": 0, 80 | "albumType": "录音室专辑", 81 | "pmid": "002BqWJr1jwHIF_4", 82 | "albumID": 433484, 83 | "singerName": "洛天依" 84 | }, 85 | { 86 | "albumMid": "003UGLjI0QfdvH", 87 | "albumName": "洛天依精选集一", 88 | "albumTranName": "", 89 | "publishDate": "2014-04-23", 90 | "totalNum": 0, 91 | "albumType": "录音室专辑", 92 | "pmid": "003UGLjI0QfdvH_1", 93 | "albumID": 494592, 94 | "singerName": "洛天依" 95 | }, 96 | { 97 | "albumMid": "001S0WXZ0TapBn", 98 | "albumName": "宝贝", 99 | "albumTranName": "", 100 | "publishDate": "2013-08-16", 101 | "totalNum": 0, 102 | "albumType": "录音室专辑", 103 | "pmid": "001S0WXZ0TapBn_1", 104 | "albumID": 435266, 105 | "singerName": "洛天依" 106 | }, 107 | { 108 | "albumMid": "002k5KVd3lZx78", 109 | "albumName": "花洛兮", 110 | "albumTranName": "", 111 | "publishDate": "2013-10-20", 112 | "totalNum": 0, 113 | "albumType": "录音室专辑", 114 | "pmid": "002k5KVd3lZx78_1", 115 | "albumID": 663475, 116 | "singerName": "洛天依" 117 | }, 118 | { 119 | "albumMid": "0035MaNl4U0bG9", 120 | "albumName": "花洛兮Ⅱ", 121 | "albumTranName": "", 122 | "publishDate": "2014-10-10", 123 | "totalNum": 0, 124 | "albumType": "录音室专辑", 125 | "pmid": "0035MaNl4U0bG9_1", 126 | "albumID": 1040257, 127 | "singerName": "洛天依" 128 | }, 129 | { 130 | "albumMid": "002WtP8A09kjSa", 131 | "albumName": "洛天依精选集三", 132 | "albumTranName": "", 133 | "publishDate": "2014-06-03", 134 | "totalNum": 0, 135 | "albumType": "录音室专辑", 136 | "pmid": "002WtP8A09kjSa_1", 137 | "albumID": 533425, 138 | "singerName": "洛天依" 139 | } 140 | ], 141 | "time": "2024-08-18 21:35:28", 142 | "pid": 26, 143 | "tips": "欢迎使用API-Server" 144 | } 145 | ``` 146 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/Cookie相关接口/3-qrcodelogin.md: -------------------------------------------------------------------------------- 1 | # 二维码登录API 2 | 3 | ::: danger 4 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 5 | ::: 6 | 7 | ## 接口描述 8 | 9 | - 使用二维码登录,并获取qq音乐的token。接口使用sse返回,需要前端使用`EventSource`监听sse事件。 10 | 11 | ## 接口地址 12 | 13 | - `GET` `/music/tencent/cookie/fastlogin` 14 | 15 | ## 请求数据类型 16 | 17 | - `application/x-www-form-urlencoded` 18 | 19 | ## 返回数据类型 20 | 21 | - `text/event-stream` 22 | 23 | ## 请求示例 24 | 25 | - https://api.vkeys.cn/music/tencent/cookie/qrcode 26 | 27 | ## 请求参数 28 | 29 |
30 | 31 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 32 | |:----:|:----:|:----:|:-----:|:-----------------| 33 | | save | 否 | bool | false | 是否将cookie保存在服务器中 | 34 | 35 |
36 | 37 | ## 在线获取 38 | 39 |
40 | 41 | 42 |
43 | 44 |
45 |
46 | × 47 | 48 |
49 |
50 | 51 | 85 | 126 | 127 | ## 返回示例 128 | 129 | ``` json 130 | { 131 | "code": 200, 132 | "message": "请求成功!", 133 | "data": { 134 | "cookie": { 135 | "uin": 1569097443, // 账号ID 136 | "musickey": "Q_H_L_63kfNuk1fUK-t9Rshh-NGQrRsuQmM8eCpOAo4TtgtNtGBY7_4KESYJVVrXh35gdQrsbIJhHLcKGsNEjHRzwHMZ-CPaFB-i6gAsgcCLTYB-4KIh_SwMdTWUVWrZf-LyAhajDfpv5uwvu0-k0KiS3w",// token字段 137 | "refresh_token": "", // 刷新key 138 | "refresh_key": "", // 刷新token 139 | "musickeyCreateTimestamp": 1722693959, // token创建时间戳 140 | "musickeyCreateTime": "2024-08-03 22:05:59", // token创建时间 141 | "keyExpiresIn": 259200, // token过期时间 142 | "musickeyLastTimestamp": 1722953159, // token最后更新时间戳 143 | "musickeyLastTime": "2024-08-06 22:05:59" // token最后更新时间 144 | }, 145 | "info": { 146 | "vip": false, // 是否为vip 147 | "vipEndTimestamp": 1694733645, // vip到期时间戳 148 | "vipEndTime": "2023-09-15 07:20:45", // vip到期时间 149 | "vipDateDiff": 323, // vip到期时间与当前时间差(永远为正数) 150 | "svip": false, // 是否为svip 151 | "svipEndTimestamp": 1692660579, // svip到期时间戳 152 | "svipEndTime": "2023-08-22 07:29:39", // svip到期时间 153 | "svipDateDiff": 347 // svip到期时间与当前时间差(永远为正数) 154 | } 155 | }, 156 | "time": "2024-08-03 22:05:59", 157 | "pid": 14, 158 | "tips": "欢迎使用API-Server" 159 | } 160 | ``` 161 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/4-smartbox.md: -------------------------------------------------------------------------------- 1 | # 快捷搜索API 2 | 3 | ## 简要描述 4 | 5 | - QQ音乐快搜索接口,用于音乐搜索表单提示。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/search/smartbox` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/search/smartbox?word=狐妖小红娘 15 | 16 | ## 请求参数 17 | 18 | | 参数名 | 是否必选 | 数据类型 | 说明 | 19 | |:----:|:----:|:------:|:-----| 20 | | word | 是 | string | 搜索内容 | 21 | 22 | ## 返回示例 23 | ``` json 24 | { 25 | "code": 200, 26 | "message": "请求成功!", 27 | "data": { 28 | "album": { 29 | "count": 2, 30 | "itemlist": [ 31 | { 32 | "docid": "1031692", 33 | "id": "1031692", 34 | "mid": "000wd19g0wTd0d", 35 | "name": "狐妖小红娘 动画原声带", 36 | "pic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000000wd19g0wTd0d_1.jpg", 37 | "singer": "华语群星" 38 | }, 39 | { 40 | "docid": "51294996", 41 | "id": "51294996", 42 | "mid": "003GLtZm09BdNc", 43 | "name": "狐妖小红娘月红篇 电视剧原声带", 44 | "pic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000003GLtZm09BdNc_1.jpg", 45 | "singer": "黄绮珊/张杰/周深/袁娅维TIA RAY" 46 | } 47 | ], 48 | "name": "专辑", 49 | "order": 2, 50 | "type": 3 51 | }, 52 | "mv": { 53 | "count": 2, 54 | "itemlist": [ 55 | { 56 | "docid": "869531", 57 | "id": "869531", 58 | "mid": "0034qhHt3lnt4l", 59 | "name": "《狐妖小红娘》cp东方月初&涂山红红", 60 | "singer": "动画视频", 61 | "vid": "b0021738knz" 62 | }, 63 | { 64 | "docid": "976752", 65 | "id": "976752", 66 | "mid": "001Iqurk3nC9Eo", 67 | "name": "狐妖小红娘 梦回还 王权富贵", 68 | "singer": "动画视频", 69 | "vid": "o0021shslfr" 70 | } 71 | ], 72 | "name": "MV", 73 | "order": 3, 74 | "type": 4 75 | }, 76 | "singer": { 77 | "count": 2, 78 | "itemlist": [ 79 | { 80 | "docid": "4914381", 81 | "id": "4914381", 82 | "mid": "000lnrtZ1tNHRN", 83 | "name": "狐妖小红娘-涂山苏苏", 84 | "pic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000000lnrtZ1tNHRN_2.jpg", 85 | "singer": "狐妖小红娘-涂山苏苏" 86 | }, 87 | { 88 | "docid": "2117041", 89 | "id": "2117041", 90 | "mid": "00451sDD3QE2AJ", 91 | "name": "狐妖小红娘", 92 | "pic": "http://y.gtimg.cn/music/photo_new/T001R150x150M00000451sDD3QE2AJ_1.jpg", 93 | "singer": "狐妖小红娘" 94 | } 95 | ], 96 | "name": "歌手", 97 | "order": 1, 98 | "type": 2 99 | }, 100 | "song": { 101 | "count": 4, 102 | "itemlist": [ 103 | { 104 | "docid": "105648974", 105 | "id": "105648974", 106 | "mid": "0023CVP23SH17s", 107 | "name": "梦回还", 108 | "singer": "呦猫UNEKO" 109 | }, 110 | { 111 | "docid": "231692423", 112 | "id": "231692423", 113 | "mid": "003yM7Uc3TRo5z", 114 | "name": "人间白首", 115 | "singer": "呦猫UNEKO" 116 | }, 117 | { 118 | "docid": "107438148", 119 | "id": "107438148", 120 | "mid": "0005Y0qE4b8qoi", 121 | "name": "若当来世", 122 | "singer": "马里奥/冥月" 123 | }, 124 | { 125 | "docid": "226150838", 126 | "id": "226150838", 127 | "mid": "001zYa4V2ZVYfw", 128 | "name": "愿我", 129 | "singer": "呦猫UNEKO" 130 | } 131 | ], 132 | "name": "单曲", 133 | "order": 0, 134 | "type": 1 135 | } 136 | }, 137 | "time": "2024-08-03 19:41:11", 138 | "pid": 4528, 139 | "tips": "欢迎使用API-Server" 140 | } 141 | ``` 142 | -------------------------------------------------------------------------------- /scripts/qqkey.ps1: -------------------------------------------------------------------------------- 1 | 2 | Add-Type -AssemblyName Microsoft.PowerShell.Commands.Utility 3 | # 关闭curl进度显示 4 | $ProgressPreference = 'SilentlyContinue' 5 | 6 | function Invoke-Request { 7 | param ( 8 | [string]$Uri, 9 | [hashtable]$Headers, 10 | [Microsoft.PowerShell.Commands.WebRequestSession]$WebSession = $null, 11 | [int]$Timeout = 30 12 | ) 13 | try { 14 | return Invoke-WebRequest -Uri $Uri -Method Get ` 15 | -UseBasicParsing ` 16 | -DisableKeepAlive ` 17 | -Headers $Headers ` 18 | -WebSession $WebSession ` 19 | -TimeoutSec $Timeout ` 20 | -ErrorAction Stop 21 | } catch { 22 | if($_.Exception -match "The operation has timed out") { 23 | Write-Host "请求超时,请检查网络连接" -ForegroundColor Red 24 | }else { 25 | Write-Host "请求失败,错误信息:" -ForegroundColor Red 26 | Write-Host $_.Exception.Message 27 | } 28 | Exit ; 29 | } 30 | } 31 | 32 | function Get-CookieValue { 33 | param ( 34 | [string[]]$Cookies, 35 | [string]$CookieName 36 | ) 37 | $cookie = $Cookies | Where-Object { $_ -match "$CookieName=([^;]+)" } 38 | if ($cookie -and $matches[1]) { 39 | return $matches[1] 40 | } 41 | return $null 42 | } 43 | 44 | try { 45 | Write-Host "脚本启动,正在登录..." -ForegroundColor Green 46 | 47 | # 目标URL地址,原始格式 48 | $targetUrl = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&daid=383&style=33&login_text=%E7%99%BB%E5%BD%95&hide_title_bar=1&hide_border=1&target=self&s_url=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&pt_3rd_aid=100497308&pt_feedback_link=https%3A%2F%2Fsupport.qq.com%2Fproducts%2F77942%3FcustomInfo%3D.appid100497308&theme=2&verify_theme=" 49 | $refererHeaders = @{"Referer" = $targetUrl} 50 | 51 | # 发送GET请求并自动处理响应 52 | $response = Invoke-Request -Uri $targetUrl 53 | 54 | # 获取目标Cookie 55 | $pt_local_token = Get-CookieValue -Cookies $response.Headers['Set-Cookie'] -CookieName "pt_local_token" 56 | if (-not $pt_local_token) { 57 | Write-Host "未能成功获取 pt_local_token Cookie值" -ForegroundColor Red 58 | Exit ; 59 | } 60 | 61 | Write-Host "成功获取 pt_local_token: $pt_local_token" -ForegroundColor Green 62 | 63 | $getUinsUrl = "https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.9038523633869937&pt_local_tk=$pt_local_token" 64 | 65 | 66 | # 创建WebSession对象并添加Cookie 67 | $webSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession 68 | $cookieObj = New-Object System.Net.Cookie("pt_local_token", $pt_local_token, "/", "localhost.ptlogin2.qq.com") 69 | $webSession.Cookies.Add($cookieObj) 70 | 71 | $newResponse = Invoke-Request -Uri $getUinsUrl -Headers $refererHeaders -WebSession $webSession 72 | 73 | # 解析响应内容中的 var_sso_uin_list 74 | $responseContent = $newResponse.Content 75 | if (-not ($responseContent -match 'var var_sso_uin_list=(\[.*?\]);')) { 76 | Write-Host "未能发现有效的用户列表。" -ForegroundColor Red 77 | Exit ; 78 | } 79 | 80 | $userList = ConvertFrom-Json $matches[1] 81 | 82 | # 显示用户列表并让用户选择 83 | Write-Host "请选择一个用户:" -ForegroundColor Cyan 84 | for ($i = 0; $i -lt $userList.Length; $i++) { 85 | Write-Host "[$i] 账号: $($userList[$i].uin)" 86 | } 87 | $userChoice = Read-Host "请输入用户编号" 88 | 89 | if (-not ($userChoice -match '^\d+$') -or [int]$userChoice -lt 0 -or [int]$userChoice -ge $userList.Length) { 90 | Write-Host "无效的选择。" -ForegroundColor Red 91 | Exit ; 92 | } 93 | 94 | $selectedUser = $userList[$userChoice] 95 | 96 | # 构造新的请求 97 | $newRequestUrl = "https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=$($selectedUser.uin)&r=0.5287717305315094&pt_local_tk=$pt_local_token&callback=__jp0" 98 | 99 | $newRequestResponse = Invoke-Request -Uri $newRequestUrl -Headers $refererHeaders -WebSession $webSession 100 | 101 | # 获取Cookie 102 | $newCookieCollection = $newRequestResponse.Headers['Set-Cookie'] 103 | $clientuin = Get-CookieValue -Cookies $newCookieCollection -CookieName "clientuin" 104 | $clientkey = Get-CookieValue -Cookies $newCookieCollection -CookieName "clientkey" 105 | 106 | if (-not $clientuin -or -not $clientkey) { 107 | Write-Host "未能发现有效的clientuin和clientkey" -ForegroundColor Red 108 | Exit ; 109 | } 110 | 111 | Write-Host "clientuin: $clientuin" -ForegroundColor Green 112 | Write-Host "clientkey: $clientkey" -ForegroundColor Green 113 | } 114 | finally { 115 | # 恢复默认的进度显示 116 | $ProgressPreference = 'Continue' 117 | 118 | Write-Host "按任意键退出程序。" 119 | [Console]::Read() | Out-Null ; 120 | Exit ; 121 | } -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/1-tencent.md: -------------------------------------------------------------------------------- 1 | # 点歌API(歌曲搜索+播放链接整合) 2 | 3 | ## 简要描述 4 | - 此接口是结合了歌曲搜索、列表选择、id/mid点歌等功能,适合大多数场景。 5 | - 使用多路线,保证正常获取,支持所有音乐,支持16种音质和音质自动选择(可限制最大音质)等。 6 | - 与v1版本有细微差别,主要在请求参数方面,使命名更规范。 7 | 8 | ## 请求URL 9 | - `/v2/music/tencent` 10 | 11 | ## 请求方式 12 | - `GET` / `POST` 13 | 14 | ## 请求示例 15 | - https://api.vkeys.cn/v2/music/tencent?word=狐妖小红娘 16 | - https://api.vkeys.cn/v2/music/tencent?word=狐妖小红娘&choose=1&quality=8 17 | - https://api.vkeys.cn/v2/music/tencent?id=105648974 18 | - https://api.vkeys.cn/v2/music/tencent?mid=0023CVP23SH17s 19 | - https://api.vkeys.cn/v2/music/tencent?mid=0023CVP23SH17s&ekey=1 20 | 21 | ## 请求参数 22 | 23 | | 参数名 | 是否必选 | 数据类型 | 说明 | 24 | |:--------:|:-------:|:-------:|:----------------------------| 25 | | word | 是 | string | 歌名,有id或mid参数可不填 | 26 | | page | 否 | int | 页数,默认为1 | 27 | | num | 否 | int | 每页显示数,默认为10,区间:[1,60] | 28 | | choose | 否 | int | 选择歌曲,0不可填 | 29 | | grp | 否 | int | 多版本音乐序号,如需使用参数num为必填 | 30 | | quality | 否 | int | 最大支持音质,默认值14,区间:[0,16] | 31 | | id | 是/否 | int | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 32 | | mid | 是/否 | string | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 33 | | type | 否 | int | 歌曲类型,默认为0 | 34 | | ekey | 否 | bool | 是否获取加密的音乐链接 | 35 | 36 | ## 参数q可选值(音质选择) 37 | - 默认值14。音质15、16不推荐使用。 38 | 39 | | 值 | 备注 | 40 | |:---:|:------------------| 41 | | 0 | 音乐试听 | 42 | | 1 | 有损音质 | 43 | | 2 | 有损音质 | 44 | | 3 | 有损音质 | 45 | | 4 | 标准音质 | 46 | | 5 | 标准音质 | 47 | | 6 | 标准音质 | 48 | | 7 | 标准音质 | 49 | | 8 | HQ高音质 | 50 | | 9 | HQ高音质(音质增强) | 51 | | 10 | SQ无损音质 | 52 | | 11 | Hi-Res音质 | 53 | | 12 | 杜比全景声 | 54 | | 13 | 臻品全景声 | 55 | | 14 | 臻品母带2.0 | 56 | | 15 | AI伴唱模式(4轨,2原唱2伴唱) | 57 | | 16 | AI5.1音质(6音轨) | 58 | 59 | ## 参数type可选值(歌曲类型) 60 | 61 | ::: warning 62 | 此参数只对id点歌和mid点歌有效,此模式由于无法确定歌曲类型,所以由用户提供。同一个id的情况下不同歌曲类型返回不同歌曲 63 | ::: 64 | 65 | | 值 | 备注 | 66 | |:----:|:--------:| 67 | | 0或1 | 常规歌曲 | 68 | | 111 | 华语群星 | 69 | | 112 | 铃声 | 70 | | 113 | 伴奏 | 71 | 72 | ## 关于ekey 73 | - ekey是加密音乐文件的密钥,可使用解密网站获取对应的解密文件 74 | - ekey解密网站:https://um-react.netlify.app/ 75 | 76 | 77 | ## 返回示例 78 | ::: code-group 79 | 80 | ``` json [搜索模式.json] 81 | { 82 | "code": 200, 83 | "message": "请求成功!", 84 | "data": [ 85 | { 86 | "id": 105648974, 87 | "mid": "0023CVP23SH17s", 88 | "vid": "v00199a1i1e", 89 | "song": "梦回还", 90 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 91 | "album": "狐妖小红娘 动画原声带", 92 | "singer": "呦猫UNEKO", 93 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 94 | "pay": "付费", 95 | "time": "2016-07-08", 96 | "type": 0, 97 | "bpm": 84, 98 | "quality": "臻品母带2.0", 99 | "grp": [ 100 | { 101 | "id": 235069670, 102 | "mid": "001SYUfq0ou27J", 103 | "vid": "i0031dmklxx", 104 | "song": "梦回还", 105 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 106 | "album": "狐妖小红娘·王权篇 动画原声大碟 轮转", 107 | "singer": "呦猫UNEKO", 108 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000LAXp222pE4w.jpg", 109 | "pay": "付费", 110 | "time": "2019-07-31", 111 | "type": 0, 112 | "bpm": 84, 113 | "quality": "臻品母带2.0", 114 | "grp": [] 115 | } 116 | ] 117 | } 118 | ], 119 | "time": "2024-08-03 18:37:34", 120 | "pid": 12, 121 | "tips": "欢迎使用API-Server" 122 | } 123 | ``` 124 | 125 | ``` json [点歌模式.json] 126 | { 127 | "code": 200, 128 | "message": "请求成功!", 129 | "data": { 130 | "id": 105648974, 131 | "mid": "0023CVP23SH17s", 132 | "vid": "v00199a1i1e", 133 | "song": "梦回还", 134 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", 135 | "album": "狐妖小红娘 动画原声带", 136 | "singer": "呦猫UNEKO", 137 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg", 138 | "pay": "付费", 139 | "time": "2016-07-08", 140 | "type": 0, 141 | "bpm": 84, 142 | "quality": "SQ无损音质", 143 | "interval": "4分10秒", 144 | "link": "https://i.y.qq.com/v8/playsong.html?songmid=0023CVP23SH17s&type=0", 145 | "size": "56.05MB", 146 | "kbps": "1862kbps", 147 | "url": "http://ws.stream.qqmusic.qq.com/F000003t4TGX46UGp7.flac?guid=api.vkeys.cn&vkey=F052EA8F74368F9021DE77360BA46DD0F10BC87EA5749271DC4B1F50258B00C258FC2D95EEB95A516470289AC1A11FE56AF09877E8225816&uin=3503185131&fromtag=119114", 148 | "ekey": "" 149 | }, 150 | "time": "2024-08-01 12:25:49", 151 | "pid": 19236, 152 | "tips": "欢迎使用API-Server" 153 | } 154 | ``` 155 | ::: 156 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/5-album.md: -------------------------------------------------------------------------------- 1 | # 专辑搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于专辑列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/album` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/album?keyword=洛天依作品集 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 专辑名称 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": { // [!code ++] 37 | "total": 4, //搜索结果总数 [!code ++] 38 | "nextPage": -1, //下一页的页码 [!code ++] 39 | "perPage": 10 //当前每页显示数 [!code ++] 40 | }, // [!code ++] 41 | "list": [ 42 | { 43 | "albumID": 1283240, // 专辑ID 44 | "albumMID": "001gQ5oZ3ZIbAw", // 专辑MID 45 | "albumName": "洛天依作品集", // 专辑名称 46 | "albumPic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000001gQ5oZ3ZIbAw_2.jpg", // 专辑图片 47 | "publicTime": "2016-01-01", // 发行时间 48 | "singerID": 61386, // 歌手ID 49 | "singerMID": "003ktdcg3E4kaG", // 歌手MID 50 | "singerName": "洛天依", // 歌手名称 51 | "songCount": 634, // 歌曲数量 52 | "singerList": [// 歌手列表 53 | { 54 | "id": 61386, // 歌手ID 55 | "mid": "003ktdcg3E4kaG", // 歌手MID 56 | "name": "洛天依", // 歌手名称 57 | "pmid": "", 58 | "title": "洛天依", // 歌手名称 59 | "type": 0, 60 | "uin": 0 61 | } 62 | ] 63 | }, 64 | { 65 | "albumID": 47530135, 66 | "albumMID": "000yNHmX4MqqGE", 67 | "albumName": "洛天依作品集 (Explicit)", 68 | "albumPic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000000yNHmX4MqqGE_2.jpg", 69 | "publicTime": "2016-01-01", 70 | "singerID": 61386, 71 | "singerMID": "003ktdcg3E4kaG", 72 | "singerName": "洛天依", 73 | "songCount": 2, 74 | "singerList": [ 75 | { 76 | "id": 61386, 77 | "mid": "003ktdcg3E4kaG", 78 | "name": "洛天依", 79 | "pmid": "", 80 | "title": "洛天依", 81 | "type": 0, 82 | "uin": 0 83 | }, 84 | { 85 | "id": 980372, 86 | "mid": "000yjTkK2E7Rpz", 87 | "name": "乐正绫", 88 | "pmid": "", 89 | "title": "乐正绫", 90 | "type": 0, 91 | "uin": 0 92 | } 93 | ] 94 | }, 95 | { 96 | "albumID": 7921861, 97 | "albumMID": "002tQir12NohDb", 98 | "albumName": "洛天依作品集", 99 | "albumPic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000002tQir12NohDb_1.jpg", 100 | "publicTime": "2019-09-08", 101 | "singerID": 61386, 102 | "singerMID": "003ktdcg3E4kaG", 103 | "singerName": "洛天依", 104 | "songCount": 1, 105 | "singerList": [ 106 | { 107 | "id": 61386, 108 | "mid": "003ktdcg3E4kaG", 109 | "name": "洛天依", 110 | "pmid": "", 111 | "title": "洛天依", 112 | "type": 0, 113 | "uin": 0 114 | } 115 | ] 116 | }, 117 | { 118 | "albumID": 23736313, 119 | "albumMID": "003HPZTd2IrgK7", 120 | "albumName": "洛天依翻唱作品集", 121 | "albumPic": "http://y.gtimg.cn/music/photo_new/T002R180x180M000003HPZTd2IrgK7_2.jpg", 122 | "publicTime": "2021-03-30", 123 | "singerID": 9596067, 124 | "singerMID": "002GdGBi2OeHCE", 125 | "singerName": "haru1ca", 126 | "songCount": 2, 127 | "singerList": [ 128 | { 129 | "id": 9596067, 130 | "mid": "002GdGBi2OeHCE", 131 | "name": "haru1ca", 132 | "pmid": "", 133 | "title": "haru1ca", 134 | "type": 0, 135 | "uin": 0 136 | } 137 | ] 138 | } 139 | ] 140 | }, 141 | "time": "2025-04-15 21:12:01", 142 | "pid": 29992, 143 | "tips": "欢迎使用落月API-V3" 144 | } 145 | ``` 146 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/用户相关接口/1-info.md: -------------------------------------------------------------------------------- 1 | # 获取用户信息API 2 | 3 | ::: danger 4 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 5 | ::: 6 | 7 | ## 接口描述 8 | 9 | - 用于歌曲列表搜索,支持分页。 10 | 11 | ## 接口地址 12 | 13 | - `GET` `/music/tencent/user/info` 14 | 15 | ## 请求数据类型 16 | 17 | - `application/x-www-form-urlencoded` 18 | 19 | ## 请求示例 20 | 21 | - https://api.vkeys.cn/music/tencent/user/info?uin=1569097443 22 | 23 | ## 请求参数 24 | 25 |
26 | 27 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 28 | |:---:|:----:|:------:|:---:|:----| 29 | | uin | 是 | int | / | QQ号 | 30 | 31 |
32 | 33 | ## 返回示例 34 | 35 | ``` json 36 | { 37 | "code": 0, 38 | "message": "访问成功", 39 | "data": { 40 | "songID": 105648974, //歌曲ID 41 | "songMID": "0023CVP23SH17s", //歌曲mid 42 | "vid": "v00199a1i1e", //mv的vid 43 | "title": "梦回还", //歌曲名 44 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", //副标题 45 | "album": "狐妖小红娘 动画原声带", //专辑名 46 | "singer": "呦猫UNEKO", //歌手名(多个歌手以/分割) 47 | "singerList": [ //歌手列表 48 | { 49 | "id": 1092914, //歌手ID 50 | "mid": "003VD9fu3Eh1q4", //歌手mid 51 | "name": "呦猫UNEKO", //歌手名 52 | "pmid": "", 53 | "title": "呦猫UNEKO", //歌手名 54 | "type": 1, 55 | "uin": 0 56 | } 57 | ], 58 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg",//封面地址 59 | "pay": "付费", //是否付费(初步判断) 60 | "time": "2016-07-08", //发布时间 61 | "type": 0, //歌曲类型(点歌时需要用到) 62 | "bpm": 84, //BPM值 63 | "content": "", 64 | "grp": [], //多版本列表,此接口无效 65 | "qualityInfo": [// 音质列表 66 | { 67 | "type": 0, // 音质id,点歌时需要 68 | "size": 960887, //文件大小,0为无效 69 | "quality": "音乐试听", // 音质名 70 | "file": "RS020023CVP23SH17s.mp3" // 文件名 71 | }, 72 | { 73 | "type": 1, 74 | "size": 0, 75 | "quality": "有损音质", 76 | "file": "C100003t4TGX46UGp7.m4a" 77 | }, 78 | { 79 | "type": 2, 80 | "size": 1522964, 81 | "quality": "有损音质", 82 | "file": "C200003t4TGX46UGp7.m4a" 83 | }, 84 | { 85 | "type": 3, 86 | "size": 3043806, 87 | "quality": "有损音质", 88 | "file": "C400003t4TGX46UGp7.m4a" 89 | }, 90 | { 91 | "type": 4, 92 | "size": 6048661, 93 | "quality": "标准音质", 94 | "file": "C600003t4TGX46UGp7.m4a" 95 | }, 96 | { 97 | "type": 5, 98 | "size": 3025258, 99 | "quality": "标准音质", 100 | "file": "O400003t4TGX46UGp7.ogg" 101 | }, 102 | { 103 | "type": 6, 104 | "size": 4001341, 105 | "quality": "标准音质", 106 | "file": "M500003t4TGX46UGp7.mp3" 107 | }, 108 | { 109 | "type": 7, 110 | "size": 6127530, 111 | "quality": "标准音质", 112 | "file": "O600003t4TGX46UGp7.ogg" 113 | }, 114 | { 115 | "type": 8, 116 | "size": 10003026, 117 | "quality": "HQ高音质", 118 | "file": "M800003t4TGX46UGp7.mp3" 119 | }, 120 | { 121 | "type": 9, 122 | "size": 10870748, 123 | "quality": "HQ高音质", 124 | "file": "O800003t4TGX46UGp7.ogg" 125 | }, 126 | { 127 | "type": 10, 128 | "size": 58775435, 129 | "quality": "SQ无损音质", 130 | "file": "F000003t4TGX46UGp7.flac" 131 | }, 132 | { 133 | "type": 11, 134 | "size": 0, 135 | "quality": "Hi-Res音质", 136 | "file": "RS01003t4TGX46UGp7.flac" 137 | }, 138 | { 139 | "type": 12, 140 | "size": 0, 141 | "quality": "杜比全景声", 142 | "file": "D001003t4TGX46UGp7.mp4" 143 | }, 144 | { 145 | "type": 13, 146 | "size": 32270821, 147 | "quality": "臻品全景声", 148 | "file": "Q000000Ok4Fl4ckn34.flac" 149 | }, 150 | { 151 | "type": 14, 152 | "size": 188505804, 153 | "quality": "臻品母带2.0", 154 | "file": "AI00004XGZCG3gCeKc.flac" 155 | }, 156 | { 157 | "type": 15, 158 | "size": 21475189, 159 | "quality": "AI伴奏消音(试验)", 160 | "file": "O801003YeTqm3yCpZQ.ogg" 161 | }, 162 | { 163 | "type": 16, 164 | "size": 82846386, 165 | "quality": "AI人声消音(试验)", 166 | "file": "Q001000Ok4Fl4ckn34.flac" 167 | } 168 | ] 169 | }, 170 | "time": "2025-04-08 14:29:43", 171 | "pid": 11444, 172 | "tips": "欢迎使用落月API-V3" 173 | } 174 | ``` 175 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/3-singer.md: -------------------------------------------------------------------------------- 1 | # 歌手搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于歌手列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/singer` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/singer?keyword=洛天依 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 歌手 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": { // [!code ++] 37 | "total": 12, //搜索结果总数 [!code ++] 38 | "nextPage": 2, //下一页的页码 [!code ++] 39 | "perPage": 10 //当前每页显示数 [!code ++] 40 | }, // [!code ++] 41 | "list": [ 42 | { 43 | "albumNum": 1564, //专辑数 44 | "concern_status": 0, 45 | "mvNum": 980, // MV视频数 46 | "singerID": 61386, // 歌手ID 47 | "singerMID": "003ktdcg3E4kaG", // 歌手MID 48 | "singerName": "洛天依", // 歌手名 49 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000003ktdcg3E4kaG_7.jpg", // 歌手图片 50 | "songNum": 8149 // 歌曲数 51 | }, 52 | { 53 | "albumNum": 30, 54 | "concern_status": 0, 55 | "mvNum": 15, 56 | "singerID": 5332545, 57 | "singerMID": "001QFs3W35Wt6h", 58 | "singerName": "ChiliChill", 59 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000001QFs3W35Wt6h_8.jpg", 60 | "songNum": 67 61 | }, 62 | { 63 | "albumNum": 323, 64 | "concern_status": 0, 65 | "mvNum": 154, 66 | "singerID": 980372, 67 | "singerMID": "000yjTkK2E7Rpz", 68 | "singerName": "乐正绫", 69 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000000yjTkK2E7Rpz_3.jpg", 70 | "songNum": 2989 71 | }, 72 | { 73 | "albumNum": 56, 74 | "concern_status": 0, 75 | "mvNum": 1511, 76 | "singerID": 7221, 77 | "singerMID": "000CK5xN3yZDJt", 78 | "singerName": "许嵩", 79 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000000CK5xN3yZDJt_3.jpg", 80 | "songNum": 389 81 | }, 82 | { 83 | "albumNum": 1, 84 | "concern_status": 0, 85 | "mvNum": 0, 86 | "singerID": 16391754, 87 | "singerMID": "003n7boS45qc2N", 88 | "singerName": "Dr.Nur单、洛天依", 89 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000003n7boS45qc2N_2.jpg", 90 | "songNum": 0 91 | }, 92 | { 93 | "albumNum": 0, 94 | "concern_status": 0, 95 | "mvNum": 0, 96 | "singerID": 3784859, 97 | "singerMID": "0032oxg80FFbNg", 98 | "singerName": "洛天依&阿良良木健", 99 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000002PVWDN3kBtTe_0.jpg", 100 | "songNum": 1 101 | }, 102 | { 103 | "albumNum": 1, 104 | "concern_status": 0, 105 | "mvNum": 0, 106 | "singerID": 16337046, 107 | "singerMID": "001Itbnk3KPLbC", 108 | "singerName": "水蓝琉璃洛天依", 109 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000001Itbnk3KPLbC_1.jpg", 110 | "songNum": 1 111 | }, 112 | { 113 | "albumNum": 17, 114 | "concern_status": 0, 115 | "mvNum": 6, 116 | "singerID": 1020907, 117 | "singerMID": "003f2cre1hniJ6", 118 | "singerName": "ilem", 119 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000003f2cre1hniJ6_5.jpg", 120 | "songNum": 54 121 | }, 122 | { 123 | "albumNum": 175, 124 | "concern_status": 0, 125 | "mvNum": 273, 126 | "singerID": 170683, 127 | "singerMID": "002OBqhv118O38", 128 | "singerName": "言和", 129 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000002OBqhv118O38_3.jpg", 130 | "songNum": 2139 131 | }, 132 | { 133 | "albumNum": 174, 134 | "concern_status": 0, 135 | "mvNum": 92, 136 | "singerID": 36239, 137 | "singerMID": "001AkuJH2G5OJJ", 138 | "singerName": "河图", 139 | "singerPic": "http://y.gtimg.cn/music/photo_new/T001R150x150M000001AkuJH2G5OJJ_7.jpg", 140 | "songNum": 581 141 | } 142 | ] 143 | }, 144 | "time": "2025-04-15 18:31:11", 145 | "pid": 19, 146 | "tips": "欢迎使用落月API-V3" 147 | } 148 | ``` 149 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/点歌相关接口/1-info.md: -------------------------------------------------------------------------------- 1 | # 歌曲信息及音质列表API 2 | 3 | ::: danger 4 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 5 | ::: 6 | 7 | ## 接口描述 8 | 9 | - 用于歌曲列表搜索,支持分页。 10 | 11 | ## 接口地址 12 | 13 | - `GET` `/music/tencent/song/info` 14 | 15 | ## 请求数据类型 16 | 17 | - `application/x-www-form-urlencoded` 18 | 19 | ## 请求示例 20 | 21 | - https://api.vkeys.cn/music/tencent/song/info?id=105648974 22 | - https://api.vkeys.cn/music/tencent/song/info?mid=0023CVP23SH17s 23 | 24 | ## 请求参数 25 | 26 |
27 | 28 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 29 | |:----:|:----:|:------:|:---:|:----------------------------| 30 | | id | 否 | int | 0 | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 31 | | mid | 否 | string | / | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 32 | | type | 否 | int | 1 | 歌曲类型 | 33 | 34 |
35 | 36 | ## 返回示例 37 | 38 | ``` json 39 | { 40 | "code": 0, 41 | "message": "访问成功", 42 | "data": { 43 | "songID": 105648974, //歌曲ID 44 | "songMID": "0023CVP23SH17s", //歌曲mid 45 | "vid": "v00199a1i1e", //mv的vid 46 | "title": "梦回还", //歌曲名 47 | "subtitle": "《狐妖小红娘·王权篇》网络动画片头曲", //副标题 48 | "album": "狐妖小红娘 动画原声带", //专辑名 49 | "singer": "呦猫UNEKO", //歌手名(多个歌手以/分割) 50 | "singerList": [ //歌手列表 51 | { 52 | "id": 1092914, //歌手ID 53 | "mid": "003VD9fu3Eh1q4", //歌手mid 54 | "name": "呦猫UNEKO", //歌手名 55 | "pmid": "", 56 | "title": "呦猫UNEKO", //歌手名 57 | "type": 1, 58 | "uin": 0 59 | } 60 | ], 61 | "cover": "https://y.qq.com/music/photo_new/T002R800x800M000000wd19g0wTd0d.jpg",//封面地址 62 | "pay": "付费", //是否付费(初步判断) 63 | "time": "2016-07-08", //发布时间 64 | "type": 0, //歌曲类型(点歌时需要用到) 65 | "bpm": 84, //BPM值 66 | "content": "", 67 | "grp": [], //多版本列表,此接口无效 68 | "qualityInfo": [// 音质列表 69 | { 70 | "type": 0, // 音质id,点歌时需要 71 | "size": 960887, //文件大小,0为无效 72 | "quality": "音乐试听", // 音质名 73 | "file": "RS020023CVP23SH17s.mp3" // 文件名 74 | }, 75 | { 76 | "type": 1, 77 | "size": 0, 78 | "quality": "有损音质", 79 | "file": "C100003t4TGX46UGp7.m4a" 80 | }, 81 | { 82 | "type": 2, 83 | "size": 1522964, 84 | "quality": "有损音质", 85 | "file": "C200003t4TGX46UGp7.m4a" 86 | }, 87 | { 88 | "type": 3, 89 | "size": 3043806, 90 | "quality": "有损音质", 91 | "file": "C400003t4TGX46UGp7.m4a" 92 | }, 93 | { 94 | "type": 4, 95 | "size": 6048661, 96 | "quality": "标准音质", 97 | "file": "C600003t4TGX46UGp7.m4a" 98 | }, 99 | { 100 | "type": 5, 101 | "size": 3025258, 102 | "quality": "标准音质", 103 | "file": "O400003t4TGX46UGp7.ogg" 104 | }, 105 | { 106 | "type": 6, 107 | "size": 4001341, 108 | "quality": "标准音质", 109 | "file": "M500003t4TGX46UGp7.mp3" 110 | }, 111 | { 112 | "type": 7, 113 | "size": 6127530, 114 | "quality": "标准音质", 115 | "file": "O600003t4TGX46UGp7.ogg" 116 | }, 117 | { 118 | "type": 8, 119 | "size": 10003026, 120 | "quality": "HQ高音质", 121 | "file": "M800003t4TGX46UGp7.mp3" 122 | }, 123 | { 124 | "type": 9, 125 | "size": 10870748, 126 | "quality": "HQ高音质", 127 | "file": "O800003t4TGX46UGp7.ogg" 128 | }, 129 | { 130 | "type": 10, 131 | "size": 58775435, 132 | "quality": "SQ无损音质", 133 | "file": "F000003t4TGX46UGp7.flac" 134 | }, 135 | { 136 | "type": 11, 137 | "size": 0, 138 | "quality": "Hi-Res音质", 139 | "file": "RS01003t4TGX46UGp7.flac" 140 | }, 141 | { 142 | "type": 12, 143 | "size": 0, 144 | "quality": "杜比全景声", 145 | "file": "D001003t4TGX46UGp7.mp4" 146 | }, 147 | { 148 | "type": 13, 149 | "size": 32270821, 150 | "quality": "臻品全景声", 151 | "file": "Q000000Ok4Fl4ckn34.flac" 152 | }, 153 | { 154 | "type": 14, 155 | "size": 188505804, 156 | "quality": "臻品母带2.0", 157 | "file": "AI00004XGZCG3gCeKc.flac" 158 | }, 159 | { 160 | "type": 15, 161 | "size": 21475189, 162 | "quality": "AI伴奏消音(试验)", 163 | "file": "O801003YeTqm3yCpZQ.ogg" 164 | }, 165 | { 166 | "type": 16, 167 | "size": 82846386, 168 | "quality": "AI人声消音(试验)", 169 | "file": "Q001000Ok4Fl4ckn34.flac" 170 | } 171 | ] 172 | }, 173 | "time": "2025-04-08 14:29:43", 174 | "pid": 11444, 175 | "tips": "欢迎使用落月API-V3" 176 | } 177 | ``` 178 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/用户相关接口/2-playlist.md: -------------------------------------------------------------------------------- 1 | # 获取用户收藏API 2 | 3 | ::: danger 4 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 5 | ::: 6 | 7 | ## 接口描述 8 | 9 | - 用于歌曲列表搜索,支持分页。 10 | 11 | ## 接口地址 12 | 13 | - `GET` `/music/tencent/user/playlist` 14 | 15 | ## 请求数据类型 16 | 17 | - `application/x-www-form-urlencoded` 18 | 19 | ## 请求示例 20 | 21 | - https://api.vkeys.cn/music/tencent/user/playlist?uin=1569097443 22 | 23 | ## 请求参数 24 | 25 |
26 | 27 | | 参数名 | 是否必选 | 数据类型 | 默认值 | 说明 | 28 | |:---:|:----:|:------:|:---:|:----| 29 | | uin | 是 | int | / | QQ号 | 30 | 31 |
32 | 33 | ## 返回示例 34 | 35 | ``` json 36 | { 37 | "code": 0, 38 | "message": "访问成功", 39 | "data": { 40 | "likeSong": { 41 | "tid": 1754192231, 42 | "uin": "1569097443", 43 | "nick": "", 44 | "title": "我喜欢", 45 | "image": "http://y.gtimg.cn/mediastyle/y/img/cover_love_300.jpg", 46 | "songNum": 442, 47 | "createTime": 1746534001, 48 | "updateTime": 1745261358 49 | }, 50 | "myDiss": [ 51 | { 52 | "tid": 8315602051, 53 | "uin": "1569097443", 54 | "nick": "", 55 | "title": "水·花", 56 | "image": "", 57 | "songNum": 11, 58 | "createTime": 1642052979, 59 | "updateTime": 1665127741 60 | }, 61 | { 62 | "tid": 8026554234, 63 | "uin": "1569097443", 64 | "nick": "", 65 | "title": "aa", 66 | "image": "http://y.gtimg.cn/music/photo_new/T002R500x500M000002DbpNa1zRNqa.jpg?n=1", 67 | "songNum": 25, 68 | "createTime": 1623328208, 69 | "updateTime": 1690696093 70 | }, 71 | { 72 | "tid": 6751322298, 73 | "uin": "1569097443", 74 | "nick": "", 75 | "title": "好听的", 76 | "image": "http://y.gtimg.cn/music/photo_new/T002R500x500M000003s6uBn238PvQ.jpg?n=1", 77 | "songNum": 58, 78 | "createTime": 1551270593, 79 | "updateTime": 1690307616 80 | } 81 | ], 82 | "likeDiss": [ 83 | { 84 | "tid": 7853791967, 85 | "uin": "2830388142", 86 | "nick": "墨雨", 87 | "title": "妄想症系列", 88 | "image": "http://qpic.y.qq.com/music_cover/EEIuGFXJcibxA80v5Hc1RNhwkFJ8zwicIQkIG2hyGSUYrGkRvxp8J6NQ/600?n=1", 89 | "songNum": 10, 90 | "createTime": 1610299800, 91 | "updateTime": 1610830387 92 | }, 93 | { 94 | "tid": 7793074360, 95 | "uin": "2993552933", 96 | "nick": "早睡早起", 97 | "title": "〖洛天依〗恋爱理论", 98 | "image": "http://qpic.y.qq.com/music_cover/3o3EV9KZWcK7icPUAuETxpQ25J4GZ7icmbygc90z8jTvsj4NtBeAmTPw/600?n=1", 99 | "songNum": 8, 100 | "createTime": 1606229589, 101 | "updateTime": 1611923682 102 | }, 103 | { 104 | "tid": 7670951918, 105 | "uin": "2256154299", 106 | "nick": "轻痕无迹", 107 | "title": "国风电子|洛天依的华夏情怀", 108 | "image": "http://qpic.y.qq.com/music_cover/xnI1ZgbxtYofBy9PIcmqEP89CZnZgtPxBCaSHXGeqy3aPbnqCiby9bw/600?n=1", 109 | "songNum": 44, 110 | "createTime": 1596960244, 111 | "updateTime": 1648646235 112 | }, 113 | { 114 | "tid": 7627299556, 115 | "uin": "2256154299", 116 | "nick": "轻痕无迹", 117 | "title": "[洛天依]洛殿下歌曲精选之古风集", 118 | "image": "http://qpic.y.qq.com/music_cover/xnI1ZgbxtYofBy9PIcmqEP6TVVtKvveUMAaeDGD1Avz9NjUNjH3bWg/600?n=1", 119 | "songNum": 111, 120 | "createTime": 1593957908, 121 | "updateTime": 1715354975 122 | }, 123 | { 124 | "tid": 6954294851, 125 | "uin": "1181707581", 126 | "nick": "妮蔻玲可莉", 127 | "title": "可爱到爆炸 800首萌音的洗脑", 128 | "image": "http://qpic.y.qq.com/music_cover/S6tZcNpwzyEmry2LnEzibR3HHiam4mErbmtFjtEzFIlyrJtj7kqtwPicA/600?n=1", 129 | "songNum": 825, 130 | "createTime": 1556417079, 131 | "updateTime": 1703831303 132 | }, 133 | { 134 | "tid": 6937788130, 135 | "uin": "1812948313", 136 | "nick": "听风Xyi", 137 | "title": "国风动漫 · 若忘此生来世忆", 138 | "image": "http://qpic.y.qq.com/music_cover/qH8rLHHhL8O8Iibm56uPzJxicMIUJV96BOCHh79SuW8JA50SMsDMZXVg/600?n=1", 139 | "songNum": 28, 140 | "createTime": 1555301126, 141 | "updateTime": 1631209275 142 | }, 143 | { 144 | "tid": 1167624049, 145 | "uin": "3050999021", 146 | "nick": "淡白的阳光", 147 | "title": "「ACG」洛天依古风曲大盘点", 148 | "image": "http://qpic.y.qq.com/music_cover/az4TLJ60PVdO54ZsMQeKYooXkEGq2GlKGpI5AXclxIpgoC0BLByHAQ/600?n=1", 149 | "songNum": 115, 150 | "createTime": 1498044379, 151 | "updateTime": 1659892414 152 | } 153 | ] 154 | }, 155 | "time": "2025-05-06 20:20:02", 156 | "pid": 40, 157 | "tips": "欢迎使用落月API-V3" 158 | } 159 | ``` 160 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/4-playlist.md: -------------------------------------------------------------------------------- 1 | # 歌单搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于歌单列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/playlist` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/playlist?keyword=洛天依作品集 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 歌单名称 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": { // [!code ++] 37 | "total": 289, //搜索结果总数 [!code ++] 38 | "nextPage": 2, //下一页的页码 [!code ++] 39 | "perPage": 10 //当前每页显示数 [!code ++] 40 | }, // [!code ++] 41 | "list": [ 42 | { 43 | "dissID": "1469226790", //歌单id 44 | "dissName": "洛天依作品集", //歌单名称 45 | "dissPic": "http://y.gtimg.cn/music/photo_new/T002R300x300M000001gQ5oZ3ZIbAw.jpg?n=1", //歌单封面 46 | "introduction": "洛天依之追光使者洛天依", //歌单简介 47 | "songCount": 409, // 歌曲数量 48 | "qq": 3341727742, //创建者QQ 49 | "listenum": 63411, // 播放量 50 | "createTime": "2017-06-16", //创建时间 51 | "modifyTime": "2024-09-01" //更新时间 52 | }, 53 | { 54 | "dissID": "3571679444", 55 | "dissName": "洛天依作品集", 56 | "dissPic": "http://y.gtimg.cn/music/photo_new/T002R300x300M000004WJ7Yo421SNH.jpg?n=1", 57 | "introduction": "恰似你的温柔,洛天依给你带来快乐。", 58 | "songCount": 168, 59 | "qq": 739904599, 60 | "listenum": 27079, 61 | "createTime": "2017-07-09", 62 | "modifyTime": "2018-11-17" 63 | }, 64 | { 65 | "dissID": "2944228749", 66 | "dissName": "洛天依作品集", 67 | "dissPic": "http://qpic.y.qq.com/music_cover/eicCfYgX0hvaYS4KMD2PZWWQhwmW7nUiaPoib5EjicpBmia49wK8ex2EEkw/300?n=1", 68 | "introduction": "这里是洛天依迷的歌单呐~我自己也是。我已经尽量把歌单丰富了,但是达到上限了。我觉得惋惜,对不起了,各位!

歌单作者,铭晨留。", 69 | "songCount": 999, 70 | "qq": 122974457, 71 | "listenum": 21629, 72 | "createTime": "2017-01-07", 73 | "modifyTime": "2019-09-10" 74 | }, 75 | { 76 | "dissID": "1462266537", 77 | "dissName": " 洛天依作品集", 78 | "dissPic": "http://qpic.y.qq.com/music_cover/pD0SibuibAVRMUOOiaAjJPOxkxgQ2CSmQ696jhcdY1jLv5ZCQEr3VrSOA/300?n=1", 79 | "introduction": "洛天依洛天依洛天依洛天依洛天依洛天依洛天依", 80 | "songCount": 109, 81 | "qq": 2891000732, 82 | "listenum": 18292, 83 | "createTime": "2017-04-24", 84 | "modifyTime": "2019-08-22" 85 | }, 86 | { 87 | "dissID": "3186267568", 88 | "dissName": "洛天依作品集", 89 | "dissPic": "http://qpic.y.qq.com/music_cover/PJpqE89pQzOM6iaLicxvLAVls94bkFk5IkeurOutoRE7JrLwDv7U8Mjg/300?n=1", 90 | "introduction": "天依宝宝的作品集,加油,love you", 91 | "songCount": 31, 92 | "qq": 156387868, 93 | "listenum": 17815, 94 | "createTime": "2010-07-30", 95 | "modifyTime": "2017-08-09" 96 | }, 97 | { 98 | "dissID": "745606172", 99 | "dissName": "洛天依作品集", 100 | "dissPic": "http://qpic.y.qq.com/music_cover/O0qtbxjiaiar7A3GsvrtTfBb5aicbRLy7yfiaj1WhicZbVG1yC3atq62LWQ/300?n=1", 101 | "introduction": "你是洛天依的粉丝吗?是的话就快来听这些歌吧", 102 | "songCount": 420, 103 | "qq": 2782862320, 104 | "listenum": 16706, 105 | "createTime": "2015-02-03", 106 | "modifyTime": "2022-10-30" 107 | }, 108 | { 109 | "dissID": "1457575363", 110 | "dissName": "洛天依作品集", 111 | "dissPic": "http://qpic.y.qq.com/music_cover/Y1hiaAvOFPzDXTq6gBeEc0BkicibkWnLXarcd9ZQSt3Gib84Nhia0okHN2w/300?n=1", 112 | "introduction": "!!!!!!!!!!!!!!!!!!!!!!", 113 | "songCount": 649, 114 | "qq": 1656864332, 115 | "listenum": 16280, 116 | "createTime": "2017-03-19", 117 | "modifyTime": "2017-05-06" 118 | }, 119 | { 120 | "dissID": "2622473421", 121 | "dissName": "洛天依作品集", 122 | "dissPic": "http://qpic.y.qq.com/music_cover/K1DxGIW9dOwP9dL6qjYnZQHQovO8MIibduQZAGJwkaF5ibibss3DpeBKw/300?n=1", 123 | "introduction": "天依独唱及与阿绫言和和心华星尘合唱。。
都是老曲子了", 124 | "songCount": 652, 125 | "qq": 2215356586, 126 | "listenum": 14457, 127 | "createTime": "2016-06-24", 128 | "modifyTime": "2019-08-10" 129 | }, 130 | { 131 | "dissID": "1155013959", 132 | "dissName": "洛天依作品集", 133 | "dissPic": "http://qpic.y.qq.com/music_cover/pPDCthTn5RGdQcY2DaibiaiaH0dUsh4BOgadleJn6MIaNBQwH6d4bzOdw/300?n=1", 134 | "introduction": "洛天依单品合集 超治愈", 135 | "songCount": 395, 136 | "qq": 468621421, 137 | "listenum": 13982, 138 | "createTime": "2017-03-18", 139 | "modifyTime": "2017-03-30" 140 | }, 141 | { 142 | "dissID": "2342340771", 143 | "dissName": "洛天依作品集", 144 | "dissPic": "http://qpic.y.qq.com/music_cover/m42gVSkGzvcSictSiark0ibpeXDffLRxwKjzYD5mJZBeLd7yu6VjTmWcw/300?n=1", 145 | "introduction": "你也喜欢洛天依的歌吗?那就来听一听吧!", 146 | "songCount": 166, 147 | "qq": 3306255015, 148 | "listenum": 11018, 149 | "createTime": "2016-11-26", 150 | "modifyTime": "2017-03-30" 151 | } 152 | ] 153 | }, 154 | "time": "2025-04-15 20:06:43", 155 | "pid": 15668, 156 | "tips": "欢迎使用落月API-V3" 157 | } 158 | ``` 159 | -------------------------------------------------------------------------------- /src/v2/音乐模块/网易云音乐/2-lyric.md: -------------------------------------------------------------------------------- 1 | # 歌词API 2 | 3 | ## 简要描述 4 | 5 | - 这是一个获取网易云音乐歌词接口,只能用于获取歌词,其他参数无效。 6 | - 所需参数在搜索或获取播放地址时获取 7 | 8 | ## 请求URL 9 | - `/v2/music/netease/lyric` 10 | 11 | ## 请求方式 12 | - `GET` / `POST` 13 | 14 | ## 请求示例 15 | - https://api.vkeys.cn/v2/music/netease/lyric?id=2078368206 16 | 17 | ## 请求参数 18 | 19 | | 参数名 | 是否必选 | 数据类型 | 说明 | 20 | |:---:|:----:|:----:|:-----| 21 | | id | 是/否 | int | 歌曲id | 22 | 23 | ## 返回示例 24 | ``` json 25 | { 26 | "code": 200, 27 | "message": "请求成功!", 28 | "data": { 29 | "lrc": "[00:00.00]作词: 乐仔\n[00:01.00]作曲: 徐肖@Alnova\n[00:02.00]编曲: 徐肖@Alnova\n[00:03.00]制作人: 赵磊\n[00:12.42]ya la hu la\n[00:15.84]任天地之间 吟游四方\n[00:19.68]偶尔有风浪\n[00:23.22]是否也无妨\n[00:26.43]\n[00:31.92]耳边牧歌送来青色海洋\n[00:34.77]看朝霞 吻他乡\n[00:39.06]远看仙女嬉戏雪山间\n[00:41.64]天音也悠扬\n[00:46.26]\n[00:46.29]琴声沙哑越过西域长廊\n[00:49.17]惹昭君 裙舞旋转\n[00:52.74]千山万水 写成诗篇里的远方\n[00:58.83]\n[00:59.67]那些对生活的向往\n[01:03.30]流进这梦想的微光\n[01:06.81]星空下眺望却 听见南来北往\n[01:11.61]\n[01:11.64]a ya la hu la\n[01:17.43]任天地之间 吟游四方\n[01:20.91]行囊厚如山\n[01:24.57]思绪却柔软\n[01:28.98]\n[01:29.01]a ya la hu la\n[01:31.86]任天地之间 吟游四方\n[01:35.52]偶尔有风浪\n[01:38.97]我想也无妨\n[01:42.39]\n[02:11.67]那些对生活的向往\n[02:15.30]流进这梦想的微光\n[02:18.78]星空下眺望却 听见南来北往\n[02:23.61]\n[02:26.47]a ya la hu la\n[02:30.36]任天地之间 吟游四方\n[02:33.84]行囊厚如山\n[02:37.50]思绪却柔软\n[02:40.82]a ya la hu la\n[02:44.76]任天地之间 吟游四方\n[02:48.45]偶尔有风浪\n[02:51.87]我想也无妨\n[02:54.36]\n[02:55.56]a ya la hu la\n[02:59.13]听声声不息 吟游四方\n[03:02.58]寻烟火的绚烂\n[03:06.27]就在此生此刻\n[03:08.10]平淡也有光\n[03:09.84]\n[03:09.87]来 扬帆远航 人海茫茫\n[03:13.56]有歌的地方 自有向往\n[03:16.83]岁月不声不响\n[03:22.38]肆意而生长\n[03:23.87]调校:Creuzer\n[03:25.37]和声:徐肖@Alnova/ 于妍 / 张超俊 / 高海旭 / 张娜\n[03:26.86]录音:贠昕成/刘芷钰/北京艾基木音乐工作室/拉萨蓝面具音乐工作室混音 \n[03:28.36]母带:赵靖\n[03:29.86]葫芦丝:丁晓逵\n[03:31.35]冬不拉:穆热阿勒·比目拉提\n[03:32.85]藏戏 / 藏鼓 / 钹:旦增益西\n[03:34.34]马头琴 / 呼麦:哈拉木吉\n[03:35.84]热瓦普:努日亚·阿不力米提\n[03:37.34]新疆手鼓:依克拉姆·外力\n[03:38.83]出品:徐博(波吉)\n[03:40.33]项目策划:黄欢淼 / 林捷\n[03:41.82]版权所有:上海哔哩哔哩科技有限公司/ Vsinger\n[03:43.32]版权声明:未经著作权人书面许可,任何人不得以任何方式使用(包括翻唱、翻录等)\n\n", 30 | "yrc": "{\"t\":0,\"c\":[{\"tx\":\"作词: \"},{\"tx\":\"乐仔\"}]}\n{\"t\":3105,\"c\":[{\"tx\":\"作曲: \"},{\"tx\":\"徐肖@Alnova\"}]}\n{\"t\":6210,\"c\":[{\"tx\":\"编曲: \"},{\"tx\":\"徐肖@Alnova\"}]}\n{\"t\":9315,\"c\":[{\"tx\":\"制作人: \"},{\"tx\":\"赵磊\"}]}\n[12420,3470](12420,290,0)ya (12710,380,0)la (13090,90,0)hu (13180,60,0)la\n[15890,3800](15890,270,0)任(16160,360,0)天(16520,320,0)地(16840,240,0)之(17080,600,0)间 (17680,320,0)吟(18000,630,0)游(18630,360,0)四(18990,430,0)方\n[19690,3600](19690,240,0)偶(19930,310,0)尔(20240,320,0)有(20560,190,0)风(20850,270,0)浪\n[23290,8580](23290,360,0)是(23650,320,0)否(23970,320,0)也(24290,280,0)无(24570,1860,0)妨\n[31870,2920](31870,130,0)耳(32000,280,0)边(32280,170,0)牧(32450,240,0)歌(32690,220,0)送(32910,220,0)来(33130,190,0)青(33320,240,0)色(33560,280,0)海(33840,440,0)洋\n[34790,4270](34790,340,0)看(35130,200,0)朝(35330,620,0)霞 (36590,310,0)吻(36900,250,0)他(37150,850,0)乡\n[39060,2600](39060,180,0)远(39240,160,0)看(39400,260,0)仙(39660,210,0)女(39870,200,0)嬉(40070,290,0)戏(40360,140,0)雪(40500,280,0)山(40780,610,0)间\n[41660,4520](41660,370,0)天(42030,210,0)音(42240,360,0)也(42600,610,0)悠(43210,370,0)扬\n[46180,3010](46180,200,0)琴(46380,250,0)声(46630,210,0)沙(46840,320,0)哑(47160,140,0)越(47300,250,0)过(47550,280,0)西(47830,150,0)域(47980,550,0)长(48530,470,0)廊\n[49190,3580](49190,340,0)惹(49530,250,0)昭(49780,560,0)君 (50340,340,0)裙(50680,570,0)舞(51250,340,0)旋(51590,1010,0)转\n[52770,6900](52770,300,0)千(53070,300,0)山(53370,310,0)万(53680,670,0)水 (54510,390,0)写(54900,240,0)成(55140,340,0)诗(55480,340,0)篇(55820,350,0)里(56170,380,0)的(56660,350,0)远(57010,1050,0)方\n[59670,3650](59670,290,0)那(59960,410,0)些(60370,200,0)对(60570,580,0)生(61150,380,0)活(61530,470,0)的(62030,300,0)向(62330,770,0)往\n[63320,3540](63320,310,0)流(63630,300,0)进(63930,230,0)这(64160,570,0)梦(64730,410,0)想(65140,310,0)的(65720,300,0)微(66020,520,0)光\n[66860,7010](66860,360,0)星(67220,240,0)空(67460,350,0)下(67810,490,0)眺(68300,360,0)望(68660,450,0)却 (69270,310,0)听(69580,540,0)见(70120,380,0)南(70500,540,0)来(71040,390,0)北(71430,500,0)往\n[73870,3570](73870,110,0)a (73980,400,0)ya (74380,170,0)la (76920,60,0)hu (76980,420,0)la\n[77440,3580](77440,270,0)任(77710,340,0)天(78050,300,0)地(78350,250,0)之(78600,250,0)间 (79300,210,0)吟(79510,260,0)游(79990,420,0)四(80410,330,0)方\n[81020,3610](81020,320,0)行(81340,280,0)囊(81620,320,0)厚(81940,180,0)如(82120,350,0)山\n[84630,3650](84630,270,0)思(84900,300,0)绪(85200,250,0)却(85450,350,0)柔(85800,360,0)软\n[88280,3580](88280,100,0)a (88380,430,0)ya (88810,280,0)la (89090,300,0)hu (89390,190,0)la\n[91860,3700](91860,280,0)任(92140,300,0)天(92440,300,0)地(92740,260,0)之(93030,540,0)间 (93600,330,0)吟(93930,280,0)游(94550,280,0)四(94830,310,0)方\n[95560,3480](95560,200,0)偶(95760,260,0)尔(96020,290,0)有(96310,260,0)风(96570,210,0)浪\n[99040,32630](99040,180,0)我(99220,400,0)想(99620,320,0)也(99940,240,0)无(100180,220,0)妨\n[131670,3630](131670,290,0)那(131960,400,0)些(132360,210,0)对(132570,550,0)生(133120,410,0)活(133530,430,0)的(133990,350,0)向(134340,760,0)往\n[135300,3560](135300,330,0)流(135630,310,0)进(135940,220,0)这(136160,590,0)梦(136750,370,0)想(137120,310,0)的(137760,230,0)微(137990,550,0)光\n[138860,7910](138860,370,0)星(139230,230,0)空(139460,330,0)下(139790,530,0)眺(140320,350,0)望(140670,410,0)却 (141310,270,0)听(141580,540,0)见(142120,370,0)南(142490,530,0)来(143020,410,0)北(143430,370,0)往\n[146770,3620](146770,517,0)a (147287,517,0)ya (148321,517,0)la (149355,517,0)hu (149872,518,0)la\n[150390,3490](150390,210,0)任(150600,360,0)天(150960,280,0)地(151240,230,0)之(151470,320,0)间 (152130,300,0)吟(152440,250,0)游(153000,300,0)四(153370,160,0)方\n[153880,3670](153880,300,0)行(154180,230,0)囊(154440,390,0)厚(154830,170,0)如(155000,320,0)山\n[157550,2260](157550,250,0)思(157800,270,0)绪(158070,280,0)却(158350,380,0)柔(158730,310,0)软\n[159810,4960](159810,30,0)a (159840,760,0)ya (160640,860,0)la (162080,220,0)hu (162300,170,0)la\n[164770,3680](164770,200,0)任(164970,360,0)天(165330,320,0)地(165650,240,0)之(165890,220,0)间 (166560,270,0)吟(166830,540,0)游(167370,330,0)四(167770,680,0)方\n[168450,3480](168450,270,0)偶(168740,180,0)尔(168920,290,0)有(169210,190,0)风(169500,240,0)浪\n[171930,3640](171930,190,0)我(172120,380,0)想(172500,320,0)也(172820,260,0)无(173080,1830,0)妨\n[175570,3560](175570,100,0)a (175670,410,0)ya (176080,240,0)la (176320,250,0)hu (176570,60,0)la\n[179130,3500](179130,260,0)听(179390,290,0)声(179680,360,0)声(180040,240,0)不(180280,220,0)息 (180960,270,0)吟(181230,480,0)游(181770,320,0)四(182090,240,0)方\n[182630,3710](182630,400,0)寻(183030,320,0)烟(183350,180,0)火(183530,310,0)的(183840,360,0)绚(184710,1320,0)烂\n[186340,1700](186340,180,0)就(186520,110,0)在(186630,260,0)此(186890,340,0)生(187230,330,0)此(187560,180,0)刻\n[188040,1840](188040,420,0)平(188460,240,0)淡(188700,330,0)也(189030,300,0)有(189330,480,0)光\n[189880,3650](189880,340,0)来 (190220,320,0)扬(190540,280,0)帆(190820,210,0)远(191100,270,0)航 (191760,270,0)人(192030,570,0)海(192600,300,0)茫(192900,270,0)茫\n[193530,3040](193530,210,0)有(193740,150,0)歌(193890,240,0)的(194130,240,0)地(194370,330,0)方 (195210,140,0)自(195350,190,0)有(195540,300,0)向(195840,60,0)往\n[196570,5850](196570,731,0)岁(197301,731,0)月(198763,731,0)不(199494,731,0)声(200225,731,0)不(200956,731,0)响\n[202420,20910](202420,390,0)肆(202810,410,0)意(203220,170,0)而(203390,320,0)生(203710,2490,0)长\n{\"t\":223330,\"c\":[{\"tx\":\"调校:Creuzer\"}]}\n{\"t\":223430,\"c\":[{\"tx\":\"和声:徐肖@Alnova/ 于妍 / 张超俊 / 高海旭 / 张娜\"}]}\n{\"t\":223530,\"c\":[{\"tx\":\"录音:贠昕成/刘芷钰/北京艾基木音乐工作室/拉萨蓝面具音乐工作室混音 \"}]}\n{\"t\":223630,\"c\":[{\"tx\":\"母带:赵靖\"}]}\n{\"t\":223730,\"c\":[{\"tx\":\"葫芦丝:丁晓逵\"}]}\n{\"t\":223830,\"c\":[{\"tx\":\"冬不拉:穆热阿勒·比目拉提\"}]}\n{\"t\":223930,\"c\":[{\"tx\":\"藏戏 / 藏鼓 / 钹:旦增益西\"}]}\n{\"t\":224030,\"c\":[{\"tx\":\"马头琴 / 呼麦:哈拉木吉\"}]}\n{\"t\":224130,\"c\":[{\"tx\":\"热瓦普:努日亚·阿不力米提\"}]}\n{\"t\":224230,\"c\":[{\"tx\":\"新疆手鼓:依克拉姆·外力\"}]}\n{\"t\":224330,\"c\":[{\"tx\":\"出品:徐博(波吉)\"}]}\n{\"t\":224430,\"c\":[{\"tx\":\"项目策划:黄欢淼 / 林捷\"}]}\n{\"t\":224530,\"c\":[{\"tx\":\"版权所有:上海哔哩哔哩科技有限公司/ Vsinger\"}]}\n{\"t\":224630,\"c\":[{\"tx\":\"版权声明:未经著作权人书面许可,任何人不得以任何方式使用(包括翻唱、翻录等)\"}]}\n" 31 | }, 32 | "time": "2024-01-12 15:28:59", 33 | "tips": "欢迎使用API-Server" 34 | } 35 | ``` 36 | 37 | ## 备注 38 | 39 | - [点击查看调用信息](https://api.vkeys.cn/V1/Music/Netease/Lyric/Call "点击查看调用信息") 40 | -------------------------------------------------------------------------------- /src/v3/音乐模块/QQ音乐/搜索相关接口/6-mv.md: -------------------------------------------------------------------------------- 1 | # 视频(MV)搜索API 2 | ::: danger 3 | 此接口仍在开发中,在此期间接口可能会经常变更,不建议使用。 4 | ::: 5 | 6 | ## 接口描述 7 | 8 | - 用于视频列表搜索,支持分页。 9 | 10 | ## 接口地址 11 | - `GET` `/music/tencent/search/mv` 12 | 13 | ## 请求数据类型 14 | - `application/x-www-form-urlencoded` 15 | 16 | ## 请求示例 17 | - https://api.vkeys.cn/music/tencent/search/mv?keyword=追光使者 18 | 19 | ## 请求参数 20 |
21 | 22 | | 参数名 | 是否必填 | 数据类型 | 默认值 | 说明 | 23 | |:-------:|:----:|:-------:|:---:|:----------------| 24 | | keyword | 是 | string | / | 视频名称 | 25 | | page | 否 | int | 1 | 当前页数 | 26 | | limit | 否 | int | 10 | 每页显示数,区间:[1,60] | 27 | 28 |
29 | 30 | ## 返回示例 31 | ``` json 32 | { 33 | "code": 0, 34 | "message": "访问成功", 35 | "data": { 36 | "meta": { // [!code ++] 37 | "total": 16, //搜索结果总数 [!code ++] 38 | "nextPage": 2, //下一页的页码 [!code ++] 39 | "perPage": 10 //当前每页显示数 [!code ++] 40 | }, // [!code ++] 41 | "list": [ 42 | { 43 | "vid": "s0022035zvf", // 视频ID 44 | "mvID": 1068730, // MV ID 45 | "mvName": "追光使者", // MV名称 46 | "mvPic": "http://y.gtimg.cn/music/photo_new/T015R640x360M101003r1thD0srXkQ.jpg", // MV封面图片 47 | "publishDate": "2017-01-04", // 发布时间 48 | "duration": 195, // 视频时长,单位:秒 49 | "playCount": 1785486, // 播放次数 50 | "uploaderNick": "", // 上传者昵称 51 | "uploaderUin": "", // 上传者UIN 52 | "singerMID": "003ktdcg3E4kaG", // 歌手MID 53 | "singerName": "洛天依", // 歌手名称 54 | "singerList": [ // 歌手列表 55 | { 56 | "id": 61386, 57 | "mid": "003ktdcg3E4kaG", 58 | "name": "洛天依", 59 | "pmid": "003ktdcg3E4kaG_7", 60 | "title": "洛天依", 61 | "type": 0, 62 | "uin": 0 63 | } 64 | ] 65 | }, 66 | { 67 | "vid": "c0024yx5qi2", 68 | "mvID": 1360366, 69 | "mvName": "追光使者 (2017洛天依全息演唱会)", 70 | "mvPic": "http://y.gtimg.cn/music/photo_new/T015R640x360M000002RGkIW2SQWGE.jpg", 71 | "publishDate": "2017-08-07", 72 | "duration": 187, 73 | "playCount": 342184, 74 | "uploaderNick": "倾听着雪花飘落的声音", 75 | "uploaderUin": "3223141926", 76 | "singerMID": "003ktdcg3E4kaG", 77 | "singerName": "洛天依", 78 | "singerList": [ 79 | { 80 | "id": 61386, 81 | "mid": "003ktdcg3E4kaG", 82 | "name": "洛天依", 83 | "pmid": "003ktdcg3E4kaG_7", 84 | "title": "洛天依", 85 | "type": 0, 86 | "uin": 0 87 | } 88 | ] 89 | }, 90 | { 91 | "vid": "011puuFb18cI28", 92 | "mvID": 16219862, 93 | "mvName": "【洛天依原创】追光使者【官方PV版】", 94 | "mvPic": "http://y.gtimg.cn/music/photo_new/T023R750x750M0000029jIK63GCXrX.jpg", 95 | "publishDate": "2021-09-14", 96 | "duration": 195, 97 | "playCount": 251, 98 | "uploaderNick": "最IN乐", 99 | "uploaderUin": "1728803671", 100 | "singerMID": "0032fmHO2UDnV3", 101 | "singerName": "", 102 | "singerList": [] 103 | }, 104 | { 105 | "vid": "0112669H3Hh4gT", 106 | "mvID": 11850730, 107 | "mvName": "马可搭档洛天依乐正绫 同框合唱《追光使者》", 108 | "mvPic": "http://y.gtimg.cn/music/photo_new/T023R750x750M000001xOn0d06JPJR.jpg", 109 | "publishDate": "2020-10-23", 110 | "duration": 239, 111 | "playCount": 771, 112 | "uploaderNick": "最IN乐", 113 | "uploaderUin": "1728803671", 114 | "singerMID": "0032fmHO2UDnV3", 115 | "singerName": "", 116 | "singerList": [] 117 | }, 118 | { 119 | "vid": "011ykUa20zbSCK", 120 | "mvID": 16626766, 121 | "mvName": "洛天依《追光使者》历次演出汇总", 122 | "mvPic": "http://y.gtimg.cn/music/photo_new/T023R750x750M000004ZtrGF3hRuc7.jpg", 123 | "publishDate": "2021-10-06", 124 | "duration": 201, 125 | "playCount": 157, 126 | "uploaderNick": "乐下瓜田", 127 | "uploaderUin": "3272406171", 128 | "singerMID": "0032fmHO2UDnV3", 129 | "singerName": "", 130 | "singerList": [] 131 | }, 132 | { 133 | "vid": "0133qIju4b2TQR", 134 | "mvID": 13984407, 135 | "mvName": "原以为只是一个动漫,竟然跟着洛天依的歌声进入二次元海底世界", 136 | "mvPic": "https://y.gtimg.cn/music/photo_new/T053R750x750M000002XdNl84Ji4rr.jpg", 137 | "publishDate": "2021-05-21", 138 | "duration": 195, 139 | "playCount": 18863, 140 | "uploaderNick": "致燃音乐汇", 141 | "uploaderUin": "1152921504974775463", 142 | "singerMID": "0032fmHO2UDnV3", 143 | "singerName": "洛天依", 144 | "singerList": [] 145 | }, 146 | { 147 | "vid": "0148nLMI4Y7rQz", 148 | "mvID": 9929699, 149 | "mvName": "洛天依直播“假唱”,李佳琦对着空气一顿猛夸!680万网友看懵了", 150 | "mvPic": "https://y.gtimg.cn/music/photo_new/T023R750x750M00000241lDb2GvJko.jpg", 151 | "publishDate": "2020-04-24", 152 | "duration": 209, 153 | "playCount": 23991, 154 | "uploaderNick": "音乐Fans小琼", 155 | "uploaderUin": "3403045185", 156 | "singerMID": "0032fmHO2UDnV3", 157 | "singerName": "洛天依", 158 | "singerList": [] 159 | }, 160 | { 161 | "vid": "01040OZC31W8uu", 162 | "mvID": 15520908, 163 | "mvName": "#夏日打卡挑战 这么可爱的依依,你爱了吗#带着抖音逛漫展 #洛天依为孙越唱小白船", 164 | "mvPic": "https://y.gtimg.cn/music/photo_new/T053R750x750M000001cWMfQ1nCYmE.jpg", 165 | "publishDate": "2021-08-16", 166 | "duration": 28, 167 | "playCount": 4681, 168 | "uploaderNick": "小花猫动漫屋", 169 | "uploaderUin": "4295059946", 170 | "singerMID": "0032fmHO2UDnV3", 171 | "singerName": "洛天依/秦昊/孙越", 172 | "singerList": [] 173 | }, 174 | { 175 | "vid": "012teAxL1KtSfh", 176 | "mvID": 23159235, 177 | "mvName": "【音乐Fans小琼】 洛天依直播“假唱”,李佳琦对着空气一顿猛夸!680万网友看懵了! | 音乐Fans小琼", 178 | "mvPic": "https://y.gtimg.cn/music/photo_new/T053R750x750M000001oTAUm37HAee.jpg", 179 | "publishDate": "2022-05-18", 180 | "duration": 209, 181 | "playCount": 971, 182 | "uploaderNick": "爱听晴天的音乐君", 183 | "uploaderUin": "4295130390", 184 | "singerMID": "0032fmHO2UDnV3", 185 | "singerName": "", 186 | "singerList": [] 187 | }, 188 | { 189 | "vid": "012XNZrW0qt7BK", 190 | "mvID": 14534384, 191 | "mvName": "原以为只是一个动漫,竟然跟着洛天依的歌声进入二次元海底世界", 192 | "mvPic": "https://y.gtimg.cn/music/photo_new/T053R750x750M000003RiHvS2KEwFC.jpg", 193 | "publishDate": "2021-06-25", 194 | "duration": 188, 195 | "playCount": 172, 196 | "uploaderNick": "最美倾听", 197 | "uploaderUin": "1152921504833243136", 198 | "singerMID": "0032fmHO2UDnV3", 199 | "singerName": "", 200 | "singerList": [] 201 | } 202 | ] 203 | }, 204 | "time": "2025-04-16 19:42:42", 205 | "pid": 14, 206 | "tips": "欢迎使用落月API-V3" 207 | } 208 | ``` 209 | -------------------------------------------------------------------------------- /.vitepress/config.mts: -------------------------------------------------------------------------------- 1 | import {loadEnv, type ConfigEnv, defineConfig, type UserConfig} from 'vitepress' 2 | import {withSidebar, VitePressSidebarOptions} from 'vitepress-sidebar'; 3 | import {transformerTwoslash} from '@shikijs/vitepress-twoslash' 4 | import { createFileSystemTypesCache } from '@shikijs/vitepress-twoslash/cache-fs' 5 | import {groupIconMdPlugin} from 'vitepress-plugin-group-icons' 6 | import {withI18n} from 'vitepress-i18n'; 7 | import {withPwa} from "@vite-pwa/vitepress"; 8 | import markdownItTaskCheckbox from 'markdown-it-task-checkbox' 9 | 10 | const basePath = '/' 11 | const title = "落月API"; 12 | const description = "介绍"; 13 | 14 | 15 | // https://vitepress.dev/reference/site-config 16 | const vitePressConfig = (env): UserConfig => { 17 | return { 18 | lang: 'zh-CN', 19 | title: title, 20 | description: description, 21 | contentProps: { 22 | ...env 23 | }, 24 | sitemap: { 25 | hostname: 'https://doc.vkeys.cn/' 26 | }, 27 | metaChunk: true, 28 | // mpa: true, 29 | head: [ 30 | ['script', { 31 | src: 'https://at.alicdn.com/t/c/font_4891400_cfrebzhw43.js', 32 | }], 33 | ['script', { 34 | src: 'https://gcore.jsdelivr.net/npm/oh-my-live2d@0.19.3/dist/index.min.js',//testingcf.jsdelivr.net 35 | 'data-global': 'OML2D' 36 | }], 37 | ['script', { 38 | async: 'async', 39 | // 记得替换成你的真正的 src 40 | src: 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8772090059199613', 41 | crossorigin: 'anonymous', 42 | }], 43 | [ 44 | "link", 45 | { 46 | rel: "icon", 47 | sizes: "16x16", 48 | href: basePath + "favicon-16x16.ico" 49 | } 50 | ], 51 | [ 52 | "link", 53 | { 54 | rel: "shortcut icon", 55 | href: basePath + "favicon-16x16.ico" 56 | } 57 | ], 58 | ], 59 | markdown: { 60 | container: { 61 | tipLabel: '提示', 62 | warningLabel: '警告', 63 | dangerLabel: '危险', 64 | infoLabel: '信息', 65 | detailsLabel: '详细信息' 66 | }, 67 | image: { 68 | lazyLoading: true 69 | }, 70 | lineNumbers: true, 71 | config(md) { 72 | md.use(groupIconMdPlugin, { 73 | titleBar: {includeSnippet: true}, 74 | }) 75 | .use(markdownItTaskCheckbox) 76 | }, 77 | codeTransformers: [ 78 | transformerTwoslash({ 79 | typesCache: createFileSystemTypesCache(), 80 | }) 81 | ], 82 | languages: ['js', 'jsx', 'ts', 'tsx'] 83 | }, 84 | themeConfig: { 85 | // https://vitepress.dev/reference/default-theme-config 86 | logo: "/images/pwa-512x512.png", 87 | socialLinks: [ 88 | {icon: 'github', link: 'https://github.com/lvluoyue/api-doc'}, 89 | {icon: 'qq', link: 'https://github.com/lvluoyue/api-doc'}, 90 | ], 91 | nav: [ 92 | {text: '介绍', link: '/jieshao'}, 93 | {text: 'MCP服务器', link: '/mcp'}, 94 | { 95 | text: '版本', 96 | items: [ 97 | {text: 'v3', link: '/v3'}, 98 | {text: 'v2', link: '/v2'}, 99 | {text: 'v1', link: '/v1'}, 100 | ] 101 | } 102 | ], 103 | search: { 104 | provider: "local", 105 | options: { 106 | miniSearch: { 107 | options: { 108 | /* ... */ 109 | }, 110 | searchOptions: { 111 | /* ... */ 112 | }, 113 | }, 114 | translations: { 115 | button: { 116 | buttonText: "搜索文档", 117 | buttonAriaLabel: "搜索文档", 118 | }, 119 | modal: { 120 | noResultsText: "没有找到结果", 121 | resetButtonTitle: "清除搜索条件", 122 | footer: { 123 | selectText: "选择", 124 | navigateText: "切换", 125 | closeText: "关闭", 126 | }, 127 | }, 128 | }, 129 | }, 130 | }, 131 | 132 | footer: { 133 | // message: `京ICP备20016634号-2`, 134 | copyright: `版权所有 © 2023-${new Date().getFullYear()} 落月`, 135 | }, 136 | 137 | docFooter: { 138 | prev: "上一页", 139 | next: "下一页", 140 | }, 141 | 142 | // https://vitepress.dev/zh/reference/default-theme-config#outline 143 | outline: { 144 | level: [2, 3], 145 | label: "页面导航", 146 | }, 147 | 148 | editLink: { 149 | pattern: 'https://github.com/lvluoyue/api-doc/edit/main/src/:path' 150 | }, 151 | 152 | lastUpdated: { 153 | text: "最后更新于", 154 | formatOptions: { 155 | dateStyle: "short", // full 156 | timeStyle: "medium", // medium 157 | hourCycle: "h24" 158 | }, 159 | }, 160 | 161 | langMenuLabel: "多语言", 162 | returnToTopLabel: "回到顶部", 163 | sidebarMenuLabel: "菜单", 164 | darkModeSwitchLabel: "主题", 165 | lightModeSwitchTitle: "切换到浅色模式", 166 | darkModeSwitchTitle: "切换到深色模式", 167 | }, 168 | outDir: 'dist', 169 | srcDir: 'src', 170 | cacheDir: '.cache', 171 | base: basePath, 172 | vite: { 173 | configFile: './vite.config.mts' 174 | }, 175 | pwa: { 176 | devOptions: { 177 | enabled: true, 178 | suppressWarnings: true, 179 | type: 'module', 180 | navigateFallback: '/', 181 | resolveTempFolder: () => 'dev-dist' 182 | }, 183 | mode: env.VITE_APP_MODE || 'development', 184 | base: basePath, 185 | outDir: "../dist", // 输出目录 186 | registerType: "autoUpdate", // 注册类型为自动更新 187 | includeManifestIcons: false, // 不包含清单图标 188 | display: "fullscreen", 189 | manifest: { 190 | id: "1", // 清单 ID 191 | name: title, // 应用名称 192 | short_name: title, // 应用的短名称 193 | description: description, // 应用的描述 194 | theme_color: "#ffffff", // 主题颜色 195 | lang: "zh-CN", 196 | version: "1.0.1", 197 | icons: [ 198 | { 199 | src: "./images/pwa-192x192.png", // 图标路径 200 | sizes: "192x192", // 图标尺寸 201 | type: "image/png", // 图标类型 202 | purpose: "any", 203 | }, 204 | { 205 | src: "./images/pwa-512x512.png", 206 | sizes: "512x512", 207 | type: "image/png", 208 | purpose: "any", 209 | }, 210 | ], 211 | }, 212 | workbox: { 213 | globPatterns: ["**/*.{css,js,html,svg,png,ico,txt,woff2,moc,json}"], // 匹配需要缓存的文件类型 214 | globIgnores: ["sw.js"], 215 | runtimeCaching: [ 216 | { 217 | urlPattern: /^https:\/\/model\.hacxy\.cn\/.*/i, // 匹配需要缓存的 Google 字体 218 | handler: "CacheFirst", // 缓存优先策略 219 | options: { 220 | cacheName: "live2d-model-hacxy", // 缓存名称 221 | expiration: { 222 | maxEntries: 30, // 最大缓存条目数 223 | maxAgeSeconds: 60 * 60 * 24 * 365, // 缓存有效期,365天 224 | }, 225 | cacheableResponse: { 226 | statuses: [0, 200], // 缓存的响应状态码 227 | }, 228 | }, 229 | }, 230 | { 231 | urlPattern: /^https:\/\/giscus\.app\/.*/i, // 匹配需要缓存的 Google 字体 232 | handler: "CacheFirst", // 缓存优先策略 233 | options: { 234 | cacheName: "giscus", // 缓存名称 235 | expiration: { 236 | maxEntries: 20, // 最大缓存条目数 237 | maxAgeSeconds: 60 * 60 * 24 * 7, // 缓存有效期,7天 238 | }, 239 | cacheableResponse: { 240 | statuses: [0, 200], // 缓存的响应状态码 241 | }, 242 | }, 243 | }, 244 | { 245 | urlPattern: /^https:\/\/gh-proxy\.com\/.*/i, // 匹配需要缓存的 gh-proxy 图片 246 | handler: "CacheFirst", // 网络优先策略 247 | options: { 248 | cacheName: "gh-proxy", // 缓存名称 249 | expiration: { 250 | maxEntries: 50, // 最大缓存条目数 251 | maxAgeSeconds: 60 * 60 * 24 * 7, // 缓存有效期,365天 252 | }, 253 | cacheableResponse: { 254 | statuses: [0, 200], // 缓存的响应状态码 255 | }, 256 | }, 257 | }, 258 | { 259 | urlPattern: /^https:\/\/proxy\.pipers\.cn\/.*/i, // 匹配需要缓存的 gh-proxy 图片 260 | handler: "CacheFirst", // 网络优先策略 261 | options: { 262 | cacheName: "proxy-pipers", // 缓存名称 263 | expiration: { 264 | maxEntries: 50, // 最大缓存条目数 265 | maxAgeSeconds: 60 * 60 * 24 * 7, // 缓存有效期,365天 266 | }, 267 | cacheableResponse: { 268 | statuses: [0, 200], // 缓存的响应状态码 269 | }, 270 | }, 271 | }, 272 | { 273 | urlPattern: /\.(js|html)(\?.*)?/i, // 匹配json后缀 274 | handler: "NetworkFirst", // 缓存优先策略 275 | options: { 276 | cacheName: "docs", // 缓存名称 277 | expiration: { 278 | maxEntries: 200, // 最大缓存条目数 279 | maxAgeSeconds: 60 * 60 * 24 * 3, // 缓存有效期,3天 280 | }, 281 | cacheableResponse: { 282 | statuses: [0, 200], // 缓存的响应状态码 283 | }, 284 | }, 285 | }, 286 | ], 287 | }, 288 | }, 289 | }; 290 | } 291 | 292 | const vitePressSidebarConfig: VitePressSidebarOptions = () => { 293 | return [ 294 | { 295 | documentRootPath: "/src", 296 | scanStartPath: 'v3', 297 | resolvePath: '/v3/', 298 | collapsed: false, 299 | useTitleFromFileHeading: true, 300 | useTitleFromFrontmatter: true, 301 | sortMenusOrderNumericallyFromLink: true, 302 | includeRootIndexFile: true, 303 | sortFolderTo: 'bottom', 304 | manualSortFileNameByPriority: ['指南', '音乐模块', '搜索相关接口'] 305 | }, 306 | { 307 | documentRootPath: "/src", 308 | scanStartPath: 'v2', 309 | resolvePath: '/v2/', 310 | collapsed: false, 311 | useTitleFromFileHeading: true, 312 | useTitleFromFrontmatter: true, 313 | sortMenusOrderNumericallyFromLink: true, 314 | includeRootIndexFile: true, 315 | sortFolderTo: 'bottom', 316 | manualSortFileNameByPriority: ['指南', '音乐模块'] 317 | }, 318 | { 319 | documentRootPath: "/src", 320 | scanStartPath: 'v1', 321 | resolvePath: '/v1/', 322 | collapsed: false, 323 | useTitleFromFileHeading: true, 324 | useTitleFromFrontmatter: true, 325 | sortMenusOrderNumericallyFromLink: true, 326 | includeRootIndexFile: true, 327 | manualSortFileNameByPriority: [] 328 | } 329 | ]; 330 | } 331 | 332 | const vitePressI18nConfig = () => { 333 | return { 334 | // VitePress I18n config 335 | locales: ['zhHans'], // first locale 'en' is root locale //, 'en', 'ko' 336 | searchProvider: 'local' // enable search with auto translation 337 | }; 338 | } 339 | 340 | export default defineConfig(({mode}: ConfigEnv): UserConfig => { 341 | const env = loadEnv(mode, process.cwd()); 342 | return withPwa(withSidebar(withI18n(vitePressConfig(env), vitePressI18nConfig(env)), vitePressSidebarConfig(env))) 343 | }) 344 | -------------------------------------------------------------------------------- /src/v2/音乐模块/QQ音乐/8-lyric.md: -------------------------------------------------------------------------------- 1 | # 歌词API 2 | 3 | ## 简要描述 4 | - 获取歌曲的歌词,此API包含lyric歌词、逐字歌词、翻译歌词、音译歌词。 5 | - 逐字歌词标记了每个字在音频中的某个时间段,可用于编写歌词渐变。 6 | 7 | ## 请求URL 8 | - `/v2/music/tencent/lyric` 9 | 10 | ## 请求方式 11 | - `GET` / `POST` 12 | 13 | ## 请求示例 14 | - https://api.vkeys.cn/v2/music/tencent/lyric?id=213836590 15 | - https://api.vkeys.cn/v2/music/tencent/lyric?mid=001CJxVG1yppB0 16 | 17 | ## 请求参数 18 | 19 | | 参数名 | 是否必选 | 数据类型 | 说明 | 20 | |:---:|:----:|:------:|:----------------------------| 21 | | id | 是/否 | int | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 22 | | mid | 是/否 | string | 根据音乐id获取音乐链接,id与mid选择其中一个即可 | 23 | 24 | ## 返回示例 25 | ``` json 26 | { 27 | "code": 200, 28 | "message": "请求成功!", 29 | "data": { 30 | "lrc": "[ti:嘘つきは恋のはじまり]\n[ar:洛天依]\n[al:嘘つきは恋の始まり]\n[by:]\n[offset:0]\n[kana:1うそ1こい1111し11きょく111きょく11す1ひと1きみ1と1かぜ1ふ1かみ1ゆ1きょう1しつ1とき1と1け1ゆか1お1ひろ1あ1わら1こた1うそ1ほん1とう1い1あめ1ひ1かぜ1ひ1おも1つづ1ひと1め1まえ1わたし1き1きみ1べつ1わ1だい2きのう1はなし1し1こわ1きみ1む1じゃ1き1わら1じ1ぶん1なさ1ちか1ちか1とお1むね1こ1どう1き1め1まえ1うそ1とも1だち1うそ1わたし1こい1ごころ1かん1たん1ご1ま1か1あめ1ひ1かぜ1ひ1おも1つづ1ひと1す]\n[00:00.00]嘘つきは恋のはじまり - 洛天依\n[00:04.69]词:40mP\n[00:09.38]曲:40mP\n[00:14.07]编曲:40mP\n[00:18.77]「ねえ\n[00:19.53]好きな人いるの?」なんて\n[00:25.39]君が問いかけてきた\n[00:30.27]\n[00:31.43]風が吹いて髪が揺れて\n[00:37.93]教室の時が止まる\n[00:44.56]消しゴムが床に落ちて\n[00:50.64]すぐに拾い上げて\n[00:54.33]笑いながら答える\n[00:58.10]「いないよ」\n[01:00.71]ほんのちょっと嘘をついた\n[01:03.71]バレるのがこわくて\n[01:06.89]本当のことなんて\n[01:09.93]言えるわけないでしょ?\n[01:13.24]雨の日も風の日も\n[01:16.16]想い続けている人\n[01:21.55]目の前にいるのに\n[01:26.86]\n[01:36.70]「ねえ\n[01:37.51]そっちこそどうなの?」って\n[01:43.30]私も聞きたいけど\n[01:48.19]\n[01:49.34]君はすぐに別の話題\n[01:55.85]昨日のテレビの話\n[02:00.76]\n[02:02.28]知りたくてでもこわくて\n[02:08.60]壊れそうなのに\n[02:12.30]君は無邪気に笑う\n[02:16.13]ズルイよ\n[02:18.66]ほんのちょっとベソをかいた\n[02:21.65]自分が情けなくて\n[02:24.89]近づけば近づくほど\n[02:28.00]遠ざかるみたいだ\n[02:31.07]この胸の鼓動さえ\n[02:34.15]聞こえてしまいそうなほど\n[02:39.44]目の前にいるのに\n[02:44.67]\n[03:04.87]嘘つきのままでいれば\n[03:10.87]ずっと友達でいられるから\n[03:16.07]そのほうがいいよね?\n[03:20.77]\n[03:23.96]ほんのちょっと嘘をついた\n[03:27.09]私の恋心\n[03:30.36]簡単に誤魔化せる\n[03:33.27]そんなわけないでしょ?\n[03:36.68]雨の日も風の日も\n[03:39.62]想い続けている人\n[03:46.58]\n[03:48.21]こんなに好きなのに", 31 | "trans": "[ti:嘘つきは恋のはじまり]\n[ar:洛天依]\n[al:嘘つきは恋の始まり]\n[by:]\n[offset:0]\n[kana:1うそ1こい1111し11きょく111きょく11す1ひと1きみ1と1かぜ1ふ1かみ1ゆ1きょう1しつ1とき1と1け1ゆか1お1ひろ1あ1わら1こた1うそ1ほん1とう1い1あめ1ひ1かぜ1ひ1おも1つづ1ひと1め1まえ1わたし1き1きみ1べつ1わ1だい2きのう1はなし1し1こわ1きみ1む1じゃ1き1わら1じ1ぶん1なさ1ちか1ちか1とお1むね1こ1どう1き1め1まえ1うそ1とも1だち1うそ1わたし1こい1ごころ1かん1たん1ご1ま1か1あめ1ひ1かぜ1ひ1おも1つづ1ひと1す]\n[00:00.00]QQ音乐享有本翻译作品的著作权\n[00:04.69]//\n[00:09.38]//\n[00:14.07]//\n[00:18.77]呐\n[00:19.53]你有喜欢的人吗?\n[00:25.39]你突然如此问我\n[00:30.27]\n[00:31.43]发丝随着清风扬起\n[00:37.93]教室里的时光也停止了流动\n[00:42.87]\n[00:44.48]橡皮擦掉在了地板上\n[00:50.64]我马上把它捡了起来\n[00:54.33]紧接着笑着回答你道\n[00:58.10]没有哦\n[01:00.71]其实是说了一个小谎\n[01:03.71]因为害怕会被你发现\n[01:06.89]我真正的心意\n[01:09.93]怎么可能说得出口呢\n[01:13.24]无论刮风还是下雨\n[01:16.16]那个我朝思暮想的人\n[01:21.55]明明就站在我的眼前\n[01:26.86]\n[01:36.70]呐\n[01:37.51]那你呢 你有喜欢的人吗\n[01:43.30]我也想问你这个问题\n[01:48.19]\n[01:49.34]你瞬间就转换了话题\n[01:55.85]和我聊起昨天的电视节目\n[02:00.76]\n[02:02.28]想知道答案却又感到害怕\n[02:08.60]明明我已经濒临崩溃的境地\n[02:12.30]你却露出了那样天真无邪的笑容\n[02:16.13]真狡猾\n[02:18.66]其实还是掉了一点点的眼泪\n[02:21.65]觉得那样的自己真是没出息\n[02:24.89]越是靠近你\n[02:28.00]你却仿佛离我更远了\n[02:31.07]可你明明就近在眼前\n[02:34.15]近到连我的心跳声\n[02:39.44]仿佛也能清楚听见\n[02:44.67]\n[03:04.87]只要继续隐瞒这份心意\n[03:10.87]就可以一直和你做普通朋友\n[03:16.07]那样是不是比较好?\n[03:20.77]\n[03:23.96]其实我说了一个小谎\n[03:27.09]可我的恋慕之心\n[03:30.36]却无法如此轻易地\n[03:33.27]敷衍而过\n[03:36.68]无论刮风还是下雨\n[03:39.62]那个我朝思暮想的人\n[03:46.58]\n[03:48.21]明明我是如此的喜欢着你", 32 | "yrc": "[ti:嘘つきは恋のはじまり]\n[ar:洛天依]\n[al:嘘つきは恋の始まり]\n[by:]\n[offset:0]\n[kana:1うそ1こい1111し11きょく111きょく11す1ひと1きみ1と1かぜ1ふ1かみ1ゆ1きょう1しつ1とき1と1け1ゆ(47359,293)か(47652,687)1お1ひろ1あ1わら1こた1うそ1ほん1とう1い1あめ1ひ1かぜ1ひ1おも1つづ1ひと1め1まえ1わたし1き1きみ1べつ1わ1だい2きのう1はなし1し1こわ1きみ1む1じゃ1き1わら1じ1ぶん1なさ1ちか1ちか1とお1むね1こ1どう1き1め1まえ1うそ1とも1だち1うそ1わたし1こい1ごころ1かん1たん1ご1ま1か1あめ1ひ1かぜ1ひ1おも1つづ1ひと1す]\n[0,4690]嘘(0,293)つ(293,293)き(586,293)は(879,293)恋(1172,293)の(1465,293)は(1758,293)じ(2051,293)ま(2344,293)り(2637,293) (2930,293)-(3223,293) (3516,293)洛(3809,293)天(4102,293)依(4395,293)\n[4690,4690]词(4690,1563):(6253,1563)40(7816,781)mP(8597,782)\n[9380,4690]曲(9380,1563):(10943,1563)40(12506,781)mP(13287,782)\n[14070,4690]编(14070,1172)曲(15242,1172):(16414,1172)40(17586,586)mP(18172,586)\n[18770,677]「(18770,151)ね(18921,151)え(19072,375)\n[19538,5596]好(19538,207)き(19745,207)な(19952,527)人(20479,1759)い(22238,559)る(22797,223)の(23020,175)?(23195,191)」(23386,135)な(23521,200)ん(23721,182)て(23903,1231)\n[25394,4879]君(25394,471)が(25865,391)問(26256,311)い(26567,247)か(26814,567)け(27381,407)て(27788,383)き(28171,335)た(28506,1767)\n[31434,6158]風(31434,784)が(32218,254)吹(32472,263)い(32735,303)て(33038,1655)髪(34693,520)が(35213,318)揺(35531,319)れ(35850,327)て(36177,1415)\n[37930,6632]教(37930,471)室(38401,503)の(38904,495)時(39399,543)が(39942,351)止(40293,359)ま(40652,415)る(41067,1807)\n[44562,5977]消(44562,688)し(45250,592)ゴ(45842,440)ム(46282,388)が(46670,689)床(47359,980)に(48339,624)落(48963,340)ち(49303,416)て(49719,820)\n[50642,3569]す(50642,559)ぐ(51201,711)に(51912,599)拾(52511,535)い(53046,271)上(53317,183)げ(53500,159)て(53659,552)\n[54330,3584]笑(54330,263)い(54593,255)な(54848,191)が(55039,207)ら(55246,607)答(55853,336)え(56189,310)る(56499,1415)\n[58106,2424]「(58106,199)い(58305,167)な(58472,381)い(58853,201)よ(59054,1189)」(60243,287)\n[60712,2885]ほ(60712,239)ん(60951,167)の(61118,175)ち(61293,175)ょ(61468,152)っ(61620,158)と(61778,295)嘘(62073,247)を(62320,184)つ(62504,166)い(62670,440)た(63110,487)\n[63712,3007]バ(63712,199)レ(63911,184)る(64095,174)の(64269,488)が(64757,286)こ(65043,183)わ(65226,327)く(65553,287)て(65840,879)\n[66896,2913]本(66896,344)当(67240,255)の(67495,678)こ(68173,271)と(68444,239)な(68683,200)ん(68883,327)て(69210,599)\n[69936,3126]言(69936,207)え(70143,176)る(70319,222)わ(70541,359)け(70900,256)な(71156,222)い(71378,327)で(71705,199)し(71904,159)ょ(72063,679)?(72742,320)\n[73248,2792]雨(73248,327)の(73575,199)日(73774,311)も(74085,398)風(74483,256)の(74739,248)日(74987,582)も(75569,471)\n[76160,5198]想(76160,335)い(76495,424)続(76919,510)け(77429,247)て(77676,303)い(77979,231)る(78210,1213)人(79423,1935)\n[81558,5304]目(81558,273)の(81831,325)前(82156,647)に(82803,359)い(83162,430)る(83592,311)の(83903,528)に(84431,2431)\n[96702,732]「(96702,183)ね(96885,151)え(97036,398)\n[97518,5561]そ(97518,190)っ(97708,151)ち(97859,462)こ(98321,232)そ(98553,1431)ど(99984,350)う(100334,511)な(100845,359)の(101204,231)?(101435,183)」(101618,191)っ(101809,383)て(102192,887)\n[103308,4888]私(103308,607)も(103915,600)聞(104515,318)き(104833,447)た(105280,375)い(105655,439)け(106094,399)ど(106493,1703)\n[109348,6192]君(109348,951)は(110299,207)す(110506,263)ぐ(110769,255)に(111024,1552)別(112576,575)の(113151,334)話(113485,399)題(113884,1656)\n[115852,4912]昨日(115852,614)の(116466,247)テ(116713,255)レ(116968,311)ビ(117279,743)の(118022,271)話(118293,2471)\n[122284,6070]知(122284,824)り(123108,583)た(123691,247)く(123938,287)て(124225,855)で(125080,367)も(125447,327)こ(125774,791)わ(126565,455)く(127020,279)て(127299,1055)\n[128603,3555]壊(128603,1265)れ(129868,352)そ(130220,342)う(130562,431)な(130993,215)の(131208,215)に(131423,735)\n[132301,3544]君(132301,279)は(132580,239)無(132819,182)邪(133001,240)気(133241,335)に(133576,223)笑(133799,543)う(134342,1503)\n[136133,2036]ズ(136133,191)ル(136324,471)イ(136795,271)よ(137066,1103)\n[138669,2891]ほ(138669,231)ん(138900,151)の(139051,199)ち(139250,167)ょ(139417,159)っ(139576,167)と(139743,239)ベ(139982,207)ソ(140189,295)を(140484,167)か(140651,263)い(140914,239)た(141153,407)\n[141653,3072]自(141653,183)分(141836,263)が(142099,583)情(142682,336)け(143018,478)な(143496,207)く(143703,335)て(144038,687)\n[144893,3103]近(144893,287)づ(145180,207)け(145387,327)ば(145714,431)近(146145,271)づ(146416,191)く(146607,487)ほ(147094,263)ど(147357,639)\n[148005,2912]遠(148005,263)ざ(148268,151)か(148419,383)る(148802,367)み(149169,471)た(149640,215)い(149855,295)だ(150150,767)\n[151077,2984]こ(151077,239)の(151316,191)胸(151507,504)の(152011,438)鼓(152449,255)動(152704,335)さ(153039,463)え(153502,559)\n[154157,5068]聞(154157,231)こ(154388,167)え(154555,151)て(154706,351)し(155057,247)ま(155304,223)い(155527,383)そ(155910,183)う(156093,359)な(156452,711)ほ(157163,655)ど(157818,1407)\n[159445,5226]目(159445,343)の(159788,223)前(160011,551)に(160562,479)い(161041,415)る(161456,319)の(161775,607)に(162382,2289)\n[184870,5669]嘘(184870,1143)つ(186013,391)き(186404,223)の(186627,823)ま(187450,351)ま(187801,263)で(188064,919)い(188983,351)れ(189334,319)ば(189653,886)\n[190870,5116]ず(190870,247)っ(191117,903)と(192020,863)友(192883,416)達(193299,374)で(193673,879)い(194552,215)ら(194767,191)れ(194958,183)る(195141,183)か(195324,280)ら(195604,382)\n[196078,4694]そ(196078,191)の(196269,223)ほ(196492,167)う(196659,263)が(196922,1615)い(198537,183)い(198720,319)よ(199039,328)ね(199367,1071)?(200438,334)\n[203966,3022]ほ(203966,295)ん(204261,191)の(204452,159)ち(204611,167)ょ(204778,159)っ(204937,159)と(205096,311)嘘(205407,247)を(205654,271)つ(205925,399)い(206324,256)た(206580,408)\n[207095,3003]私(207095,414)の(207509,632)恋(208141,462)心(208603,1495)\n[210369,2754]簡(210369,345)単(210714,231)に(210945,735)誤(211680,215)魔(211895,167)化(212062,215)せ(212277,376)る(212653,470)\n[213275,3269]そ(213275,184)ん(213459,190)な(213649,263)わ(213912,295)け(214207,239)な(214446,335)い(214781,319)で(215100,199)し(215299,167)ょ(215466,799)?(216265,279)\n[216683,2760]雨(216683,191)の(216874,191)日(217065,311)も(217376,383)風(217759,319)の(218078,207)日(218285,615)も(218900,543)\n[219627,6961]想(219627,263)い(219890,215)続(220105,687)け(220792,223)て(221015,359)い(221374,191)る(221565,1088)人(222653,3935)\n[228212,5704]こ(228212,216)ん(228428,184)な(228612,256)に(228868,416)好(229284,256)き(229540,664)な(230204,312)の(230516,440)に(230956,2960)", 33 | "roma": "[ti:嘘つきは恋のはじまり]\n[ar:洛天依]\n[al:嘘つきは恋の始まり]\n[by:]\n[offset:0]\n[0,4690](4395,293)\n[4690,4690](8597,782)\n[9380,4690](13287,782)\n[14070,4690](18172,586)\n[18770,677]「 (18770,151)ne (18921,151)e (19072,375)\n[19538,5596]su (19538,207)ki (19745,207)na (19952,527)hi (20479,879)to (21358,880)i (22238,559)ru (22797,223)no (23020,175)? (23195,191)」 (23386,135)na (23521,200)n (23721,182)te (23903,1231)\n[25394,4879]ki (25394,235)mi (25629,236)ga (25865,391)to (26256,311)i (26567,247)ka (26814,567)ke (27381,407)te (27788,383)ki (28171,335)ta (28506,1767)\n[31434,6158]ka (31434,392)ze (31826,392)ga (32218,254)fu (32472,263)i (32735,303)te (33038,1655)ka (34693,260)mi (34953,260)ga (35213,318)yu (35531,319)re (35850,327)te (36177,1415)\n[37930,6632]kyo (37930,156)u (38244,157)shi (38401,251)tsu (38652,252)no (38904,495)to (39399,271)ki (39670,272)ga (39942,351)to (40293,359)ma (40652,415)ru (41067,1807)\n[44562,5977]ke (44562,687)shi (45250,591)go (45841,440)mu (46282,387)ga (46669,689)yu (47359,292)ka (47652,687)ni (48339,624)o (48963,340)chi (49303,416)te (49719,819)\n[50642,3569]su (50642,559)gu (51201,711)ni (51912,599)hi (52511,267)ro (52778,268)i (53046,271)a (53317,183)ge (53500,159)te (53659,552)\n[54330,3584]wa (54330,131)ra (54461,132)i (54593,255)na (54848,191)ga (55039,207)ra (55246,607)ko (55853,168)ta (56021,168)e (56189,310)ru (56499,1415)\n[58106,2424]「 (58106,199)i (58305,167)na (58472,381)i (58853,201)yo (59054,1189)」 (60243,287)\n[60712,2885]ho (60712,239)n (60951,167)no (61118,175)cho (61293,152)'t (61620,158)to (61778,295)u (62073,123)so (62196,124)wo (62320,184)tsu (62504,166)i (62670,440)ta (63110,487)\n[63712,3007]ba (63712,199)re (63911,184)ru (64095,174)no (64269,488)ga (64757,286)ko (65043,183)wa (65226,327)ku (65553,287)te (65840,879)\n[66896,2913]ho (66896,172)n (67068,172)to (67240,127)u (67367,128)no (67495,678)ko (68173,271)to (68444,239)na (68683,200)n (68883,327)te (69210,599)\n[69936,3126]i (69936,207)e (70143,176)ru (70319,222)wa (70541,359)ke (70900,256)na (71156,222)i (71378,327)de (71705,199)sho (71904,679)? (72742,320)\n[73248,2792]a (73248,163)me (73411,164)no (73575,199)hi (73774,311)mo (74085,398)ka (74483,128)ze (74611,128)no (74739,248)hi (74987,582)mo (75569,471)\n[76160,5198]o (76160,167)mo (76327,168)i (76495,424)tsu (76919,255)zu (77174,255)ke (77429,247)te (77676,303)i (77979,231)ru (78210,1213)hi (79423,967)to (80390,968)\n[81558,5304]me (81558,273)no (81831,325)ma (82156,323)e (82479,324)ni (82803,359)i (83162,430)ru (83592,311)no (83903,528)ni (84431,2431)\n[96702,732]「 (96702,183)ne (96885,151)e (97036,398)\n[97518,5561]so (97518,190)'c (97708,151)chi (97859,462)ko (98321,232)so (98553,1431)do (99984,350)u (100334,511)na (100845,359)no (101204,231)? (101435,183)」 (101618,191)'t (101809,383)te (102192,887)\n[103308,4888]wa (103308,202)ta (103510,202)shi (103712,203)mo (103915,600)ki (104515,318)ki (104833,447)ta (105280,375)i (105655,439)ke (106094,399)do (106493,1703)\n[109348,6192]ki (109348,475)mi (109823,476)wa (110299,207)su (110506,263)gu (110769,255)ni (111024,1552)be (112576,287)tsu (112863,288)no (113151,334)wa (113485,399)da (113884,828)i (114712,828)\n[115852,4912]ki (115852,204)no (116056,204)u (116260,206)no (116466,247)te (116713,255)re (116968,311)bi (117279,743)no (118022,271)ha (118293,823)na (119116,823)shi (119939,825)\n[122284,6070]shi (122284,824)ri (123108,583)ta (123691,247)ku (123938,287)te (124225,855)de (125080,367)mo (125447,327)ko (125774,791)wa (126565,455)ku (127020,279)te (127299,1055)\n[128603,3555]ko (128603,632)wa (129235,633)re (129868,352)so (130220,342)u (130562,431)na (130993,215)no (131208,215)ni (131423,735)\n[132301,3544]ki (132301,139)mi (132440,140)wa (132580,239)mu (132819,182)ja (133001,120)ki (133241,335)ni (133576,223)wa (133799,271)ra (134070,272)u (134342,1503)\n[136133,2036]zu (136133,191)ru (136324,471)i (136795,271)yo (137066,1103)\n[138669,2891]ho (138669,231)n (138900,151)no (139051,199)cho (139250,158)'t (139576,167)to (139743,239)be (139982,207)so (140189,295)wo (140484,167)ka (140651,263)i (140914,239)ta (141153,407)\n[141653,3072]ji (141653,183)bu (141836,131)n (141967,132)ga (142099,583)na (142682,168)sa (142850,168)ke (143018,478)na (143496,207)ku (143703,335)te (144038,687)\n[144893,3103]chi (144893,143)ka (145036,144)zu (145180,207)ke (145387,327)ba (145714,431)chi (146145,135)ka (146280,136)zu (146416,191)ku (146607,487)ho (147094,263)do (147357,639)\n[148005,2912]to (148005,131)o (148136,132)za (148268,151)ka (148419,383)ru (148802,367)mi (149169,471)ta (149640,215)i (149855,295)da (150150,767)\n[151077,2984]ko (151077,239)no (151316,191)mu (151507,252)ne (151759,252)no (152011,438)ko (152449,255)do (152704,167)u (152871,168)sa (153039,463)e (153502,559)\n[154157,5068]ki (154157,231)ko (154388,167)e (154555,151)te (154706,351)shi (155057,247)ma (155304,223)i (155527,383)so (155910,183)u (156093,359)na (156452,711)ho (157163,655)do (157818,1407)\n[159445,5226]me (159445,343)no (159788,223)ma (160011,275)e (160286,276)ni (160562,479)i (161041,415)ru (161456,319)no (161775,607)ni (162382,2289)\n[184870,5669]u (184870,571)so (185441,572)tsu (186013,391)ki (186404,223)no (186627,823)ma (187450,351)ma (187801,263)de (188064,919)i (188983,351)re (189334,319)ba (189653,886)\n[190870,5116]zu (190870,247)'t (191117,903)to (192020,863)to (192883,208)mo (193091,208)da (193299,187)chi (193486,187)de (193673,879)i (194552,215)ra (194767,191)re (194958,183)ru (195141,183)ka (195324,280)ra (195604,382)\n[196078,4694]so (196078,191)no (196269,223)ho (196492,167)u (196659,263)ga (196922,1615)i (198537,183)i (198720,319)yo (199039,328)ne (199367,1071)? (200438,334)\n[203966,3022]ho (203966,295)n (204261,191)no (204452,159)cho (204611,158)'t (204937,159)to (205096,311)u (205407,123)so (205530,124)wo (205654,271)tsu (205925,399)i (206324,256)ta (206580,408)\n[207095,3003]wa (207095,138)ta (207233,138)shi (207371,138)no (207509,632)ko (208141,231)i (208372,231)go (208603,498)ko (209101,498)ro (209599,499)\n[210369,2754]ka (210369,172)n (210541,173)ta (210714,115)n (210829,116)ni (210945,735)go (211680,215)ma (211895,167)ka (212062,215)se (212277,376)ru (212653,470)\n[213275,3269]so (213275,184)n (213459,190)na (213649,263)wa (213912,295)ke (214207,239)na (214446,335)i (214781,319)de (215100,199)sho (215299,799)? (216265,279)\n[216683,2760]a (216683,95)me (216778,96)no (216874,191)hi (217065,311)mo (217376,383)ka (217759,159)ze (217918,160)no (218078,207)hi (218285,615)mo (218900,543)\n[219627,6961]o (219627,131)mo (219758,132)i (219890,215)tsu (220105,343)zu (220448,344)ke (220792,223)te (221015,359)i (221374,191)ru (221565,1088)hi (222653,1967)to (224620,1968)\n[228212,5704]ko (228212,216)n (228428,184)na (228612,256)ni (228868,416)su (229284,256)ki (229540,664)na (230204,312)no (230516,440)ni (230956,2960)" 34 | }, 35 | "time": "2024-08-03 20:59:33", 36 | "pid": 17, 37 | "tips": "欢迎使用API-Server" 38 | } 39 | ``` 40 | -------------------------------------------------------------------------------- /.vitepress/theme/style.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Customize default theme styling by overriding CSS variables: 3 | * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css 4 | */ 5 | 6 | /** 7 | * Colors 8 | * 9 | * Each colors have exact same color scale system with 3 levels of solid 10 | * colors with different brightness, and 1 soft color. 11 | * 12 | * - `XXX-1`: The most solid color used mainly for colored text. It must 13 | * satisfy the contrast ratio against when used on top of `XXX-soft`. 14 | * 15 | * - `XXX-2`: The color used mainly for hover state of the button. 16 | * 17 | * - `XXX-3`: The color for solid background, such as bg color of the button. 18 | * It must satisfy the contrast ratio with pure white (#ffffff) text on 19 | * top of it. 20 | * 21 | * - `XXX-soft`: The color used for subtle background such as custom container 22 | * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors 23 | * on top of it. 24 | * 25 | * The soft color must be semi transparent alpha channel. This is crucial 26 | * because it allows adding multiple "soft" colors on top of each other 27 | * to create a accent, such as when having inline code block inside 28 | * custom containers. 29 | * 30 | * - `default`: The color used purely for subtle indication without any 31 | * special meanings attached to it such as bg color for menu hover state. 32 | * 33 | * - `brand`: Used for primary brand colors, such as link text, button with 34 | * brand theme, etc. 35 | * 36 | * - `tip`: Used to indicate useful information. The default theme uses the 37 | * brand color for this by default. 38 | * 39 | * - `warning`: Used to indicate warning to the users. Used in custom 40 | * container, badges, etc. 41 | * 42 | * - `danger`: Used to show error, or dangerous message to the users. Used 43 | * in custom container, badges, etc. 44 | * -------------------------------------------------------------------------- */ 45 | 46 | :root { 47 | --vp-c-default-1: var(--vp-c-gray-1); 48 | --vp-c-default-2: var(--vp-c-gray-2); 49 | --vp-c-default-3: var(--vp-c-gray-3); 50 | --vp-c-default-soft: var(--vp-c-gray-soft); 51 | 52 | --vp-c-brand-1: var(--vp-c-indigo-1); 53 | --vp-c-brand-2: var(--vp-c-indigo-2); 54 | --vp-c-brand-3: var(--vp-c-indigo-3); 55 | --vp-c-brand-soft: var(--vp-c-indigo-soft); 56 | 57 | --vp-c-tip-1: var(--vp-c-brand-1); 58 | --vp-c-tip-2: var(--vp-c-brand-2); 59 | --vp-c-tip-3: var(--vp-c-brand-3); 60 | --vp-c-tip-soft: var(--vp-c-brand-soft); 61 | 62 | --vp-c-warning-1: var(--vp-c-yellow-1); 63 | --vp-c-warning-2: var(--vp-c-yellow-2); 64 | --vp-c-warning-3: var(--vp-c-yellow-3); 65 | --vp-c-warning-soft: var(--vp-c-yellow-soft); 66 | 67 | --vp-c-danger-1: var(--vp-c-red-1); 68 | --vp-c-danger-2: var(--vp-c-red-2); 69 | --vp-c-danger-3: var(--vp-c-red-3); 70 | --vp-c-danger-soft: var(--vp-c-red-soft); 71 | } 72 | 73 | /** 74 | * Component: Button 75 | * -------------------------------------------------------------------------- */ 76 | 77 | :root { 78 | --vp-button-brand-border: transparent; 79 | --vp-button-brand-text: var(--vp-c-white); 80 | --vp-button-brand-bg: var(--vp-c-brand-3); 81 | --vp-button-brand-hover-border: transparent; 82 | --vp-button-brand-hover-text: var(--vp-c-white); 83 | --vp-button-brand-hover-bg: var(--vp-c-brand-2); 84 | --vp-button-brand-active-border: transparent; 85 | --vp-button-brand-active-text: var(--vp-c-white); 86 | --vp-button-brand-active-bg: var(--vp-c-brand-1); 87 | } 88 | 89 | /** 90 | * Component: Home 91 | * -------------------------------------------------------------------------- */ 92 | 93 | :root { 94 | --vp-home-hero-name-color: transparent; 95 | --vp-home-hero-name-background: -webkit-linear-gradient( 96 | 120deg, 97 | #bd34fe 30%, 98 | #41d1ff 99 | ); 100 | 101 | --vp-home-hero-image-background-image: linear-gradient( 102 | -45deg, 103 | #bd34fe 50%, 104 | #47caff 50% 105 | ); 106 | --vp-home-hero-image-filter: blur(44px); 107 | } 108 | 109 | @media (min-width: 640px) { 110 | :root { 111 | --vp-home-hero-image-filter: blur(56px); 112 | } 113 | } 114 | 115 | @media (min-width: 960px) { 116 | :root { 117 | --vp-home-hero-image-filter: blur(68px); 118 | } 119 | } 120 | 121 | /** 122 | * Component: Custom Block 123 | * -------------------------------------------------------------------------- */ 124 | 125 | :root { 126 | --vp-custom-block-tip-border: transparent; 127 | --vp-custom-block-tip-text: var(--vp-c-text-1); 128 | --vp-custom-block-tip-bg: var(--vp-c-brand-soft); 129 | --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); 130 | } 131 | 132 | /** 133 | * Component: Algolia 134 | * -------------------------------------------------------------------------- */ 135 | 136 | .DocSearch { 137 | --docsearch-primary-color: var(--vp-c-brand-1) !important; 138 | } 139 | 140 | /* .vitepress/theme/style/custom-block.css */ 141 | /* 深浅色卡 */ 142 | :root { 143 | --custom-block-info-left: #cccccc; 144 | --custom-block-info-bg: #fafafa; 145 | 146 | --custom-block-tip-left: #009400; 147 | --custom-block-tip-bg: #e6f6e6; 148 | 149 | --custom-block-warning-left: #e6a700; 150 | --custom-block-warning-bg: #fff8e6; 151 | 152 | --custom-block-danger-left: #e13238; 153 | --custom-block-danger-bg: #ffebec; 154 | 155 | --custom-block-note-left: #4cb3d4; 156 | --custom-block-note-bg: #eef9fd; 157 | 158 | --custom-block-important-left: #a371f7; 159 | --custom-block-important-bg: #f4eefe; 160 | 161 | --custom-block-caution-left: #e0575b; 162 | --custom-block-caution-bg: #fde4e8; 163 | } 164 | 165 | .dark { 166 | --custom-block-info-left: #cccccc; 167 | --custom-block-info-bg: #474748; 168 | 169 | --custom-block-tip-left: #009400; 170 | --custom-block-tip-bg: #003100; 171 | 172 | --custom-block-warning-left: #e6a700; 173 | --custom-block-warning-bg: #4d3800; 174 | 175 | --custom-block-danger-left: #e13238; 176 | --custom-block-danger-bg: #4b1113; 177 | 178 | --custom-block-note-left: #4cb3d4; 179 | --custom-block-note-bg: #193c47; 180 | 181 | --custom-block-important-left: #a371f7; 182 | --custom-block-important-bg: #230555; 183 | 184 | --custom-block-caution-left: #e0575b; 185 | --custom-block-caution-bg: #391c22; 186 | } 187 | 188 | 189 | /* 标题字体大小 */ 190 | .custom-block-title { 191 | font-size: 16px; 192 | } 193 | 194 | /* info容器:背景色、左侧 */ 195 | .custom-block.info { 196 | border-left: 5px solid var(--custom-block-info-left); 197 | background-color: var(--custom-block-info-bg); 198 | } 199 | 200 | /* info容器:svg图 */ 201 | .custom-block.info [class*="custom-block-title"]::before { 202 | content: ''; 203 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E"); 204 | width: 20px; 205 | height: 20px; 206 | display: inline-block; 207 | vertical-align: middle; 208 | position: relative; 209 | margin-right: 4px; 210 | left: -5px; 211 | top: -1px; 212 | } 213 | 214 | /* 提示容器:边框色、背景色、左侧 */ 215 | .custom-block.tip { 216 | /* border-color: var(--custom-block-tip); */ 217 | border-left: 5px solid var(--custom-block-tip-left); 218 | background-color: var(--custom-block-tip-bg); 219 | } 220 | 221 | /* 提示容器:svg图 */ 222 | .custom-block.tip [class*="custom-block-title"]::before { 223 | content: ''; 224 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E"); 225 | width: 20px; 226 | height: 20px; 227 | display: inline-block; 228 | vertical-align: middle; 229 | position: relative; 230 | margin-right: 4px; 231 | left: -5px; 232 | top: -2px; 233 | } 234 | 235 | /* 警告容器:背景色、左侧 */ 236 | .custom-block.warning { 237 | border-left: 5px solid var(--custom-block-warning-left); 238 | background-color: var(--custom-block-warning-bg); 239 | } 240 | 241 | /* 警告容器:svg图 */ 242 | .custom-block.warning [class*="custom-block-title"]::before { 243 | content: ''; 244 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E"); 245 | width: 20px; 246 | height: 20px; 247 | display: inline-block; 248 | vertical-align: middle; 249 | position: relative; 250 | margin-right: 4px; 251 | left: -5px; 252 | } 253 | 254 | /* 危险容器:背景色、左侧 */ 255 | .custom-block.danger { 256 | border-left: 5px solid var(--custom-block-danger-left); 257 | background-color: var(--custom-block-danger-bg); 258 | } 259 | 260 | /* 危险容器:svg图 */ 261 | .custom-block.danger [class*="custom-block-title"]::before { 262 | content: ''; 263 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E"); 264 | width: 20px; 265 | height: 20px; 266 | display: inline-block; 267 | vertical-align: middle; 268 | position: relative; 269 | margin-right: 4px; 270 | left: -5px; 271 | top: -1px; 272 | } 273 | 274 | /* NOTE容器:背景色、左侧 */ 275 | .custom-block.note { 276 | border-left: 5px solid var(--custom-block-note-left); 277 | background-color: var(--custom-block-note-bg); 278 | } 279 | 280 | /* NOTE容器:svg图 */ 281 | .custom-block.note [class*="custom-block-title"]::before { 282 | content: ''; 283 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E"); 284 | width: 20px; 285 | height: 20px; 286 | display: inline-block; 287 | vertical-align: middle; 288 | position: relative; 289 | margin-right: 4px; 290 | left: -5px; 291 | top: -1px; 292 | } 293 | 294 | /* IMPORTANT容器:背景色、左侧 */ 295 | .custom-block.important { 296 | border-left: 5px solid var(--custom-block-important-left); 297 | background-color: var(--custom-block-important-bg); 298 | } 299 | 300 | /* IMPORTANT容器:svg图 */ 301 | .custom-block.important [class*="custom-block-title"]::before { 302 | content: ''; 303 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z' fill='%23a371f7'/%3E%3C/svg%3E"); 304 | width: 20px; 305 | height: 20px; 306 | display: inline-block; 307 | vertical-align: middle; 308 | position: relative; 309 | margin-right: 4px; 310 | left: -5px; 311 | top: -1px; 312 | } 313 | 314 | /* CAUTION容器:背景色、左侧 */ 315 | .custom-block.caution { 316 | border-left: 5px solid var(--custom-block-caution-left); 317 | background-color: var(--custom-block-caution-bg); 318 | } 319 | 320 | /* CAUTION容器:svg图 */ 321 | .custom-block.caution [class*="custom-block-title"]::before { 322 | content: ''; 323 | background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E"); 324 | width: 20px; 325 | height: 20px; 326 | display: inline-block; 327 | vertical-align: middle; 328 | position: relative; 329 | margin-right: 4px; 330 | left: -5px; 331 | top: -1px; 332 | } 333 | 334 | /* .vitepress\theme\style\blur.css */ 335 | :root { 336 | 337 | /* 首页下滑后导航透明 ,搜索框透明, 文档页侧边栏顶部透明*/ 338 | .VPNavBar:not(.has-sidebar):not(.home.top), .DocSearch-Button, .curtain { 339 | background-color: rgba(255, 255, 255, 0); 340 | backdrop-filter: blur(10px); 341 | } 342 | 343 | /* Feature透明 */ 344 | .VPFeature { 345 | border: none; 346 | box-shadow: 0 10px 30px 0 rgb(0 0 0 / 15%); 347 | background-color: transparent; 348 | } 349 | 350 | @media (min-width: 960px) { 351 | 352 | /* 文档页导航中间透明, 移动端大纲栏透明 */ 353 | .VPNavBar:not(.home.top) .content-body, .VPLocalNav { 354 | background-color: rgba(255, 255, 255, 0); 355 | backdrop-filter: blur(10px); 356 | } 357 | } 358 | 359 | } 360 | 361 | /* .vitepress\theme\style\hidden.css */ 362 | :root { 363 | 364 | /* 文档页Logo出文字下横条 */ 365 | @media (min-width: 960px) { 366 | .VPNavBarTitle.has-sidebar .title { 367 | border-bottom-color: transparent; 368 | } 369 | } 370 | 371 | /* 页脚横条隐藏 */ 372 | .VPFooter { 373 | border-top: none; 374 | } 375 | 376 | /* 手机端菜单栏顶部横条隐藏, 手机端菜单栏菜单分割线隐藏,手机端菜单组隐藏 手机端大纲栏横条隐藏 */ 377 | .VPNavBar.screen-open, .VPNavScreenMenuLink, .VPNavScreenMenuGroup, .VPLocalNav { 378 | border-bottom: none; 379 | } 380 | 381 | } 382 | 383 | /* 导航栏下划线隐藏 */ 384 | .divider { 385 | display: none; 386 | } 387 | 388 | /* 侧边栏多级嵌套层级 */ 389 | .group:has([role='button']) .VPSidebarItem.level-0 .items { 390 | padding-left: 16px !important; 391 | border-left: 1px solid var(--vp-c-divider); 392 | border-radius: 2px; 393 | transition: background-color 0.25s; 394 | } 395 | 396 | .VPSidebarItem.level-0 > .item > .text { 397 | letter-spacing: 1px; 398 | font-size: 16px; 399 | } 400 | 401 | .VPSidebarItem.level-1 > .item > .text { 402 | letter-spacing: 1px; 403 | font-weight: 600; 404 | } 405 | 406 | /* 超链接下划线 */ 407 | .vp-doc a { 408 | text-decoration: none; 409 | } 410 | 411 | 412 | /* 代码块:增加留空边距 增加阴影 */ 413 | .vp-doc div[class*=language-] { 414 | box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%); 415 | padding-top: 20px; 416 | } 417 | 418 | .vp-doc .vp-code-block-title { 419 | box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%); 420 | & div[class*=language-] { 421 | box-shadow: none; 422 | } 423 | } 424 | 425 | .vp-doc div[class*='language-'], .vp-block { 426 | margin: auto; 427 | } 428 | 429 | /* 代码块:添加macOS风格的小圆点 */ 430 | .vp-doc div[class*=language-]::before { 431 | content: ""; 432 | display: block; 433 | position: absolute; 434 | top: 12px; 435 | left: 12px; 436 | width: 12px; 437 | height: 12px; 438 | background-color: #ff5f56; 439 | border-radius: 50%; 440 | box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f; 441 | z-index: 1; 442 | } 443 | 444 | /* 代码块:下移行号 隐藏右侧竖线 */ 445 | .vp-doc .line-numbers-wrapper { 446 | padding-top: 40px; 447 | border-right: none; 448 | } 449 | 450 | /* 代码块:重建行号右侧竖线 */ 451 | .vp-doc .line-numbers-wrapper::after { 452 | content: ""; 453 | position: absolute; 454 | top: 40px; 455 | right: 0; 456 | border-right: 1px solid var(--vp-code-block-divider-color); 457 | height: calc(100% - 60px); 458 | } 459 | 460 | .vp-doc div[class*='language-'].line-numbers-mode { 461 | margin-bottom: 20px; 462 | } 463 | 464 | /* .vitepress/theme/style/vp-code-group.css */ 465 | 466 | /* 代码组:tab间距 */ 467 | .vp-code-group .tabs { 468 | padding-top: 20px; 469 | margin: auto; 470 | } 471 | 472 | /* 代码组:添加样式及阴影 */ 473 | .vp-code-group { 474 | border-radius: 8px; 475 | box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%); 476 | } 477 | 478 | /* 代码组:添加macOS风格的小圆点 */ 479 | .vp-code-group .tabs::before { 480 | content: ' '; 481 | position: absolute; 482 | top: 12px; 483 | left: 12px; 484 | height: 12px; 485 | width: 12px; 486 | background: #fc625d; 487 | border-radius: 50%; 488 | box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; 489 | } 490 | 491 | 492 | /* 代码组:修正倒角、阴影、边距 */ 493 | .vp-code-group div[class*="language-"].vp-adaptive-theme.line-numbers-mode { 494 | border-radius: 8px; 495 | box-shadow: none; 496 | padding-top: 0px; 497 | } 498 | 499 | /* 代码组:隐藏小圆点 */ 500 | .vp-code-group div[class*="language-"].vp-adaptive-theme.line-numbers-mode::before { 501 | display: none; 502 | } 503 | 504 | /* 代码组:修正行号位置 */ 505 | .vp-code-group .line-numbers-mode .line-numbers-wrapper { 506 | padding-top: 20px; 507 | } 508 | 509 | /* 代码组:修正行号右侧竖线位置 */ 510 | .vp-code-group .line-numbers-mode .line-numbers-wrapper::after { 511 | top: 24px; 512 | height: calc(100% - 45px); 513 | } 514 | 515 | 516 | 517 | /* 代码组(无行号):修正倒角、阴影、边距 */ 518 | .vp-code-group div[class*="language-"].vp-adaptive-theme { 519 | border-radius: 8px; 520 | box-shadow: none; 521 | padding-top: 0px; 522 | } 523 | 524 | /* 代码组(无行号):隐藏小圆点 */ 525 | .vp-code-group div[class*="language-"].vp-adaptive-theme::before { 526 | display: none; 527 | } 528 | 529 | ::view-transition-old(root), 530 | ::view-transition-new(root) { 531 | animation: none; 532 | mix-blend-mode: normal; 533 | } 534 | 535 | ::view-transition-old(root), 536 | .dark::view-transition-new(root) { 537 | z-index: 1; 538 | } 539 | 540 | ::view-transition-new(root), 541 | .dark::view-transition-old(root) { 542 | z-index: 9999; 543 | } 544 | 545 | .VPBadge.new { 546 | border-color: var(--vp-badge-tip-border); 547 | color: var(--vp-c-success-1); 548 | background-color: var(--vp-c-success-soft); 549 | } 550 | 551 | .vp-doc table { 552 | display: table; 553 | width: 100%; 554 | } 555 | 556 | .table-overflow { 557 | overflow-x:auto; 558 | white-space: nowrap; 559 | } 560 | 561 | .vp-nolebase-page-properties-grid { 562 | grid-template-columns: 180px auto 180px auto !important; 563 | } 564 | @media (max-width: 639.9px) { 565 | .vp-nolebase-page-properties-grid { 566 | grid-template-columns: 80px auto 80px auto !important; 567 | } 568 | } 569 | --------------------------------------------------------------------------------