{"id":2913,"date":"2013-01-18T18:12:38","date_gmt":"2013-01-18T18:12:38","guid":{"rendered":"https:\/\/bitsebots.blogs.sapo.pt\/2913.html"},"modified":"2013-01-18T18:12:38","modified_gmt":"2013-01-18T18:12:38","slug":"tutorial-de-pywikipediabot-iv","status":"publish","type":"post","link":"https:\/\/blog.alchimista.pt\/?p=2913","title":{"rendered":"Tutorial de pywikipediabot &#8211; IV"},"content":{"rendered":"<p>No <a title=\"Wikivoyage\" href=\"http:\/\/blogs.sapo.pt\">wikivoyage.org<\/a> houve <a title=\"necessidade\" href=\"http:\/\/pt.wikivoyage.org\/wiki\/Wikivoyage:Tarefas\">necessidade<\/a> de mover uma enorme quantidade de p\u00e1ginas que estavam no formato &#8220;JAMGuides:&#8221; para &#8220;Wikivoyage:&#8221;, n\u00e3o deixando para tr\u00e1s redirecionamentos, algo que se revelou extremamente simples. O pormenor foi a flag tempor\u00e1ria de administrador que o bot recebeu, para poder n\u00e3o deixar redirecionamentos, pois isso \u00e9 basicamente uma elimina\u00e7\u00e3o autom\u00e1tica dos mesmos. Como o projecto tem ainda poucas p\u00e1ginas, e era uma opera\u00e7\u00e3o b\u00e1sica, a listagem das p\u00e1ginas foi obtida pela lista de p\u00e1ginas totais no dom\u00ednio principal, caso contr\u00e1rio teria de ser usada uma outra op\u00e7\u00e3o, e, al\u00e9m do mais, a op\u00e7\u00e3o mais l\u00f3gica, que \u00e9 a busca por p\u00e1ginas come\u00e7adas por uma determinada string n\u00e3o estava a funcionar correctamente, portanto seguiu-se esta via. O script em s\u00ed \u00e9 b\u00e1sico, e creio, facilmente entend\u00edvel:<\/p>\n<p>\u00a0\u00a0<\/p>\n<pre class=\"brush:python\">#!\/usr\/bin\/env python\n# -*- coding: utf-8 -*-\n\nimport wikipedia as pywikibot\nimport pagegenerators\n\n\ndef main():\n\n    # Definir o site, e obter a listagem de todas as p\u00e1ginas do dom\u00ednio principal.\n    site = pywikibot.getSite(\"pt\",\"wikivoyage\")\n    gen = pagegenerators.AllpagesPageGenerator(site=site,includeredirects=False)\n    for i in gen:\n\n        # Aqui filtramos os t\u00edtulos que come\u00e7am por \"JAMGuides\", separando primeiro\n\n        # o t\u00edtulo tendo por base o \":\", e, caso tenha o \":\", verificar se antes da ocorr\u00eancia\n\n        # o texto \u00e9 \"JAMGuides\".\n        if i.title().split(\":\")[0] == u'JAMGuides':\n\n            # Cria\u00e7\u00e3o do novo t\u00edtulo, a segunda parte \u00e9 igual, logo comp\u00f5em-se o novo t\u00edtulo f\u00e1cilmente\n            ntitle = u\"Wikivoyage:%s\" % i.title().split(\":\")[1]\n            print u\"old title: \", i.title(), u\" |---&gt;  new title: \", ntitle, u\" |--&gt; afluentes: \"\n            try:\n\n                # E por fim move-se a p\u00e1gina para o novo t\u00edtulo.\n                i.move(ntitle, leaveRedirect=False, reason=u\"[[Wikivoyage:BOT|BOT]]: A mover p\u00e1ginas para t\u00edtulo correcto.\")\n            except:\n                print u\"error\"\n        else:\n            pass\n\nif __name__ == \"__main__\":\n    try:\n        main()\n    finally:\n        pywikibot.stopme() \n<\/pre>\n<p><a href=\"http:\/\/blogs.sapo.pt\">https:\/\/github.com\/alchimista\/pywikipedia-tutorial<\/a><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>No wikivoyage.org houve necessidade de mover uma enorme quantidade de p\u00e1ginas que estavam no formato &#8220;JAMGuides:&#8221; para &#8220;Wikivoyage:&#8221;, n\u00e3o deixando para tr\u00e1s redirecionamentos, algo que se revelou extremamente simples. O pormenor foi a flag tempor\u00e1ria de administrador que o bot recebeu, para poder n\u00e3o deixar redirecionamentos, pois isso \u00e9 basicamente uma elimina\u00e7\u00e3o autom\u00e1tica dos mesmos. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_siteseo_robots_primary_cat":"","pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-2913","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/posts\/2913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2913"}],"version-history":[{"count":0,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/posts\/2913\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}