Skip to content

Commit

Permalink
feat: #133 支持支持Github pages、HUGO、Jekyll、Next.js content、Nuxt.js conte…
Browse files Browse the repository at this point in the history
…nt-发布平台通用接口定义
  • Loading branch information
terwer committed Nov 21, 2022
1 parent d8f99ff commit cda8ec3
Show file tree
Hide file tree
Showing 35 changed files with 175 additions and 128 deletions.
43 changes: 29 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@

[点击查看新手小白级视频教程](https://mp.terwer.space/post/configure-entry-video-brpm9.html)

## 愿景

<h1>用思源笔记记录你的创作,剩下的交给我</h1>

为什么要做这个项目?

发布到不同平台,并且保持同步,一直以来都是一个痛苦的过程。试想一下,带着灵感满心欢喜的创作完成,然后打开每个平台,登录账号,复制粘贴,修改格式,填写属性,点击发布,还没到最后一步,已经感觉不耐烦了。如果有多个平台,那会更加抓狂。

此时,您可能会想,要是有一个一次配置,然后以后一键发布更新的该多好。恭喜你,用我就对了。

如果您有幸接触我这个不起眼的项目,我希望它能让这个过程变成自动的(或者某种操作简单的半自动)、高效的、愉快的,这也是创作本来该有的体验。

## 尝鲜体验

从 0.1.0+ 版本开始,增加临时尝鲜版,直接体验最新特性,无需等待版本发布,支持自定义配置思源笔记的API地址。只要修改思源API地址和token即可,网页版需要填写外网地址。所有配置均存储在浏览器本地。切换浏览器或者换电脑配置不共享。
Expand Down Expand Up @@ -50,28 +62,31 @@

4. 因为所有配置是配置直接存储在浏览器本地,切换浏览器数据不会共享。卸载插件也会清空所有的配置数据,后续会考虑配置备份功能(需要调研实现这个需求的必要性)。

## 挂件版核心特性
## 核心特性

- 兼容 Metaweblog API 以及自定义平台 <sup>0.0.3+</sup>
- 支持平台开关 <sup>0.0.3+</sup>
- 支持选择文章分类 <sup>0.0.3+</sup>
- 自动生成yaml(目前兼容Vuepress,0.1.0 会兼容更多平台) <sup>0.0.1+</sup>
- 自动生成文档别名(使用Google翻译)、摘要与标签(使用jieba分词) <sup>0.0.2+</sup>
- 支持文章与平台绑定 <sup>0.0.2+</sup>
- 自动适配暗黑模式与浅色模式 <sup>0.0.3+</sup>
- 多语言支持,支持中文版和英文版 <sup>0.0.1+</sup>
- 支持子目录模式 <sup>0.1.0+</sup>
- [X] 兼容 Metaweblog API 以及自定义平台 <sup>0.0.3+</sup>
- [X] 支持平台开关 <sup>0.0.3+</sup>
- [X] 支持选择文章分类 <sup>0.0.3+</sup>
- [X] 自动生成yaml(目前兼容Vuepress,0.1.0 会兼容更多平台) <sup>0.0.1+</sup>
- [X] 自动生成文档别名(使用Google翻译)、摘要与标签(使用jieba分词) <sup>0.0.2+</sup>
- [X] 支持文章与平台绑定 <sup>0.0.2+</sup>
- [X] 自动适配暗黑模式与浅色模式 <sup>0.0.3+</sup>
- [X] 多语言支持,支持中文版和英文版 <sup>0.0.1+</sup>
- [X] 支持子目录模式 <sup>0.1.0+</sup>

- 现在无需在所有页面引用挂件了,只需要在父级页面引用一个挂件即可。

1. 如果检测到没有子文档,会兼容 0.0.3 版本以前的方式,展示当前文档的发布页面。

2. 如果检测到有子文档,会以列表加分页的方式展示所有子文档列表。可单独选择某个子文档进行发布操作。

- 发布页面支持预览 <sup>0.1.0+</sup>
- 支持自定义接口协议 <sup>1.0.0+</sup>
- 支持文章标题使用数字编号 <sup>0.0.3+</sup>
- [多平台支持,并且持续适配中](https://github.com/terwer/src-sy-post-publisher#%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0) <sup>0.0.1+</sup>
- [X] 发布页面支持预览 <sup>0.1.0+</sup>
- [ ] 支持自定义接口协议 <sup>1.0.0+</sup>
- [X] 支持文章标题使用数字编号 <sup>0.0.3+</sup>
- [X] [多平台支持,并且持续适配中](https://github.com/terwer/src-sy-post-publisher#%E6%94%AF%E6%8C%81%E5%B9%B3%E5%8F%B0) <sup>0.0.1+</sup>
- [ ] 支持同步到Github(Github pages、Hugo、Hexo、Jekyll、Vuepress、Vitepress、Nuxt content、Next.js),0.1.0+ 之后更加通用,支持动态添加管理多个 <sup>0.0.1+</sup> <sup>0.1.0+</sup>
- [ ] 支持自定义图床 <sup>0.1.0+</sup>
- [ ] 支持多种发布视图,简单模式、详细模式和源码模式 <sup>0.1.0+</sup> <sup>0.0.1+</sup>

## 最近更新

Expand Down
2 changes: 1 addition & 1 deletion src/components/blog/themes/default/DefaultPublish.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

<script lang="ts" setup>
import {ArrowLeft} from '@element-plus/icons-vue'
import PublishService from "../../../../components/PublishService.vue";
import PublishService from "../../../publish/PublishService.vue";
import {Post} from "../../../../lib/common/post";
const props = defineProps({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

<script lang="ts" setup>
import {ref} from "vue";
import {inBrowser} from "../lib/util";
import {inBrowser} from "../../lib/util";
const pwd = ref("")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
</template>

<script lang="ts" setup>
import logUtil from "../lib/logUtil";
import logUtil from "../../lib/logUtil";
import {onMounted, ref} from "vue";
let defaultTab = ref("plantform-main")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<script lang="ts" setup>
import {useI18n} from "vue-i18n";
import {onMounted} from "vue";
import logUtil from "../../lib/logUtil";
import logUtil from "../../../lib/logUtil";
import {useDark, useToggle} from "@vueuse/core";
const {locale} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
@click="onPlantformTypeChange(PlantformType.Wordpress)">
{{ $t('dynamic.platform.type.wordpress') }}
</el-button>
<el-button :type="pType===PlantformType.Github?'primary':''"
@click="onPlantformTypeChange(PlantformType.Github)">
{{ $t('dynamic.platform.type.github') }}
</el-button>
<el-button :type="pType===PlantformType.Custom?'primary':''"
@click="onPlantformTypeChange(PlantformType.Custom)">{{
$t('dynamic.platform.type.custom')
Expand Down Expand Up @@ -58,13 +62,13 @@
</template>

<script lang="ts" setup>
import {DynamicConfig, getDynamicJsonCfg, PlantformType, setDynamicJsonCfg} from "../../lib/dynamicConfig";
import {DynamicConfig, getDynamicJsonCfg, PlantformType, setDynamicJsonCfg} from "../../../lib/dynamicConfig";
import {onMounted, reactive, ref} from "vue";
import logUtil from "../../lib/logUtil";
import logUtil from "../../../lib/logUtil";
import {ElMessage, FormInstance, FormRules} from "element-plus";
import {useI18n} from "vue-i18n";
import {checkKeyExists} from "../../lib/config";
import {reloadPage} from "../../lib/util";
import {checkKeyExists} from "../../../lib/config";
import {reloadPage} from "../../../lib/util";
const {t} = useI18n()
Expand Down Expand Up @@ -94,6 +98,7 @@ const rules = reactive<FormRules>({
const onPlantformTypeChange = (val: PlantformType) => {
pType.value = val
showForm.value = pType.value == PlantformType.Metaweblog || pType.value == PlantformType.Wordpress
|| pType.value == PlantformType.Github
logUtil.logInfo(pType.value)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@

<script lang="ts" setup>
import {onMounted, reactive, ref, watch} from "vue";
import {getBooleanConf, setBooleanConf} from "../../lib/config";
import SWITCH_CONSTANTS from "../../lib/constants/switchConstants";
import logUtil from "../../lib/logUtil";
import {DynamicConfig, getDynamicJsonCfg} from "../../lib/dynamicConfig";
import {useTabCount} from "../../composables/tabCountCom";
import {getBooleanConf, setBooleanConf} from "../../../lib/config";
import SWITCH_CONSTANTS from "../../../lib/constants/switchConstants";
import logUtil from "../../../lib/logUtil";
import {DynamicConfig, getDynamicJsonCfg} from "../../../lib/dynamicConfig";
import {useTabCount} from "../../../composables/tabCountCom";
// use
const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@

<script lang="ts" setup>
import {reactive, ref, watch} from "vue";
import {getBooleanConf, setBooleanConf} from "../../lib/config";
import SWITCH_CONSTANTS from "../../lib/constants/switchConstants";
import logUtil from "../../lib/logUtil";
import {DynamicConfig, getDynamicJsonCfg} from "../../lib/dynamicConfig";
import {DynamicMCfg} from "../../lib/platform/metaweblog/config/dynamicMCfg";
import {DynamicWCfg} from "../../lib/platform/metaweblog/config/dynamicWCfg";
import {useTabCount} from "../../composables/tabCountCom";
import {getBooleanConf, setBooleanConf} from "../../../lib/config";
import SWITCH_CONSTANTS from "../../../lib/constants/switchConstants";
import logUtil from "../../../lib/logUtil";
import {DynamicConfig, getDynamicJsonCfg} from "../../../lib/dynamicConfig";
import {DynamicMCfg} from "../../../lib/platform/metaweblog/config/dynamicMCfg";
import {DynamicWCfg} from "../../../lib/platform/metaweblog/config/dynamicWCfg";
import {useTabCount} from "../../../composables/tabCountCom";
//use
const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,16 @@

<script lang="ts" setup>
import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
import {getBooleanConf} from "../../lib/config";
import logUtil from "../../lib/logUtil";
import {getBooleanConf} from "../../../lib/config";
import logUtil from "../../../lib/logUtil";
import type {FormInstance, FormRules} from 'element-plus'
import {ElMessage} from "element-plus";
import {useI18n} from "vue-i18n";
import {getPageAttrs, getPageId, setPageAttrs} from "../../lib/platform/siyuan/siyuanUtil";
import {POSTID_KEY_CONSTANTS} from "../../lib/constants/postidKeyConstants";
import {isEmptyString} from "../../lib/util";
import {DynamicConfig, getDynamicJsonCfg} from "../../lib/dynamicConfig";
import {useTabCount} from "../../composables/tabCountCom";
import {getPageAttrs, getPageId, setPageAttrs} from "../../../lib/platform/siyuan/siyuanUtil";
import {POSTID_KEY_CONSTANTS} from "../../../lib/constants/postidKeyConstants";
import {isEmptyString} from "../../../lib/util";
import {DynamicConfig, getDynamicJsonCfg} from "../../../lib/dynamicConfig";
import {useTabCount} from "../../../composables/tabCountCom";
// use
const {t} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@
<script lang="ts" setup>
import {onMounted, ref} from 'vue'
import {useI18n} from "vue-i18n";
import {setBooleanConf} from "../../lib/config";
import SWITCH_CONSTANTS from "../../lib/constants/switchConstants";
import logUtil from "../../lib/logUtil";
import {useTabCount} from "../../composables/tabCountCom";
import {setBooleanConf} from "../../../lib/config";
import SWITCH_CONSTANTS from "../../../lib/constants/switchConstants";
import logUtil from "../../../lib/logUtil";
import {useTabCount} from "../../../composables/tabCountCom";
// use
const {t} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,11 +171,11 @@
</template>

<script lang="ts" setup>
import {CommonblogCfg, ICommonblogCfg} from "../../../lib/platform/commonblog/commonblogCfg";
import {CommonblogCfg, ICommonblogCfg} from "../../../../lib/platform/commonblog/commonblogCfg";
import {nextTick, onMounted, reactive, ref} from "vue";
import {useI18n} from "vue-i18n";
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../lib/platform/siyuan/siyuanUtil";
import {getJSONConf, setJSONConf} from "../../../lib/config";
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../../lib/platform/siyuan/siyuanUtil";
import {getJSONConf, setJSONConf} from "../../../../lib/config";
import {
cutWords,
formatNumToZhDate,
Expand All @@ -186,9 +186,9 @@ import {
pathJoin,
pingyinSlugify,
zhSlugify
} from "../../../lib/util";
import {SIYUAN_PAGE_ATTR_KEY} from "../../../lib/constants/siyuanPageConstants";
import logUtil from "../../../lib/logUtil";
} from "../../../../lib/util";
import {SIYUAN_PAGE_ATTR_KEY} from "../../../../lib/constants/siyuanPageConstants";
import logUtil from "../../../../lib/logUtil";
import {ElMessage} from "element-plus/es";
import shortHash from "shorthash2";
import {
Expand All @@ -198,13 +198,13 @@ import {
removeMdWidgetTag,
removeTitleNumber,
removeWidgetTag
} from "../../../lib/htmlUtil";
import {CONSTANTS} from "../../../lib/constants/constants";
} from "../../../../lib/htmlUtil";
import {CONSTANTS} from "../../../../lib/constants/constants";
import {ElMessageBox} from "element-plus";
import {API} from "../../../lib/api";
import {PageType} from "../../../lib/platform/metaweblog/IMetaweblogCfg";
import {Post} from "../../../lib/common/post";
import {CategoryInfo} from "../../../lib/common/categoryInfo";
import {API} from "../../../../lib/api";
import {PageType} from "../../../../lib/platform/metaweblog/IMetaweblogCfg";
import {Post} from "../../../../lib/common/post";
import {CategoryInfo} from "../../../../lib/common/categoryInfo";
const {t} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,10 @@

<script lang="ts" setup>
import {nextTick, onMounted, reactive, ref} from "vue"
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../lib/platform/siyuan/siyuanUtil";
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../../lib/platform/siyuan/siyuanUtil";
import {ElMessage, ElMessageBox} from "element-plus";
import {useI18n} from "vue-i18n";
import {SIYUAN_PAGE_ATTR_KEY} from "../../../lib/constants/siyuanPageConstants";
import {SIYUAN_PAGE_ATTR_KEY} from "../../../../lib/constants/siyuanPageConstants";
import {
cutWords,
formatNumToZhDate,
Expand All @@ -174,24 +174,24 @@ import {
pathJoin,
pingyinSlugify,
zhSlugify
} from "../../../lib/util";
import logUtil from "../../../lib/logUtil";
} from "../../../../lib/util";
import logUtil from "../../../../lib/logUtil";
import {
mdToHtml,
mdToPlainText,
parseHtml,
removeMdWidgetTag,
removeTitleNumber,
removeWidgetTag
} from "../../../lib/htmlUtil";
import {CONSTANTS} from "../../../lib/constants/constants";
import {getJSONConf} from "../../../lib/config";
import {IMetaweblogCfg, PageType} from "../../../lib/platform/metaweblog/IMetaweblogCfg";
} from "../../../../lib/htmlUtil";
import {CONSTANTS} from "../../../../lib/constants/constants";
import {getJSONConf} from "../../../../lib/config";
import {IMetaweblogCfg, PageType} from "../../../../lib/platform/metaweblog/IMetaweblogCfg";
import shortHash from "shorthash2";
import {API} from "../../../lib/api";
import {Post} from "../../../lib/common/post";
import {API_TYPE_CONSTANTS} from "../../../lib/constants/apiTypeConstants";
import {CategoryInfo} from "../../../lib/common/categoryInfo";
import {API} from "../../../../lib/api";
import {Post} from "../../../../lib/common/post";
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {CategoryInfo} from "../../../../lib/common/categoryInfo";
const {t} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,9 @@

<script lang="ts" setup>
import {nextTick, onBeforeMount, ref, watch} from "vue";
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../lib/platform/siyuan/siyuanUtil";
import logUtil from "../../../lib/logUtil"
import {SIYUAN_PAGE_ATTR_KEY} from "../../../lib/constants/siyuanPageConstants"
import {getPage, getPageAttrs, getPageId, getPageMd, setPageAttrs} from "../../../../lib/platform/siyuan/siyuanUtil";
import logUtil from "../../../../lib/logUtil"
import {SIYUAN_PAGE_ATTR_KEY} from "../../../../lib/constants/siyuanPageConstants"
import {
covertStringToDate,
cutWords,
Expand All @@ -215,20 +215,20 @@ import {
pingyinSlugify,
yaml2Obj,
zhSlugify
} from "../../../lib/util";
} from "../../../../lib/util";
import {useI18n} from "vue-i18n";
import {ElMessage, ElMessageBox} from "element-plus";
import {CONSTANTS} from "../../../lib/constants/constants";
import {mdToHtml, mdToPlainText, parseHtml, removeMdWidgetTag, removeWidgetTag} from "../../../lib/htmlUtil";
import {API_TYPE_CONSTANTS} from "../../../lib/constants/apiTypeConstants";
import {CONSTANTS} from "../../../../lib/constants/constants";
import {mdToHtml, mdToPlainText, parseHtml, removeMdWidgetTag, removeWidgetTag} from "../../../../lib/htmlUtil";
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import copy from "copy-to-clipboard"
import shortHash from "shorthash2";
import {API_STATUS_CONSTANTS} from "../../../lib/constants/apiStatusConstants";
import {getBooleanConf, getJSONConf} from "../../../lib/config";
import {IVuepressCfg} from "../../../lib/platform/vuepress/IVuepressCfg";
import {deletePage, getPageTreeNode, publishPage} from "../../../lib/platform/vuepress/v1";
import {POSTID_KEY_CONSTANTS} from "../../../lib/constants/postidKeyConstants";
import {getApiParams} from "../../../lib/publishUtil";
import {API_STATUS_CONSTANTS} from "../../../../lib/constants/apiStatusConstants";
import {getBooleanConf, getJSONConf} from "../../../../lib/config";
import {IVuepressCfg} from "../../../../lib/platform/vuepress/IVuepressCfg";
import {deletePage, getPageTreeNode, publishPage} from "../../../../lib/platform/vuepress/v1";
import {POSTID_KEY_CONSTANTS} from "../../../../lib/constants/postidKeyConstants";
import {getApiParams} from "../../../../lib/publishUtil";
const {t} = useI18n()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<script lang="ts" setup>
import {ref} from "vue";
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {API_TYPE_CONSTANTS} from "../../../../../lib/constants/apiTypeConstants";
const apiType = ref(API_TYPE_CONSTANTS.API_TYPE_KMS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<script lang="ts" setup>
import {ref} from "vue";
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {API_TYPE_CONSTANTS} from "../../../../../lib/constants/apiTypeConstants";
const apiType = ref(API_TYPE_CONSTANTS.API_TYPE_LIANDI)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<script lang="ts" setup>
import {ref} from "vue";
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {API_TYPE_CONSTANTS} from "../../../../../lib/constants/apiTypeConstants";
const apiType = ref(API_TYPE_CONSTANTS.API_TYPE_YUQUE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
</template>

<script lang="ts" setup>
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {API_TYPE_CONSTANTS} from "../../../../../lib/constants/apiTypeConstants";
import {ref} from "vue";
const apiType = ref(API_TYPE_CONSTANTS.API_TYPE_CNBLOGS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
</template>

<script lang="ts" setup>
import {API_TYPE_CONSTANTS} from "../../../../lib/constants/apiTypeConstants";
import {API_TYPE_CONSTANTS} from "../../../../../lib/constants/apiTypeConstants";
import {ref} from "vue";
const apiType = ref(API_TYPE_CONSTANTS.API_TYPE_CONFLUENCE)
Expand Down

0 comments on commit cda8ec3

Please sign in to comment.