User:He!ko/Category-tree 2 book

    From Strategic Planning
    #!/usr/bin/env python
    import urllib
    import json
    
    
    api_url = "http://strategy.wikimedia.org/w/api.php"
    
    # how to retrieve cat members
    # ?action=query&list=categorymembers&cmlimit=500&cmtitle=Category:Proposals%20by%20subject
    
    strip_ns = lambda t: t.split(':')[1]
    
    def dump_cat(name, seen):
        print ';%s' % strip_ns(name).encode('utf8')
    
        # fetch members
        url = api_url +  '?action=query&format=json&list=categorymembers&cmlimit=500&cmtitle=' + name # FIXME
    
        res = json.loads(urllib.urlopen(url).read())
    #    print res
    
        members = res['query']['categorymembers']
    
        # filter already seen titles
        members = [m for m in members if not m['title'] in seen]
        seen.update(set(m['title'] for m in members))
    
        pages_ns = 106 # proposals on strategy #FIXME
        cat_ns = 14
        pages = [x['title'] for x in members if x['ns'] == pages_ns]
        cats = [x['title'] for x in members if x['ns'] == cat_ns]
    
        
    
    
        for p in pages:
            if '/' in p: 
                continue # skip translations
            p = p.encode('utf8')
            print ':[[%s|%s]]' % (p, strip_ns(p))
    
        for c in cats:
            dump_cat(c, seen)
    
    if __name__ == '__main__':
        seen = set()
        dump_cat('Category:Proposals by subject', seen)