Skip to content

hyhnet/uniapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UniAPI

uniapi 是一个基于 Go 语言编写的多合一第三方服务统一集成包。它封装了多种常用互联网服务与工具的 API,提供了简洁一致的调用接口,旨在帮助开发者快速集成各种外部能力,免去重复造轮子的烦恼。

🚀 支持的服务与功能

本库集成了以下 10 种 核心服务:

模块名称 功能描述 核心方法
baidupan 百度网盘 API:支持文件上传、下载、删除及基于哈希的键值存储(CAS)。 Init, Upload, Download, PutObject, GetObject, HasObject, GetFileId
bilibili 哔哩哔哩 API:支持获取关注列表、取消关注等用户社交关系管理。 Init, GetAllFollowings, CancelFollow
edgetts 微软 Edge 文本转语音:调用 Edge TTS 生成自然语言语音,返回 WAV 字节数据。 EdgeTTS
flomo Flomo 笔记同步:支持增量同步与拉取 Flomo 上的 Memos 笔记。 Init, UpdatedMemo
googletrans 谷歌翻译:提供免费且免 Key 的中英互译服务。 TranslateZhToEn, TranslateEnToZh
larkbot 飞书/Lark 机器人:支持向飞书机器人、群聊或指定用户发送文本消息。 Init, Send, SendTo
monica Monica AI 助手:支持 Monica 的 Chat Completion 接口,支持主流大模型(如 Claude 3.5 / 4.5 等)。 Init, ChatCompletion
mysql MySQL & GORM 封装:包含 GORM 初始化、自动迁移、SQL 追踪及高效批量插入。 Init, Connect, BatchInsert, SetTraceFn
playwright Playwright 浏览器自动化:基于 Playwright 动态爬取网页 Cookie(如百度网盘登录凭证)或 Headers。 GetCookies, GetHeader
youtube YouTube 视频工具:解析并下载 YouTube 视频的自动生成字幕(Captions)。 DownloadAutoCaption

🛠️ 项目目录结构

uniapi/
├── example/            # 完整的使用示例代码
│   └── main.go         # 包含上述所有服务调用的 Demo
├── service/            # 核心服务模块目录
│   ├── baidupan/       # 百度网盘模块
│   ├── bilibili/       # 哔哩哔哩模块
│   ├── edgetts/        # 微软 Edge TTS 语音合成模块
│   ├── flomo/          # Flomo 笔记模块
│   ├── googletrans/    # 谷歌翻译模块
│   ├── larkbot/        # 飞书机器人模块
│   ├── monica/         # Monica AI 助手接口
│   ├── mysql/          # MySQL & GORM 数据库工具包
│   ├── playwright/     # Playwright 浏览器自动化工具
│   └── youtube/        # YouTube 工具包
├── utils/              # 通用公共工具库
│   ├── json.go         # 不对 HTML 进行转义的 JSON 序列化工具
│   ├── req.go          # 自带重试与 Proxy 支持的 HTTP 请求工具
│   └── retry.go        # 通用重试器
├── go.mod              # 依赖管理文件
└── go.sum              # 依赖版本哈希文件

📦 安装依赖

在使用本项目之前,请确保您的本地环境已安装了 Go (>= 1.25.0)。

可以使用以下命令拉取本项目的依赖:

go mod tidy

⚠️ 注意:部分模块(如 playwright)需要本地安装 Playwright 的驱动程序。在第一次使用前,您可能需要执行 Playwright 的安装步骤:

go run github.com/playwright-community/playwright-go/cmd/playwright@latest install --with-deps

💡 快速上手示例

在 example/main.go 中提供了所有服务的调用示例。以下是几个典型模块的使用方法:

1. 微软 Edge 文本转语音 (edgetts)

package main

import (
	"context"
	"fmt"
	"os"
	"github.com/lincaiyong/uniapi/service/edgetts"
)

func main() {
	ctx := context.Background()
	// 合成语音,返回 WAV 格式的字节流
	wavBytes, err := edgetts.EdgeTTS(ctx, "你好,欢迎使用 UniAPI!")
	if err != nil {
		fmt.Printf("TTS 合成失败: %v\n", err)
		return
	}
	
	_ = os.WriteFile("output.wav", wavBytes, 0644)
	fmt.Println("语音已保存到 output.wav")
}

2. 谷歌翻译 (googletrans)

package main

import (
	"context"
	"fmt"
	"github.com/lincaiyong/uniapi/service/googletrans"
)

func main() {
	ctx := context.Background()
	
	// 中文翻译为英文
	enText, _ := googletrans.TranslateZhToEn(ctx, "书籍是人类进步的阶梯。")
	fmt.Println(enText) // Output: Books are the ladder of human progress.
	
	// 英文翻译为中文
	zhText, _ := googletrans.TranslateEnToZh(ctx, enText)
	fmt.Println(zhText) // Output: 书籍是人类进步的阶梯。
}

3. Monica AI 助手对话流 (monica)

package main

import (
	"context"
	"fmt"
	"os"
	"github.com/lincaiyong/uniapi/service/monica"
)

func main() {
	// 初始化 Monica Session
	monica.Init(os.Getenv("MONICA_SESSION_ID"))
	
	ctx := context.Background()
	// 流式获取 AI 对话结果
	_, err := monica.ChatCompletion(ctx, monica.ModelClaude45Sonnet, "请讲一个冷笑话", func(chunk string) {
		fmt.Print(chunk) // 实时打印流式输出
	})
	if err != nil {
		fmt.Printf("调用 Monica 失败: %v\n", err)
	}
	fmt.Println()
}

🛠️ 公共工具库 (utils)

本库在 utils 下还提供了一些极其方便的底层实用工具:

  • utils.DoRequest: 内置了代理读取(读取系统环境变量 HTTP_PROXY/HTTPS_PROXY)及 3 次自动重试机制的 HTTP 请求方法。
  • utils.MarshalNoEscape / utils.MarshalIndentNoEscape: 默认不对 <>& 等 HTML 字符进行转义的 JSON 序列化工具,非常适合用于处理第三方接口请求体的拼接。
  • utils.Retry: 简单的流程重试器,支持在发生错误时多次尝试执行指定函数。

📄 开源协议

本项目采用 MIT License 开源协议。

About

An universe api layer.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages