您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Topcoder Marathon 新プラットフォームの問題へのリンクを生成する雑スクリプト
// ==UserScript== // @name tc-problem-linker // @namespace https://github.com/komori3/ // @supportURL https://twitter.com/komori3_/ // @namespace http://tampermonkey.net/ // @version 0.2 // @description Topcoder Marathon 新プラットフォームの問題へのリンクを生成する雑スクリプト // @author komori3 // @match https://competitiveprogramming.info/topcoder/marathon // @grant none // ==/UserScript== (function() { 'use strict'; let new_problems = [ {title: 'Marathon Match 110', round_id: 30089008, problem_name: 'ImageFromBlocks'}, {title: 'TCO19 Marathon Round 1', round_id: 30092483, old_round_id: 17579, problem_name: 'LineUp'}, {title: 'Marathon Match 111', round_id: 30100149, old_round_id: 17674, problem_name: 'PolyominoCovering'}, {title: 'TCO19 Marathon Round 2', round_id: 30101930, old_round_id: 17698, problem_name: 'ContestOrganizer'}, {title: 'TCO19 Marathon Round 3', round_id: 30103195, old_round_id: 17700, problem_name: 'JumpAround'}, {title: 'TCO19 Marathon Final', round_id: 30104784, old_round_id: 17729, problem_name: 'MultiplayerChessPieces'}, {title: 'Marathon Match 112', round_id: 30107461, old_round_id: 17748, problem_name: 'GlowingBacteria'}, {title: 'Marathon Match 113', round_id: 30110632, old_round_id: 17778, problem_name: 'NumberCreator'}, {title: 'Marathon Match 114', round_id: 30112653, problem_name: 'SnakeCharmer'}, {title: 'Marathon Match 115', round_id: 30114286, problem_name: 'GraphReconstruction'}, {title: 'Marathon Match 116', round_id: 30119681, problem_name: 'Lossy2dCompression'}, {title: 'Marathon Match 117', round_id: 30122730, problem_name: 'RotatingNumbers'}, ] function insertNewPlatformRows($tbody, line) { let line_id = $tbody.find('tr').length + 1 let $a = ( line.old_round_id == undefined ? line.title : '<a href="https://competitiveprogramming.info/topcoder/marathon/round/' + line.old_round_id + '">' + line.title + '</a>') let tr = '<tr role="row"><td>' + line_id + '</td><td></td><td>' + $a + '</td><td><a target="_blank" href="https://www.topcoder.com/challenges/' + line.round_id + '">' + line.problem_name + '</a></td></tr>' $tbody.prepend(tr) } function setNewPlatformURL($tr){ // old: https://community.topcoder.com/longcontest/?module=ViewProblemStatement&rd=ROUND_ID // new: https://www.topcoder.com/challenges/ROUND_ID let $tds = $tr.find('td') let $td = $($tds[3]) let $a = $($td.find('a')) let url_old = $a.attr('href') let round_id = url_old.split('&')[1].split('=')[1] let url_new = 'https://www.topcoder.com/challenges/' + round_id $a.attr('href', url_new) } function deleteObsoleteRows($tbody) { while($($($tbody.find('tr')[0]).find('td')[0]).text() > 460) { $($tbody.find('tr')[0]).remove() } } let $tbody = $('html').find('tbody') deleteObsoleteRows(($tbody)); let $trs = $tbody.find('tr') for(let tr of $trs) { setNewPlatformURL($(tr)) } for(let line of new_problems) { insertNewPlatformRows(($tbody), line) } })();