From 82629c122fda83c9e98422b1578e4886e18767e0 Mon Sep 17 00:00:00 2001 From: Jannik | Kuqs Date: Fri, 16 Dec 2022 16:29:35 +0100 Subject: [PATCH] feat: convert tags support --- README.md | 9 +++++++-- Upload2Notion.ts | 33 +++++++++++++++++++-------------- doc/7.png | Bin 0 -> 23587 bytes main.ts | 36 +++++++++++++++++++++++++++--------- 4 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 doc/7.png diff --git a/README.md b/README.md index a1d9095..3477deb 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ A share link will be automatically generated after successful upload ![](./doc/5.png) -## Banner URL[option] +## Banner URL [option] banner url must be a image url like: https://i.imgur.com/xxx.jpg if you don't want to use banner, leave it blank @@ -100,6 +100,11 @@ if you write the Notion ID, it will share to the page link like: https://your_user_name.notion.site/myworkspace/a8aec43384f447ed84390. The visiter don't need to redirect url. +## Convert Tags [option] +Transfer the Obsidian tags to the Notion table. +It requires the column with the name 'Tags'. +![](./doc/7.png) + ## Sync image to Notion To sync images to your oss or cos bucket, use the [Obsidian Image Auto Upload Plugin](https://github.com/renmu123/obsidian-image-auto-upload-plugin). @@ -130,4 +135,4 @@ yarn dev [GitHub - Quorafind/Obsidian-Memos: A quick capture plugin for Obsidian, all data from your notes.](https://github.com/Quorafind/Obsidian-Memos) # License -GNU GPLv3 \ No newline at end of file +GNU GPLv3 diff --git a/Upload2Notion.ts b/Upload2Notion.ts index 57645a0..7291d25 100644 --- a/Upload2Notion.ts +++ b/Upload2Notion.ts @@ -12,7 +12,7 @@ export class Upload2Notion { this.app = app; } - async deletePage(notionID:string){ + async deletePage(notionID:string){ const response = await requestUrl({ url: `https://api.notion.com/v1/blocks/${notionID}`, method: 'DELETE', @@ -23,22 +23,22 @@ export class Upload2Notion { }, body: '' }) - return response; + return response; } // 因为需要解析notion的block进行对比,非常的麻烦, // 暂时就直接删除,新建一个page - async updatePage(notionID:string, title:string, childArr:any) { + async updatePage(notionID:string, title:string, allowTags:boolean, tags:string[], childArr:any) { await this.deletePage(notionID) - const res = await this.createPage(title, childArr) + const res = await this.createPage(title, allowTags, tags, childArr) return res } - async createPage(title:string, childArr: any) { + async createPage(title:string, allowTags:boolean, tags:string[], childArr: any) { const bodyString:any = { - parent: { - database_id: this.app.settings.databaseID - }, + parent: { + database_id: this.app.settings.databaseID + }, properties: { Name: { title: [ @@ -49,6 +49,11 @@ export class Upload2Notion { }, ], }, + Tags: { + multi_select: allowTags ? tags.map(tag => { + return {"name": tag} + }) : [], + }, }, children: childArr, } @@ -77,10 +82,10 @@ export class Upload2Notion { return response; } catch (error) { new Notice(`network error ${error}`) - } + } } - async syncMarkdownToNotion(title:string, markdown: string, nowFile: TFile, app:App, settings:any): Promise { + async syncMarkdownToNotion(title:string, allowTags:boolean, tags:string[], markdown: string, nowFile: TFile, app:App, settings:any): Promise { let res:any const yamlObj:any = yamlFrontMatter.loadFront(markdown); const __content = yamlObj.__content @@ -89,9 +94,9 @@ export class Upload2Notion { const notionID = frontmasster ? frontmasster.notionID : null if(notionID){ - res = await this.updatePage(notionID, title, file2Block); + res = await this.updatePage(notionID, title, allowTags, tags, file2Block); } else { - res = await this.createPage(title, file2Block); + res = await this.createPage(title, allowTags, tags, file2Block); } if (res.status === 200) { await this.updateYamlInfo(markdown, nowFile, res, app, settings) @@ -104,11 +109,11 @@ export class Upload2Notion { async updateYamlInfo(yamlContent: string, nowFile: TFile, res: any,app:App, settings:any) { const yamlObj:any = yamlFrontMatter.loadFront(yamlContent); let {url, id} = res.json - // replace www to notionID + // replace www to notionID const {notionID} = settings; if(notionID!=="") { // replace url str "www" to notionID - url = url.replace("www.notion.so", `${notionID}.notion.site`) + url = url.replace("www.notion.so", `${notionID}.notion.site`) } yamlObj.link = url; try { diff --git a/doc/7.png b/doc/7.png new file mode 100644 index 0000000000000000000000000000000000000000..224f386539a466690aed5251aa73fc3d77bffd63 GIT binary patch literal 23587 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 K>)PlXo%Jt{v)vs4 literal 0 HcmV?d00001 diff --git a/main.ts b/main.ts index e174069..52a46f6 100644 --- a/main.ts +++ b/main.ts @@ -24,6 +24,7 @@ interface PluginSettings { bannerUrl: string; notionID: string; proxy: string; + allowTags: boolean; } const langConfig = NoticeMConfig( window.localStorage.getItem('language') || 'en') @@ -34,13 +35,14 @@ const DEFAULT_SETTINGS: PluginSettings = { bannerUrl: "", notionID: "", proxy: "", + allowTags: false }; export default class ObsidianSyncNotionPlugin extends Plugin { settings: PluginSettings; async onload() { await this.loadSettings(); - addIcons(); + addIcons(); // This creates an icon in the left ribbon. const ribbonIconEl = this.addRibbonIcon( "notion-logo", @@ -72,21 +74,21 @@ export default class ObsidianSyncNotionPlugin extends Plugin { onunload() {} async upload(){ - const { notionAPI, databaseID } = this.settings; + const { notionAPI, databaseID, allowTags } = this.settings; if (notionAPI === "" || databaseID === "") { new Notice( "Please set up the notion API and database ID in the settings tab." ); return; } - const { markDownData, nowFile } = + const { markDownData, nowFile, tags } = await this.getNowFileMarkdownContent(this.app); - + if (markDownData) { const { basename } = nowFile; const upload = new Upload2Notion(this); - const res = await upload.syncMarkdownToNotion(basename, markDownData,nowFile, this.app, this.settings) + const res = await upload.syncMarkdownToNotion(basename, allowTags, tags, markDownData, nowFile, this.app, this.settings) if(res.status === 200){ new Notice(`${langConfig["sync-success"]}${basename}`) }else { @@ -97,11 +99,14 @@ export default class ObsidianSyncNotionPlugin extends Plugin { async getNowFileMarkdownContent(app: App) { const nowFile = app.workspace.getActiveFile(); + const tags = app.metadataCache.getFileCache(nowFile).frontmatter.tags; + if (nowFile) { const markDownData = await nowFile.vault.read(nowFile); return { markDownData, nowFile, + tags }; } else { new Notice(langConfig["open-file"]); @@ -139,7 +144,7 @@ class SampleSettingTab extends PluginSettingTab { text: "Settings for obsidian to notion plugin.", }); - const notionApiKye = new Setting(containerEl) + new Setting(containerEl) .setName("Notion API Token") .setDesc("It's a secret") .addText((text) =>{ @@ -153,7 +158,7 @@ class SampleSettingTab extends PluginSettingTab { t.inputEl.type = 'password' return t }); - + const notionDatabaseID = new Setting(containerEl) .setName("Database ID") @@ -169,11 +174,11 @@ class SampleSettingTab extends PluginSettingTab { t.inputEl.type = 'password' return t } - + ); notionDatabaseID.controlEl.querySelector('input').type='password' - + new Setting(containerEl) .setName("Banner url(optional)") .setDesc("page banner url(optional), default is empty, if you want to show a banner, please enter the url(like:https://raw.githubusercontent.com/EasyChris/obsidian-to-notion/ae7a9ac6cf427f3ca338a409ce6967ced9506f12/doc/2.png)") @@ -201,5 +206,18 @@ class SampleSettingTab extends PluginSettingTab { }) ); + + new Setting(containerEl) + .setName("Convert tags(optional)") + .setDesc("Transfer the Obsidian tags to the Notion table. It requires the column with the name 'Tags'") + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.allowTags) + .onChange(async (value) => { + this.plugin.settings.allowTags = value; + await this.plugin.saveSettings(); + }) + ); + } }