clash-linux commited on
Commit
67d77c8
·
verified ·
1 Parent(s): 1de8fd4

Upload 16 files

Browse files
.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
- this.logPath = process.env.PROXY_SERVER_LOG_PATH || './proxy_server.log';
 
 
 
 
 
 
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
- fs.chmodSync(proxyServerPath, 0o755);
 
101
  } catch (err) {
102
- logger.warning(`无法设置执行权限: ${err.message}`);
 
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