MC百科社群
标题:
【教程向】如何批量导出curseforge的更新日志(100%)
[打印本页]
作者:
sxjsxj
时间:
2018-4-4 19:20
标题:
【教程向】如何批量导出curseforge的更新日志(100%)
本帖最后由 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更新
。
后续有学会新的技巧的话,也会教各位哦。
呐,またね~~
作者:
sxjsxj
时间:
2018-4-7 09:02
本帖最后由 sxjsxj 于 2018-4-7 09:28 编辑
附录 查错篇
Q:输入“y”或“n”后直接Finished,报告中无更新日志。cmd界面显示如下:
Strip HTML Tags? [y/n]: n
Finished!
复制代码
A:确认配置文件内的“path_old_ver”与“path_new_ver”路径正确,且路径内有相应的mod文件。“path_old_ver”指定的文件夹内放旧版本mod文件,“path_new_ver”内放新版本mod文件。
Q:输入“y”或“n”后等待了一段时间,cmd输出如下语句,报告中无更新日志:
Traceback (most recent call last):
File "changelog.py", line 153, in <module>
file_object.write(final_entry)
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”,却输出如下错误,报告中无更新日志:
Traceback (most recent call last):
File "changelog.py", line 103, in <module>
search = format_func.google_search(term, api_key, cse_id, num=2)
File "C:\Users\Eru\Desktop\Curseforge-Changelog-Compiler-1.0.0a\format_func.py", line 11, in google_search
result = service.cse().list(q=term, cx=cse, **kwargs).execute()
File "H:\Program_Files\python-3.6.4\lib\site-packages\oauth2client\_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "H:\Program_Files\python-3.6.4\lib\site-packages\googleapiclient\http.py", line 844, in execute
raise HttpError(resp, content, uri=self.uri)
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输出如下语句:
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
复制代码
A:检查网络环境配置,见第六节第一步。
暂时就这些问题吧,有其他问题请回复。
欢迎光临 MC百科社群 (https://bbs.mcmod.cn/)
MC百科
|最大的MineCraft中文模组百科