Skip to content

Instantly share code, notes, and snippets.

@onokatio
Last active March 17, 2024 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save onokatio/6fdcf1791b4bf528a072b1183b04551c to your computer and use it in GitHub Desktop.
Save onokatio/6fdcf1791b4bf528a072b1183b04551c to your computer and use it in GitHub Desktop.
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