Skip to content

A Python program to archive certain pages on Moegirl 萌娘百科存档工具

License

Notifications You must be signed in to change notification settings

DateMasanaga/moegirl-archive

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

萌娘百科存档工具

python 3.8 test: passed license: MIT

葫芦又写于2020年1月21日。

存档萌娘百科中文站的指定页面的维基文本。

萌娘百科®、Moegirlpedia®是注册商标。此程序仅提供存档功能。有关使用存档的内容时需遵守的版权协定,请参阅萌娘百科的版权信息

注意

此程序“按原样”提供。请在运行之前按你的需要调整其中的内容。本人不负责提供教程等。

本程序依赖萌娘百科的API。有关API的内容,参见萌娘百科的API沙盒

在安装完成Python之后,需要额外安装requests包。或者请自行修改代码为使用urllib等。

使用方法

  1. PAGELIST.txt中按格式写入你存档的页面的类型、ID、标题。中间用制表符 隔开。
    页面类型可以随意定义。可以根据需要对页面进行分类,然后只存档需要的类型的页面。
    如果不知道其中的某个值,可以空出。但需要保证所有页面的都给出了某一值,比如都给出了页面ID。

  2. 在同目录下创建文件夹archive/。在文件夹中创建文本文档!.txt。文本文档的初始内容为{}
    注意:初次存档时,文本文档的初始内容一定要手动设置好。
    存档将存放在文件夹中,文本文档将记录存档的数据,以便下次存档时读取。

  3. 运行moegirl_archive.py,按下Enter键开始存档。
    屏幕上将显示存档的过程。网络出现问题时,会输出一个.并自动重试。
    [新]表示这是第一次存档这个页面。
    [覆]表示之前存档过这个页面,本次存档覆盖了之前的存档。
    [移]表示之前的存档中的页面标题与实际页面标题不一致,即在上次存档之后页面被移动至新的标题。请手动删除之前的存档。
    [-]在上次存档后没有发生变化后的页面,本次存档时会跳过。将第121行的#删掉即可在屏幕上输出被跳过的页面的信息。

初次存档,存档1000个页面大约需要20分钟。覆盖原有存档,则要看有多少页面需要覆盖。

你可能需要修改的代码

  • 第19~21行,页面列表、存档存放的文件夹、记录存档的数据文件。
  • 第23行,文件的编码。
  • 第35行,需要存档的页面的类型代码。
  • 第118行,在页面标题中遇到不能作为文件名的字符时的转换列表。
  • 第140~142行,放在存档数据中的备注信息,包括备注文字、时间、计算机名。可以修改为自定义的文字。
  • 本程序中是按照页面ID查找页面的。如果需要改成根据页面标题查找,这时API中的indexpageids功能就要起作用了;自己看着改哈。
  • 如果想要存档其他基于MediaWiki的站点,修改第25行的网址为对应站点的API地址即可。别忘了把文件设为初始内容。

注释

P = Page,页面

R = Revision,历史版本

存放数据的文件中按照{pageid: (revid, title), ...}的格式存储。

示例文件中的PAGELIST.txt!.txt是已经运行过一次的结果,但示例文件中没有给出存档结果。

请注意,在存档之后如果人为将存档文件移动或删除,或对数据进行修改,再次存档时将无法识别这些变化,可能不能按预期存档;特别是当文件被修改,但数据没有变动,同时页面也没有被编辑时,可能不会用新内容覆盖旧内容。

初次存档前,请按照上文设置数据文件的初始内容。

示例文件的页面列表其实是萌娘百科LoveLive!系列的全部页面。

实际上,此程序可以存档任意一个基于MediaWiki的站点。只需保证该站点的对应API是开放的。

此外,如果配合使用API中的query.allpages,即可存档该站点的所有页面,而不需使用列表指定。

已知问题

  1. 不会识别标题被替换的页面的标题,包括首字母小写标题。存档中将全部按照页面的真实标题记录。
  2. 因为要不断和服务器提交请求并获取数据,所以运行有点慢。这不是我的问题。此外,萌娘百科的服务器时常不太稳定,经常会出现网络连接上的问题;出错时会自动重试。
  3. 存档是维基文本的格式。维基页面中使用的模板等,如果没有指定需要存档,则不会被存档。这也意味着直接将存档的内容复制到其他维基网站可能无法按预期显示。
  4. 不能存档文件。一是因为维基的文件不是以维基文本的格式存储的,二是因为萌娘百科的大多数文件都是放在萌娘共享上的。
  5. 我觉得我做得挺完美的。如果还有问题,请在Issues提出。

About

A Python program to archive certain pages on Moegirl 萌娘百科存档工具

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%