Files
91-api-server/docs/docs.go
2026-06-10 03:29:17 +00:00

588 lines
20 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {
"name": "QwenPaw"
},
"license": {
"name": "MIT"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/author/{uid}": {
"get": {
"description": "获取指定作者的全部视频,支持分页和全量获取\n每页8个视频自动探测总页数",
"produces": [
"application/json"
],
"tags": [
"content"
],
"summary": "作者视频列表",
"parameters": [
{
"type": "string",
"description": "作者 UID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "integer",
"default": 1,
"description": "页码",
"name": "page",
"in": "query"
},
{
"type": "boolean",
"description": "是否全量获取",
"name": "all",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/categories": {
"get": {
"description": "返回所有可用的视频分类及其代码和描述",
"produces": [
"application/json"
],
"tags": [
"content"
],
"summary": "分类目录",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/category/{code}": {
"get": {
"description": "获取指定分类下的视频列表,支持分页和全量获取",
"produces": [
"application/json"
],
"tags": [
"content"
],
"summary": "分类视频列表",
"parameters": [
{
"type": "string",
"description": "分类代码: rf/top/ori/hot/long/longer/tf/hd/md/mf",
"name": "code",
"in": "path",
"required": true
},
{
"type": "integer",
"default": 1,
"description": "页码",
"name": "page",
"in": "query"
},
{
"type": "string",
"default": "basic",
"description": "视图类型",
"name": "viewtype",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "最大页数0=只第1页",
"name": "max_pages",
"in": "query"
},
{
"type": "boolean",
"description": "是否全量获取",
"name": "all",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/extract": {
"post": {
"description": "从视频播放页 URL 提取正片源地址与元信息(标题、时长、热度、作者等)\n原理strencode2 → unescape → 正则提取 \u0026lt;source\u0026gt; 中 .mp4 链接",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"extract"
],
"summary": "提取视频源",
"parameters": [
{
"description": "视频播放页 URL",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handler.ExtractRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/extract/batch": {
"post": {
"description": "并发提取多个视频播放页的源地址支持自定义并发度默认3最大10",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"extract"
],
"summary": "批量提取视频源",
"parameters": [
{
"description": "URL 列表 + 并发度",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handler.BatchExtractRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/health": {
"get": {
"description": "返回服务运行状态",
"produces": [
"application/json"
],
"tags": [
"system"
],
"summary": "健康检查",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/ping": {
"get": {
"description": "简单的 ping/pong 连通性测试",
"produces": [
"text/plain"
],
"tags": [
"system"
],
"summary": "连通性测试",
"responses": {
"200": {
"description": "pong",
"schema": {
"type": "string"
}
}
}
}
},
"/stats/concurrency": {
"get": {
"description": "当前并发连接数、历史峰值、平均并发、采样序列",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "并发统计",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/endpoints": {
"get": {
"description": "按请求数排名的端点列表,含平均延迟和错误率",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "热门端点",
"parameters": [
{
"type": "integer",
"default": 10,
"description": "Top N",
"name": "top",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/geo": {
"get": {
"description": "按国家/省份/城市统计最近1小时请求分布需要 ip2region.xdb",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "请求来源地理分布",
"parameters": [
{
"type": "integer",
"default": 10,
"description": "Top N",
"name": "top",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/latency": {
"get": {
"description": "最近5分钟的延迟分布Avg / P50 / P90 / P95 / P99 / Max / Min",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "延迟百分位统计",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/overview": {
"get": {
"description": "返回服务运行总览总请求数、QPS、活跃连接、平均延迟、错误率、独立IP、总流量、运行时长",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "总览统计",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/realtime": {
"get": {
"description": "最近1分钟的实时指标QPS、活跃连接、平均延迟、错误率",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "实时统计",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/requests": {
"get": {
"description": "按时间桶聚合的请求数、错误数、平均延迟",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "请求量时间序列",
"parameters": [
{
"type": "string",
"default": "1h",
"description": "时间范围 (1h/6h/24h/1d)",
"name": "period",
"in": "query"
},
{
"type": "integer",
"default": 60,
"description": "分桶数",
"name": "buckets",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/status": {
"get": {
"description": "最近1小时的状态码分布2xx / 3xx / 4xx / 5xx 及各自占比",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "状态码分布",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/stats/top-ips": {
"get": {
"description": "按请求数排名的客户端 IP 及地理区域",
"produces": [
"application/json"
],
"tags": [
"stats"
],
"summary": "高频访问 IP",
"parameters": [
{
"type": "integer",
"default": 15,
"description": "Top N",
"name": "top",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
}
},
"definitions": {
"handler.BatchExtractRequest": {
"type": "object",
"required": [
"urls"
],
"properties": {
"concurrency": {
"type": "integer",
"example": 3
},
"urls": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"handler.ExtractRequest": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"example": "https://h1014.sol148.com/view_video.php?viewkey=xxx"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0.0",
Host: "localhost:8080",
BasePath: "/api",
Schemes: []string{},
Title: "api-server — sol148-extractor API 服务平台",
Description: "基于 Go + Gin 的高性能 API 服务,将 sol148-extractor 的功能封装为 RESTful API。\n提供视频源提取、作者/分类视频列表、IP 地理位置解析、请求统计分析等能力。\n\n## 核心功能\n- **视频提取** — 从视频播放页提取正片源地址strencode2 → unescape → mp4\n- **分类浏览** — 10 个分类的视频列表(分页 / 全量)\n- **作者浏览** — 按 UID 查看作者全部视频\n- **批量提取** — 并发提取多个视频源\n- **统计监控** — QPS / 延迟百分位 / 地理分布 / 并发等\n\n## 内置前端\n- `/` — 运维仪表盘Chart.js 暗色主题)\n- `/video` — 视频浏览网站(完整 SPA\n",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}