跳转到主要内容

Python MediaWiki 机器人框架

项目描述

GitHub CI Code coverage Maintainability Python Top language Pywikibot release wheel Total downloads Monthly downloads Last commit

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: 用于日志函数的位置参数 decoderlayernewline 已删除;必须使用关键字参数。

  • 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

贡献

我们的代码在 Wikimedia 的 Gerrit 安装 上维护,了解如何开始

行为准则

本软件的开发受 行为准则 的约束。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码发行版

pywikibot-9.3.1.tar.gz (618.8 kB 查看哈希值)

上传时间 源代码

编译发行版

pywikibot-9.3.1-py3-none-any.whl (723.8 kB 查看哈希值)

上传时间 Python 3

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面