twikoo-func 1.6.44 → 1.6.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/utils/image.js +35 -4
- package/utils/index.js +2 -1
package/package.json
CHANGED
package/utils/image.js
CHANGED
|
@@ -19,8 +19,8 @@ const fn = {
|
|
|
19
19
|
// tip: qcloud 图床走前端上传,其他图床走后端上传
|
|
20
20
|
if (config.IMAGE_CDN === '7bu') {
|
|
21
21
|
await fn.uploadImageToLskyPro({ photo, fileName, config, res, imageCdn: 'https://7bu.top' })
|
|
22
|
-
} else if (config.IMAGE_CDN === '
|
|
23
|
-
await fn.
|
|
22
|
+
} else if (config.IMAGE_CDN === 'see') {
|
|
23
|
+
await fn.uploadImageToSee({ photo, fileName, config, res, imageCdn: 'https://s.ee/api/v1/file/upload' })
|
|
24
24
|
} else if (isUrl(config.IMAGE_CDN)) {
|
|
25
25
|
await fn.uploadImageToLskyPro({ photo, fileName, config, res, imageCdn: config.IMAGE_CDN })
|
|
26
26
|
} else if (config.IMAGE_CDN === 'lskypro') {
|
|
@@ -29,6 +29,8 @@ const fn = {
|
|
|
29
29
|
await fn.uploadImageToPicList({ photo, fileName, config, res, imageCdn: config.IMAGE_CDN_URL })
|
|
30
30
|
} else if (config.IMAGE_CDN === 'easyimage') {
|
|
31
31
|
await fn.uploadImageToEasyImage({ photo, fileName, config, res })
|
|
32
|
+
} else if (config.IMAGE_CDN === 'chevereto') {
|
|
33
|
+
await fn.uploadImageToChevereto({ photo, fileName, config, res })
|
|
32
34
|
} else {
|
|
33
35
|
throw new Error('不支持的图片上传服务')
|
|
34
36
|
}
|
|
@@ -39,8 +41,8 @@ const fn = {
|
|
|
39
41
|
}
|
|
40
42
|
return res
|
|
41
43
|
},
|
|
42
|
-
async
|
|
43
|
-
//
|
|
44
|
+
async uploadImageToSee ({ photo, fileName, config, res, imageCdn }) {
|
|
45
|
+
// S.EE 图床 https://s.ee (原 SM.MS)
|
|
44
46
|
const formData = new FormData()
|
|
45
47
|
formData.append('smfile', fn.base64UrlToReadStream(photo, fileName))
|
|
46
48
|
const uploadResult = await axios.post(imageCdn, formData, {
|
|
@@ -148,6 +150,35 @@ const fn = {
|
|
|
148
150
|
throw new Error(errorMsg)
|
|
149
151
|
}
|
|
150
152
|
},
|
|
153
|
+
async uploadImageToChevereto ({ photo, fileName, config, res }) {
|
|
154
|
+
if (!config.IMAGE_CDN_URL) {
|
|
155
|
+
throw new Error('未配置 Chevereto 站点地址 (IMAGE_CDN_URL)')
|
|
156
|
+
}
|
|
157
|
+
if (!config.IMAGE_CDN_TOKEN) {
|
|
158
|
+
throw new Error('未配置 Chevereto API Key (IMAGE_CDN_TOKEN)')
|
|
159
|
+
}
|
|
160
|
+
const formData = new FormData()
|
|
161
|
+
formData.append('key', config.IMAGE_CDN_TOKEN)
|
|
162
|
+
formData.append('source', fn.base64UrlToReadStream(photo, fileName))
|
|
163
|
+
formData.append('format', 'json')
|
|
164
|
+
const apiUrl = config.IMAGE_CDN_URL.replace(/\/$/, '') + '/api/1/upload'
|
|
165
|
+
const uploadResult = await axios.post(apiUrl, formData, {
|
|
166
|
+
headers: {
|
|
167
|
+
...formData.getHeaders()
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
const data = uploadResult.data
|
|
171
|
+
if (data.status_code === 200 && data.image && data.image.url) {
|
|
172
|
+
res.data = {
|
|
173
|
+
url: data.image.url,
|
|
174
|
+
thumb: data.image.thumb ? data.image.thumb.url : data.image.url,
|
|
175
|
+
del: data.image.delete_url
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
const errMsg = (data.error && data.error.message) || JSON.stringify(data)
|
|
179
|
+
throw new Error(`Chevereto 上传失败: ${errMsg}`)
|
|
180
|
+
}
|
|
181
|
+
},
|
|
151
182
|
base64UrlToReadStream (base64Url, fileName) {
|
|
152
183
|
const base64 = base64Url.split(';base64,').pop()
|
|
153
184
|
const writePath = path.resolve(os.tmpdir(), fileName)
|
package/utils/index.js
CHANGED