Optimize internationalized text and remove some dependencies

This commit is contained in:
wanxp 2022-10-24 23:14:25 +08:00
parent f651a851c9
commit a97688481d
13 changed files with 446 additions and 484 deletions

@ -16,7 +16,7 @@ export default class DoubanPlugin extends Plugin {
async putToEditor(editor:Editor, extract:DoubanSubject) { async putToEditor(editor:Editor, extract:DoubanSubject) {
if(!editor || !extract) { if(!editor || !extract) {
log.warn(`Not support for current type. You can add Issues at Github:Wanxp/obsidian-douban`); log.warn(i18nHelper.getMessage('140101'));
return; return;
} }
log.trace(`you choose item load data success: ${JSON.stringify(extract)}`); log.trace(`you choose item load data success: ${JSON.stringify(extract)}`);
@ -53,7 +53,7 @@ export default class DoubanPlugin extends Plugin {
this.addCommand({ this.addCommand({
id: "search-douban-by-current-file-name", id: "search-douban-by-current-file-name",
name: i18nHelper.getMessage("search douban by current file name"), name: i18nHelper.getMessage("110001"),
editorCallback: (editor: Editor) => editorCallback: (editor: Editor) =>
this.getDoubanTextForActiveFile(editor), this.getDoubanTextForActiveFile(editor),
}); });
@ -61,14 +61,14 @@ export default class DoubanPlugin extends Plugin {
this.addCommand({ this.addCommand({
id: "search-douban-and-input-current-file", id: "search-douban-and-input-current-file",
name: i18nHelper.getMessage("search douban and import to current file"), name: i18nHelper.getMessage("110002"),
editorCallback: (editor: Editor) => editorCallback: (editor: Editor) =>
this.geDoubanTextForSearchTerm(editor), this.geDoubanTextForSearchTerm(editor),
}); });
this.addCommand({ this.addCommand({
id: "sync-douban-broadcast-by-user-id", id: "sync-douban-broadcast-by-user-id",
name: i18nHelper.getMessage("sync douban broadcast by douban user id"), name: i18nHelper.getMessage('110006'),
editorCallback: (editor: Editor) => editorCallback: (editor: Editor) =>
this.geDoubanTextForSearchTerm(editor), this.geDoubanTextForSearchTerm(editor),
}); });

@ -27,11 +27,7 @@
}, },
"dependencies": { "dependencies": {
"@notable/html2markdown": "^1.1.3", "@notable/html2markdown": "^1.1.3",
"axios": "^0.27.2",
"cheerio": "^1.0.0-rc.11", "cheerio": "^1.0.0-rc.11",
"douban-search-crack": "^1.0.6", "schema-dts": "^1.1.0"
"node-fetch": "^2.6.1",
"schema-dts": "^1.1.0",
"tiny-network": "0.0.6"
} }
} }

@ -116,9 +116,9 @@ desc: {{desc}}
} }
export const personNameModeRecords: {[key in PersonNameMode]: string} = { export const personNameModeRecords: {[key in PersonNameMode]: string} = {
[PersonNameMode.CH_NAME]: i18nHelper.getMessage("Chinese Name"), [PersonNameMode.CH_NAME]: i18nHelper.getMessage('121206'),
[PersonNameMode.EN_NAME]: i18nHelper.getMessage("English Name"), [PersonNameMode.EN_NAME]: i18nHelper.getMessage('121207'),
[PersonNameMode.CH_EN_NAME]: i18nHelper.getMessage("Chinese And English Name"), [PersonNameMode.CH_EN_NAME]: i18nHelper.getMessage('121208'),
} }

@ -3,7 +3,6 @@ import { DEFAULT_SETTINGS, PersonNameMode, personNameModeRecords } from "./Douba
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { i18nHelper } from "src/lang/helper"; import { i18nHelper } from "src/lang/helper";
import { log } from "src/utils/Logutil";
export class DoubanSettingTab extends PluginSettingTab { export class DoubanSettingTab extends PluginSettingTab {
plugin: DoubanPlugin; plugin: DoubanPlugin;
@ -18,20 +17,20 @@ export class DoubanSettingTab extends PluginSettingTab {
containerEl.empty(); containerEl.empty();
containerEl.createEl("h2", { text: "Obsidian Douban" }); containerEl.createEl("h2", { text: '1201' });
new Setting(containerEl).setName(i18nHelper.getMessage('douban search url')) new Setting(containerEl).setName(i18nHelper.getMessage('120001'))
.then((setting) => { .then((setting) => {
setting.addText((textField) => { setting.addText((textField) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('douban search url desc 1')); frag.appendText(i18nHelper.getMessage('120002'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 2')); frag.appendText(i18nHelper.getMessage('120003'));
frag.createEl( frag.createEl(
'a', 'a',
{ {
text: i18nHelper.getMessage('Douban'), text: i18nHelper.getMessage('120901'),
href: 'https://www.douban.com', href: 'https://www.douban.com',
}, },
(a) => { (a) => {
@ -39,11 +38,11 @@ export class DoubanSettingTab extends PluginSettingTab {
} }
); );
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 3')); frag.appendText(i18nHelper.getMessage('120004'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 4')); frag.appendText(i18nHelper.getMessage('120005'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 5')); frag.appendText(i18nHelper.getMessage('120006'));
frag.createEl('br'); frag.createEl('br');
}) })
); );
@ -59,21 +58,21 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage("movie content template")).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('120101')).then((setting) => {
setting.addTextArea((textarea) => { setting.addTextArea((textarea) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('movie content template desc 1')); frag.appendText(i18nHelper.getMessage('120102'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 2')); frag.appendText(i18nHelper.getMessage('120103'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 3')); frag.appendText(i18nHelper.getMessage('120104'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 4')); frag.appendText(i18nHelper.getMessage('120105'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 5')); frag.appendText(i18nHelper.getMessage('120106'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 6')); frag.appendText(i18nHelper.getMessage('120107'));
frag.createEl('br'); frag.createEl('br');
}) })
); );
@ -88,21 +87,21 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage("book content template")).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('120201')).then((setting) => {
setting.addTextArea((textarea) => { setting.addTextArea((textarea) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('book content template desc 1')); frag.appendText(i18nHelper.getMessage('120202'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 2')); frag.appendText(i18nHelper.getMessage('120203'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 3')); frag.appendText(i18nHelper.getMessage('120204'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 4')); frag.appendText(i18nHelper.getMessage('120205'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 5')); frag.appendText(i18nHelper.getMessage('120206'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 6')); frag.appendText(i18nHelper.getMessage('120207'));
frag.createEl('br'); frag.createEl('br');
}) })
); );
@ -117,21 +116,21 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage("music content template")).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('120201')).then((setting) => {
setting.addTextArea((textarea) => { setting.addTextArea((textarea) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('music content template desc 1')); frag.appendText(i18nHelper.getMessage('120302'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 2')); frag.appendText(i18nHelper.getMessage('120303'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 3')); frag.appendText(i18nHelper.getMessage('120304'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 4')); frag.appendText(i18nHelper.getMessage('120305'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 5')); frag.appendText(i18nHelper.getMessage('120306'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 6')); frag.appendText(i18nHelper.getMessage('120307'));
frag.createEl('br'); frag.createEl('br');
}) })
); );
@ -146,19 +145,19 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage("note content template")).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage("120401")).then((setting) => {
setting.addTextArea((textarea) => { setting.addTextArea((textarea) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('note content template desc 1')); frag.appendText(i18nHelper.getMessage('120402'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 2')); frag.appendText(i18nHelper.getMessage('120403'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 3')); frag.appendText(i18nHelper.getMessage('120404'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 4')); frag.appendText(i18nHelper.getMessage('120405'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 5')); frag.appendText(i18nHelper.getMessage('120406'));
frag.createEl('br'); frag.createEl('br');
}) })
@ -174,17 +173,17 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage("Person Name Language Mode")).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('121201')).then((setting) => {
setting.addDropdown((dropdwon) => { setting.addDropdown((dropdwon) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('options:')); frag.appendText(i18nHelper.getMessage('121202'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Chinese Name mode, only show Chinese name')); frag.appendText(i18nHelper.getMessage('121203'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('English Name mode, only show English name')); frag.appendText(i18nHelper.getMessage('121204'));
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Chinese English Name mode, show Chinese English name both')); frag.appendText(i18nHelper.getMessage('121205'));
frag.createEl('br'); frag.createEl('br');
}) })
); );
@ -204,19 +203,19 @@ export class DoubanSettingTab extends PluginSettingTab {
new Setting(containerEl).setName(i18nHelper.getMessage('Date format')).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('120501')).then((setting) => {
setting.addMomentFormat((mf) => { setting.addMomentFormat((mf) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText( frag.appendText(
i18nHelper.getMessage('This format will be used when available template variables contain date.') i18nHelper.getMessage('120503')
); );
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('For more syntax, refer to') + ' '); frag.appendText(i18nHelper.getMessage('120506') + ' ');
frag.createEl( frag.createEl(
'a', 'a',
{ {
text: i18nHelper.getMessage('format reference'), text: i18nHelper.getMessage('120508'),
href: 'https://momentjs.com/docs/#/displaying/format/', href: 'https://momentjs.com/docs/#/displaying/format/',
}, },
(a) => { (a) => {
@ -224,7 +223,7 @@ export class DoubanSettingTab extends PluginSettingTab {
} }
); );
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Your current syntax looks like this') + ': '); frag.appendText(i18nHelper.getMessage('120507') + ': ');
mf.setSampleEl(frag.createEl('b', { cls: 'u-pop' })); mf.setSampleEl(frag.createEl('b', { cls: 'u-pop' }));
frag.createEl('br'); frag.createEl('br');
}) })
@ -239,19 +238,19 @@ export class DoubanSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl).setName(i18nHelper.getMessage('DateTime format')).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('120502')).then((setting) => {
setting.addMomentFormat((mf) => { setting.addMomentFormat((mf) => {
setting.descEl.appendChild( setting.descEl.appendChild(
createFragment((frag) => { createFragment((frag) => {
frag.appendText( frag.appendText(
i18nHelper.getMessage('This format will be used when available template variables contain dateTime.') i18nHelper.getMessage('120503')
); );
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('For more syntax, refer to') + ' '); frag.appendText(i18nHelper.getMessage('120506') + ' ');
frag.createEl( frag.createEl(
'a', 'a',
{ {
text: i18nHelper.getMessage('format reference'), text: i18nHelper.getMessage('120508'),
href: 'https://momentjs.com/docs/#/displaying/format/', href: 'https://momentjs.com/docs/#/displaying/format/',
}, },
(a) => { (a) => {
@ -259,7 +258,7 @@ export class DoubanSettingTab extends PluginSettingTab {
} }
); );
frag.createEl('br'); frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Your current syntax looks like this') + ': '); frag.appendText(i18nHelper.getMessage('120507') + ': ');
mf.setSampleEl(frag.createEl('b', { cls: 'u-pop' })); mf.setSampleEl(frag.createEl('b', { cls: 'u-pop' }));
frag.createEl('br'); frag.createEl('br');
}) })
@ -276,8 +275,8 @@ export class DoubanSettingTab extends PluginSettingTab {
new Setting(containerEl) new Setting(containerEl)
.setName(i18nHelper.getMessage("Array Spilt String")) .setName(i18nHelper.getMessage('120601'))
.setDesc(i18nHelper.getMessage(`string to join between array type, such as author, actor`)) .setDesc(i18nHelper.getMessage('120602'))
.addText((textField) => { .addText((textField) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt) textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
.setValue(this.plugin.settings.arraySpilt) .setValue(this.plugin.settings.arraySpilt)

@ -1,13 +1,12 @@
import { CheerioAPI, load } from 'cheerio';
import { DoubanPluginSettings, PersonNameMode } from "src/douban/Douban"; import { DoubanPluginSettings, PersonNameMode } from "src/douban/Douban";
import { get, readStream } from "tiny-network";
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import DoubanSubject from '../model/DoubanSubject'; import DoubanSubject from '../model/DoubanSubject';
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler"; import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
import { Editor } from "obsidian"; import {Editor, request, requestUrl, RequestUrlParam, sanitizeHTMLToDom} from "obsidian";
import { i18nHelper } from 'src/lang/helper'; import { i18nHelper } from 'src/lang/helper';
import { log } from "src/utils/Logutil"; import { log } from "src/utils/Logutil";
import {CheerioAPI, load} from "cheerio";
export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject> implements DoubanSubjectLoadHandler<T> { export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject> implements DoubanSubjectLoadHandler<T> {
@ -23,14 +22,19 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
abstract support(extract: DoubanSubject): boolean; abstract support(extract: DoubanSubject): boolean;
handle(url:string, editor:Editor):void { handle(url:string, editor:Editor):void {
Promise.resolve().then(() => get(log.traceN("GET URL", url + "/"), log.traceN("GET HEAD", JSON.parse(this.doubanPlugin.settings.searchHeaders)))) let requestUrlParam:RequestUrlParam = {
.then(readStream) url: url,
method: "GET",
headers: JSON.parse(this.doubanPlugin.settings.searchHeaders),
throw: true
};
request(requestUrlParam)
.then(a => {log.trace(a.toString()); return a;}) .then(a => {log.trace(a.toString()); return a;})
.then(load) .then(load)
.then(this.parseSubjectFromHtml) .then(this.parseSubjectFromHtml)
.then(content => this.toEditor(editor, content)) .then(content => this.toEditor(editor, content))
// .then(content => content ? editor.replaceSelection(content) : content) // .then(content => content ? editor.replaceSelection(content) : content)
.catch(e => log.error(i18nHelper.getMessage("Fetch Data Error"))) .catch(e => log.error(i18nHelper.getMessage('130101')))
; ;
} }

@ -12,7 +12,7 @@ import { log } from "src/utils/Logutil";
*/ */
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> { export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
parseText(extract: DoubanSubject, settings:DoubanPluginSettings): string { parseText(extract: DoubanSubject, settings:DoubanPluginSettings): string {
log.warn(i18nHelper.getMessage('current version not support type')); log.warn(i18nHelper.getMessage('140101'));
return ""; return "";
} }
support(extract: DoubanSubject): boolean { support(extract: DoubanSubject): boolean {

@ -17,7 +17,7 @@ export class DoubanSearchModal extends Modal {
onOpen() { onOpen() {
let { contentEl } = this; let { contentEl } = this;
contentEl.createEl("h2", { text: i18nHelper.getMessage('Enter Search Term:') }); contentEl.createEl("h2", { text: i18nHelper.getMessage('110003') });
const inputs = contentEl.createDiv("inputs"); const inputs = contentEl.createDiv("inputs");
const searchInput = new TextComponent(inputs).onChange((searchTerm) => { const searchInput = new TextComponent(inputs).onChange((searchTerm) => {
@ -36,7 +36,7 @@ export class DoubanSearchModal extends Modal {
const controls = contentEl.createDiv("controls"); const controls = contentEl.createDiv("controls");
const searchButton = controls.createEl("button", { const searchButton = controls.createEl("button", {
text: i18nHelper.getMessage('Search'), text: i18nHelper.getMessage('110004'),
cls: "mod-cta", cls: "mod-cta",
attr: { attr: {
autofocus: true, autofocus: true,
@ -45,7 +45,7 @@ export class DoubanSearchModal extends Modal {
searchButton.addClass("search_button"); searchButton.addClass("search_button");
searchButton.addEventListener("click", this.close.bind(this)); searchButton.addEventListener("click", this.close.bind(this));
const cancelButton = controls.createEl("button", { text: i18nHelper.getMessage('Cancel') }); const cancelButton = controls.createEl("button", { text: i18nHelper.getMessage('110005') });
cancelButton.addEventListener("click", this.close.bind(this)); cancelButton.addEventListener("click", this.close.bind(this));
cancelButton.addClass("search_button"); cancelButton.addClass("search_button");

@ -1,24 +1,26 @@
import { DoubanPluginSettings, doubanHeadrs } from 'src/douban/Douban'; import { DoubanPluginSettings, doubanHeadrs } from 'src/douban/Douban';
import cheerio, { load } from 'cheerio';
import { get, readStream } from 'tiny-network';
import DoubanSearchResultSubject from '../model/DoubanSearchResultSubject'; import DoubanSearchResultSubject from '../model/DoubanSearchResultSubject';
import SearchParserHandler from './SearchParser'; import SearchParserHandler from './SearchParser';
import { ensureStatusCode } from 'src/douban/ResponseHandle';
import { log } from 'src/utils/Logutil'; import { log } from 'src/utils/Logutil';
import {request, RequestUrlParam} from "obsidian";
import {i18nHelper} from "../../../lang/helper";
import { load } from 'cheerio';
export default class Searcher { export default class Searcher {
static search(searchItem:string, doubanSettings:DoubanPluginSettings):Promise<DoubanSearchResultSubject[]> { static search(searchItem:string, doubanSettings:DoubanPluginSettings):Promise<DoubanSearchResultSubject[]> {
// getData(); let requestUrlParam:RequestUrlParam = {
// getData2(); url: doubanSettings.searchUrl + searchItem,
// return Promise.resolve(); method: "GET",
return Promise headers: JSON.parse(doubanSettings.searchHeaders),
.resolve() throw: true
.then(() => get(log.traceN("GET", doubanSettings.searchUrl + searchItem), JSON.parse(doubanSettings.searchHeaders))) };
.then(ensureStatusCode(200)) return request(requestUrlParam)
.then(readStream) .then(a => {log.trace(a.toString()); return a;})
.then(load) .then(load)
.then(SearchParserHandler.parseSearch) .then(SearchParserHandler.parseSearch)
.then(log.trace); .catch(e => log.error(i18nHelper.getMessage('130101')))
;
}; };
} }

@ -1,79 +1,80 @@
//简体中文 //简体中文
export default { export default {
//main.ts //main.ts
'search douban by current file name':'search douban by current file name', '110001': 'search douban by current file name',
'search douban and import to current file':'search douban and import to current file', '110002': 'search douban and import to current file',
'Enter Search Term:':`Enter Search Term:`, '110003': `Enter Search Term:`,
'Search':`Search`, '110004': `Search`,
'Cancel':`Cancel`, '110005': `Cancel`,
"sync douban broadcast by douban user id": `sync douban broadcast ot Obsidian`, '110006': `sync douban broadcast ot Obsidian`,
//DoubanSettingTab //DoubanSettingTab
'douban search url': `Douban Search Url`, '1201' : `Obsidian Douban`,
'douban search url desc 1': `Douban search page request address. `, '120001': `Douban Search Url`,
'douban search url desc 2': `First go to:`, '120002': `Douban search page request address. `,
'douban search url desc 3': `Don't enter anything in the search input box, just click Search,`, '120003': `First go to:`,
'douban search url desc 4': `The redirected web page address is the search address,`, '120004': `Don't enter anything in the search input box, just click Search,`,
'douban search url desc 5': `Just copy the web address to the current input box.`, '120005': `The redirected web page address is the search address,`,
'120006': `Just copy the web address to the current input box.`,
'movie content template': `Movie Content Template`, '120101': `Movie Content Template`,
'movie content template desc 1': `Set markdown Movie template for extract to be inserted.`, '120102': `Set markdown Movie template for extract to be inserted.`,
'movie content template desc 2': `Available template variables are :`, '120103': `Available template variables are :`,
'movie content template desc 3': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`, '120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'movie content template desc 4': `{{score}}, {{datePublished}}, {{director}},`, '120105': `{{score}}, {{datePublished}}, {{director}},`,
'movie content template desc 5': `{{author}}, {{actor}}, {{desc}}, {{genre}},`, '120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'movie content template desc 6': `{{image}}, {{url}}`, '120107': `{{image}}, {{url}}`,
'book content template': `Book Content Template`, '120201': `Book Content Template`,
'book content template desc 1': `Set markdown Book template for extract to be inserted.`, '120202': `Set markdown Book template for extract to be inserted.`,
'book content template desc 2': `Available Book template variables are :`, '120203': `Available Book template variables are :`,
'book content template desc 3': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`, '120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'book content template desc 4': `{{score}}, {{author}}, {{datePublished}}, {{type}},`, '120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'book content template desc 5': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`, '120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'book content template desc 6': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`, '120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'music content template': `Music Content Template`, '120301': `Music Content Template`,
'music content template desc 1': `Set markdown Music template for extract to be inserted.`, '120302': `Set markdown Music template for extract to be inserted.`,
'music content template desc 2': `Available Music template variables are :`, '120303': `Available Music template variables are :`,
'music content template desc 3': `{{id}}, {{title}}, {{actor}}, {{genre}},`, '120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'music content template desc 4': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`, '120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'music content template desc 5': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`, '120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'music content template desc 6': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`, '120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'note content template': `Article Content Template`, '120401': `Article Content Template`,
'note content template desc 1': `Set markdown Article template for extract to be inserted.`, '120402': `Set markdown Article template for extract to be inserted.`,
'note content template desc 2': `Available Article template variables are :`, '120403': `Available Article template variables are :`,
'note content template desc 3': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`, '120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'note content template desc 4': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`, '120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'note content template desc 5': `{{content}}`, '120406': `{{content}}`,
'Date format': `Date Format`, '120501': `Date Format`,
'DateTime format': `DateTime Format`, '120502': `DateTime Format`,
'This format will be used when available template variables contain date.': '120503': `This format will be used when available template variables contain date.`,
`This format will be used when available template variables contain date.`, '120504': `This format will be used when available template variables contain dateTime.`,
'This format will be used when available template variables contain dateTime.': '120506': `For more syntax, refer to`,
`This format will be used when available template variables contain dateTime.`, '120507': `Your current syntax looks like this`,
'For more syntax, refer to': `For more syntax, refer to`, '120508': `format reference`,
'Your current syntax looks like this':`Your current syntax looks like this`, '120601': `Array Spilt String`,
'format reference': `format reference`, '120602': `string to join between array type, such as author, actor`,
'Array Spilt String':`Array Spilt String`, '120701': `Douban Request Headers`,
'string to join between array type, such as author, actor':`string to join between array type, such as author, actor`, '120801': `This type of import is not supported temporarily, please go to github to submit issues for help`,
'Douban Request Headers':`Douban Request Headers`, '120901': `Douban`,
'current version not support type': `This type of import is not supported temporarily, please go to github to submit issues for help`, '121201': `Person Name Language Mode`,
'Douban': `Douban`, '121202': `options:`,
'Person Name Language Mode':'Person Name Language Mode', '121203': `Chinese Name mode, person name only show Chinese name`,
'options:':"options:", '121204': `English Name mode, person name only show English name`,
'Chinese Name mode, only show Chinese name':'Chinese Name mode, person name only show Chinese name', '121205': `Chinese English Name mode, show Chinese and English name both`,
'English Name mode, only show English name':'English Name mode, person name only show English name', '121206': `Chinese Name`,
'Chinese English Name mode, show Chinese English name both':'Chinese English Name mode, show Chinese and English name both', '121207': `English Name`,
'Chinese Name': 'Chinese Name', '121208': `Chinese And English Name`,
'English Name': 'English Name',
'Chinese And English Name': 'Chinese And English Name',
//error //error
"Fetch Data Error": "Fetch Data Error, You can go to Github add Issues", '130101': `Fetch Data Error, You can go to Github add Issues`,
"Obsidian Douban Plugin Error:": "Obsidian Douban Plugin Error: ", '130201': `Obsidian Douban Plugin Error: `,
"Obsidian Douban Plugin Warn:": "Obsidian Douban Plugin Warn: ", '130301': `Obsidian Douban Plugin Warn: `,
'140101': `Not support for current type. You can add Issues at Github:Wanxp/obsidian-douban`,
} }

@ -1,84 +1,84 @@
//简体中文 //简体中文
export default { export default {
//main.ts //main.ts
'search douban by current file name':'用当前文档名搜索豆瓣并写入当前文档', '110001': '用当前文档名搜索豆瓣并写入当前文档',
'search douban and import to current file':'在豆瓣搜索并写入到当前文档', '110002': '在豆瓣搜索并写入到当前文档',
'Enter Search Term:':`输入搜索内容:`, '110003': `输入搜索内容:`,
'Search':`搜索`, '110004': `搜索`,
'Cancel':`取消`, '110005': `取消`,
"sync douban broadcast by douban user id": `同步豆瓣广播至Obsidian`, '110006': `同步豆瓣广播至Obsidian`,
//DoubanSettingTab //DoubanSettingTab
'douban search url': `豆瓣搜索地址`, '1201' : `Obsidian-豆瓣`,
'douban search url desc 1': `豆瓣搜索页面请求地址, 通常是网页搜索的地址. `, '120001': `豆瓣搜索地址`,
'douban search url desc 2': `先访问:`, '120002': `豆瓣搜索页面请求地址, 通常是网页搜索的地址. `,
'douban search url desc 3': `然后在搜索输入框不输入任何内容,直接点击搜索,`, '120003': `先访问:`,
'douban search url desc 4': `所跳转的网页地址即是搜索地址,`, '120004': `然后在搜索输入框不输入任何内容,直接点击搜索,`,
'douban search url desc 5': `将网页地址复制到当前输入框即可,`, '120005': `所跳转的网页地址即是搜索地址,`,
'120006': `将网页地址复制到当前输入框即可,`,
'movie content template': `电影文本模板`, '120101': `电影文本模板`,
'movie content template desc 1': `设置选择电影后导入的文本内容模板,`, '120102': `设置选择电影后导入的文本内容模板,`,
'movie content template desc 2': `支持以下参数名称 :`, '120103': `支持以下参数名称 :`,
'movie content template desc 3': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`, '120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'movie content template desc 4': `{{score}}, {{datePublished}}, {{director}},`, '120105': `{{score}}, {{datePublished}}, {{director}},`,
'movie content template desc 5': `{{author}}, {{actor}}, {{desc}}, {{genre}},`, '120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'movie content template desc 6': `{{image}}, {{url}}`, '120107': `{{image}}, {{url}}`,
'book content template': `书籍文本模板`, '120201': `书籍文本模板`,
'book content template desc 1': `设置选择书籍后导入的文本内容模板,`, '120202': `设置选择书籍后导入的文本内容模板,`,
'book content template desc 2': `支持以下参数名称 :`, '120203': `支持以下参数名称 :`,
'book content template desc 3': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`, '120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'book content template desc 4': `{{score}}, {{author}}, {{datePublished}}, {{type}},`, '120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'book content template desc 5': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`, '120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'book content template desc 6': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`, '120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'music content template': `音乐文本模板`, '120301': `音乐文本模板`,
'music content template desc 1': `设置选择音乐后导入的文本内容模板,`, '120302': `设置选择音乐后导入的文本内容模板,`,
'music content template desc 2': `支持以下参数名称 :`, '120303': `支持以下参数名称 :`,
'music content template desc 3': `{{id}}, {{title}}, {{actor}}, {{genre}},`, '120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'music content template desc 4': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`, '120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'music content template desc 5': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`, '120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'music content template desc 6': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`, '120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'note content template': `日记文本模板`, '120401': `日记文本模板`,
'note content template desc 1': `设置选择日记后导入的文本内容模板,`, '120402': `设置选择日记后导入的文本内容模板,`,
'note content template desc 2': `支持以下参数名称 :`, '120403': `支持以下参数名称 :`,
'note content template desc 3': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`, '120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'note content template desc 4': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`, '120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'note content template desc 5': `{{content}}`, '120406': `{{content}}`,
'Date format': `参数日期格式`, '120501': `参数日期格式`,
'This format will be used when available template variables contain date.': '120503': `这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`,
`这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`, '120502': `参数时间格式`,
'120504': `这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`,
'DateTime format': `参数时间格式`, '120506': `详细介绍请参考`,
'This format will be used when available template variables contain dateTime.': '120507': `时间参数时间格式预览`,
`这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`, '120508': `格式参考`,
'For more syntax, refer to': `详细介绍请参考`, '120601': `数组分割字符串`,
'Your current syntax looks like this':`时间参数时间格式预览`, '120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如 演员列表等`,
'format reference': `格式参考`, '120701': `豆瓣HTTP请求头`,
'Array Spilt String':`数组分割字符串`, '120702': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n
'string to join between array type, such as author, actor':`当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如 演员列表等`,
'Douban Request Headers':`豆瓣HTTP请求头`,
'Douban Request Headers Desc': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n
:\n :\n
1. 访http://www.douban.com 1. 访http://www.douban.com
2. , `, 2. , `,
'current version not support type': `暂时不支持该类型导入,请至github提交issuess获取帮助`, '120801': `暂时不支持该类型导入,请至github提交issuess获取帮助`,
'Douban': `豆瓣网`, '120901': `豆瓣网`,
'Person Name Language Mode':'人名显示模式', '121201': `人名显示模式`,
'options:':"可选项:", '121202': `可选项:`,
'Chinese Name mode, only show Chinese name':'中文名称模式, 人名只显示中文名', '121203': `中文名称模式, 人名只显示中文名`,
'English Name mode, only show English name':'英文名称模式, 人名只显示英文名', '121204': `英文名称模式, 人名只显示英文名`,
'Chinese English Name mode, show Chinese English name both':'中文和英文名称模式, 人名同时显示中文和英文名', '121205': `中文和英文名称模式, 人名同时显示中文和英文名`,
'Chinese Name': '中文名', '121206': `中文名`,
'English Name': '英文名', '121207': `英文名`,
'Chinese And English Name': '中文名和英文名', '121208': `中文名和英文名`,
'130101': `获取数据失败,您如有需要请至Github提交Issues`,
'130102': `Obsidian Douban插件错误提示:`,
'130103': `Obsidian Douban插件异常提示:`,
'140101': `当前版本暂不支持该类型导入,请升级Obsidian Douban或至github提交issuess获取帮助`,
"Fetch Data Error": "获取数据失败,您如有需要请至Github提交Issues",
"Obsidian Douban Plugin Error: ": "Obsidian Douban插件错误提示:",
"Obsidian Douban Plugin Warn: ": "Obsidian Douban插件异常提示:",
} }

@ -1,6 +0,0 @@
declare module 'tiny-network' {
export function get(url:string, headers:any): any;
export function get(url:string): any;
export function readStream(param:any): any;
export function ensureStatusCode(code:number): any;
}

@ -1,34 +0,0 @@
import * as https from 'https';
import { get } from 'tiny-network';
import { log } from './Logutil';
export default class HttpUtil {
static getHttps(url:string, options:any):Promise<any> {
return new Promise<any>(
function (resolve, reject) {
https.get(url + '/', options, (response) => {
console.log('url:', url + '/');
console.log('statusCode:', response.statusCode);
console.log('headers:', response.headers);
if (response.statusCode === 200) {
response.on('data', (d) => {
resolve(d);
});
} if (response.statusCode === 301 || response.statusCode === 302 || response.statusCode == 303) {
resolve(response.headers.location);
} else {
reject(new Error(response.statusMessage));
}
response.on('data', (d) => {
process.stdout.write(d);
});
}).on('error', (e) => {
reject(new Error('XMLHttpRequest Error: ' + e.message));
});
});
}
}

@ -5,29 +5,29 @@ import { i18nHelper } from "src/lang/helper";
class Logger { class Logger {
public error(e:any):any { public error(e:any):any {
new Notice(i18nHelper.getMessage("Obsidian Douban Plugin Error:") + e); new Notice(i18nHelper.getMessage('130201') + e);
return e; return e;
} }
public warn(e:any):any { public warn(e:any):any {
new Notice(i18nHelper.getMessage("Obsidian Douban Plugin Warn:") + e); new Notice(i18nHelper.getMessage('130301') + e);
return e; return e;
} }
public info(e:any):any { public info(e:any):any {
// console.log(`Douban Plugin info:` + `${typeof e == 'string' ? e : JSON.stringify(e)}`); console.log(`Douban Plugin info:` + `${typeof e == 'string' ? e : JSON.stringify(e)}`);
return e; return e;
} }
public trace(e:any):any { public trace(e:any):any {
// return e; // return e;
// console.log(`Douban Plugin trace:` + `${typeof e == 'string' ? e : JSON.stringify(e)}`); console.log(`Douban Plugin trace:` + `${typeof e == 'string' ? e : JSON.stringify(e)}`);
return e; return e;
} }
public traceN(notion:string, e:any):any { public traceN(notion:string, e:any):any {
// return e; // return e;
// console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`); console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`);
return e; return e;
} }
} }