46 lines
1.7 KiB
Plaintext
46 lines
1.7 KiB
Plaintext
using HTTP, JSON, Dates
|
|
|
|
rosorg = "http://rosettacode.org"
|
|
qURI = "/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=json"
|
|
qdURI = "/w/api.php?action=query&list=categorymembers&cmtitle=Category:Draft_Programming_Tasks&cmlimit=500&format=json"
|
|
sqURI = rosorg * "/wiki/"
|
|
topages(js, v) = for d in js["query"]["categorymembers"] push!(v, sqURI * replace(d["title"], " " => "_")) end
|
|
|
|
function getpages(uri)
|
|
wikipages = Vector{String}()
|
|
response = HTTP.request("GET", rosorg * uri)
|
|
if response.status == 200
|
|
fromjson = JSON.parse(String(response.body))
|
|
topages(fromjson, wikipages)
|
|
while haskey(fromjson, "continue")
|
|
cmcont, cont = fromjson["continue"]["cmcontinue"], fromjson["continue"]["continue"]
|
|
response = HTTP.request("GET", rosorg * uri * "&cmcontinue=$cmcont&continue=$cont")
|
|
fromjson = JSON.parse(String(response.body))
|
|
topages(fromjson, wikipages)
|
|
end
|
|
end
|
|
wikipages
|
|
end
|
|
|
|
function processtaskpages(wpages, verbose=false)
|
|
totalexamples = 0
|
|
for pag in wpages
|
|
response = HTTP.request("GET", pag)
|
|
if response.status == 200
|
|
n = length(collect(eachmatch(r"span class=\"mw-headline\"", String(response.body))))
|
|
if verbose
|
|
println("Wiki page $pag => $n examples.")
|
|
end
|
|
totalexamples += n
|
|
end
|
|
end
|
|
println("Total of $totalexamples on $(length(wpages)) task pages.\n")
|
|
end
|
|
|
|
|
|
println("Programming examples at $(DateTime(now())):")
|
|
qURI |> getpages |> processtaskpages
|
|
|
|
println("Draft programming tasks:")
|
|
qdURI |> getpages |> processtaskpages
|