Python MediaWiki 机器人框架
项目描述
Pywikibot
Pywikibot框架是一个Python库,它通过1.27或更高版本的MediaWiki API与MediaWiki进行接口。
还包括各种通用功能脚本,可以用于不同的任务。
有关库的详细信息(不包括脚本),请参阅完整的代码文档。
快速入门
git clone https://gerrit.wikimedia.org/r/pywikibot/core.git
cd core
git submodule update --init
pip install -r requirements.txt
python pwb.py <script_name>
或使用PyPI安装(不包括脚本)
pip install pywikibot
pwb <scriptname>
我们的安装指南提供了高级使用的更多详细信息。
基本用法
如果您想编写自己的脚本,启动非常简单
import pywikibot
site = pywikibot.Site('en', 'wikipedia') # The site we want to run our bot on
page = pywikibot.Page(site, 'Wikipedia:Sandbox')
page.text = page.text.replace('foo', 'bar')
page.save('Replacing "foo" with "bar"') # Saves the page
Wikibase用法
Wikibase是一个灵活的知识库软件,驱动Wikidata。一个用于从Wikibase获取数据的pywikibot脚本示例
import pywikibot
site = pywikibot.Site('wikipedia:en')
repo = site.data_repository() # the Wikibase repository for given site
page = repo.page_from_repository('Q91') # create a local page for the given item
item = pywikibot.ItemPage(repo, 'Q91') # a repository item
data = item.get() # get all item data from repository for this item
脚本示例
Pywikibot提供机器人类,使您轻松地开发自己的脚本
import pywikibot
from pywikibot import pagegenerators
from pywikibot.bot import ExistingPageBot
class MyBot(ExistingPageBot):
update_options = {
'text': 'This is a test text',
'summary': 'Bot: a bot test edit with Pywikibot.'
}
def treat_page(self):
"""Load the given page, do some changes, and save it."""
text = self.current_page.text
text += '\n' + self.opt.text
self.put_current(text, summary=self.opt.summary)
def main():
"""Parse command line arguments and invoke bot."""
options = {}
gen_factory = pagegenerators.GeneratorFactory()
# Option parsing
local_args = pywikibot.handle_args(args) # global options
local_args = gen_factory.handle_args(local_args) # generators options
for arg in local_args:
opt, sep, value = arg.partition(':')
if opt in ('-summary', '-text'):
options[opt[1:]] = value
MyBot(generator=gen_factory.getCombinedGenerator(), **options).run()
if __name == '__main__':
main()
有关Pywikibot的更多文档,请参阅我们的文档。
路线图
当前发布更改
添加对bdrwiki的支持(T371762)
国际化更新
当前弃用
9.3.0: page.BasePage.userName和page.BasePage.isIpEdit已被弃用,改用page.BasePage.latest_revision属性中的user或anon属性
9.2.0: 从bot模块导入logging函数已被弃用,将不再支持
9.2.0: 在pagegenerators选项中的-logevents参数中的total已被弃用;请使用-limit代替(T128981)
9.0.0: proofreadpage.IndexPage.page_gen中的content参数已被弃用,将被忽略(T358635)
9.0.0: userinterfaces.transliteration.transliterator被重命名为Transliterator
9.0.0: userinterfaces.transliteration.transliterator.transliterate的next参数被重命名为succ
9.0.0: site.APISite.protectedpages()中的type参数被重命名为protect_type
9.0.0: site.APISite.namespace()中的all参数被重命名为all_ns
9.0.0: date.dh中的filter参数被重命名为filter_func
9.0.0: data.api.OptionSet中的dict参数被重命名为data
9.0.0: pywikibot.version.get_toolforge_hostname()已被弃用,无替代方案
9.0.0: xmlreader.XmpDump中的allrevisions参数已被弃用,请使用revisions代替(T340804)
9.0.0: data.api.Request的iteritems方法将被移除,改为items
9.0.0: SequenceOutputter.output()已被弃用,改为tools.formatter.SequenceOutputter.out属性
9.0.0: backports中的nullcontext上下文管理器和SimpleQueue队列已被弃用
8.4.0: data.api.ParamInfo中的modules_only_mode参数、其paraminfo_keys类属性及其preloaded_modules属性将被移除
8.4.0: throttle.Throttle中的dropdelay和releasepid属性将被移除,改用expiry类属性
8.2.0: tools.itertools.itergroup将被移除,改用backports.batched
8.2.0: WbTime.toTimestrand WbTime.toWikiBase中的normalize参数将被移除
8.1.0: exceptions.NoSiteLinkError从exceptions.NoPageError中的依赖关系将被移除
8.1.0: exceptions.Server414Error已被弃用,改用exceptions.Client414Error
8.0.0: Timestamp.clone()方法已被弃用,改用Timestamp.replace()方法。
8.0.0: family.Family.maximum_GET_length方法已被弃用,改用config.maximum_GET_length(T325957)
8.0.0: textlib.replaceLanguageLinks和textlib.replaceCategoryLinks中的addOnly参数已被弃用,改用add_only
8.0.0: textlib.TimeStripper的ptimeR、ptimeznR、pyearR、pmonthR、pdayR属性已被弃用,改用patterns属性,它是一个textlib.TimeStripperPatterns
8.0.0: textlib.TimeStripper的`groups`属性已被弃用,改用textlib.TIMEGROUPS
8.0.0: LoginManager.get_login_token被login.ClientLoginManager.site.tokens['login']替代
8.0.0: data.api.LoginManager()已被弃用,改用login.ClientLoginManager
8.0.0: APISite.messages()方法已被弃用,改用userinfo[‘messages’]
8.0.0: Page.editTime()方法已被弃用,应替换为Page.latest_revision.timestamp
将在Pywikibot 10中删除
9.1.0: version.svn_rev_info和version.getversion_svn将被移除。SVN不再支持。(T362484)
7.7.0: tools.threadingclasses不应再从tools导入
7.6.0: tools.itertoolsdatatypes不应再从tools导入
7.6.0: tools.collectionsdatatypes不应再从tools导入
7.5.0: textlib.tzoneFixedOffset类将被移除,改用time.TZoneFixedOffset
7.4.0: FilePage.usingPages()被重命名为using_pages()
7.3.0: 旧的颜色转义序列如 \03{颜色} 已弃用,改用新的颜色格式如 <<颜色>>
7.3.0: family.Family 的 linktrail 方法已弃用;请使用 APISite.linktrail() 替代。
7.2.0: 用于日志函数的位置参数 decoder、layer 和 newline 已删除;必须使用关键字参数。
7.2.0: exception() 函数的 tb 参数已重命名为 exc_info。
7.2.0: XMLDumpOldPageGenerator 已弃用,改用 XMLDumpPageGenerator(T306134) 的 content 参数。
7.2.0: RedirectPageBot 和 NoRedirectPageBot 机器人类已弃用,改用 use_redirects 属性。
7.2.0: tools.formatter.color_format 已弃用,并将被移除。
7.1.0: Page.getOldVersion() 的未使用 get_redirect 参数将被移除。
7.0.0: User.isBlocked() 方法已更名为 is_blocked 以保持一致性。
7.0.0: Page.save() 中的布尔观察参数已弃用,并将不再支持。
7.0.0: editSource()、editQualifier()、removeClaims()、removeSources()、remove_qualifiers() DataSite 方法的 baserevid 参数将被移除。
7.0.0: APISite.allpages() 参数 filterredir 的值除了 True、False 和 None 之外都已弃用。
7.0.0: i18n 标识符 'cosmetic_changes-append' 将被移除,改用 'pywikibot-cosmetic-changes'。
发布历史
查看 https://github.com/wikimedia/pywikibot/blob/stable/HISTORY.rst
贡献
行为准则
本软件的开发受 行为准则 的约束。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。