【发布时间】:2011-05-29 00:41:12
【问题描述】:
嗨 我有一个 cron 作业,它收集有关服务的一些统计信息。我需要 cron 作业以编程方式更新媒体 wiki 页面(附加到页面)。 我将 python 用于 cron,所以我最好的选择是什么,是否有 mediawiki/python 库的任何示例,或者 Media wiki 是否公开了我可以使用的任何 HTTP/REST api(可能通过扩展)。
谢谢
【问题讨论】:
嗨 我有一个 cron 作业,它收集有关服务的一些统计信息。我需要 cron 作业以编程方式更新媒体 wiki 页面(附加到页面)。 我将 python 用于 cron,所以我最好的选择是什么,是否有 mediawiki/python 库的任何示例,或者 Media wiki 是否公开了我可以使用的任何 HTTP/REST api(可能通过扩展)。
谢谢
【问题讨论】:
如果 PyWikipediaBot 太重,试试 Python 模块mwclient。
您可以登录,查看页面的当前内容,进行更改,然后在不到 10 行的时间内查看它(example)。
import mwclient
site = mwclient.Site('en.wikipedia.org')
site.login('Pfctdayelise','password')
page = site.Pages['User:Pfctdayelise/Test']
text = page.edit()
print text.encode('utf-8')
newtext = "\n\nTesting the write api without logging in.\n"
page.save(text+newtext,summary='testing write api')
【讨论】:
如果您与 cron 作业在同一台计算机上运行 mediawiki,则可以使用 maintanence 目录中的 edit.php 脚本。
/bin/python /opt/page_renderer.py | php /var/www/mediawiki/maintenance/edit.php -b PageTitle
在本例中,/opt/page_renderer.py 输出 wiki markdown。这将通过管道传送到具有-b 标志(将其标记为机器人编辑)和您要编辑的页面标题的编辑脚本。
当然,您可以从任何程序通过管道传输到编辑脚本,如果您在其他地方安装了 mediawiki,则可能需要更改编辑脚本的路径。
【讨论】:
作为
https://github.com/WolfgangFahl/py-3rdparty-mediawiki的提交者
我推荐这个库的命令行功能,它允许
您可以直接从脚本中使用标记。
该库与 Semantic MediaWiki 配合使用效果最佳,您可以在其中查询您感兴趣的页面:
$ wikibackup -s orth --backupPath "/home/user/wikibackup/orth_copy" -q "[[isA::Event]]" --limit 10
downloading 10 pages from orth to /home/user/wikibackup/orth_copy
1/10 ( 10%): downloading " DBKDA 2021" ...✅
2/10 ( 20%): downloading "ENERGY 2021" ...✅
3/10 ( 30%): downloading "ICAS 2021" ...✅
4/10 ( 40%): downloading "ICNS 2021" ...✅
5/10 ( 50%): downloading 2021 ICIMP ...✅
6/10 ( 60%): downloading 3DUI 2020 ...✅
7/10 ( 70%): downloading 3IA 2009 ...✅
8/10 ( 80%): downloading 3PGIC 2010 ...✅
9/10 ( 90%): downloading 4S4D 2017 ...✅
10/10 ( 100%): downloading 5GU 2017 ...✅
修改标记后,您可以通过以下方式恢复页面:
wikirestore -t orth --backupPath "/home/user/wikibackup/orth_copy"
restoring 10 pages from /home/user/wikibackup/orth_copy to orth
1/10 ( 10%): restore 2021 ICIMP ...✅
2/10 ( 20%): restore "ICNS 2021" ...✅
3/10 ( 30%): restore 3PGIC 2010 ...✅
4/10 ( 40%): restore 4S4D 2017 ...✅
5/10 ( 50%): restore "ENERGY 2021" ...✅
6/10 ( 60%): restore 3DUI 2020 ...✅
7/10 ( 70%): restore " DBKDA 2021" ...✅
8/10 ( 80%): restore 3IA 2009 ...✅
9/10 ( 90%): restore "ICAS 2021" ...✅
10/10 ( 100%): restore 5GU 2017 ...✅
【讨论】: