{"id":1939,"date":"2012-09-19T15:10:15","date_gmt":"2012-09-19T15:10:15","guid":{"rendered":"https:\/\/bitsebots.blogs.sapo.pt\/1939.html"},"modified":"2012-09-19T15:10:15","modified_gmt":"2012-09-19T15:10:15","slug":"tutorial-de-pywikipediabot-i","status":"publish","type":"post","link":"https:\/\/blog.alchimista.pt\/?p=1939","title":{"rendered":"Tutorial de pywikipediabot &#8211; I"},"content":{"rendered":"<\/p>\n<p>N\u00e3o h\u00e1 muitos developers de bots na pt.wp, na verdade, contam-se pelos dedos das m\u00e3os aqueles que criam regularmente scripts pr\u00f3prios. A verdade \u00e9 que nunca houve um grupo activo dedicado ao pywp, contrariamente por exemplo, ao que acontece com os gadjects, ou scripts em javascript.<\/p>\n<p>\u00a0<\/p>\n<p>Com isso em mente, h\u00e1 h\u00e1 agum tempo que planeio criar um tutorial para que os primeiros passos sejam mais f\u00e1ceis, pois a verdade \u00e9 que n\u00e3o h\u00e1 propriamente um ponto de partida que contenha informa\u00e7\u00e3o suficientemente desenvolvida para que possa ser um verdadeiro manual introdut\u00f3rio. Enquanto n\u00e3o arranjo tempo e vontade para escrever um manual explicativo e bem estruturado, espero ir colocando aqui informa\u00e7\u00f5es avulsas que possam ajudar, e, quem sabe, no final compilar tudo num tutorial final, na wikip\u00e9dia.<\/p>\n<p>\u00a0<\/p>\n<p>Pois bem, o primeiro exemplo de um script pywp ter\u00e1 como finalidade colocar um texto numa p\u00e1gina da wikip\u00e9dia. Estes primeiros passos v\u00e3o ser explicados com mais detalhe, porque a verdade \u00e9 que na esmagadora maioria dos meus scripts, o pywp ocupa apenas uma pequena parte, e \u00e9 sensivelmente sempre a mesma, ou seja, para as tarefas do quotidiano, conhecer meia d\u00fazia de classes e defini\u00e7\u00f5es \u00e9 quanto baste para criar scripts \u00fateis no dia a dia wikip\u00e9dico.<\/p>\n<p>\u00a0<\/p>\n<p>No script seguinte, vamos obter o texto de <a title=\"Wikip\u00e9dia:P\u00e1gina de testes\/4\" href=\"http:\/\/pt.wikipedia.org\/wiki\/Wikip%C3%A9dia:P%C3%A1gina_de_testes\/4\"><span dir=\"auto\">Wikip\u00e9dia:P\u00e1gina de testes\/4<\/span><\/a>\u00a0 e substitui-lo por &#8220;Ol\u00e1 Mundo! Isto \u00e9 um teste de edi\u00e7\u00e3o :D&#8221;. Presume-se que tenham conhecimentos b\u00e1sicos de python, caso haja dificuldade em compreender algo, a sec\u00e7\u00e3o de coment\u00e1rios est\u00e1 \u00e1 disposi\u00e7\u00e3o.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<\/p>\n<pre class=\"brush: python;\">#!\/usr\/bin\/env python\n# -*- coding: utf-8 -*-\n#\n#       \n#       (C) 2012 Alchimista &lt;alchimistawp@gmail.com&gt;\n#         \n#        Distributed under the terms of the GNU GPL license.\n\nimport sys, os\n\ntry:\n\tsys.path.append(os.environ['HOME'] + '\/wp\/bots\/pywikipedia')\nexcept:\n\tpass\n\n''' \n Primeiro importamos o m\u00f3dulo wikipedia, o qual nos trar\u00e1 as solu\u00e7\u00f5es mais b\u00e1sicas,\n e ao mesmo tempo grande parte das que normalmente s\u00e3o necess\u00e1rias para interagir com\n o mediawiki. '''\n\nimport wikipedia\n\n''' O primeiro passo antes de interagir com a API do mediawiki, \u00e9 definir\nqual o projecto\/site com que estamos a lidar, para isso usamos:\n'''\nsite= wikipedia.Site(\"pt\", \"wikipedia\") # definimos que o site \u00e9 a pt.wp\n\n''' Agora, vamos estabelecer as defini\u00e7\u00f5es de uma p\u00e1gina, neste caso,\n a p\u00e1gina de testes\/4: '''\n\nwpage = wikipedia.Page(site, u\"wikip\u00e9dia:P\u00e1gina de testes\/4\")\n\n''' Agora que definimos a p\u00e1gina, vamos obter o texto da p\u00e1gina: '''\nwpagetext = wpage.get()\n\nprint wpagetext # print ao conte\u00fado da p\u00e1gina\n\n''' Tendo o conte\u00fado, e ignorando-o por completo, vamos ent\u00e3o substituir\n por um novo texto.\n'''\nnewtext = u\"Ol\u00e1 Mundo! Isto \u00e9 um teste de edi\u00e7\u00e3o :D\" # definimos o novo texto\n\nwikipedia.showDiff(wpagetext, newtext) # mostra o diferencial da edi\u00e7\u00e3o sem salvar\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>N\u00e3o h\u00e1 muitos developers de bots na pt.wp, na verdade, contam-se pelos dedos das m\u00e3os aqueles que criam regularmente scripts pr\u00f3prios. A verdade \u00e9 que nunca houve um grupo activo dedicado ao pywp, contrariamente por exemplo, ao que acontece com os gadjects, ou scripts em javascript. \u00a0 Com isso em mente, h\u00e1 h\u00e1 agum tempo [&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-1939","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/posts\/1939","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=1939"}],"version-history":[{"count":0,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=\/wp\/v2\/posts\/1939\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alchimista.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}