zhy201810576 / ETagCN

基于Difegue编写的E-Hentai插件进行改良,结合EhTagTranslation项目提供的数据库转换来自E-Hentai上的英文标签为中文标签。
Apache License 2.0
66 stars 0 forks source link

能否出一个本地标签去重的脚本呢? #4

Open Putarku opened 1 year ago

Putarku commented 1 year ago

本身用e站的插件刮过一次以后还是有些版权本或者其他被删除的本子没刮到,所以用Hitomi和Hentag再刮了一次,用脚本翻译回中文以后就出现了下面这种情况 image 虽然不影响检索,但看着还是有些怪怪的。

zhy201810576 commented 1 year ago

您好,因为翻译数据源采用的是E站的数据,所以Hitomi和Hentag插件搜刮的标签翻译会存在不完整的情况,这个我暂时也没有很好的解决办法,抱歉🙇

Rhilip commented 12 months ago

提供一个使用前端js脚本解决重复LANraragi标签的方法

const all_archives = await (await fetch('/api/archives')).json();

// 遍历
for (archive of all_archives) {
   let {
      arcid,
      title,
      tags
   } = archive; // 获取该存档的id和tags信息

   // 恢复部分有特殊意义的tag,不需要请直接删除下面一行
   tags = tags.replaceAll('艺术家:', 'artist:').replaceAll('原作:', 'series:').replaceAll('团队:', 'group:')

   // 使用 ES6 Set 实现tag去重
   let new_unique_tags = Array.from(new Set(tags.split(', ')))
      .sort() // 重新排序tag,如不需要请直接删除该行
      .reverse() // 将中文tag置前,如不需要请直接删除该行
      .join(', ');

   // 向 LANraragi 提交tags更新
   let update_status = await (await fetch(`/api/archives/${arcid}/metadata?` + new URLSearchParams({
      tags: new_unique_tags
   }), {
      method: "PUT"
   })).json();

   if (update_status['success'] === 1) {
      console.log(`存档 ${title} (${arcid})的tags更新成功: "${tags}" -> "${new_unique_tags}"`);
   } else {
      console.log(`存档 ${title} (${arcid})的tags更新失败,但不知道发生了什么`);
   }
}

食用方法:

  1. 设置中关闭“No-Fun Mode”和“Enable CORS for the Client API”,清空“API Key” image
  2. 在该页面按F12弹出浏览器开发者页面,在“控制台”面板输入上面那段代码并回车 image

注意:

  1. 本人不保证食用效果,请做好数据库备份后再食用!
  2. 部分代码有本人一些想法,如果不需要请按照注释!