您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AtCoderのサンプルをダウンロードするボタンを追加
- // ==UserScript==
- // @name AtCoder Sample Downloader
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description AtCoderのサンプルをダウンロードするボタンを追加
- // @author y-i
- // @match https://atcoder.jp/contests/*/tasks/*
- // @grant none
- // @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js
- // @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.6.0/jszip.min.js
- // ==/UserScript==
- (function() {
- 'use strict';
- const problemName = location.href.split('/').pop();
- const titleElem = document.querySelector('.row > div > .h2');
- if (!titleElem) return;
- const dlBtn = document.createElement('a');
- dlBtn.classList.add('btn', 'btn-default', 'btn-sm');
- dlBtn.textContent = 'Sample DL';
- titleElem.appendChild(dlBtn);
- dlBtn.addEventListener('click', async e => {
- e.preventDefault();
- const samples = Array.from(document.querySelectorAll('[id^="pre-sample"]')).map(el => el.innerText);
- const n = samples.length;
- const zip = new JSZip();
- for (let i = 0; i < n; ++i) {
- const sampleNum = (i - i % 2) / 2;
- const inOut = i % 2 ? 'out' : 'in';
- const filename = `sample-${sampleNum}.${inOut}`;
- zip.file(filename, samples[i]);
- }
- const content = await zip.generateAsync({type:"blob"});
- saveAs(content,`${problemName}.zip`);
- });
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址