Spaces:
Running
Running
Upload 16 files
Browse files- .gitattributes +2 -0
- README.md +127 -127
- src/ProxyServer.js +11 -3
- src/proxy/chrome_proxy_server_android_arm64 +3 -0
- src/proxy/chrome_proxy_server_windows_amd64.exe +3 -0
.gitattributes
CHANGED
@@ -34,3 +34,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
src/proxy/chrome_proxy_server_linux_amd64 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
src/proxy/chrome_proxy_server_linux_amd64 filter=lfs diff=lfs merge=lfs -text
|
37 |
+
src/proxy/chrome_proxy_server_android_arm64 filter=lfs diff=lfs merge=lfs -text
|
38 |
+
src/proxy/chrome_proxy_server_windows_amd64.exe filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
@@ -1,128 +1,128 @@
|
|
1 |
-
---
|
2 |
-
title: Notion
|
3 |
-
emoji: 📝
|
4 |
-
colorFrom: indigo
|
5 |
-
colorTo: blue
|
6 |
-
sdk: docker
|
7 |
-
app_port: 7860
|
8 |
-
---
|
9 |
-
|
10 |
-
# Notion API 轻量级客户端 (Hugging Face Space)
|
11 |
-
|
12 |
-
这个项目提供了一个轻量级的 Notion API 客户端,可以作为 Web 服务部署在 Hugging Face Spaces 上。它兼容 OpenAI API 格式,让你可以将 Notion AI 作为后端集成到各种应用中。
|
13 |
-
|
14 |
-
## 🚀 在 Hugging Face Spaces 上部署
|
15 |
-
|
16 |
-
1. **创建 Space**: 在 Hugging Face 上创建一个新的 Space。
|
17 |
-
2. **选择 Docker SDK**: 在 "Choose an SDK" 步骤中,选择 "Docker"。
|
18 |
-
3. **上传文件**: 将此项目的所有文件(包括 `Dockerfile`)上传到你的 Space Git 仓库中。
|
19 |
-
4. **设置 Secrets**: 这是最重要的一步。你的 Notion 凭证和其他配置需要作为 Secrets 添加到 Space 中。进入你的 Space "Settings" 页面,找到 "Repository secrets" 部分,然后点击 "New secret" 添加以下变量:
|
20 |
-
|
21 |
-
* **必需**:
|
22 |
-
* `NOTION_COOKIE`: 你的 Notion Cookie。你可以通过浏览器开发者工具获取。
|
23 |
-
* **可选**:
|
24 |
-
* `NOTION_SPACE_ID`: 你的 Notion Space ID。
|
25 |
-
* `NOTION_ACTIVE_USER_HEADER`: 你的 Notion 用户 ID。
|
26 |
-
* `PROXY_URL`: 如果你需要通过代理访问 Notion,请设置此项 (例如 `http://user:pass@host:port`)。
|
27 |
-
* `PROXY_AUTH_TOKEN`: 如果你的代理需要单独的认证令牌,请设置此项。
|
28 |
-
* `COOKIE_FILE`: 如果你使用文件管理多个 Cookie,请设置为文件名 (例如 `cookies.txt`)。请确保该文件也已上传到仓库中。
|
29 |
-
|
30 |
-
**注意**: `PORT` 环境变量由 Hugging Face 自动处理,你无需设置。
|
31 |
-
|
32 |
-
5. **等待部署**: 添加完 Secrets 后,Hugging Face 会自动构建 Docker 镜像并部署你的应用。你可以在 "Logs" 标签页查看部署进度和应用日志。部署成功后,你的 API 端点即可使用。
|
33 |
-
|
34 |
-
## 📖 API 使用说明
|
35 |
-
|
36 |
-
服务启动后,你可以通过你的 Space URL 访问 API。
|
37 |
-
|
38 |
-
**基础 URL**: `https://<your-space-name>.hf.space`
|
39 |
-
|
40 |
-
### API 端点
|
41 |
-
|
42 |
-
- `GET /v1/models` - 获取可用模型列表 (主要是为了兼容 OpenAI 客户端)
|
43 |
-
- `POST /v1/chat/completions` - 核心的聊天完成端点
|
44 |
-
- `GET /health` - 健康检查端点
|
45 |
-
|
46 |
-
### 示例: 使用 cURL 调用
|
47 |
-
|
48 |
-
```bash
|
49 |
-
curl -X POST https://<your-space-name>.hf.space/v1/chat/completions \
|
50 |
-
-H "Content-Type: application/json" \
|
51 |
-
-d '{
|
52 |
-
"model": "openai-gpt-4.1",
|
53 |
-
"messages": [
|
54 |
-
{"role": "user", "content": "你好,请介绍一下你自己"}
|
55 |
-
],
|
56 |
-
"stream": true
|
57 |
-
}'
|
58 |
-
```
|
59 |
-
*请将 `<your-space-name>` 替换为你的 Space 名称。*
|
60 |
-
|
61 |
-
## 🍪 Cookie 管理
|
62 |
-
|
63 |
-
为了提高服务的稳定性,你可以提供多个 Notion Cookie。
|
64 |
-
|
65 |
-
### 通过文件管理 Cookie
|
66 |
-
|
67 |
-
1. 在项目根目录创建一个 `cookies.txt` 或 `cookies.json` 文件。
|
68 |
-
2. 将文件上传到你的 Space 仓库。
|
69 |
-
3. 在 Space Secrets 中设置 `COOKIE_FILE` 为你的文件名 (例如 `cookies.txt`)。
|
70 |
-
|
71 |
-
系统启动时会自动从该文件加载Cookie。
|
72 |
-
|
73 |
-
**`cookies.txt` 示例:** (每行一个Cookie)
|
74 |
-
```
|
75 |
-
cookie1_string_here
|
76 |
-
cookie2_string_here
|
77 |
-
```
|
78 |
-
|
79 |
-
**`cookies.json` 示例:**
|
80 |
-
```json
|
81 |
-
{
|
82 |
-
"cookies": [
|
83 |
-
"cookie1_string_here",
|
84 |
-
"cookie2_string_here"
|
85 |
-
]
|
86 |
-
}
|
87 |
-
```
|
88 |
-
|
89 |
-
### Cookie 轮询机制
|
90 |
-
|
91 |
-
系统会自动轮询使用所有有效的Cookie。当一个Cookie失效时(例如返回401错误),会自动切换到下一个有效的Cookie,确保服务不中断。
|
92 |
-
|
93 |
-
---
|
94 |
-
|
95 |
-
## 本地开发参考
|
96 |
-
|
97 |
-
以下信息用于在本地计算机上运行和开发。
|
98 |
-
|
99 |
-
### 依赖项
|
100 |
-
```bash
|
101 |
-
npm install
|
102 |
-
```
|
103 |
-
|
104 |
-
### 环境变量
|
105 |
-
创建 `.env` 文件,设置以下环境变量:
|
106 |
-
```
|
107 |
-
NOTION_COOKIE=your_notion_cookie_here
|
108 |
-
NOTION_SPACE_ID=optional_space_id
|
109 |
-
NOTION_ACTIVE_USER_HEADER=optional_user_id
|
110 |
-
PROXY_URL=optional_proxy_url
|
111 |
-
PROXY_AUTH_TOKEN=your_auth_token
|
112 |
-
PORT=7860
|
113 |
-
```
|
114 |
-
|
115 |
-
### 启动服务
|
116 |
-
```bash
|
117 |
-
npm start
|
118 |
-
```
|
119 |
-
|
120 |
-
### Cookie 管理命令行工具
|
121 |
-
项目提供了一个命令行工具来方便地管理 `cookies.json` 文件。
|
122 |
-
```bash
|
123 |
-
# 运行命令行工具
|
124 |
-
npm run cookie
|
125 |
-
|
126 |
-
# 支持的命令
|
127 |
-
help, list, add, validate, remove, save, load, exit
|
128 |
```
|
|
|
1 |
+
---
|
2 |
+
title: Notion API 轻量级客户端
|
3 |
+
emoji: 📝
|
4 |
+
colorFrom: indigo
|
5 |
+
colorTo: blue
|
6 |
+
sdk: docker
|
7 |
+
app_port: 7860
|
8 |
+
---
|
9 |
+
|
10 |
+
# Notion API 轻量级客户端 (Hugging Face Space)
|
11 |
+
|
12 |
+
这个项目提供了一个轻量级的 Notion API 客户端,可以作为 Web 服务部署在 Hugging Face Spaces 上。它兼容 OpenAI API 格式,让你可以将 Notion AI 作为后端集成到各种应用中。
|
13 |
+
|
14 |
+
## 🚀 在 Hugging Face Spaces 上部署
|
15 |
+
|
16 |
+
1. **创建 Space**: 在 Hugging Face 上创建一个新的 Space。
|
17 |
+
2. **选择 Docker SDK**: 在 "Choose an SDK" 步骤中,选择 "Docker"。
|
18 |
+
3. **上传文件**: 将此项目的所有文件(包括 `Dockerfile`)上传到你的 Space Git 仓库中。
|
19 |
+
4. **设置 Secrets**: 这是最重要的一步。你的 Notion 凭证和其他配置需要作为 Secrets 添加到 Space 中。进入你的 Space "Settings" 页面,找到 "Repository secrets" 部分,然后点击 "New secret" 添加以下变量:
|
20 |
+
|
21 |
+
* **必需**:
|
22 |
+
* `NOTION_COOKIE`: 你的 Notion Cookie。你可以通过浏览器开发者工具获取。
|
23 |
+
* **可选**:
|
24 |
+
* `NOTION_SPACE_ID`: 你的 Notion Space ID。
|
25 |
+
* `NOTION_ACTIVE_USER_HEADER`: 你的 Notion 用户 ID。
|
26 |
+
* `PROXY_URL`: 如果你需要通过代理访问 Notion,请设置此项 (例如 `http://user:pass@host:port`)。
|
27 |
+
* `PROXY_AUTH_TOKEN`: 如果你的代理需要单独的认证令牌,请设置此项。
|
28 |
+
* `COOKIE_FILE`: 如果你使用文件管理多个 Cookie,请设置为文件名 (例如 `cookies.txt`)。请确保该文件也已上传到仓库中。
|
29 |
+
|
30 |
+
**注意**: `PORT` 环境变量由 Hugging Face 自动处理,你无需设置。
|
31 |
+
|
32 |
+
5. **等待部署**: 添加完 Secrets 后,Hugging Face 会自动构建 Docker 镜像并部署你的应用。你可以在 "Logs" 标签页查看部署进度和应用日志。部署成功后,你的 API 端点即可使用。
|
33 |
+
|
34 |
+
## 📖 API 使用说明
|
35 |
+
|
36 |
+
服务启动后,你可以通过你的 Space URL 访问 API。
|
37 |
+
|
38 |
+
**基础 URL**: `https://<your-space-name>.hf.space`
|
39 |
+
|
40 |
+
### API 端点
|
41 |
+
|
42 |
+
- `GET /v1/models` - 获取可用模型列表 (主要是为了兼容 OpenAI 客户端)
|
43 |
+
- `POST /v1/chat/completions` - 核心的聊天完成端点
|
44 |
+
- `GET /health` - 健康检查端点
|
45 |
+
|
46 |
+
### 示例: 使用 cURL 调用
|
47 |
+
|
48 |
+
```bash
|
49 |
+
curl -X POST https://<your-space-name>.hf.space/v1/chat/completions \
|
50 |
+
-H "Content-Type: application/json" \
|
51 |
+
-d '{
|
52 |
+
"model": "openai-gpt-4.1",
|
53 |
+
"messages": [
|
54 |
+
{"role": "user", "content": "你好,请介绍一下你自己"}
|
55 |
+
],
|
56 |
+
"stream": true
|
57 |
+
}'
|
58 |
+
```
|
59 |
+
*请将 `<your-space-name>` 替换为你的 Space 名称。*
|
60 |
+
|
61 |
+
## 🍪 Cookie 管理
|
62 |
+
|
63 |
+
为了提高服务的稳定性,你可以提供多个 Notion Cookie。
|
64 |
+
|
65 |
+
### 通过文件管理 Cookie
|
66 |
+
|
67 |
+
1. 在项目根目录创建一个 `cookies.txt` 或 `cookies.json` 文件。
|
68 |
+
2. 将文件上传到你的 Space 仓库。
|
69 |
+
3. 在 Space Secrets 中设置 `COOKIE_FILE` 为你的文件名 (例如 `cookies.txt`)。
|
70 |
+
|
71 |
+
系统启动时会自动从该文件加载Cookie。
|
72 |
+
|
73 |
+
**`cookies.txt` 示例:** (每行一个Cookie)
|
74 |
+
```
|
75 |
+
cookie1_string_here
|
76 |
+
cookie2_string_here
|
77 |
+
```
|
78 |
+
|
79 |
+
**`cookies.json` 示例:**
|
80 |
+
```json
|
81 |
+
{
|
82 |
+
"cookies": [
|
83 |
+
"cookie1_string_here",
|
84 |
+
"cookie2_string_here"
|
85 |
+
]
|
86 |
+
}
|
87 |
+
```
|
88 |
+
|
89 |
+
### Cookie 轮询机制
|
90 |
+
|
91 |
+
系统会自动轮询使用所有有效的Cookie。当一个Cookie失效时(例如返回401错误),会自动切换到下一个有效的Cookie,确保服务不中断。
|
92 |
+
|
93 |
+
---
|
94 |
+
|
95 |
+
## 本地开发参考
|
96 |
+
|
97 |
+
以下信息用于在本地计算机上运行和开发。
|
98 |
+
|
99 |
+
### 依赖项
|
100 |
+
```bash
|
101 |
+
npm install
|
102 |
+
```
|
103 |
+
|
104 |
+
### 环境变量
|
105 |
+
创建 `.env` 文件,设置以下环境变量:
|
106 |
+
```
|
107 |
+
NOTION_COOKIE=your_notion_cookie_here
|
108 |
+
NOTION_SPACE_ID=optional_space_id
|
109 |
+
NOTION_ACTIVE_USER_HEADER=optional_user_id
|
110 |
+
PROXY_URL=optional_proxy_url
|
111 |
+
PROXY_AUTH_TOKEN=your_auth_token
|
112 |
+
PORT=7860
|
113 |
+
```
|
114 |
+
|
115 |
+
### 启动服务
|
116 |
+
```bash
|
117 |
+
npm start
|
118 |
+
```
|
119 |
+
|
120 |
+
### Cookie 管理命令行工具
|
121 |
+
项目提供了一个命令行工具来方便地管理 `cookies.json` 文件。
|
122 |
+
```bash
|
123 |
+
# 运行命令行工具
|
124 |
+
npm run cookie
|
125 |
+
|
126 |
+
# 支持的命令
|
127 |
+
help, list, add, validate, remove, save, load, exit
|
128 |
```
|
src/ProxyServer.js
CHANGED
@@ -26,7 +26,13 @@ class ProxyServer {
|
|
26 |
this.proxyProcess = null;
|
27 |
this.platform = process.env.PROXY_SERVER_PLATFORM || 'auto';
|
28 |
this.port = process.env.PROXY_SERVER_PORT || 10655;
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
this.enabled = process.env.ENABLE_PROXY_SERVER === 'true';
|
31 |
this.proxyAuthToken = process.env.PROXY_AUTH_TOKEN || 'default_token';
|
32 |
this.logStream = null;
|
@@ -97,9 +103,11 @@ class ProxyServer {
|
|
97 |
// 确保可执行文件有执行权限(在Linux/Android上)
|
98 |
if (this.detectPlatform() !== 'windows') {
|
99 |
try {
|
100 |
-
|
|
|
101 |
} catch (err) {
|
102 |
-
|
|
|
103 |
}
|
104 |
}
|
105 |
|
|
|
26 |
this.proxyProcess = null;
|
27 |
this.platform = process.env.PROXY_SERVER_PLATFORM || 'auto';
|
28 |
this.port = process.env.PROXY_SERVER_PORT || 10655;
|
29 |
+
|
30 |
+
// 检查是否在Linux环境下,并且没有指定日志路径
|
31 |
+
const defaultLogPath = os.platform() === 'linux' && !process.env.PROXY_SERVER_LOG_PATH
|
32 |
+
? '/tmp/proxy_server.log'
|
33 |
+
: './proxy_server.log';
|
34 |
+
|
35 |
+
this.logPath = process.env.PROXY_SERVER_LOG_PATH || defaultLogPath;
|
36 |
this.enabled = process.env.ENABLE_PROXY_SERVER === 'true';
|
37 |
this.proxyAuthToken = process.env.PROXY_AUTH_TOKEN || 'default_token';
|
38 |
this.logStream = null;
|
|
|
103 |
// 确保可执行文件有执行权限(在Linux/Android上)
|
104 |
if (this.detectPlatform() !== 'windows') {
|
105 |
try {
|
106 |
+
// 在Docker等只读文件系统中,这可能会失败,但我们在Dockerfile中已经设置了权限
|
107 |
+
// fs.chmodSync(proxyServerPath, 0o755);
|
108 |
} catch (err) {
|
109 |
+
// 忽略这个错误,因为可能是在一个只读的环境中
|
110 |
+
// logger.warning(`无法设置执行权限: ${err.message}`);
|
111 |
}
|
112 |
}
|
113 |
|
src/proxy/chrome_proxy_server_android_arm64
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e4fce54fee0fe3acc4d255517134dcabb9dc3086e9dbe571bc9f8f216ba64039
|
3 |
+
size 12863727
|
src/proxy/chrome_proxy_server_windows_amd64.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:bb09f4ed7261e2f0db9be7b1c37df628549df6243aee4c6e3b25d3e9452028f6
|
3 |
+
size 12961280
|