Last active
March 17, 2024 17:08
-
-
Save onokatio/6fdcf1791b4bf528a072b1183b04551c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var problems_list; | |
fetch("https://scoreserver.ictsc.net/api/problems") | |
.then( problem_json => { return problem_json.json() } ) | |
.then( problems => { | |
problems_list = problems.data.problems; | |
return problems_list.map( problem => { | |
return "https://scoreserver.ictsc.net/api/problems/" + problem.id + "/answers" | |
}) | |
.map( url => { | |
return fetch(url) | |
}) | |
}) | |
.then( answer_fetch => { | |
return Promise.all(answer_fetch) | |
}) | |
.then( answer_resps => { | |
return answer_resps.map( answer_resp => { | |
return answer_resp.json() | |
}) | |
}) | |
.then( answer_jsons => { | |
return Promise.all(answer_jsons) | |
}) | |
.then( prob_answers => { | |
prob_answers.map( answers => { | |
return answers.data.answers.sort( (a,b) => { | |
return a.point < b.point | |
})[0] | |
}).map( top_answer => { | |
return { | |
code: problems_list.find(prob => { | |
return prob.id == top_answer.problem_id | |
}).code, | |
id: top_answer.problem_id, | |
body: top_answer.body} | |
}).forEach( top_answer => { | |
let url = URL.createObjectURL(new Blob([top_answer.body], { | |
type: "text/markdown" | |
})) | |
const download_button = document.createElement("a"); | |
download_button.innerText = "解答ダウンロード" | |
download_button.download = top_answer.code + ".md"; | |
download_button.href = "#"; | |
download_button.style.textDecoration = "underline"; | |
download_button.addEventListener('click', (e) => {e.target.href=url}) | |
document.querySelector(`li:has(a[href='/problems/${top_answer.code}'])`).appendChild(download_button) | |
}) | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment