From 17d76cdc7e862e8e97dc2278596b639ab53db16c Mon Sep 17 00:00:00 2001 From: Egor Guslyancev Date: Thu, 2 May 2024 17:09:40 -0300 Subject: [PATCH] Favicon, yandex, greed --- .gitignore | 5 +++- favicon.ico | Bin 0 -> 1150 bytes favicon.ico.license | 3 ++ server.py | 18 +++++++++++- user.js | 70 ++++++++++++++++++++++++++++---------------- 5 files changed, 69 insertions(+), 27 deletions(-) create mode 100644 favicon.ico create mode 100644 favicon.ico.license diff --git a/.gitignore b/.gitignore index fa08b7d..241fe29 100644 --- a/.gitignore +++ b/.gitignore @@ -564,4 +564,7 @@ FodyWeavers.xsd ### END Visual Studio ### # Hide internal database and it's backups -*.db \ No newline at end of file +*.db + +# Yandex verification file +yandex_*.html \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..55df9af8cef188558b830f3321c6a1718d6314a1 GIT binary patch literal 1150 zcmbVL%S+Tz6uyIrTcJ`4ty!5N*>WTyG)L0X7U2WYpiQPAE?gKclpzQL(Z&1$vx}+a zY-TeBu5_c7_$)$aNF7DZnS71U&vWjb^W!FC3-54#_s)5I_nhyXtCWj=xw(qIZq;!` zsXV1rF$t+iWAwDC3bOrg-Kv|<&hvh+xnA`xNU}t7lomb**~UJZF!HM>^U23gvPFUm zgl&HIwK3AMAv@;Uqp!GHIiZEmwvEmq!QgxtQ|# z&*vdL>pCBF>>#;g{DWVBhg~T=?+4~$Mi&_e3ZKr|Tu6^}eCM$7i>(4BEz1snFW(#e z+8>~_ZPm^}`m24r{l@Rt5>V6-b>f?RM!%i_?!Q<&AI~{x--_-->{HDrRP*3R;9hH7 z_kj81H8umyuhk1ZSHfw*lUaO-7+?OzH-SW&59YGvE$q9Q2R)PA3&vpFJB={}!f<#z zC7i`L@OlW~{>WV%BlAq>f9B_A%{0o||Du`duJ1EkT5*D*=ZEJw)BMWp@@~~DvCjO; zJ4j<(>ir0YHP13v(%%c;Z!|}#k*s&0eJ(-Cw7-cMttZU8&s7#4$x + +SPDX-License-Identifier: CC0-1.0 diff --git a/server.py b/server.py index 2fdb0b5..9bcd272 100644 --- a/server.py +++ b/server.py @@ -17,7 +17,7 @@ import timeout as tmo # Simple config GET_ONLY_FOR_VIP = True POST_ONLY_FOR_VIP = True -VERSION = "20240502.2" +VERSION = "20240502.3" CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" @@ -256,6 +256,22 @@ class S(BaseHTTPRequestHandler): self._set_response(404) self.end_headers() self.wfile.write("404 Not found".encode('utf-8')) + case "/favicon.ico": + self._set_response(200) + with open("favicon.ico", "rb") as fi: + data = fi.read() + self.send_header('Accept-Ranges', 'bytes') + self.send_header('Content-Disposition', 'attachment') + self.send_header('Content-Length', len(data)) + self.end_headers() + self.wfile.write(data) + case _ if self_path.startswith("/yandex_"): + self._set_response(200) + with open(self_path[1:], "rb") as fi: + data = fi.read() + self.send_header('Content-type', 'text/html; charset=utf-8') + self.end_headers() + self.wfile.write(data) case _ if self_path.startswith("/assets/"): self._set_response(200) with open(self_path[1:], "rb") as fi: diff --git a/user.js b/user.js index b5c9246..0aac100 100644 --- a/user.js +++ b/user.js @@ -2,7 +2,7 @@ // @name Sorryops // @name:ru Сориупс // @namespace https://git.disroot.org/electromagneticcyclone/sorryops -// @version 20240502.2 +// @version 20240502.3 // @description Collect and reuse ORIOKS test answers // @description:ru Скрипт для сбора и переиспользования ответов на тесты ОРИОКС // @icon https://orioks.miet.ru/favicon.ico @@ -20,12 +20,12 @@ // @require https://openuserjs.org/src/libs/sizzle/GM_config.js // @connect sorryops.ru // @run-at document-start -// @downloadURL https://update.greasyfork.org/scripts/481036/Sorryops.user.js -// @updateURL https://update.greasyfork.org/scripts/481036/Sorryops.meta.js +// @downloadURL https://update.greasyfork.org/scripts/481036/Sorryops.user.js +// @updateURL https://update.greasyfork.org/scripts/481036/Sorryops.meta.js // ==/UserScript== /* Version */ -const VERSION = "20240502.2"; +const VERSION = "20240502.3"; /* End Version */ /* Charset */ @@ -48,6 +48,7 @@ const all_labels = { auto_answer_first: "First", auto_answer_random: "Random", auto_answer_not_greedy: "Choose a known answer if there are more wrong answers than that number", + auto_answer_greed_level: "Number of randomly answered questions", display_values: "Answers variant", display_values_ori: "ORIOKS", display_values_sorry: "Sorry", @@ -74,6 +75,7 @@ const all_labels = { auto_answer_first: "Первый", auto_answer_random: "Случайный", auto_answer_not_greedy: "Выбирать известный ответ, если неправильных больше этого числа", + auto_answer_greed_level: "Количество вопросов, на которые будет случайный ответ", display_values: "Вариант отображения ответов", display_values_ori: "ОРИОКС", display_values_sorry: "Сори", @@ -162,6 +164,11 @@ var config = new GM_config({ type: 'number', default: -1, }, + auto_answer_greed_level: { + label: labels.auto_answer_greed_level, + type: 'number', + default: -1, + }, display_values: { label: labels.display_values, type: 'select', @@ -648,32 +655,40 @@ function auto_answer() { } break; } } + var greed = GM_getValue('greed'); + if (greed === undefined) { + greed = 99999; + } if (correct != undefined) { pick_answer(correct); - } else if ((incorrect.length >= config.get('auto_answer_not_greedy')) && (config.get('auto_answer_not_greedy') > 0)) { - chosen_answer = Math.floor(Math.random() * incorrect.length); - pick_answer(incorrect[chosen_answer]); } else if (auto_answer == labels.auto_answer_random) { - switch (type) { - case 'radio': { - var possible_answers = []; - for (answer in answers) { - if (incorrect.includes(answers[answer].sorry_value) == false) { - possible_answers.push(answer); + if ((incorrect.length >= Math.max(config.get('auto_answer_not_greedy'), 1)) && + ((config.get('auto_answer_not_greedy') > 0) || (greed <= 0))) { + chosen_answer = Math.floor(Math.random() * incorrect.length); + pick_answer(incorrect[chosen_answer]); + } else { + GM_setValue('greed', greed - 1); + switch (type) { + case 'radio': { + var possible_answers = []; + for (answer in answers) { + if (incorrect.includes(answers[answer].sorry_value) == false) { + possible_answers.push(answer); + } } - } - chosen_answer = Math.floor(Math.random() * possible_answers.length); - answers[possible_answers[chosen_answer]].click(); - } break; - case 'checkbox': { - var combs = comb(charset.slice(0, answers.length), incorrect); - var pick = combs[Math.floor(Math.random() * combs.length)]; - for (i = 0; i < answers.length; i++) { - if(pick.includes(answers[i].sorry_value)) { - answers[i].click(); + chosen_answer = Math.floor(Math.random() * possible_answers.length); + answers[possible_answers[chosen_answer]].click(); + } break; + case 'checkbox': { + var combs = comb(charset.slice(0, answers.length), incorrect); + var pick = combs[Math.floor(Math.random() * combs.length)]; + for (i = 0; i < answers.length; i++) { + if(pick.includes(answers[i].sorry_value)) { + answers[i].click(); + } } - } - } break; + } break; + } } } else if (auto_answer == labels.auto_answer_first) { Object.values(sorted_objects_value)[0].click(); @@ -895,6 +910,11 @@ function result_page_handler() { } GM_setValue('fetched_data', {}); GM_setValue('new_answer_f', false); + var greed = config.get('auto_answer_not_greedy'); + if (greed < 0) { + greed = 99999; + } + GM_setValue('greed', greed); }); }