该部分内容仅在huiji.wiki和使用HuijiWiki软件的维基平台生效,请注意该部分代码的兼容性。

灰机Wiki数据更新器(HuijiUpdater)是由Yuee自制的机器人小程序,用于处理一些常见的数据更新需求。是“推土机”架构的重要工具。

下载

通过下方地址下载程序(2018年10月22日更新):

下载后解压到任意位置,执行根目录下的huijiwiki_updater_gui.exe即可启动程序

点击查看完整更新日志
查看完整更新日志

2018年10月22日 v0.3.37

  • “批量操作页面”相关:
    1. “保存源代码到文本”功能中,不再会将“/doc”结尾的内容转为子目录。

2018年9月26日 v0.3.36

  • “保存到本地文件名”相关:
    1. 修正了相关错误,该错误会导致页面名有双引号的页面下载时生成的名称是错误的(双引号应被替换位“_4_”,但被错误的替换成了“_7_”),使得重新上传时无法正确转换。

2018年9月21日 v0.3.35

  • “上传Excel文件(模板)”模式:
    1. 尝试修正“只替换模板内容模式”会更新掉全部页面的错误。

2018年5月21日 v0.3.34

  • “以文本更新”模式:
    1. “转换文件名”:修正之前该选项无效的BUG。
  • “批量移动”模式:
    1. 新增“强制移动页面”功能:当勾选此选项后,移动页面时发现目标页已存在的情况,会将目标页删除后再进行移动。

2018年5月2日 v0.3.30

  • 综合:
    1. 由于服务器压力问题已经解决,任务的默认线程数改为10,默认操作间隔改为1秒。
  • “以文本更新”模式:
    1. 新增一个单选框“转换文件名”,该功能默认不勾选。当勾选该功能时,文件名中的“_1_”、“_2_”、“_3_”、“_4_”会被对应转换成“/”、“:”、“*”、“"”。
    2. 这4个符号在Wiki中是可以作为标题,但在Windows中无法作为文件名,在使用更新器的“批量操作页面”将这些条目保存时,会自动将标题里的这4个符号替换成“_X_”的形式,为了可以更新回去,也增加了反转的替换功能。但是当遇到文件名中本来就有这4个“_X_”的文件时,上传就会出现错误。所以将该功能作为一个可选项进行配置。
    3. 该功能在以前的版本中是强制开启的,现在改为默认关闭,可以手工开启。

2018年1月5日 v0.3.29

  • 新增“重定向”模式:
    1. 该模式用于获取一个Wiki中所有重定向相关数据(测试中)。

登录

使用灰机Wiki的账号和密码即可进行登录。

为了保证Wiki内容不被随意破坏,因此后续进行操作时,登录的账号必须同时拥有所操作Wiki的机器人管理员权限。建议开一个新账号进行机器人操作。

勾选保持登录状态可以在下次启动程序时,跳过登录界面。

基本使用方法

任务设置界面
  • 新建一个任务
  • 为任务设定Wiki Key,每个Wiki的Key就是 xxx.huiji.wiki 中的 xxx 部分
  • 设置任务名称和描述。这两项仅供用户识别任务用,不会影响任务执行
  • 选择一个指令,并配置指令相关的参数。关于指令说明请参考后面详细描述部分
  • 设置线程数编辑摘要
  • 运行任务

指令

指令名称 功能目标 简述
上传Excel文件(模板) 用来批量创建指定预设模板的页面(key-value模式) 读取指定Excel文件,并将其中的数据更新到Wiki中,会与wikitext进行对比。Excel格式要求请参考后面详述部分
上传Excel文件(简易) 用来批量创建制定内容的页面(freetext模式) 读取指定Excel文件的第一个工作表(Sheet),以第一列(A列)为页面名,以第二列(B列)为页面内容,将内容批量更新到Wiki中,会与wikitext进行对比
以文本更新 批量将文本更新到Wiki 将指定目录下,所有Wiki源代码文件(*.wiki,实质为文本文件),以文件名为标题(注意转义),文本内容为页面内容更新到Wiki中。请配合“批量页面操作”功能中的“保存源代码到文本”功能使用。请注意:由于Windows文件名不支持一些符号,需要转义这些符号,转义规则请见下面的表:
符号 \ / : * "
转义 _0_ _1_ _2_ _3_ _4_
上传图片 批量上传图片(超过1000张时强烈推荐) 将指定目录中的所有图片(*.png,*.jpg,*.jpeg,*.gif)上传到Wiki中。默认会先判断Wiki中是否有同名文件,如果存在就不进行上传,可以通过选项关闭该功能
更新Lua 更新lua模块 将指定目录中的所有Lua文件(*.lua),上传到Wiki中
批量删除 / 恢复 批量增删页面 读取一个Excel,以其中第一个工作表的第一列(A列)为页面标题列表,批量删除或恢复删除这些页面
批量操作页面 对指定规则的页面列表进行批量操作 根据命名空间(需要填写命名空间ID)、分类、SMW查询条件或通过Excel文件提供的标题列表,对符合条件的页面进行批量操作。操作内容包括:批量刷新缓存、保存条目列表、解析模板数据到Excel文件、保存源代码到文本。

wikitext

进行编辑的功能,都需要指定一个wikitext目录,程序会将生成的页面内容,在成功编辑到Wiki后,在本地以文本形式(txt)保存一个备份,在下次进行更新时,会将新生成的页面内容与本地备份进行对比,如果一样就不进行上传,以减少服务器压力和任务执行时间。

如果需要忽视该功能的话,可以于任务设置中关闭对比(不推荐),或是在wikitext中找到对应文件删除。

上传Excel数据到维基模板

数据格式

模板模式需要在Excel中,以如下方式罗列数据

Updater demo.png

灰机Updater更新上述表格时会创建页面名甲页面名乙页面名丙…等页面。

其中页面名甲的源代码内容为

{{模板名
|表头1=数据B2
|表头2=数据C2
|表头3=数据D2
…
}}
  • Excel表上第一行第二格开始后的所有表头实际上就是网页模板中的参数名Updater demo2.png
  • Excel表上第二行起所有第二列以后的内容就是网页模板中对应参数的赋值Updater demo3.png
    • 页面名乙、页面名丙…等页面的内容可类推。

另外,可以在表头或是页面名最前面加“!”(半角惊叹号),有该符号的数据列或是行,不会被上传到Wiki中。

参数说明

选择数据Excel文件
  • 上传全部工作表:该选项为默认值,会上传工作薄中所有工作表。但是会跳过所有以“Sheet”开头的工作表(Excel默认工作表名称)
  • 上传第一个工作表:不论第一个工作表是什么名字,都上传第一个工作表
模板名称

可以设置3种形式来指定模板名称,

  • 使用单元格A1默认选项,使用A1的值作为模板名称,例如:“Template Name”
  • 使用表单页的名字:使用当前表单(sheet)的名字作为模板名称。
  • 指定模板名称:在客户端中手动输入一个模板名,将以此模板逐个创建页面(不用填写命名空间“template/模板”)
额外设置
  • 不保留空值模式:默认情况不勾选该项目。勾选时,生成Wiki文本时,会跳过值为空的数据项。
例如上面例子中,如果数据C3是空值
不勾选该项目生成的文本勾选该项目生成的文本
{{Template Name
|表头1=数据B3
|表头2=
|表头3=数据D3
…
}}<!--Template [模板名] end-->
{{Template Name
|表头1=数据B3
|表头3=数据D3
…
}}<!--Template [模板名] end-->
  • 只替换模板内容模式:默认情况不勾选该项目。勾选时,程序会先从Wiki中获取该页面的内容,并将新生成的内容,替换页面内容中同名模板(如果页面中有多个该名称模板,将只替换第一个),然后编辑到Wiki。使用该选项可以保存页面中模板之外的编辑内容。

下载维基模板数据到Excel

在基本中选择“批量操作页面”,在第二个标签内选择“解析模板数据到excel文件”

选择页面

使用updater通用的选择控件,支持以下4种方式来生产页面list

  1. 命名空间:例如“0”代表主空间,“3500”代表data空间,灰机的命名空间编号规则可以在:命名空间查阅
  2. 分类:例如“data”,会选择所有“分类:data”下的页面
  3. SMW语法:输入合法的SMW查询条件,例如“[[name::+]]”
  4. 文件列表:提交一个excel工作表

解析方式

  • 默认会解析页面中的所有模板以及其中的所有参数
  • 输入指定的模板(多个用“|”分隔)可以解析制定模板内的所有参数

总结

上传/下载功能结合使用能够允许编辑者像操作Github的代码库一样随时随地的pull/push维基上的数据。

  • 允许我们批量建立、更新特定的页面内容。
  • 也可以在线下批量处理、修改维基上的格式化数据。下载的excel文件可以进一步的转化成csv、json等格式提供给更高级的脚本语言(例如python)来做进一步的自动化处理。待修改完毕后再以excel文件的形式回灌到维基页面中即可

批量刷新页面

读取数据模式中,通过选择刷新操作,可以批量执行页面刷新,目前支持两种方式

  • 通过API申请刷新页面(推荐):藉由MediaWiki的API来提交刷新页面的job queue,在站点Job没有积压的情况下可以快速秒刷大量页面的Memory Cache缓存
  • 通过空编辑来刷新页面:藉由对指定页面进行无意义的空编辑来刷新页面,由于需要进行物理操作,因此时间会较慢,仅在特殊情况下使用。

以上两种方法在选择Excel表格作为页面列表时,仅对第一张表进行操作。

操作系统UI缩放导致的界面问题解决方案

由于个人制作,水平有限,本程序在Windows8/10开启系统UI缩放的情况下,会出现界面控件大小受到影响的问题(常见于使用4k分辨率桌面的用户),无法正常使用,临时解决方法如下:

  1. 启用兼容性模式打开
  2. 任选推荐配置,然后选择“否,使用其他配置再试一次”
  3. 勾选“程序已打开,但未正确显示”
  4. 勾选“当选择较大的字体设置时程序无法正确显示”

下一步、保存、测试,即可照常使用

avatar
avatar
Icicle
0

希望可以增加读取目标文件夹下文件,将文件名作为页面名,文件内容作为页面内容进行更新的功能。(来自一个实在解决不了怎么把一大堆文件放到excel中的血泪)

1年
D
0

66666666666666

1年
avatar
Hansong1994
0

<3

1年
avatar
Reasno
0

:+1:

1年