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) {
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;
}
log.trace(`you choose item load data success: ${JSON.stringify(extract)}`);
@ -53,7 +53,7 @@ export default class DoubanPlugin extends Plugin {
this.addCommand({
id: "search-douban-by-current-file-name",
name: i18nHelper.getMessage("search douban by current file name"),
name: i18nHelper.getMessage("110001"),
editorCallback: (editor: Editor) =>
this.getDoubanTextForActiveFile(editor),
});
@ -61,14 +61,14 @@ export default class DoubanPlugin extends Plugin {
this.addCommand({
id: "search-douban-and-input-current-file",
name: i18nHelper.getMessage("search douban and import to current file"),
name: i18nHelper.getMessage("110002"),
editorCallback: (editor: Editor) =>
this.geDoubanTextForSearchTerm(editor),
});
this.addCommand({
id: "sync-douban-broadcast-by-user-id",
name: i18nHelper.getMessage("sync douban broadcast by douban user id"),
name: i18nHelper.getMessage('110006'),
editorCallback: (editor: Editor) =>
this.geDoubanTextForSearchTerm(editor),
});

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

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

@ -3,7 +3,6 @@ import { DEFAULT_SETTINGS, PersonNameMode, personNameModeRecords } from "./Douba
import DoubanPlugin from "main";
import { i18nHelper } from "src/lang/helper";
import { log } from "src/utils/Logutil";
export class DoubanSettingTab extends PluginSettingTab {
plugin: DoubanPlugin;
@ -18,20 +17,20 @@ export class DoubanSettingTab extends PluginSettingTab {
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) => {
setting.addText((textField) => {
setting.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('douban search url desc 1'));
frag.appendText(i18nHelper.getMessage('120002'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 2'));
frag.appendText(i18nHelper.getMessage('120003'));
frag.createEl(
'a',
{
text: i18nHelper.getMessage('Douban'),
text: i18nHelper.getMessage('120901'),
href: 'https://www.douban.com',
},
(a) => {
@ -39,11 +38,11 @@ export class DoubanSettingTab extends PluginSettingTab {
}
);
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 3'));
frag.appendText(i18nHelper.getMessage('120004'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 4'));
frag.appendText(i18nHelper.getMessage('120005'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('douban search url desc 5'));
frag.appendText(i18nHelper.getMessage('120006'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('movie content template desc 1'));
frag.appendText(i18nHelper.getMessage('120102'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 2'));
frag.appendText(i18nHelper.getMessage('120103'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 3'));
frag.appendText(i18nHelper.getMessage('120104'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 4'));
frag.appendText(i18nHelper.getMessage('120105'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 5'));
frag.appendText(i18nHelper.getMessage('120106'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('movie content template desc 6'));
frag.appendText(i18nHelper.getMessage('120107'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('book content template desc 1'));
frag.appendText(i18nHelper.getMessage('120202'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 2'));
frag.appendText(i18nHelper.getMessage('120203'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 3'));
frag.appendText(i18nHelper.getMessage('120204'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 4'));
frag.appendText(i18nHelper.getMessage('120205'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 5'));
frag.appendText(i18nHelper.getMessage('120206'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('book content template desc 6'));
frag.appendText(i18nHelper.getMessage('120207'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('music content template desc 1'));
frag.appendText(i18nHelper.getMessage('120302'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 2'));
frag.appendText(i18nHelper.getMessage('120303'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 3'));
frag.appendText(i18nHelper.getMessage('120304'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 4'));
frag.appendText(i18nHelper.getMessage('120305'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 5'));
frag.appendText(i18nHelper.getMessage('120306'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('music content template desc 6'));
frag.appendText(i18nHelper.getMessage('120307'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('note content template desc 1'));
frag.appendText(i18nHelper.getMessage('120402'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 2'));
frag.appendText(i18nHelper.getMessage('120403'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 3'));
frag.appendText(i18nHelper.getMessage('120404'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 4'));
frag.appendText(i18nHelper.getMessage('120405'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('note content template desc 5'));
frag.appendText(i18nHelper.getMessage('120406'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(i18nHelper.getMessage('options:'));
frag.appendText(i18nHelper.getMessage('121202'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Chinese Name mode, only show Chinese name'));
frag.appendText(i18nHelper.getMessage('121203'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('English Name mode, only show English name'));
frag.appendText(i18nHelper.getMessage('121204'));
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('Chinese English Name mode, show Chinese English name both'));
frag.appendText(i18nHelper.getMessage('121205'));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(
i18nHelper.getMessage('This format will be used when available template variables contain date.')
i18nHelper.getMessage('120503')
);
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('For more syntax, refer to') + ' ');
frag.appendText(i18nHelper.getMessage('120506') + ' ');
frag.createEl(
'a',
{
text: i18nHelper.getMessage('format reference'),
text: i18nHelper.getMessage('120508'),
href: 'https://momentjs.com/docs/#/displaying/format/',
},
(a) => {
@ -224,7 +223,7 @@ export class DoubanSettingTab extends PluginSettingTab {
}
);
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' }));
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.descEl.appendChild(
createFragment((frag) => {
frag.appendText(
i18nHelper.getMessage('This format will be used when available template variables contain dateTime.')
i18nHelper.getMessage('120503')
);
frag.createEl('br');
frag.appendText(i18nHelper.getMessage('For more syntax, refer to') + ' ');
frag.appendText(i18nHelper.getMessage('120506') + ' ');
frag.createEl(
'a',
{
text: i18nHelper.getMessage('format reference'),
text: i18nHelper.getMessage('120508'),
href: 'https://momentjs.com/docs/#/displaying/format/',
},
(a) => {
@ -259,7 +258,7 @@ export class DoubanSettingTab extends PluginSettingTab {
}
);
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' }));
frag.createEl('br');
})
@ -276,8 +275,8 @@ export class DoubanSettingTab extends PluginSettingTab {
new Setting(containerEl)
.setName(i18nHelper.getMessage("Array Spilt String"))
.setDesc(i18nHelper.getMessage(`string to join between array type, such as author, actor`))
.setName(i18nHelper.getMessage('120601'))
.setDesc(i18nHelper.getMessage('120602'))
.addText((textField) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
.setValue(this.plugin.settings.arraySpilt)

@ -1,13 +1,12 @@
import { CheerioAPI, load } from 'cheerio';
import { DoubanPluginSettings, PersonNameMode } from "src/douban/Douban";
import { get, readStream } from "tiny-network";
import DoubanPlugin from "main";
import DoubanSubject from '../model/DoubanSubject';
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
import { Editor } from "obsidian";
import {Editor, request, requestUrl, RequestUrlParam, sanitizeHTMLToDom} from "obsidian";
import { i18nHelper } from 'src/lang/helper';
import { log } from "src/utils/Logutil";
import {CheerioAPI, load} from "cheerio";
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;
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))))
.then(readStream)
let requestUrlParam:RequestUrlParam = {
url: url,
method: "GET",
headers: JSON.parse(this.doubanPlugin.settings.searchHeaders),
throw: true
};
request(requestUrlParam)
.then(a => {log.trace(a.toString()); return a;})
.then(load)
.then(this.parseSubjectFromHtml)
.then(content => this.toEditor(editor, 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> {
parseText(extract: DoubanSubject, settings:DoubanPluginSettings): string {
log.warn(i18nHelper.getMessage('current version not support type'));
log.warn(i18nHelper.getMessage('140101'));
return "";
}
support(extract: DoubanSubject): boolean {

@ -17,7 +17,7 @@ export class DoubanSearchModal extends Modal {
onOpen() {
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 searchInput = new TextComponent(inputs).onChange((searchTerm) => {
@ -36,7 +36,7 @@ export class DoubanSearchModal extends Modal {
const controls = contentEl.createDiv("controls");
const searchButton = controls.createEl("button", {
text: i18nHelper.getMessage('Search'),
text: i18nHelper.getMessage('110004'),
cls: "mod-cta",
attr: {
autofocus: true,
@ -45,7 +45,7 @@ export class DoubanSearchModal extends Modal {
searchButton.addClass("search_button");
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.addClass("search_button");

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

@ -1,79 +1,80 @@
//简体中文
export default {
//main.ts
'search douban by current file name':'search douban by current file name',
'search douban and import to current file':'search douban and import to current file',
'Enter Search Term:':`Enter Search Term:`,
'Search':`Search`,
'Cancel':`Cancel`,
"sync douban broadcast by douban user id": `sync douban broadcast ot Obsidian`,
'110001': 'search douban by current file name',
'110002': 'search douban and import to current file',
'110003': `Enter Search Term:`,
'110004': `Search`,
'110005': `Cancel`,
'110006': `sync douban broadcast ot Obsidian`,
//DoubanSettingTab
'douban search url': `Douban Search Url`,
'douban search url desc 1': `Douban search page request address. `,
'douban search url desc 2': `First go to:`,
'douban search url desc 3': `Don't enter anything in the search input box, just click Search,`,
'douban search url desc 4': `The redirected web page address is the search address,`,
'douban search url desc 5': `Just copy the web address to the current input box.`,
'1201' : `Obsidian Douban`,
'120001': `Douban Search Url`,
'120002': `Douban search page request address. `,
'120003': `First go to:`,
'120004': `Don't enter anything in the search input box, just click Search,`,
'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`,
'movie content template desc 1': `Set markdown Movie template for extract to be inserted.`,
'movie content template desc 2': `Available template variables are :`,
'movie content template desc 3': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'movie content template desc 4': `{{score}}, {{datePublished}}, {{director}},`,
'movie content template desc 5': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'movie content template desc 6': `{{image}}, {{url}}`,
'120101': `Movie Content Template`,
'120102': `Set markdown Movie template for extract to be inserted.`,
'120103': `Available template variables are :`,
'120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'120105': `{{score}}, {{datePublished}}, {{director}},`,
'120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'120107': `{{image}}, {{url}}`,
'book content template': `Book Content Template`,
'book content template desc 1': `Set markdown Book template for extract to be inserted.`,
'book content template desc 2': `Available Book template variables are :`,
'book content template desc 3': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'book content template desc 4': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'book content template desc 5': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'book content template desc 6': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'120201': `Book Content Template`,
'120202': `Set markdown Book template for extract to be inserted.`,
'120203': `Available Book template variables are :`,
'120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'music content template': `Music Content Template`,
'music content template desc 1': `Set markdown Music template for extract to be inserted.`,
'music content template desc 2': `Available Music template variables are :`,
'music content template desc 3': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'music content template desc 4': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'music content template desc 5': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'music content template desc 6': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'120301': `Music Content Template`,
'120302': `Set markdown Music template for extract to be inserted.`,
'120303': `Available Music template variables are :`,
'120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'note content template': `Article Content Template`,
'note content template desc 1': `Set markdown Article template for extract to be inserted.`,
'note content template desc 2': `Available Article template variables are :`,
'note content template desc 3': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'note content template desc 4': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'note content template desc 5': `{{content}}`,
'120401': `Article Content Template`,
'120402': `Set markdown Article template for extract to be inserted.`,
'120403': `Available Article template variables are :`,
'120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'120406': `{{content}}`,
'Date format': `Date Format`,
'DateTime format': `DateTime Format`,
'120501': `Date Format`,
'120502': `DateTime Format`,
'This format will be used when available template variables contain date.':
`This format will be used when available template variables contain date.`,
'This format will be used when available template variables contain dateTime.':
`This format will be used when available template variables contain dateTime.`,
'For more syntax, refer to': `For more syntax, refer to`,
'Your current syntax looks like this':`Your current syntax looks like this`,
'format reference': `format reference`,
'Array Spilt String':`Array Spilt String`,
'string to join between array type, such as author, actor':`string to join between array type, such as author, actor`,
'Douban Request Headers':`Douban Request Headers`,
'current version not support type': `This type of import is not supported temporarily, please go to github to submit issues for help`,
'Douban': `Douban`,
'Person Name Language Mode':'Person Name Language Mode',
'options:':"options:",
'Chinese Name mode, only show Chinese name':'Chinese Name mode, person name only show Chinese name',
'English Name mode, only show English name':'English Name mode, person name only show English name',
'Chinese English Name mode, show Chinese English name both':'Chinese English Name mode, show Chinese and English name both',
'Chinese Name': 'Chinese Name',
'English Name': 'English Name',
'Chinese And English Name': 'Chinese And English Name',
'120503': `This format will be used when available template variables contain date.`,
'120504': `This format will be used when available template variables contain dateTime.`,
'120506': `For more syntax, refer to`,
'120507': `Your current syntax looks like this`,
'120508': `format reference`,
'120601': `Array Spilt String`,
'120602': `string to join between array type, such as author, actor`,
'120701': `Douban Request Headers`,
'120801': `This type of import is not supported temporarily, please go to github to submit issues for help`,
'120901': `Douban`,
'121201': `Person Name Language Mode`,
'121202': `options:`,
'121203': `Chinese Name mode, person name only show Chinese name`,
'121204': `English Name mode, person name only show English name`,
'121205': `Chinese English Name mode, show Chinese and English name both`,
'121206': `Chinese Name`,
'121207': `English Name`,
'121208': `Chinese And English Name`,
//error
"Fetch Data Error": "Fetch Data Error, You can go to Github add Issues",
"Obsidian Douban Plugin Error:": "Obsidian Douban Plugin Error: ",
"Obsidian Douban Plugin Warn:": "Obsidian Douban Plugin Warn: ",
'130101': `Fetch Data Error, You can go to Github add Issues`,
'130201': `Obsidian Douban Plugin Error: `,
'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 {
//main.ts
'search douban by current file name':'用当前文档名搜索豆瓣并写入当前文档',
'search douban and import to current file':'在豆瓣搜索并写入到当前文档',
'Enter Search Term:':`输入搜索内容:`,
'Search':`搜索`,
'Cancel':`取消`,
"sync douban broadcast by douban user id": `同步豆瓣广播至Obsidian`,
'110001': '用当前文档名搜索豆瓣并写入当前文档',
'110002': '在豆瓣搜索并写入到当前文档',
'110003': `输入搜索内容:`,
'110004': `搜索`,
'110005': `取消`,
'110006': `同步豆瓣广播至Obsidian`,
//DoubanSettingTab
'douban search url': `豆瓣搜索地址`,
'douban search url desc 1': `豆瓣搜索页面请求地址, 通常是网页搜索的地址. `,
'douban search url desc 2': `先访问:`,
'douban search url desc 3': `然后在搜索输入框不输入任何内容,直接点击搜索,`,
'douban search url desc 4': `所跳转的网页地址即是搜索地址,`,
'douban search url desc 5': `将网页地址复制到当前输入框即可,`,
'1201' : `Obsidian-豆瓣`,
'120001': `豆瓣搜索地址`,
'120002': `豆瓣搜索页面请求地址, 通常是网页搜索的地址. `,
'120003': `先访问:`,
'120004': `然后在搜索输入框不输入任何内容,直接点击搜索,`,
'120005': `所跳转的网页地址即是搜索地址,`,
'120006': `将网页地址复制到当前输入框即可,`,
'movie content template': `电影文本模板`,
'movie content template desc 1': `设置选择电影后导入的文本内容模板,`,
'movie content template desc 2': `支持以下参数名称 :`,
'movie content template desc 3': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'movie content template desc 4': `{{score}}, {{datePublished}}, {{director}},`,
'movie content template desc 5': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'movie content template desc 6': `{{image}}, {{url}}`,
'120101': `电影文本模板`,
'120102': `设置选择电影后导入的文本内容模板,`,
'120103': `支持以下参数名称 :`,
'120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
'120105': `{{score}}, {{datePublished}}, {{director}},`,
'120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
'120107': `{{image}}, {{url}}`,
'book content template': `书籍文本模板`,
'book content template desc 1': `设置选择书籍后导入的文本内容模板,`,
'book content template desc 2': `支持以下参数名称 :`,
'book content template desc 3': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'book content template desc 4': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'book content template desc 5': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'book content template desc 6': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'120201': `书籍文本模板`,
'120202': `设置选择书籍后导入的文本内容模板,`,
'120203': `支持以下参数名称 :`,
'120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
'120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
'120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
'120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
'music content template': `音乐文本模板`,
'music content template desc 1': `设置选择音乐后导入的文本内容模板,`,
'music content template desc 2': `支持以下参数名称 :`,
'music content template desc 3': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'music content template desc 4': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'music content template desc 5': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'music content template desc 6': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'120301': `音乐文本模板`,
'120302': `设置选择音乐后导入的文本内容模板,`,
'120303': `支持以下参数名称 :`,
'120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
'120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
'120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
'120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
'note content template': `日记文本模板`,
'note content template desc 1': `设置选择日记后导入的文本内容模板,`,
'note content template desc 2': `支持以下参数名称 :`,
'note content template desc 3': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'note content template desc 4': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'note content template desc 5': `{{content}}`,
'120401': `日记文本模板`,
'120402': `设置选择日记后导入的文本内容模板,`,
'120403': `支持以下参数名称 :`,
'120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
'120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
'120406': `{{content}}`,
'Date format': `参数日期格式`,
'This format will be used when available template variables contain date.':
`这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`,
'DateTime format': `参数时间格式`,
'This format will be used when available template variables contain dateTime.':
`这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`,
'For more syntax, refer to': `详细介绍请参考`,
'Your current syntax looks like this':`时间参数时间格式预览`,
'format reference': `格式参考`,
'Array Spilt String':`数组分割字符串`,
'string to join between array type, such as author, actor':`当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如 演员列表等`,
'Douban Request Headers':`豆瓣HTTP请求头`,
'Douban Request Headers Desc': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n
'120501': `参数日期格式`,
'120503': `这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`,
'120502': `参数时间格式`,
'120504': `这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`,
'120506': `详细介绍请参考`,
'120507': `时间参数时间格式预览`,
'120508': `格式参考`,
'120601': `数组分割字符串`,
'120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如 演员列表等`,
'120701': `豆瓣HTTP请求头`,
'120702': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n
:\n
1. 访http://www.douban.com
2. , `,
'current version not support type': `暂时不支持该类型导入,请至github提交issuess获取帮助`,
'Douban': `豆瓣网`,
'120801': `暂时不支持该类型导入,请至github提交issuess获取帮助`,
'120901': `豆瓣网`,
'Person Name Language Mode':'人名显示模式',
'options:':"可选项:",
'Chinese Name mode, only show Chinese name':'中文名称模式, 人名只显示中文名',
'English Name mode, only show English name':'英文名称模式, 人名只显示英文名',
'Chinese English Name mode, show Chinese English name both':'中文和英文名称模式, 人名同时显示中文和英文名',
'Chinese Name': '中文名',
'English Name': '英文名',
'Chinese And English Name': '中文名和英文名',
'121201': `人名显示模式`,
'121202': `可选项:`,
'121203': `中文名称模式, 人名只显示中文名`,
'121204': `英文名称模式, 人名只显示英文名`,
'121205': `中文和英文名称模式, 人名同时显示中文和英文名`,
'121206': `中文名`,
'121207': `英文名`,
'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 {
public error(e:any):any {
new Notice(i18nHelper.getMessage("Obsidian Douban Plugin Error:") + e);
new Notice(i18nHelper.getMessage('130201') + e);
return e;
}
public warn(e:any):any {
new Notice(i18nHelper.getMessage("Obsidian Douban Plugin Warn:") + e);
new Notice(i18nHelper.getMessage('130301') + e);
return e;
}
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;
}
public trace(e:any):any {
// 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;
}
public traceN(notion:string, e:any):any {
// return e;
// console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`);
console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`);
return e;
}
}