User:Tony Sidaway/scripts/categorymembers
From Wikipedia, the free encyclopedia
Iron Chicken script:
(let* (
[category-string
(with-input-from-string (second (argv)) read-string)]
[category (string-substitute
"^(\\[\\[)*(:)([Cc]ategory:\\s)*([^\\[]*)(\\]\\])*$" "\\4"
category-string)]
[output-page
(if (> (length (argv)) 2)
(wiki-unlink (with-input-from-string (third (argv)) read-string))
(string-append "User:" client-username "/categorymembers/" category))]
[ftitle (fgetattrvalue "//@title")]
[fcategory
(make-get-next-page
(lambda opt
(and-let* (
[res
(api
(append
`((action . "query")
(list . "categorymembers")
(cmlimit . 500)
(cmcategory . ,category))
(apply append opt)))])
(cadr res)))
"//cm")]
[result
(let loop ([lst '()] [s (fcategory)])
(if s
(loop (append lst (list (ftitle s))) (fcategory))
lst))])
(write-wiki-page
output-page
(string-append
(wiki-heading 2 (string-append "Members of [[:Category: " category "]]"))
(big-apply string-append
(wiki-list (map wiki-link result))))
(string-append
"Members of [[:Category: " category "]] "
"compiled for " client-username " by " bot-username " using " (irnc-user-agent))))

