From 43b935adc14d796dd611698df99a4017050c7add Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 19 Jul 2023 04:11:34 -0600 Subject: [PATCH] opengameart sourcer --- build.hxml | 3 +++ manifest.json | 9 ++++++- src/hollywoo_sourcer/Background.hx | 1 + src/hollywoo_sourcer/Background.kiss | 16 ++++++++++++ src/hollywoo_sourcer/OpenGameArtMain.hx | 7 ++++++ src/hollywoo_sourcer/OpenGameArtMain_.kiss | 29 ++++++++++++++++++++++ test.sh | 0 7 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/hollywoo_sourcer/OpenGameArtMain.hx create mode 100644 src/hollywoo_sourcer/OpenGameArtMain_.kiss mode change 100644 => 100755 test.sh diff --git a/build.hxml b/build.hxml index dc68519..901d438 100644 --- a/build.hxml +++ b/build.hxml @@ -17,6 +17,9 @@ --js bin/freesound.js --next +--main hollywoo_sourcer.OpenGameArtMain +--js bin/opengameart.js +--next --main hollywoo_sourcer.Background --js bin/background.js diff --git a/manifest.json b/manifest.json index 5471240..348b0cb 100644 --- a/manifest.json +++ b/manifest.json @@ -26,6 +26,12 @@ "https://freesound.org/people/*/sounds/*/" ], "js": ["bin/browser-polyfill.js", "bin/freesound.js"] + }, + { + "matches": [ + "https://opengameart.org/content/*" + ], + "js": ["bin/browser-polyfill.js", "bin/opengameart.js"] } ], "background": { @@ -50,7 +56,8 @@ "https://pixabay.com/*/*/", "https://*.wikipedia.org/wiki/File:*", "https://*.wikipedia.org/wiki/*", - "https://freesound.org/people/*/sounds/*/" + "https://freesound.org/people/*/sounds/*/", + "https://opengameart.org/content/*" ] }, diff --git a/src/hollywoo_sourcer/Background.hx b/src/hollywoo_sourcer/Background.hx index 9e1ee77..00c6433 100644 --- a/src/hollywoo_sourcer/Background.hx +++ b/src/hollywoo_sourcer/Background.hx @@ -7,6 +7,7 @@ import hollywoo_sourcer.Message; import haxe.io.Path; import js.html.File; import js.html.URL; +import js.lib.Promise; @:build(kiss.Kiss.build()) class Background { diff --git a/src/hollywoo_sourcer/Background.kiss b/src/hollywoo_sourcer/Background.kiss index 8d37143..3643672 100644 --- a/src/hollywoo_sourcer/Background.kiss +++ b/src/hollywoo_sourcer/Background.kiss @@ -49,5 +49,21 @@ (catch [e] (sendResponse e)) (API.browser.downloads.show txtDownloadId) (sendResponse "done"))))) + ((object type "downloadOpenGameArt" data [fileUrls creditAttributionNotice sourceUrl]) + // awaitLet the DownloadItem and make an object url with the source info + (awaitLet [&sync :Array fileUrls fileUrls + dlItemIds (Promise.all (for fileUrl fileUrls (API.browser.downloads.download (object saveAs true url fileUrl)))) + dlItemsAll (Promise.all (for dlItemId dlItemIds (API.browser.downloads.search (object id dlItemId))))] + (doFor dlItems dlItemsAll + (let [dlItem (first dlItems) + fileName dlItem.filename + txtFileName "$(Path.withoutDirectory (Path.withoutExtension fileName)).tsv" + txtContent "opengameart.org\t${creditAttributionNotice}\t${sourceUrl}" + file (new File [txtContent] txtFileName) + txtUrl (URL.createObjectURL file)] + (awaitLet [txtDownloadId (API.browser.downloads.download (object url txtUrl filename txtFileName))] + (catch [e] (sendResponse e)) + (API.browser.downloads.show txtDownloadId) + (sendResponse "done")))))) (never otherwise)) true))) diff --git a/src/hollywoo_sourcer/OpenGameArtMain.hx b/src/hollywoo_sourcer/OpenGameArtMain.hx new file mode 100644 index 0000000..f3a65ff --- /dev/null +++ b/src/hollywoo_sourcer/OpenGameArtMain.hx @@ -0,0 +1,7 @@ +package hollywoo_sourcer; + +class OpenGameArtMain { + static function main() { + OpenGameArtMain_.main(); + } +} diff --git a/src/hollywoo_sourcer/OpenGameArtMain_.kiss b/src/hollywoo_sourcer/OpenGameArtMain_.kiss new file mode 100644 index 0000000..28b882e --- /dev/null +++ b/src/hollywoo_sourcer/OpenGameArtMain_.kiss @@ -0,0 +1,29 @@ +(import kiss_firefox.API) +(import js.lib.Promise) +(importAs js.html.XMLHttpRequest XHR) +(import js.html.HTMLCollection) +(import hollywoo_sourcer.Message) +(var :Dynamic document js.Lib.global.document) +(var :Dynamic window js.Lib.global.window) + +(API.browser.runtime.onMessage.addListener + ->[:Message message sender sendResponse] + (case message + ((object type "requestSource") + (let [sourceUrl window.location.href + fieldLabelDivs (document.getElementsByClassName "field-label") + getCreditsHeadingDiv ->{ + (doFor i (range fieldLabelDivs.length) + (when (= "Copyright/Attribution Notice: " .innerText (fieldLabelDivs.item i)) + (return (fieldLabelDivs.item i)))) + null + } + creditsHeadingDiv (getCreditsHeadingDiv) + creditsDiv (creditsHeadingDiv.parentElement.childNodes.item 1) + credit creditsDiv.innerText + fileSpans (document.getElementsByClassName "file") + fileUrls (for i (range fileSpans.length) + (Reflect.field (.item .childNodes (fileSpans.item i) 2) "href"))] + (awaitLet [response (API.browser.runtime.sendMessage (object type "downloadOpenGameArt" data [fileUrls credit sourceUrl]))] + (print response)))) + (otherwise))) \ No newline at end of file diff --git a/test.sh b/test.sh old mode 100644 new mode 100755