// ==UserScript==
// @license MIT
// @name cf shortest codes
// @namespace http://tampermonkey.net/
// @version 2024-04-02
// @description 添加claude编写的快捷跳转朋友排名、c++、py最短代码的按钮。
// @author apxitye,claude
// @match https://codeforces.com/*/problem/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_log
// @downloadURL https://update.greasyfork.icu/scripts/491462/cf%20shortest%20codes.user.js
// @updateURL https://update.greasyfork.icu/scripts/491462/cf%20shortest%20codes.meta.js
// ==/UserScript==
(function() {
'use strict';
const url = new URL(window.location.href);
const contestId = url.pathname.split('/').find(part => !isNaN(parseInt(part)));
const problemId = url.pathname.split('/').pop().toUpperCase();
//friends standings
let Btn = document.createElement('li');
Btn.innerHTML = `Friends Standings`;
Btn.classList.add('Btn')
document.querySelector(".second-level-menu-list").appendChild(Btn);
//py
const friendBtn = document.createElement('li');
friendBtn.innerHTML = `py`;
friendBtn.classList.add('friendBtn');
document.querySelector(".second-level-menu-list").appendChild(friendBtn);
document.getElementById('shortestCodeLink').addEventListener('click', (e) => {
e.preventDefault();
const newWindow = window.open(e.currentTarget.href, '_blank');
newWindow.addEventListener('load', () => {
const form = newWindow.document.querySelector('.status-filter');
if (form) {
form.querySelector('#frameProblemIndex').value = problemId;
form.querySelector('#verdictName').value = 'OK';
form.querySelector('#programTypeForInvoker').value = 'python.3';
form.querySelector('#comparisonType').value = 'NOT_USED';
form.querySelector('#participantSubstring').value = '';
form.submit();
}
}, { once: true });
});
//c++17
const friendBtn2 = document.createElement('li');
friendBtn2.innerHTML = `c++`;
friendBtn2.classList.add('friendBtn');
document.querySelector(".second-level-menu-list").appendChild(friendBtn2);
document.getElementById('shortestCodeLink2').addEventListener('click', (e) => {
e.preventDefault();
const newWindow = window.open(e.currentTarget.href, '_blank');
newWindow.addEventListener('load', () => {
const form = newWindow.document.querySelector('.status-filter');
if (form) {
form.querySelector('#frameProblemIndex').value = problemId;
form.querySelector('#verdictName').value = 'OK';
form.querySelector('#programTypeForInvoker').value = 'cpp.g++17';
form.querySelector('#comparisonType').value = 'NOT_USED';
form.querySelector('#participantSubstring').value = '';
form.submit();
}
}, { once: true });
});
})();