Programmeren in Python/Pywikibot: verschil tussen versies

Uit Wikibooks
Verwijderde inhoud Toegevoegde inhoud
Edoderoo (overleg | bijdragen)
Edoderoo (overleg | bijdragen)
Regel 26: Regel 26:
==Alle pagina's uit een categorie, met andere taalversies==
==Alle pagina's uit een categorie, met andere taalversies==
<source lang="python">
<source lang="python">


import pywikibot
import pywikibot
from pywikibot import pagegenerators
from pywikibot import pagegenerators
Regel 39: Regel 41:


def gen_cat_all_pages(lng,catname,leveldeep):
def gen_cat_all_pages(lng,catname,leveldeep):
site = pywikibot.Site()
site = pywikibot.Site(lng)
cat = pywikibot.Category(site,catname)
cat = pywikibot.Category(site,catname)
gen = pagegenerators.CategorizedPageGenerator(cat,3)
gen = pagegenerators.CategorizedPageGenerator(cat,leveldeep)


for page in show_cat_all_pages('nl',cat.title(),1):
for page in show_cat_all_pages(lng,cat.title(),leveldeep):
print("[%s]-[%s]" % ( 'nl',page.title()))
#print("[%s]-[%s]" % ( 'nl',page.title()))
yield page
#print("Now go international!")
#print("Now go international!")
Regel 50: Regel 53:
#print("Site: [%s]" % (interlinks.site.lang))
#print("Site: [%s]" % (interlinks.site.lang))
#print("Title: [%s]" % (interlinks.title))
#print("Title: [%s]" % (interlinks.title))
for page in show_cat_all_pages(interlinks.site.lang,interlinks.title,3):
for page in show_cat_all_pages(interlinks.site.lang,interlinks.title,leveldeep):
print("[%s]-[%s]" % ( interlinks.site.lang,page.title()))
#print("[%s]-[%s]" % ( interlinks.site.lang,page.title()))
yield page


#main
print("Begonnen")
print("Begonnen")
gen_cat_all_pages('nl','Woerden',3)
for page in gen_cat_all_pages('nl','Woerden',1):
print("[%s]-[%s]" % (page.site.lang, page.title()))
print("Klaar")

</source>
</source>

Versie van 28 dec 2015 17:56

Pywikibot is een class library in Python om Wikimedia-projecten te kunnen lezen en schrijven. Uiteraard kunnen Wikipedia-pagina's worden bewerkt, maar ook afbeeldingen op Commons of Wikidata kunnen worden bewerkt.

Wikidata redirect

 x = pywikibot.ItemPage(repo, 'Q18362289')  #this one is a redirect
 while x.isRedirectPage():   #controleer of dit een redirect is
   x = pywikibot.ItemPage(repo,x.getRedirectTarget().title())  #lees de redirected page
 print("Ik heb 'm [%s]" % (x.title()))

Alle pagina's uit een categorie

 import pywikibot
 from pywikibot import pagegenerators

 print("Begonnen")
 site = pywikibot.Site() #default site of user
 cat = pywikibot.Category(site,'Categorie:Woerden')
 gen = pagegenerators.CategorizedPageGenerator(cat,True) #generator geeft alle pagina's uit de categorie, tweede parameter zegt: ook sub-cats meenemen
 #gen = pagegenerators.CategorizedPageGenerator(cat,1) #generator geeft alle pagina's uit de categorie, tweede parameter zegt: 1 sub-cat diep doorlopen
 for page in gen:
   print(page.title())
 print("Klaar")

Alle pagina's uit een categorie, met andere taalversies

import pywikibot
from pywikibot import pagegenerators


def show_cat_all_pages(lng,catname, leveldeep):  #print all page-titles from *category* in language *lng*
  site = pywikibot.Site(lng)
  cat = pywikibot.Category(site,catname)
  catgen = pagegenerators.CategorizedPageGenerator(cat,leveldeep)
  
  for pagefound in catgen:
    yield pagefound

def gen_cat_all_pages(lng,catname,leveldeep):
 site = pywikibot.Site(lng)
 cat = pywikibot.Category(site,catname)
 gen = pagegenerators.CategorizedPageGenerator(cat,leveldeep)

 for page in show_cat_all_pages(lng,cat.title(),leveldeep):
   #print("[%s]-[%s]" % ( 'nl',page.title()))
   yield page
  
 #print("Now go international!")  
 for interlinks in cat.iterlanglinks():
   #print("Site:  [%s]" % (interlinks.site.lang))
   #print("Title: [%s]" % (interlinks.title))
   for page in show_cat_all_pages(interlinks.site.lang,interlinks.title,leveldeep):
     #print("[%s]-[%s]" % ( interlinks.site.lang,page.title()))
     yield page

print("Begonnen")
for page in gen_cat_all_pages('nl','Woerden',1):
  print("[%s]-[%s]" % (page.site.lang, page.title()))
print("Klaar")
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.