Wanxp / obsidian-douban

an obsidian plugin that can pull data from douban to your markdown file
GNU General Public License v3.0
185 stars 6 forks source link

[Feature Request] 支持 Templater #50

Open escwxyz opened 1 year ago

escwxyz commented 1 year ago

您好,

目前我想通过 Templater 读取演员字符串,并自动创建标签。

直接在模版中使用 <% tp.frontmatter.actor...othercode %> 达不到效果,会原封不动输出代码;目前是通过 QuickAdd 在文件被创建之后,再 Capture 到指定位置。似乎也无法使用 Macro,因为必须等文件被创建之后,加了 delay 也不行。

Screenshot 2023-03-12 at 4 08 40 PM

请问有没有更好的办法?谢谢

<%* 

const directors = tp.frontmatter.director.split(", ");

let str = "#Movie ";

str += directors.length === 1 ? `#${directors[0]}` : directors.slice(0,2).map(s => "#" + s).join(" ");

str += tp.frontmatter.actor.split(", ").slice(0,3).map(s => " #" + s).join("");

return str;

%>
Wanxp commented 1 year ago

你是说 在frontmatter中 tags属性 中追加值 演员,达到演员作为标签的功能吗?如果是这种功能的话建议使用以下方式

  1. 设置电影模板中tags属性的值为tags: Movie, {{actor}}(相对原始模板变化就是actor: {{actor}}中{{actor}} 修改在tags下了)

举例如下:

---
doubanId: {{id}}
title: {{title}}
type: {{type}}
score: {{score}}
myRating: {{myRating}}
originalTitle: {{originalTitle}}
genre: {{genre}}
datePublished: {{datePublished}}
director: {{director}}
author: {{author}}
tags: {{type}}, {{myTags}}, {{actor}}
state: {{myState}}
url: {{url}}
aliases: {{aliases}}
country: {{country}}
language: {{language}}
IMDb: {{IMDb}}
time: {{time}}
createTime: {{currentDate}} {{currentTime}}
collectionDate: {{myCollectionDate}}
desc: {{desc}}
---

![image]({{image}})

Comment: 
---
{{myComment}}

结果如下:

1678679117889

escwxyz commented 1 year ago

你是说 在frontmatter中 tags属性 中追加值 演员,达到演员作为标签的功能吗?如果是这种功能的话建议使用以下方式

  1. 设置电影模板中tags属性的值为tags: Movie, {{actor}}(相对原始模板变化就是actor: {{actor}}中{{actor}} 修改在tags下了)

举例如下:

---
doubanId: {{id}}
title: {{title}}
type: {{type}}
score: {{score}}
myRating: {{myRating}}
originalTitle: {{originalTitle}}
genre: {{genre}}
datePublished: {{datePublished}}
director: {{director}}
author: {{author}}
tags: {{type}}, {{myTags}}, {{actor}}
state: {{myState}}
url: {{url}}
aliases: {{aliases}}
country: {{country}}
language: {{language}}
IMDb: {{IMDb}}
time: {{time}}
createTime: {{currentDate}} {{currentTime}}
collectionDate: {{myCollectionDate}}
desc: {{desc}}
---

![image]({{image}})

Comment: 
---
{{myComment}}

结果如下:

1678679117889

感谢,我以为 {{actor}} 是返回一整个字符串,因此我用的上面的办法。那如果是只取主演,例如前若干个呢?

Wanxp commented 1 year ago

原始功能无法区分出主演和只取前n个演员