upgrade version to v1.5.0

This commit is contained in:
wanxp 2022-10-26 21:41:40 +08:00
parent b326e1e4e1
commit 6fd21b7c97
5 changed files with 152 additions and 116 deletions

@ -7,9 +7,9 @@
[![Contributors][contributors-shield]][contributors-url] [![Contributors][contributors-shield]][contributors-url]
Import Movies, Books, Music, Teleplay, Note even Broadcast Data from Douban in [Obsidian](https://obsidian.md/) Import Movies, Books, Music, Teleplay, Note, Game even Broadcast Data from Douban in [Obsidian](https://obsidian.md/)
在[Obsidian](https://obsidian.md/)使用并导入豆瓣中的电影/书籍/音乐/电视剧/日记甚至是广播, 包含评分/发布日期/演员表等信息 在[Obsidian](https://obsidian.md/)使用并导入豆瓣中的电影/书籍/音乐/电视剧/日记/游戏甚至是广播, 包含评分/发布日期/演员表等信息
If you want some features or have any questions about this plugin, create issues or join the development is welcome. If you want some features or have any questions about this plugin, create issues or join the development is welcome.
关于当前的插件如果有任何疑问或者想要什么功能, 欢迎提issues或加入到开发当中. 关于当前的插件如果有任何疑问或者想要什么功能, 欢迎提issues或加入到开发当中.
@ -24,6 +24,7 @@ If you want some features or have any questions about this plugin, create issues
- [x] Book/书籍 - [x] Book/书籍
- [x] Music/音乐 - [x] Music/音乐
- [x] Note/日记 - [x] Note/日记
- [x] Game/游戏
- [ ] Broadcast/广播 - [ ] Broadcast/广播
## How to use ## How to use

@ -1,7 +1,7 @@
{ {
"name": "obsidian-sample-plugin", "name": "obsidian-douban-plugin",
"version": "v1.4.3", "version": "v1.5.0",
"description": "This is a sample plugin for Obsidian (https://obsidian.md)", "description": "This is a plugin for Obsidian (https://obsidian.md) that can import data from Douban (https://www.douban.com/).",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {
"dev": "node esbuild.config.mjs", "dev": "node esbuild.config.mjs",

@ -109,13 +109,13 @@ aliases: {{aliases}}
type: {{type}} type: {{type}}
score: {{score}} score: {{score}}
tags: Game tags: Game
dateTimePublished: {{datePublished}} {{timePublished}} dateTimePublished: {{datePublished}}
publisher: {{publisher}} publisher: {{publisher}}
genre: {{genre}} genre: {{genre}}
developer: {{developer}} developer: {{developer}}
platform: {{platform}} platform: {{platform}}
url: {{url}} url: {{url}}
desc: {{desc}}} desc: {{desc}}
`, `,
// totalWord: {{totalWord}} // totalWord: {{totalWord}}

@ -1,12 +1,13 @@
import { CheerioAPI } from 'cheerio'; import { CheerioAPI } from 'cheerio';
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import {DoubanPluginSettings, PersonNameMode} from "src/douban/Douban";
import SchemaOrg from "src/utils/SchemaOrg"; import SchemaOrg from "src/utils/SchemaOrg";
import { moment } from "obsidian"; import { moment } from "obsidian";
import DoubanSubject from '../model/DoubanSubject'; import DoubanSubject from '../model/DoubanSubject';
import DoubanGameSubject from '../model/DoubanGameSubject'; import DoubanGameSubject from '../model/DoubanGameSubject';
import DoubanBookSubject from "@App/data/model/DoubanBookSubject"; import DoubanBookSubject from "@App/data/model/DoubanBookSubject";
import { log } from 'src/utils/Logutil';
export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> { export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> {
@ -14,9 +15,15 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
return settings.gameTemplate; return settings.gameTemplate;
} }
parseText(beforeContent:string, extract: DoubanGameSubject, settings:DoubanPluginSettings): string { // parse(extract: DoubanGameSubject, settings: DoubanPluginSettings): string {
// extract.title = this.handleI18nName(extract.title, settings);
// return super.parse(extract, settings);
// }
parseText(beforeContent:string, extract: DoubanGameSubject, settings:DoubanPluginSettings): string {
return beforeContent return beforeContent
.replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : "") .replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : "")
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.join(settings.arraySpilt) : "")
.replaceAll("{{developer}}", extract.developer ? extract.developer : ""); .replaceAll("{{developer}}", extract.developer ? extract.developer : "");
} }
@ -50,34 +57,61 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
dt.map((index, info) => { dt.map((index, info) => {
let key = html(info).text().trim(); let key = html(info).text().trim();
if(key.indexOf('平台') >= 0 || key.indexOf('类型') >= 0){ if(key.indexOf('平台') >= 0 || key.indexOf('类型') >= 0){
html(info.next).find("a").map((index, a) => { value = [];
html(info.next.next).find("a").map((index, a) => {
value.push(html(a).text().trim()); value.push(html(a).text().trim());
}); });
}else if (key.indexOf('别名') >= 0) {
let cc = html(info.next.next).text().trim();
value = cc.split("/");
}else{ }else{
value = html(info.next).text().trim(); value = html(info.next.next).text().trim();
} }
log.trace(key + ":" + value);
valueMap.set(GameKeyValueMap.get(key), value); valueMap.set(GameKeyValueMap.get(key), value);
}) })
const result:DoubanGameSubject = { const result:DoubanGameSubject = {
id: id, id: id,
type: "Game", type: "Game",
title: title, title: title,
desc: desc, desc: desc,
url: url, url: url,
genre: valueMap.has('genre') ? valueMap.get('genre') : "", genre: valueMap.has('genre') ? valueMap.get('genre') : [],
image: image, image: image,
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined, datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined,
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "", publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",
score: Number(score), score: Number(score),
aliases: valueMap.has('aliases') ? valueMap.get('aliases') : "", aliases: valueMap.has('aliases') ? valueMap.get('aliases') : [],
developer: valueMap.has('developer') ? valueMap.get('developer') : "", developer: valueMap.has('developer') ? valueMap.get('developer') : "",
platform: valueMap.has('platform') ? valueMap.get('platform') : "" platform: valueMap.has('platform') ? valueMap.get('platform') : []
}; };
return result return result
} }
//TODO support game's name i18n
// handleI18nName(title: string, settings: DoubanPluginSettings):string {
// if (!title) {
// return "";
// }
// if (!settings) {
// return title;
// }
// let resultName:string = "";
// let regValue:RegExpExecArray;
// switch(settings.personNameMode) {
// case PersonNameMode.CH_NAME:
// regValue = /[\u4e00-\u9fa5]{2,20}/g.exec(title);
// resultName = regValue?regValue[0]:title;
// break;
// case PersonNameMode.EN_NAME:
// regValue = /[a-zA-Z.\s\-]{2,50}/g.exec(title);
// resultName = regValue?regValue[0]:title;
// break;
// default:
// resultName = title;
// }
// return resultName;
// }
} }

@ -7,5 +7,6 @@
"1.4.0": "0.12.0", "1.4.0": "0.12.0",
"1.4.1": "0.12.0", "1.4.1": "0.12.0",
"1.4.2": "0.12.0", "1.4.2": "0.12.0",
"v1.4.3": "0.12.0" "v1.4.3": "0.12.0",
"v1.5.0": "0.12.0"
} }