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

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

下载

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

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

点击查看完整更新日志

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中所有重定向相关数据(测试中)。

2017年12月15日 v0.3.27

  • “批量操作页面”模式:
    1. 修正读取页面内容时,标题中含有特殊符号的情况下,请求失败。该功能涉及解析、保存和空编辑刷新。
    2. 修正了一个Bug:保存源代码到文本时,如果页面不属于任何命名空间,保存的文件将不会添加“.wiki”后缀。

2017年12月13日 v0.3.26

  • 新增“批量移动”模式:
    1. 该模式会将指定Excel文件第一个工作表中的第一列当作原始页面名,将页面移动到对应的第二列的页面名里。

2017年11月15日 v0.3.25

  • “以文本更新”模式:
    1. 会将后缀为.html的文件上传到Html命名空间中
  • “批量操作页面”模式:
    1. 保存源代码到文本时,会将Html命名空间中的条目,保存为.html后缀

2017年10月23日 v0.3.23

  • “批量操作页面”模式:
    1. 解析模板时,如果出现Sheet名只有大小写不同的情况,将会给后续大小写不同的版本添加额外编号

2017年8月7日 v0.3.21

  • “批量操作页面”模式:
    1. 使用SMW查询时,每次会请求尽量多的数据,并修正了一个错误。

2017年7月28日 v0.3.20

  • “上传Excel文件(JSON)”模式:
    1. 新增该模式,该模式工作原理与模板基本相同,只是将Excel文件转成json文件上传,用于适配于新版DragonPit中的json数据存储格式。单元格中可以写Array或是Object。
  • “以文本更新”模式:
    1. 新增了对“.json”文件的支持,遇到该类文件时,会为其添加“Data:”开头,并进行上传。

2017年7月25日 v0.3.19

  • 登录模块
    1. 适配了新版Mediawiki的登录模式
  • “以文本更新”模式:
    1. “刷新缓存”功能会正确的在更新操作全部结束之后,再进行刷新了

2017年7月20日 v0.3.17

  • “上传Excel文件(模板)”模式:
    1. 修正了读取到在1900年3月1日之前的日期时,程序会崩溃的BUG
  • “批量删除 / 恢复”模式:
    1. 读取的文件列表可以使用文本文件了(UTF-8编码),每行一个页面名
  • “批量操作页面”模式:
    1. 选择需要操作的页面列表中,Excel模式改为文件列表模式。可以使用UTF-8编码的文本文件读取页面列表
    2. “保存条目列表”保存的文本是UTF-8编码的,如果使用记事本进行修改调整,会自动保存成UTF-8+导致第一行的名称出现一些问题,请务必注意。
    3. “解析”操作添加了一个新的选项“使用已有的表头”,该选项默认勾选。勾选该选项的情况下,如果保存目标文件存在,将会读取目标文件中的表头,用来作为基础表头。该功能用来保证表头顺序

2017年7月17日 v0.3.15

  • “更新Lua”模式:
    1. 该模式与“以文本更新”模式功能重叠,经过代码调整,现在该功能合并入“以文本更新”模式。
  • “以文本更新”模式:
    1. 添加了原来“更新Lua”模式中的“包括子目录”、“将子目录视为子页面”、更新完后“刷新缓存”三个功能,同时也支持识别Lua文件上传
  • “批量操作页面”模式:
    1. “保存”到文本时,添加了一个新选项“将子页面保存成子目录”。

2017年7月16日 v0.3.14

  • “上传Excel文件(模板)”模式:
    1. 修正了进度条不显示的问题
    2. 修正了“只替换模板内容模式”有时无法正确识别模板名的问题

2017年7月14日 v0.3.13

  • “更新Lua”模式:
    1. 修正了“包含子目录”时,勾选“使用子页面命名”无效的问题

2017年7月13日 v0.3.12

  • “上传Excel文件(模板)”模式:
    1. 重写了该模块,现在支持Excel文件出现同标题的数据行,多个同标题数据会被合并到一起上传。使用“上传全部工作表”时,多个工作表中出现的同标题数据行也会合并。
    2. 添加了一个特殊表头:“__index__”,该表头用于规定同标题的数据行,在合并时的先后顺序。
  • “批量操作页面”模式:
    1. 解析模板时,会给每个页面中同名模板进行编号,使用表头为“__index__”。

2017年7月11日 v0.3.11

  • “更新Lua”模式:
    1. 上传前会将对文件名进行转义(例如“_1_”会转义成“/”)
  • “批量操作页面”模式:
    1. 保存的时候,如果被保存页是模块,将会存为“.lua”的形式

2017年7月4日 v0.3.10

  • 因为域名修改,而进行的跟进修正。需要重新进行登录。

2017年6月26日 v0.3.9

  • “更新Lua”模式:
    1. 修正了只能上传后缀为小写“lua”的Bug。
  • “以文本更新”模式:
    1. 修正了只能上传后缀为小写“wiki”的Bug。

2017年6月16日 v0.3.8

  • “上传Excel文件(模板)”模式:
    1. 修正了“只替换模板内容模式”在特定情况下不保存本地的wikitext的问题,该问题致使每次更新时与本地wikitext的比对无效。

2017年6月13日 v0.3.7

  • “批量操作页面”模式:
    1. “解析模板数据”功能,根据Excel对工作表名的限制添加了一些额外设定
      • 解析后的工作表名称会使用小写的模板名来防止大小写不同的重名模板
      • 如果模板名中包含不可用于工作表名的非法字符时,会自动替换为别的字符。
      • 如果模板名超过30个字符,会截取为30个字符
  • “更新Lua”模式:
    1. “刷新缓存”功能修正了会崩溃的Bug。

2017年6月12日 v0.3.6

  • “读取数据”模式重新命名为“批量操作页面”模式:
    1. 通过API刷新页面缓存:增加了一个调节单次申请次数的功能,如果申请刷新的页面中有许多大量时间生成的页面时,会导致刷新请求总是超时而无法继续。此时请通过该功能调低单次请求数量。
    2. 重写了“解析模板数据”功能:新的解析模板数据功能,会将页面中所有模板都解析到一个Excel工作薄(xlsx格式)中,不同的模板会保存到不同的工作表里,方便使用者从Wiki中将其他用户手工更新过的数据复制回本地进行加工。
  • “上传Excel文件(模板)”模式:
    1. “只替换模板内容模式”调整:不再依赖注释<!--Template [Name] end-->,现在会替换页面中第一个同名模板。
    2. 该功能生成的页面内容:因为上面的调整,现在页面不再自动生成注释<!--Template [Name] end-->。

2017年5月8日 v0.3.5

  • 更新Lua模式:
    1. 添加了新的小功能:指定上传目录时可以额外选择全部子目录里的文件也作为上传对象,子目录的文件命名有两种模式,详见程序内该选项的Tooltip

2017年5月4日 v0.3.4

  • 整体:
    1. 修复了一个严重的BUG,新建任务在运行时会导致程序崩溃。

2017年5月3日 v0.3.3

  • 更新Excel模板模式:
    1. 添加了一个功能,可以根据模板名和Excel文件的表头,自动创建用于存储SMW属性的模板。该功能通过点击新增按钮执行。

2017年4月21日 v0.3.2

  • 更新Lua模式:
    1. 修复了一个Bug,会导致提交刷新页面申请时程序崩溃

2017年4月20日 v0.3.1

  • 更新Lua模式:
    1. 添加了一个功能,可以在更新完Lua文件后,自动提交一次刷新页面申请,方便Debug
  • 读取模式:
    1. 添加了一个新模块,可以按照查询出的标题列表,将所有页面的源代码保存到指定目录(后缀为.wiki)(同时也会存一份wikitext,方便比较更新)
    2. 修复了一个Bug,原来的解析模式和空编辑刷新缓存模式,会进行两次获取源代码的操作,现在与新功能(保存源代码)合并在一起,不论勾选几个功能,只会进行一次获取源代码操作
  • 【新模式】文本更新模式:
    1. 添加了一个新模式,该模式可以将一个目录下的所有.wiki文件,以其文件名前缀为条目名,全部更新到Wiki上,配合上面的读取模式的新功能下载后进行编辑

2017年4月7日 v0.2.5

  1. 读取模式:修正了通过分类模式多次读取时,读取出的列表会重复的Bug

2017年4月5日 v0.2.4

  1. 通用:新增了操作间隔时间选项,使用户可以手动调整操作间隔
  2. 上传图片:可以在上传图片的同时添加分类,多个分类之间使用半角逗号分隔

2017年3月21日 v0.2.2

  1. 更新Lua模式,增加了wikitext目录的本地比对功能
  2. Excel简易模式,第一行也会作为数据行而不会作为表头了(统一了所有简表的逻辑)

2017年3月20日 v0.2.0

  1. 调整了任务执行间隔时间,来尝试不让服务器判为DDOS攻击
  2. 当因为连续编辑量较大导致服务器返回502、503错误时,会增加延迟进行后续的任务
  3. 默认线程数量调整为1,最大线程数量调整为5。设为较大的线程时可能导致服务器502、503错误。
  4. 修正了页面标题为纯数字时可能出现的编辑错误
  5. 修正了模板模式更新多个工作表时,进度器显示不正常的问题
  6. 修正了“停止”后还需要等很久才能停止的问题
  7. 在「读取」功能中,新增了“刷新缓存”的子操作

2017年3月15日 v0.1.13

  1. 修正了一个选择指令时项目重置不完全的Bug
  2. 为了减少对服务器的压力,每次请求之间加了间隔,并且将线程数最大数量调整成10

2017年3月14日 v0.1.11

  1. 修正了模板更新模式中,读取Excel中有单元格数据带有换行情况下,对比wikitext时会无法匹配,导致反复更新的问题。(把\r替换成了\n)

登录

使用灰机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_ _5_ _6_ _7_
上传图片 批量上传图片(超过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年