diff --git a/public/i18n/en.yml b/public/i18n/en.yml
index 269dfbe..a27fa9d 100644
--- a/public/i18n/en.yml
+++ b/public/i18n/en.yml
@@ -249,23 +249,32 @@ SETTINGS_SYNC_CONFIG_SELECT_FILE: Select files to sync
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: Configuration files only
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: Gallery files only
SETTINGS_SYNC_CONFIG_SELECT_BOTH: Both configuration and gallery files
+SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea Host
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: username
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME: username
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: username
SETTINGS_SYNC_CONFIG_GITHUB_REPO: repository (private)
+SETTINGS_SYNC_CONFIG_GITEA_REPO: repository
SETTINGS_SYNC_CONFIG_GITEE_REPO: repository path
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: branch
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH: branch
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: branch
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Token
SETTINGS_SYNC_CONFIG_PROXY: Proxy
SETTINGS_SYNC_CONFIG_INTERVAL: Interval(min)
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: Please enter GitHub username
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: Please enter Gitea username
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: Please enter Gitee username
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: Please enter GitHub repository name
+SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: Please enter Gitea repository name
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: Please enter Gitee repository name
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: Please enter GitHub branch name
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: Please enter Gitee branch name
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: Please enter Gitea branch name
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: Please enter GitHub Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: Please enter Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: Please enter Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: Please enter proxy
SETTINGS_UP_DOWN_DESC: Upload and download configuration files
diff --git a/public/i18n/zh-CN.yml b/public/i18n/zh-CN.yml
index 784207d..4acf3fc 100644
--- a/public/i18n/zh-CN.yml
+++ b/public/i18n/zh-CN.yml
@@ -252,23 +252,32 @@ SETTINGS_SYNC_CONFIG_SELECT_FILE: 选择同步文件
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: 仅配置文件
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: 仅相册文件
SETTINGS_SYNC_CONFIG_SELECT_BOTH: 配置文件和相册文件
+SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea 网址
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: GitHub用户名
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME: Gitea用户名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: Gitee用户名
SETTINGS_SYNC_CONFIG_GITHUB_REPO: 仓库(私有)
+SETTINGS_SYNC_CONFIG_GITEA_REPO: 仓库
SETTINGS_SYNC_CONFIG_GITEE_REPO: 仓库路径名
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: GitHub分支
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH: Gitea分支
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: Gitee分支
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: GitHub Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Gitee Token
SETTINGS_SYNC_CONFIG_PROXY: 代理
SETTINGS_SYNC_CONFIG_INTERVAL: 间隔(分钟)
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: 请输入GitHub用户名
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: 请输入Gitea用户名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: 请输入Gitee用户名
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: 请输入GitHub仓库名
+SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: 请输入Gitea仓库名
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: 请输入Gitee仓库名
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: 请输入GitHub分支名
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: 请输入Gitea分支名
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: 请输入Gitee分支名
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 请输入GitHub Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 请输入Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 请输入Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 请输入代理地址
SETTINGS_UP_DOWN_DESC: 上传下载配置文件
diff --git a/public/i18n/zh-TW.yml b/public/i18n/zh-TW.yml
index c056fd3..31c627f 100644
--- a/public/i18n/zh-TW.yml
+++ b/public/i18n/zh-TW.yml
@@ -250,23 +250,32 @@ SETTINGS_SYNC_CONFIG_SELECT_FILE: 選擇同步檔案
SETTINGS_SYNC_CONFIG_SELECT_CONFIG: 僅配置檔案
SETTINGS_SYNC_CONFIG_SELECT_GALLERY: 僅相簿檔案
SETTINGS_SYNC_CONFIG_SELECT_BOTH: 配置檔案和相簿檔案
+SETTINGS_SYNC_CONFIG_GITEA_HOST: Gitea Host
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME: 用戶名
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME: 用戶名
SETTINGS_SYNC_CONFIG_GITHUB_REPO: 儲存庫(私有)
+SETTINGS_SYNC_CONFIG_GITEA_REPO: 儲存庫
SETTINGS_SYNC_CONFIG_GITEE_REPO: 儲存庫路径
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH: GitHub 分支
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH: Gitea 分支
SETTINGS_SYNC_CONFIG_GITEE_BRANCH: Gitee 分支
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN: GitHub Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN: Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN: Gitee Token
SETTINGS_SYNC_CONFIG_PROXY: 代理
SETTINGS_SYNC_CONFIG_INTERVAL: 間隔(分鐘)
SETTINGS_SYNC_CONFIG_GITHUB_USERNAME_PLACEHOLDER: 請輸入 GitHub 用戶名
+SETTINGS_SYNC_CONFIG_GITEA_USERNAME_PLACEHOLDER: 請輸入 Gitea 用戶名
SETTINGS_SYNC_CONFIG_GITEE_USERNAME_PLACEHOLDER: 請輸入 Gitee 用戶名
SETTINGS_SYNC_CONFIG_GITHUB_REPO_PLACEHOLDER: 請輸入 GitHub 儲存庫名稱
+SETTINGS_SYNC_CONFIG_GITEA_REPO_PLACEHOLDER: 請輸入 Gitea 儲存庫名稱
SETTINGS_SYNC_CONFIG_GITEE_REPO_PLACEHOLDER: 請輸入 Gitee 儲存庫名稱
SETTINGS_SYNC_CONFIG_GITHUB_BRANCH_PLACEHOLDER: 請輸入 GitHub 分支名稱
+SETTINGS_SYNC_CONFIG_GITEA_BRANCH_PLACEHOLDER: 請輸入 Gitea 分支名稱
SETTINGS_SYNC_CONFIG_GITEE_BRANCH_PLACEHOLDER: 請輸入 Gitee 分支名稱
SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 請輸入 GitHub Token
+SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 請輸入 Gitea Token
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 請輸入 Gitee Token
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 請輸入代理地址
SETTINGS_UP_DOWN_DESC: 上傳和下載配置檔案
diff --git a/src/main/utils/syncSettings.ts b/src/main/utils/syncSettings.ts
index ee523c6..2092568 100644
--- a/src/main/utils/syncSettings.ts
+++ b/src/main/utils/syncSettings.ts
@@ -14,7 +14,8 @@ interface SyncConfig {
repo: string
branch: string
token: string
- proxy?: string,
+ endpoint?: string
+ proxy?: string
interval?: number
}
@@ -81,7 +82,7 @@ async function uploadLocalToRemote (syncConfig: SyncConfig, fileName: string) {
logger.error(error)
return false
}
- } else {
+ } else if (type === 'github') {
const octokit = getOctokit(syncConfig)
try {
const res = await octokit.rest.repos.createOrUpdateFileContents({
@@ -97,6 +98,25 @@ async function uploadLocalToRemote (syncConfig: SyncConfig, fileName: string) {
logger.error(error)
return false
}
+ } else {
+ const { endpoint = '' } = syncConfig
+ const apiUrl = `${endpoint}/api/v1/repos/${username}/${repo}/contents/${fileName}`
+ try {
+ const headers = {
+ Authorization: `token ${token}`
+ }
+ const res = await axios.post(apiUrl, {
+ message: `upload ${fileName} from PicList`,
+ content: fs.readFileSync(localFilePath, { encoding: 'base64' }),
+ branch
+ }, {
+ headers
+ })
+ return res.status >= 200 && res.status < 300
+ } catch (error: any) {
+ logger.error(error)
+ return false
+ }
}
}
@@ -132,9 +152,8 @@ async function updateLocalToRemote (syncConfig: SyncConfig, fileName: string) {
return true
}
return false
- } else {
+ } else if (type === 'github') {
const octokit = getOctokit(syncConfig)
-
const shaRes = await octokit.rest.repos.getContent({
owner: username,
repo,
@@ -156,6 +175,29 @@ async function updateLocalToRemote (syncConfig: SyncConfig, fileName: string) {
sha
})
return res.status === 200
+ } else {
+ const { endpoint = '' } = syncConfig
+ const apiUrl = `${endpoint}/api/v1/repos/${username}/${repo}/contents/${fileName}`
+ const headers = {
+ Authorization: `token ${token}`
+ }
+ const shaRes = await axios.get(apiUrl, {
+ headers
+ })
+ if (shaRes.status < 200 || shaRes.status > 300) {
+ throw new Error('get sha failed')
+ }
+ const data = shaRes.data as any
+ const sha = data.sha
+ const res = await axios.put(apiUrl, {
+ message: `update ${fileName} from PicList`,
+ content: fs.readFileSync(localFilePath, { encoding: 'base64' }),
+ branch,
+ sha
+ }, {
+ headers
+ })
+ return res.status >= 200 && res.status < 300
}
}
@@ -163,20 +205,25 @@ async function downloadRemoteToLocal (syncConfig: SyncConfig, fileName: string)
const localFilePath = path.join(STORE_PATH, fileName)
const { username, repo, branch, token, proxy, type } = syncConfig
if (type === 'gitee') {
- const url = `https://gitee.com/api/v5/repos/${username}/${repo}/contents/${fileName}`
- const res = await axios.get(url, {
- params: {
- access_token: token,
- ref: branch
+ try {
+ const url = `https://gitee.com/api/v5/repos/${username}/${repo}/contents/${fileName}`
+ const res = await axios.get(url, {
+ params: {
+ access_token: token,
+ ref: branch
+ }
+ })
+ if (res.status >= 200 && res.status < 300) {
+ const content = res.data.content
+ await fs.writeFile(localFilePath, Buffer.from(content, 'base64'))
+ return true
}
- })
- if (res.status >= 200 && res.status < 300) {
- const content = res.data.content
- await fs.writeFile(localFilePath, Buffer.from(content, 'base64'))
- return true
+ return false
+ } catch (error: any) {
+ logger.error(error)
+ return false
}
- return false
- } else {
+ } else if (type === 'github') {
const octokit = getOctokit(syncConfig)
try {
const res = await octokit.rest.repos.getContent({
@@ -209,6 +256,29 @@ async function downloadRemoteToLocal (syncConfig: SyncConfig, fileName: string)
logger.error(error)
return false
}
+ } else {
+ const { endpoint = '' } = syncConfig
+ const apiUrl = `${endpoint}/api/v1/repos/${username}/${repo}/contents/${fileName}`
+ try {
+ const headers = {
+ Authorization: `token ${token}`
+ }
+ const res = await axios.get(apiUrl, {
+ headers,
+ params: {
+ ref: branch
+ }
+ })
+ if (res.status >= 200 && res.status < 300) {
+ const content = res.data.content
+ await fs.writeFile(localFilePath, Buffer.from(content, 'base64'))
+ return true
+ }
+ return false
+ } catch (error: any) {
+ logger.error(error)
+ return false
+ }
}
}
diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue
index 8d63510..50237ca 100644
--- a/src/renderer/pages/PicGoSetting.vue
+++ b/src/renderer/pages/PicGoSetting.vue
@@ -1129,39 +1129,49 @@
+
+
+