= 创作分享 =
百科杂谈
【教程向】如何批量导出curseforge的更新日志(100%) ...
sxjeru

【教程向】如何批量导出curseforge的更新日志(100%)

sxjeru 于 2018-4-4 19:20 ( 6年前 ) [复制链接] [只看楼主] [打印]
3011 1
本帖最后由 sxjsxj 于 2018-4-7 09:31 编辑

[BGM预留位]


前排提醒,该方法成功率不佳



有什么用:
一些mod没有官网,也没有统一发布changelog的页面,只在curseforge内写了changelog。而curseforge中的更新日志是不能批量看的,只能一个一个版本打开查看,这会给贡献者带来不便。这个工具可以批量取得modder在curseforge写的更新日志,以便贡献者能更有效率地为百科添加更新日志。


抓取结果预览(html格式):



原理:通过Google自定义搜索确定目标,然后用爬虫抓取内容。


环境要求:
  • 已突破网络封锁(自行解决)
  • 已安装Python 3.6.0+,并在环境变量“PATH”中配置(见教程第一节)


教程原文:https://github.com/CMuell/Curseforge-Changelog-Compiler/wiki/Setup



第一节  安装Python
  • Python官网下载最新版。
  • 打开安装文件后,在起始页下方寻找“Add Python 3.6 to PATH”复选框,单击勾选(默认为勾选状态)。
  • 点击“Install Now”快速安装。


第二节  下载Curseforge Changelog Compiler
  • 打开CCC github页,进入releases页。
  • 确认版本为“Latest release”,点击图示处下载。
  • 解压缩到合适的文件夹。



第三节  获取Google API key
   1. 打开Google 云端平台凭据页,登录Google账号。(已登录请略过)
   2-1. 如第一次使用,请点击“创建”创建一个项目,名称随意。
   2-2. 如已创建项目,可以点击“选择”选择一个可用项目。
   3. 点击“创建凭据”,选择“API 密钥”后,等待后台创建API 密钥。
   4. 复制弹出框中的API 密钥,备用。


第四节  获取Google CSE ID
  • 打开CSE创建页,在“要搜索的网站”输入框中输入“https://minecraft.curseforge.com”。
  • 点击页底创建后等待。
  • 完成后点击“控制台”,点击“搜索引擎 ID”,复制内容,备用。



第五节  更改配置文件
  • 打开解压的CCC文件夹,寻找“config.txt”,打开。
  • 在“api_key”等号后粘贴复制的API 密钥。
  • 在“cse_id”等号后粘贴刚刚复制的CSE ID。
  • “path_old_ver”等号后输入旧mod放置的文件夹路径。
  • “path_new_ver”等号后输入新版本mod放置的文件夹路径。(不能与“path_old_ver”重复)
  • “modpack_name”即报告标题,可随意填写。
  • 保存文件。


第六节  运行程序
  • 确认网络环境,详见:https://gist.github.com/sxjeru/3bd6710c70c34a3424a906b0d5e50983
  • 双击“run.bat”运行程序。
  • 等待一会,会弹出“Strip HTML Tags? [y/n]:”的选项,分支见4与5。
  • 输入“y”回车,输出txt格式报告。
  • 输入“n”回车,输出html格式报告,即页首截图样式。(推荐)
  • 等待爬虫抓取,直到控制台输出“Finished!”。如没有输出,见附录(2L)查错篇。
  • 程序运行结束,退出。


收尾  检查报告
  • 报告会生成在CCC文件夹内,“changelog.html”与“changelog.txt”文件。
  • 如报告中没有更新日志,见附录。



至此,导出更新日志的步骤就完成了。我用的两个黑科技都已经发教程了,一篇是这个,另一篇是如何及时获知mod更新
后续有学会新的技巧的话,也会教各位哦。
呐,またね~~

评分

参与人数 1RF +1 收起 理由
重生是希望 + 1 続く

查看全部评分

return 0;
发表于 2018-4-4 19:20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 1 条回复!
sxjeru
本帖最后由 sxjsxj 于 2018-4-7 09:28 编辑

附录  查错篇

Q:输入“y”或“n”后直接Finished,报告中无更新日志。cmd界面显示如下:
  1. Strip HTML Tags? [y/n]: n
  2. Finished!
复制代码
A:确认配置文件内的“path_old_ver”与“path_new_ver”路径正确,且路径内有相应的mod文件。“path_old_ver”指定的文件夹内放旧版本mod文件,“path_new_ver”内放新版本mod文件。


Q:输入“y”或“n”后等待了一段时间,cmd输出如下语句,报告中无更新日志:
  1. Traceback (most recent call last):
  2.   File "changelog.py", line 153, in <module>
  3.     file_object.write(final_entry)
  4. UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 474: illegal multibyte sequence
复制代码
A:出现该问题时,可尝试变更输入的“y”(“n”)为“n”(“y”),如无法解决,就慢慢等开发者修复吧……
表示已上报开发者,issue:https://github.com/CMuell/Curseforge-Changelog-Compiler/issues/6(似乎用英文的操作系统不会遇到这问题。)


Q:cmd未输出“Finished”,却输出如下错误,报告中无更新日志:
  1. Traceback (most recent call last):
  2.   File "changelog.py", line 103, in <module>
  3.     search = format_func.google_search(term, api_key, cse_id, num=2)
  4.   File "C:\Users\Eru\Desktop\Curseforge-Changelog-Compiler-1.0.0a\format_func.py", line 11, in google_search
  5.     result = service.cse().list(q=term, cx=cse, **kwargs).execute()
  6.   File "H:\Program_Files\python-3.6.4\lib\site-packages\oauth2client\_helpers.py", line 133, in positional_wrapper
  7.     return wrapped(*args, **kwargs)
  8.   File "H:\Program_Files\python-3.6.4\lib\site-packages\googleapiclient\http.py", line 844, in execute
  9.     raise HttpError(resp, content, uri=self.uri)
  10. googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/customsearch/v1?q=(因人而异的内容)
复制代码
A:检查config中“api_key”与“cse_id”的数据是否正确。


Q:cmd输出“Finished”,但报告中无更新日志。
A:抱歉,这可能是CSE没有搜索到内容,暂时无解。


Q:cmd输出如下语句:
  1. ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
复制代码
A:检查网络环境配置,见第六节第一步。


暂时就这些问题吧,有其他问题请回复。

return 0;
发表于 2018-4-7 09:02:24 | 只看该作者

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表