如何使用Mediawiki API在python中创建包含longform文本和列表的页面

时间:2018-06-06 15:49:17

标签: python mediawiki mediawiki-api pywikibot

我最近学会了如何从烹饪网站上抓取我母亲的食谱。我目前的目标是将这些食谱放入自托管的mediawiki服务器中。因为我所知道的只是python,我试图使用GET和POST请求以及API来创建这些页面。我尝试过各种python脚本,比如pywikibot,mwclient和wptools,以获得各种形式的成功。在编辑/创建维基页面时,后两者确实缺乏文档,pywikibot有一些错误(报告)阻止我登录或使用pagefromfile.py脚本。

幸运的是,mediawiki website上有一个示例python代码。

username = 'myusername'
password = 'mypassword' # see https://www.mediawiki.org/wiki/Manual:Bot_passwords
api_url = 'https://my.wiki.com/api.php'
section = 'new'
sectiontitle = 'Ingredients'
summary = 'ingredients'

message = {" \n\u2022 6 db óriási nyers padlizsán <br>"
    +"\n\u2022 4 db édes, húsos piros paprika, egészben <br>"
    +"\n\u2022 3 db fekete paradicsom, vastagabb karikára szelve <br>"
    +"\n\u2022 1 db zöld jalapeno paprika, egészben <br>"
    +"\n\u2022 2 db nagy vöröshagyma, vastagabb karikára vágva <br>"
    +"\n\u2022 10 cikk fokhagyma <br>"
    +"\n\u2022 1 ek édes piros paprika <br>"
    +"\n\u2022 ízlés szerint só <br>"
    +"\n\u2022 ízlés szerint bors <br>"
    }
page = 'Test'

此代码会创建一个包含相关部分和消息的页面,它看起来像this

问题:

  1. 如何创建多个sectiontitle?
  2. 如果我输入维基代码,为什么mediawiki不会格式化呢?例如,如果我发出消息&#34;#6db oriasi nyers&#34;然后mediawiki将使用&#34;#6db oriasi nyers&#34;而不是&#34; 1。 6db oriasi nyers&#34;。

1 个答案:

答案 0 :(得分:2)

  
      
  1. 如何创建多个sectiontitle?
  2.   

一种方法是在邮件中添加\n== section title ==\n。 (使用MediaWiki markup。)

  
      
  1. 如果我输入维基代码,为什么mediawiki不会格式化呢?例如,如果我发出消息“#6db oriasi nyers”,那么mediawiki将创建一条消息“#6db oriasi nyers”而不是“1. 6db oriasi nyers”。
  2.   

我最好的猜测是您使用的语法不正确,例如在#标记之前有一个空格(这使得文本被视为预先格式化的文本)。

如果没有看到完整的代码,很难说清楚。