From af5d083477a4c35dc647bd255ab81017c228e110 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 1 Aug 2021 22:18:45 -0600 Subject: [PATCH] queryImageTitles from mediaWiki --- src/nat/systems/MediaWikiSystem.kiss | 26 +++++++++++++++----------- src/test/TestMain.kiss | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/nat/systems/MediaWikiSystem.kiss b/src/nat/systems/MediaWikiSystem.kiss index 8ca53de..d723354 100644 --- a/src/nat/systems/MediaWikiSystem.kiss +++ b/src/nat/systems/MediaWikiSystem.kiss @@ -10,27 +10,31 @@ processor)) // TODO make this an externMethod -- - // but mediaWikiUrl, headers, and maxLag will still have to be specified, not as args - // unless all vars and props are passed to externmethods by default -(method :Dynamic queryProp [:Array titles :Array props] +// but mediaWikiUrl, headers, and maxLag will still have to be specified, not as args +// unless all vars and props are passed to externmethods by default +(method :Dynamic query [:Map> params] (Json.parse (#extern String python (object hxmlFile "extern-files/python/args.hxml" importHxFile "extern-files/python/import.hx" langProjectFile "extern-files/python/requirements.txt") - [:Array titles _ :Array props _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map headers _] + [:Map> params _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map headers _] (let [response (Requests.get mediaWikiUrl - [ - =>"action" "query" - =>"titles" (titles.join "|") - =>"prop" (props.join "|") - =>"maxlag" maxLag - =>"format" "json" - ] + (let [innerParams + [ + =>"action" "query" + =>"maxlag" maxLag + =>"format" "json" + ]] + (doFor =>param paramValues params (dictSet innerParams param (paramValues.join "|"))) + innerParams) (object headers headers))] (assert response.ok) response.text)))) +(defmethod queryImageTitles [:Array pageTitles] + (flatten (for =>_id page (the haxe.DynamicAccess .pages .query (query [=>"titles" pageTitles =>"prop" ["images"]])) (page.images.map ->image image.title)))) + (var headers [=>"User-Agent" "NatArchiveTool/0.0.0 (https://github.com/NQNStudios/kisslang/tree/main/projects/nat-archive-tool; natquaylenelson@gmail.com) Requests/2.26.0"]) \ No newline at end of file diff --git a/src/test/TestMain.kiss b/src/test/TestMain.kiss index 95b450b..cbc11b8 100644 --- a/src/test/TestMain.kiss +++ b/src/test/TestMain.kiss @@ -31,4 +31,4 @@ (assert (= name "Adventure")))) (let [wikipedia (new MediaWikiSystem "https://en.wikipedia.org/w/api.php" null null 1)] - ~(wikipedia.queryProp ["Phoenix Wright"] ["images"])) \ No newline at end of file + ~(wikipedia.queryImageTitles ["Phoenix Wright"])) \ No newline at end of file