|
G00ba
Стаж: 13 лет 4 месяца Сообщений: 5086
|
G00ba ·
23-Фев-17 03:34
(7 лет 8 месяцев назад, ред. 23-Фев-17 03:34)
CGGB,
не забываем про
https://rutr.life/forum/viewtopic.php?t=1045
Цитата:
2. Ограничения на форуме.
2.9. Проявлять расовую, национальную, политическую и религиозную неприязнь, пропагандировать терроризм,
экстремизм, наркотики и прочие темы, несовместимые с общепринятыми законами морали и приличия.
если вы где то нашли пост в раздаче - который как раз это и делает - напишите модераторам того раздела - они его удалят.
|
|
CGGB
Стаж: 16 лет 3 месяца Сообщений: 132
|
CGGB ·
25-Фев-17 12:13
(спустя 2 дня 8 часов)
Blacklist v2 не работает в темах с выключенными комментариями.
|
|
Денис Пирожков
Стаж: 15 лет 1 месяц Сообщений: 1512
|
Денис Пирожков ·
19-Мар-17 19:52
(спустя 22 дня)
Что-то скрипт Kinopoisk+ перестал функционировать, похоже _www.google.com/s2/favicons?domain= отвалился и не хочет работать.
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
12-Май-17 12:41
(спустя 1 месяц 23 дня)
Обновлён скрипт текстового поиска по теме в связи с изменениями кода форума.
|
|
maximus_lt
Стаж: 17 лет 5 месяцев Сообщений: 6144
|
maximus_lt ·
24-Июн-17 16:11
(спустя 1 месяц 12 дней)
unchqua писал(а):
71052687Скрипт для входящих ЛС: реализация простого «чёрного списка».
скрытый текст
Код:
do { // 11. Фильтрация пользователей-новичков в ЛС. // Мы не на странице ЛС со входящими сообщениями - не работаем.
if (document.location.pathname !== "/forum/privmsg.php" || document.location.search.indexOf("?folder=inbox") === -1)
break; var jq = window.$; // Условия фильтрации сообщений.
//
// Минимальный возраст пользователя-автора (в днях).
// Меньше этого - с сообщениями пользователя надо что-то делать.
var MIN_AGE = 3; // Действия с сообщениями тех пользователей, кто попал под условия фильтра.
//
// Скрывать ли в списке?
var MESSAGES__HIDE = false;
// Удалять ли?
var MESSAGES__DELETE = false;
// Запрашивать ли подтверждение удаления?
var MESSAGES__CONFIRM_DELETE = true; // Идентификаторы и даты регистрации каждого пользователя.
// id -> дата, id -> дата ...
var user_registration_dates = {}; // Заполняем массив user_registration_dates - даты регистрации пользователей, что значатся авторами входящих сообщений на этой странице.
// Здесь же рассчитываем количество этих пользователей.
var users_count = 0;
jq("table.forumline tr[id^='tr-'].pm-row td.pm-nick-td a[href*='viewprofile']").each(function(idx, elem){
var user_profile_href = elem.getAttribute("href");
var user_id = user_profile_href.replace(/.+&u=(\d+)$/, "$1");
if (typeof user_registration_dates[user_id] === "undefined") {
user_registration_dates[user_id] = user_profile_href;
users_count++;
}
}); // Читаем из локального хранилища ранее запомненных пользователей.
// id -> дата, id -> дата ...
var users_cache = localStorage.getItem("gms_11_users") || "{}";
users_cache = JSON.parse(users_cache); // Заполняем user_registration_dates из кэша.
// Заодно считаем число пользователей, за данными о которых придётся идти на сервер.
var users_to_fetch = users_count;
for (var user_id in user_registration_dates) {
if (typeof users_cache[user_id] !== "undefined") {
user_registration_dates[user_id] = users_cache[user_id];
users_to_fetch--;
}
} // Определяем даты регистрации пользователей, запрашивая их персональные страницы с сервера.
// TODO Надо как-то информировать пользователя, что идёт процесс получения дат (user_idx от 1 до users_to_fetch).
var user_idx = 1;
for (var user_id in user_registration_dates) {
// Дата нам известна - не запрашиваем с сервера.
if (typeof user_registration_dates[user_id] === "number")
continue;
// Дата неизвестна - запрашиваем с сервера.
// Запрашиваем страницу профиля пользователя и читаем там дату его регистрации.
jq.get({
url: user_registration_dates[user_id],
success: function (data, status) {
var user_data = jq(data).find("table.user_details tr th");
for (var th_idx = 0; th_idx < user_data.size(); th_idx++) {
var user_registration_date = jq(user_data.get(th_idx));
if (user_registration_date.text() === "Зарегистрирован:") {
user_registration_date = user_registration_date.next().children("b").text();
break;
}
}
user_registration_date = user_registration_date.split("-");
user_registration_date = user_registration_date[0]*10000 + user_registration_date[1]*100 + user_registration_date[2]*1;
user_registration_dates[user_id] = user_registration_date;
user_idx++;
}
, async: false
});
}; // Запоминаем в локальном хранилище все найденные даты, чтобы потом не запрашивать их снова.
for (var user_id in user_registration_dates)
users_cache[user_id] = user_registration_dates[user_id];
localStorage.setItem("gms_11_users", JSON.stringify(users_cache)); // Определяем минимальную дату, позднее которой пользователь считается "слишком молодым".
var now = new Date();
var allowed_age = new Date(now.getTime() - MIN_AGE*24*60*60*1000);
now = now.getFullYear()*10000 + (now.getMonth()+1)*100 + now.getDate()*1;
allowed_age = allowed_age.getFullYear()*10000 + (allowed_age.getMonth()+1)*100 + allowed_age.getDate()*1; // Делаем что-то с сообщениями молодых.
var young_count = 0;
var messages_count = 0;
// Запоминаем id сообщений, с которыми потом будем что-то делать.
var messages = [];
for (var user_id in user_registration_dates) {
if (user_registration_dates[user_id] >= allowed_age) {
var link_to_profile = jq("table.forumline tr[id^='tr-'].pm-row td.pm-nick-td a[href*='mode=viewprofile'][href*='u="+user_id+"']");
var message_row = link_to_profile.parents("tr[id^='tr-'].pm-row");
var message_checkbox = message_row.find("input[name='mark[]']");
// Расставляем галочки у молодого.
message_checkbox.attr("checked","checked");
// Скрываем эту строку.
if (MESSAGES__HIDE)
message_row.hide();
// Запоминаем id всех сообщений молодого.
message_checkbox.each(function(idx,elem){
messages.push(parseInt(elem.value));
messages_count++;
});
young_count++;
}
} // Удаляем найденные сообщения.
if (MESSAGES__DELETE && messages_count > 0 && (!MESSAGES__CONFIRM_DELETE || window.confirm("Найдено сообщений новичков: "+messages_count+"\nУдалить?"))) {
// Вызываем удаление отобранных сообщений на сервере.
var form_data = {
"mode": "",
"delete": "1",
"confirm": "Да",
"form_token": window.BB.form_token
};
for (var idx = 0; idx < messages.length; idx++)
form_data["mark["+idx+"]"] = messages[idx];
//window.alert(JSON.stringify(form_data));
jq.post({
url: "privmsg.php?folder=inbox",
data: form_data,
success: function (data, status) {
window.alert("Удалено сообщений: " + messages_count);
}
//, async: false
});
} } while (false); // 11
От скрипта Blacklist отличается тем, что работает с личными сообщениям (Blacklist работает с сообщениями в темах) и умеет удалять сообщения, удовлетворяющие условиям фильтра, автоматически или по запросу (Blacklist их скрывает). Условие фильтрации и действия над найденными сообщениями настраиваются. Перед применением внимательно прочтите и поймите значения констант MESSAGES__ в начале скрипта, чтобы случайно не удалить нужные сообщения.
Предложения в разумных пределах принимаются .
Invalid script!
|
|
maximus_lt
Стаж: 17 лет 5 месяцев Сообщений: 6144
|
maximus_lt ·
09-Июл-17 03:44
(спустя 14 дней, ред. 09-Июл-17 16:31)
|
|
Денис Пирожков
Стаж: 15 лет 1 месяц Сообщений: 1512
|
Денис Пирожков ·
02-Авг-17 17:31
(спустя 24 дня)
Кто-нибудь может объяснить как им пользоваться Blacklist for input private message? Думал всё будет понятно, типо рядом с ником кнопка add in BlackList ну или как-то так, но ничего не вижу. Получается самому в коде искать места где указывать ник, так что ли. Может кто приведёт пример только не с одним ником, а с тремя, я хоть погляжу код и далее себе также сделаю.
|
|
Rusclub9991
Стаж: 8 лет 4 месяца Сообщений: 228
|
Rusclub9991 ·
11-Авг-17 19:14
(спустя 9 дней)
Был бы скрипт, позволяющий выкачивать с трекера целиком темы, типа раздел музыки
|
|
Hannibal61
Стаж: 14 лет 8 месяцев Сообщений: 18111
|
Hannibal61 ·
11-Авг-17 19:19
(спустя 5 мин.)
Rusclub9991 писал(а):
73657629выкачивать с трекера целиком темы
И сразу вспоминается рейтинг... Тогда мало у кого возникали такие мысли.
|
|
Rusclub9991
Стаж: 8 лет 4 месяца Сообщений: 228
|
Rusclub9991 ·
13-Авг-17 16:45
(спустя 1 день 21 час)
Цитата:
И сразу вспоминается рейтинг... Тогда мало у кого возникали такие мысли.
как хорошо, что его отменили. да и людям это пойдёт на пользу, что к ним ещё один сидер прибавляется
|
|
Hannibal61
Стаж: 14 лет 8 месяцев Сообщений: 18111
|
Hannibal61 ·
13-Авг-17 17:31
(спустя 45 мин.)
Rusclub9991 писал(а):
73667610к ним ещё один сидер прибавляется
Rusclub9991
Это всё слова. На самом деле - скачал и тут же свалил.
|
|
Rusclub9991
Стаж: 8 лет 4 месяца Сообщений: 228
|
Rusclub9991 ·
13-Авг-17 22:24
(спустя 4 часа)
Цитата:
Это всё слова. На самом деле - скачал и тут же свалил.
Много что ли раздач погибло? я как-то не замечал.
|
|
Hannibal61
Стаж: 14 лет 8 месяцев Сообщений: 18111
|
Hannibal61 ·
13-Авг-17 22:29
(спустя 4 мин.)
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
14-Сен-17 11:31
(спустя 1 месяц, ред. 19-Сен-17 17:39)
Моя реализация Чёрного списка для входящих ЛС.
В вашем профиле появляется такой блок:
Код скрипта:
скрытый текст
Код:
// ==UserScript==
// @name Рутрекер 21. Чёрный список входящих сообщений ЛС.
// @namespace http://www.unchqua.ru/ns/greasemonkey
// @include *://rutr.life/forum/*
// @include *://rutracker.net/forum/*
// @include *://rutracker.cr/forum/*
// @include *://torrents.loc/forum/*
// @version 1
// @grant none
// ==/UserScript== (function(){ // Заполнение элемента списка фильтруемых пользователей.
var update_list = function(blacklisted) {
var list = $("#rto21-list");
list.empty();
for (idx = 0; idx < blacklisted.length; idx++) {
var el_option = $("<option>");
el_option.text(blacklisted[idx]["nick"]+" ("+blacklisted[idx]["id"]+")");
el_option.val(blacklisted[idx]["id"]);
list.append(el_option);
}
$("#rto21-count").text(blacklisted.length);
}; // Мы на странице профиля - ведём список пользователей.
if (window.location.pathname === "/forum/profile.php") {
do { // Если это не мой профиль, не работаем.
if ($("#main_content_wrap > h1").text().indexOf("Мой профиль") === -1)
break; // Берём список заблокированных из хранилища.
var blacklisted_users = localStorage.getItem("rto21_blacklisted") || "[]";
blacklisted_users = JSON.parse(blacklisted_users); // Элемент списка фильтруемых пользователей.
var list = $("<select id=\"rto21-list\" multiple=\"multiple\" size=\"11\" style=\"width: 20em; float: left; margin-right: .5em; height: 17em;\">"); // Галочка включения-выключения фильтрации.
var enabled_checkbox = $("<input type=\"checkbox\" id=\"rto21-enabled\">").click(function(){
localStorage.setItem("rto21_enabled", this.checked);
});
enabled_checkbox
.css({"margin-left":".5em","margin-right":".5em"})
.prop("checked", localStorage.getItem("rto21_enabled") === "true"); // Переключатель способа работы: удаление сообщений или их сокрытие. По умолчанию - удаление.
if (!localStorage.getItem("rto21_method"))
localStorage.setItem("rto21_method", "delete");
var method_delete_radio = $("<input type=\"radio\" id=\"rto21-method-delete\" name=\"rto21-method\" value=\"delete\"/>").click(function(){
localStorage.setItem("rto21_method", "delete");
});
method_delete_radio
.css({"margin":".5em .5em 0 0","vertical-align":"top"})
.prop("checked", localStorage.getItem("rto21_method") === "delete");
var method_hide_radio = $("<input type=\"radio\" id=\"rto21-method-hide\" name=\"rto21-method\" value=\"hide\"/>").click(function(){
localStorage.setItem("rto21_method", "hide");
});
method_hide_radio
.css({"margin":".5em .5em 0 2em","vertical-align":"top"})
.prop("checked", localStorage.getItem("rto21_method") === "hide"); // Надпись с количеством записей в списке.
var count_text = $("<span>(<span id=\"rto21-count\"></span>)</span>").css({"margin-left":".5em","margin-right":".5em"}); // Добавляем список в интерфейс.
var container = $("table.user_profile > tbody > tr:eq(1) > td:eq(1)");
container.append($(
"<fieldset id=\"rto21-container\" style=\"margin: 0 8px 3px;\">" +
"<legend>Чёрный список</legend>" +
"<div style=\"padding: 4px;\"></div>" +
"</fieldset>"
));
container.find("#rto21-container div").append(list);
container.find("#rto21-container legend").prepend(enabled_checkbox).append(count_text); // Кнопка добавления записи.
var add_button = $("<input type=\"button\">").val("Добавить").click(function(){
var el_newusernick_text = $("#rto21-newusernick");
var newuser_nick = el_newusernick_text.val();
var el_newuserid_text = $("#rto21-newuserid");
var newuser_id = parseInt(el_newuserid_text.val()); // Правильно ли введён id пользователя.
if (isNaN(newuser_id)) {
el_newuserid_text.css({
"background-color": "#FF7F7F"
}).delay(400).queue(function(){
$(this).css({
"background-color": "white"
}).dequeue();
});
return;
} // Если логин не задан, составляем его сами.
newuser_id = parseInt(newuser_id);
if (newuser_nick.length === 0) {
newuser_nick = "Пользователь " + newuser_id;
} // Ищем, нет ли уже такого пользователя в списке.
var found = blacklisted_users.findIndex(function(user){
return newuser_id === user["id"];
});
// Если такой есть, не работаем.
if (found >= 0) {
el_newuserid_text.css({
"background-color": "#FF7F7F"
}).delay(400).queue(function(){
$(this).css({
"background-color": "white"
}).dequeue();
});
return;
} // Ищем место, куда добавить новую запись. Записи должны быть отсортированы по алфавиту.
for (var idx = 0; idx < blacklisted_users.length; idx++) {
if (blacklisted_users[idx]["nick"].toUpperCase() > newuser_nick.toUpperCase())
break;
} // Добавляем в начало списка.
if (idx === 0) {
blacklisted_users.unshift({"nick":newuser_nick,"id":newuser_id});
}
// Добавляем в конец списка.
else if (idx >= blacklisted_users.length) {
blacklisted_users.push({"nick":newuser_nick,"id":newuser_id});
}
// Добавляем в середину списка.
else {
for (var idx1 = blacklisted_users.length-1; idx1 >= idx; idx1--) {
blacklisted_users[idx1+1] = blacklisted_users[idx1];
}
blacklisted_users[idx] = {"nick":newuser_nick,"id":newuser_id};
} // Обновляем список.
update_list(blacklisted_users); // Очищаем поля ввода id и логина пользователя.
el_newusernick_text.val("");
el_newuserid_text.val(""); // Сохраняем список в хранилище.
localStorage.setItem("rto21_blacklisted", JSON.stringify(blacklisted_users));
}); // Кнопка удаления записи.
var remove_button = $("<input type=\"button\">").val("Удалить").click(function(){
var el_list = $("#rto21-list"); // Если ничего не выбрано, не работаем.
if (el_list.find("option:selected").length === -1)
return; // Удаляем выбранное из списка.
blacklisted_users = blacklisted_users.filter(function(user){
return el_list.find("option[value='"+user["id"]+"']:selected").length === 0;
}); // Обновляем список.
update_list(blacklisted_users); // Сохраняем список в хранилище.
localStorage.setItem("rto21_blacklisted", JSON.stringify(blacklisted_users));
}); // Добавляем элементы управления списком.
container.find("#rto21-container div").append(
$("<p style=\"margin-bottom: 2em;\">")
.append("<p style=\"font-size: smaller;\"><span style=\"font-weight: bold;\">Для добавления записи</span> введите логин пользователя и его цифровой id и нажмите на кнопку.<br/>Логин не обязателен, поиск будет производиться по Id.</p>")
.append("<input type=\"text\" id=\"rto21-newusernick\" placeholder=\"Логин\" size=\"12\" style=\"margin-right: .5em;\"/>")
.append("<input type=\"text\" id=\"rto21-newuserid\" placeholder=\"Id\" size=\"8\" style=\"margin-right: .5em;\"/>")
.append(add_button),
$("<p style=\"margin-bottom: 2em;\">")
.append("<p style=\"font-size: smaller;\"><span style=\"font-weight: bold;\">Для удаления записей</span> выберите одну или несколько строк и нажмите на кнопку.<br/>Несколько строк можно выбрать с помощью Ctrl или Shift.</p>")
.append(remove_button),
$("<p style=\"margin-bottom: 2em;\">")
.append("<p>Способ действия:</p>")
.append(method_delete_radio, $("<label for=\"rto21-method-delete\" style=\"vertical-align: top;\"><p>Удаление<br/><span style=\"font-size: smaller;\">Скрывать, в фоне <span style=\"font-weight: bold;\">удалять</span>.</span></p></label>"))
.append(method_hide_radio, $("<label for=\"rto21-method-hide\" style=\"vertical-align: top;\"><p>Сокрытие<br/><span style=\"font-size: smaller;\">Только <span style=\"font-weight: bold;\">скрывать</span>.</span></p></label>"))
); // Заполняем список значениями.
update_list(blacklisted_users); } while (false);
} // Страница своего профиля. // Мы на странице входящих ЛС - фильтруем пользователей.
if (window.location.pathname === "/forum/privmsg.php" && window.location.search.indexOf("?folder=inbox") === 0) {
do { // Если фильтрация не включена, не работаем.
var enabled = localStorage.getItem("rto21_enabled") === "true";
if (!enabled)
break; // Способ действия.
var method = localStorage.getItem("rto21_method") || "delete"; // Берём список заблокированных из хранилища.
var blacklisted_users = localStorage.getItem("rto21_blacklisted") || "[]";
blacklisted_users = JSON.parse(blacklisted_users);
// Если списка нет, нечего фильтровать, выходим.
if (blacklisted_users.length === 0)
break; // Ищем фильтруемых пользователей и запоминаем id их сообщений.
var to_delete = "";
$("table.forumline td.pm-nick-td a.med").filter(function(idx,elem){
var el_nick = $(elem);
var user_id = parseInt(el_nick.attr("href").replace(/.+&u=(\d+)$/, "$1"));
var found = blacklisted_users.findIndex(function(blacklisted){
return user_id === blacklisted["id"];
});
return found > -1;
}).each(function(idx, elem){
var el_nick = $(elem);
var el_message_tr = el_nick.parentsUntil("tr").parent();
el_message_tr.hide();
var message_id = parseInt(el_message_tr.attr("id").replace(/^tr-(\d+)$/, "$1"));
to_delete += "&mark%5B"+idx+"%5D="+message_id;
});
// Если удалять нечего, выходим.
if (to_delete.length === 0)
break; // Удаление сообщений, если выбран такой способ работы.
if (method === "delete")
$.post({
url: "//" + window.location.hostname + "/forum/privmsg.php?folder=inbox",
data: "mode=&delete=1"+to_delete+"&confirm=%C4%E0&form_token="+window.BB.form_token,
success: function (data, status) {
//console.log("Удалено сообщение "+(idx+1)+ " (id="+message_id+")");
//window.location.reload();
}
, async: false
}); } while (false);
} // Страница входящих ЛС. })();
Включение-выключение скрипта по галочке в заголовке. Там же в заголовке пишется число записей в списке.
Каждая запись представляет собой id блокируемого пользователя (обязательная часть) и его логин (не обязательно). Логин вы вводите сами, хотите настоящий пользовательский, хотите придумайте любой подходящий, в общем это поле для вашего удобства.
Записи в списке сортируются по логину в алфавитном порядке.
Инструкции для добавления новых записей и их удаления написаны прямо рядом с соответствующими кнопками.
Есть выбор способа работы скрипта: удаление или сокрытие. При удалении (способ по умолчанию) подходящие под условия поиска сообщения сначала скрываются, а затем, в фоне, вызывается серверный метод их удаления. При сокрытии сообщения, соответственно, только скрываются без удаления. Второй способ полезен для случая, когда кого-то сейчас видеть не хочется, но безвозвратно удалять сообщения нежелательно.
Блокирование происходит по id следующим образом. При входе на страницу входящих ЛС:
- Ищутся сообщения от заблокированных вами пользователей.
- Если они найдены, они либо скрываются и в фоне удаляются, либо только скрываются, в зависимости от выбранного способа работы.
Минусы:
- Скрипт может работать только с теми сообщениями, которые «видит». Он просматривает текущую страницу входящих и ищет подходящие под условия сообщения среди тех, что есть на этой странице. Сообщения, находящиеся на других страницах, он не видит, для их обработки надо вручную переходить на те страницы. Соответственно, в первую очередь он работает с самыми новыми сообщениями, что в большинстве случаев и требуется.
- После сокрытия/удаления подходящих сообщений их число на странице уменьшается. Например, было 50, стало 47, 3 сообщения было скрыто/удалено. Список уменьшился, но постраничная навигация не перечиталась, так как страница не перечитывается заново с сервера. То есть страница будет по-прежнему считать, что у вас, например, всего 266 сообщений, хотя фактически (в случае удаления наряду с сокрытием) их уже 263. Если кому-то это сильно важно, я сделаю перезагрузку страницы в скрипте, но это увеличит ваш трафик (немного) и нагрузку на сервер (чуть-чуть), а также вы визуально увидите, что страница сама перезагрузилась через секунду после перехода на неё.
- Нет индикации происходящего удаления сообщений в фоне. Оно происходит быстро, в среднем секунду, но всё же если при входе на страницу входящих ЛС, на которой есть удаляемые сообщения, быстро нажать на какую-то ссылку, это удаление может сбойнуть. Вероятность очень мала, но это надо иметь в виду.
Пробуйте, советуйте.
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
19-Сен-17 17:47
(спустя 5 дней, ред. 19-Сен-17 17:47)
Обновлён скрипт текстового поиска по теме, теперь в результатах показываются картинки, имеющиеся в найденных постах.
Обновлён скрипт скрытия постов пользователей, его стало удобнее конфигурировать на странице своего профиля, и поиск теперь идёт по id, а не логину.
|
|
RoxMarty
Стаж: 17 лет 7 месяцев Сообщений: 14622
|
RoxMarty ·
19-Сен-17 19:34
(спустя 1 час 47 мин.)
unchqua
Спасибо за обновления! Эти два скрипта очень выручают, особенно второй - долой троллей
|
|
maximus_lt
Стаж: 17 лет 5 месяцев Сообщений: 6144
|
maximus_lt ·
19-Сен-17 21:42
(спустя 2 часа 8 мин., ред. 01-Окт-17 10:27)
unchqua, да, выручает. А то администрация как то мягко относится к троллям, который уже 10-й ник по кругу создают.
Этих товарищей туда :)
Sh.Holmes
stеreomuzzv
Musicant-DSD
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
20-Сен-17 11:18
(спустя 13 часов, ред. 20-Сен-17 11:18)
Господа, по разным обстоятельствам редко появлялся в теме и вообще на форуме, теперь полегче. Xant1k
Идея с выкладыванием всех моих скриптов на файлообменник всё ещё актуальна? CGGB
Сокрытие постов по стране (флагу). Это трудно, так как такой информации уже нет в постах, а чтобы её достать, надо запрашивать профили каждого пользователя. Представьте страницу темы с 30-ю постами, каждый со своим автором, это надо 30 раз запросить HTML-страницы ихних профилей и прочитать страны. И так на каждой странице каждой темы, в которую вы заходите. Это нагрузка на сервер.
К тому же да, G00ba прав, и массовое применение таких скриптов будет разобщать сообщество, не хотелось бы это поощрять. Выборочно можно блокировать пользователей.
А здесь что имеется в виду?
|
|
CGGB
Стаж: 16 лет 3 месяца Сообщений: 132
|
CGGB ·
20-Сен-17 14:59
(спустя 3 часа)
unchqua
Предыдущая версия не работала в темах с отключенными комментариями. Новая работает. Спасибо. При переходе на новую версию (т.е. тупо меняя код скрипта, без удаления старого и создания нового) не подхватываются старые "блокируемые", более того, они не удаляются и не создаются новые. Чистка хранилища исправила. Но это уже мелочи. Спасибо за скрипты ещё раз.
Сообщения из этой темы [1 шт.] были перенесены в Musicant-DSD [id: 42543316] (0,5) Гуфыч
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
20-Сен-17 16:03
(спустя 1 час 4 мин.)
CGGB писал(а):
73871035При переходе на новую версию (т.е. тупо меняя код скрипта, без удаления старого и создания нового) не подхватываются старые "блокируемые", более того, они не удаляются и не создаются новые. Чистка хранилища исправила.
Да-да, RoxMarty уже налетел на это. Надо придумать механизм бесшовного перехода.
Сообщения из этой темы [3 шт.] были выделены в отдельную тему Выделено из: Скрипты для торрент трекеров [4717182] Гуфыч
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
01-Окт-17 11:04
(спустя 10 дней, ред. 01-Окт-17 11:04)
Текущая версия Firefox 56. Начиная с версии 57, браузер переходит на новый формат поддерживаемых собой расширений, WebExtensions. Уже сейчас вы можете зайти в список своих расширений по адресу about:addons или нажав на кнопку
в меню, и увидеть, какие расширения продолжат работать, а какие перестанут в этой следующей версии; вторые сейчас отмечены жёлтой меткой
.
Mozilla объясняет, что произойдёт при переходе на версию 57, в статьях Firefox add-on technology is modernizing и The Road to Firefox 57 – Compatibility Milestones.
Версия Firefox 57 будет выпущена 18 ноября 2017 г.
Продолжение работы расширений в среде WebExtensions зависит от их авторов, которые должны переписать свой код в соответствии с новым стандартом.
Разработчик Greasemonkey, расширения для запуска пользовательских скриптов, заявляет, что готов к этому переходу. Здесь описана общая картина происходящего. Тут сказано, какие действия должны предпринять пользователи скриптов (они просты: попросить автора скрипта обновить его ). А здесь описано, что делать их авторам.
Судя по описанию требуемых изменений, их немного. Буду переписывать свои скрипты.
|
|
MishaniaNSK
Стаж: 14 лет 2 месяца Сообщений: 1902
|
MishaniaNSK ·
16-Окт-17 19:27
(спустя 15 дней)
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
08-Ноя-17 13:24
(спустя 22 дня)
Оказывается, Greasemonkey для браузера версии 57 и выше уже существует, выпущен 2 ноября. У кого имеется Firefox 57, установите версию 4.0 и попробуйте свои скрипты.
https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
16-Ноя-17 18:22
(спустя 8 дней, ред. 16-Ноя-17 18:22)
Firefox 57 сатанински быстр, но скрипты поломал. В Greasemonkey изменилась среда запуска скриптов, теперь они не имеют достаточно доступа к страницам. Не обновляйтесь до 57, иначе всё накроется. Буду следить за ситуацией. UPD 1. Подвижки есть.
Чтобы не делать ненужную работу, я буду обновлять скрипты по одному из тех, которыми вы реально пользуетесь, так что перечисляйте их здесь. Как безопасно поставить Firefox 57.
По этой ссылке! Выберите там операционку, язык, разрядность. Не берите онлайн-инсталлятор, качающий дистрибутив сам во время установки, а возьмите полный дистрибутив ~34Мб. Ставьте отдельно от основной инсталляции, в отдельную директорию. Не запускайте новый браузер сразу! Закройте все фаерфоксы, нажмите Win-R и запустите новый Квантум такой командой:
Код:
D:\Путь\до\браузера\firefox.exe -ProfileManager
В появившемся окошке создайте новый профиль. Новый браузер запускать только с ним, иначе он при старте залезет в ваш нынешний и наизменяет там что-нибудь. Так же и со старым браузером: запускайте его только с вашим существующим профилем. Снимите в окошке галку автозапуска с выбранным профилем, выбирайте профиль каждый раз при запуске браузера.
Вообще, сделайте две иконки на столе, одну для привычного Фаерфокса, другую для Квантума. Пусть каждая из них запускает свою версию с нужным профилем:
Код:
D:\Путь\по\Фаерфокса\firefox.exe -p default
Код:
D:\Путь\по\Квантума\firefox.exe -p quantum57
quantum57 — так назвал новый профиль. Таким манером не промахнётесь.
В новом профиле установите Greasemonkey. UPD 2. Геморрой продолжается.
Если раньше можно было установить скрипт с локального диска, открыв его про Ctrl-O, то теперь нужен веб-сервер, отдающий исходники скриптов, да ещё и с нужным Content-Type; вот тут это описано: https://wiki.greasespot.net/User_Script_Hosting . Упоминаемый gist.github.com по какой-то причине не позволяет расширению воспринять скрипты так, чтобы они устанавливались. Ищу бесплатный хостинг, подходящий под условия.
|
|
порошков
Стаж: 15 лет 9 месяцев Сообщений: 24373
|
порошков ·
16-Ноя-17 19:36
(спустя 1 час 13 мин.)
unchqua
Подождем
|
|
Papant
Стаж: 17 лет 2 месяца Сообщений: 56369
|
Papant ·
16-Ноя-17 19:40
(спустя 4 мин.)
Мейтар предлагает подождать ещё пару обновлений, сидя на 56-й версии. А потом делать выводы..
|
|
DeadNews
Стаж: 13 лет 7 месяцев Сообщений: 2822
|
DeadNews ·
16-Ноя-17 20:04
(спустя 23 мин., ред. 16-Ноя-17 20:04)
unchqua писал(а):
74244624Greasemonkey
tampermonkey еще можно потыкать.
unchqua писал(а):
74244624так что перечисляйте их здесь.
>Дополнительные кнопки для текстового редактора сообщений.
+
Был тут вроде такой скрипт, позволяющий пропускать данную страницу:
unchqua писал(а):
74244624Как безопасно поставить Firefox 57.
Как вариант, можно поставить waterfox, портировать туда настройки с ff, затем обновить ff.
|
|
Hannibal61
Стаж: 14 лет 8 месяцев Сообщений: 18111
|
Hannibal61 ·
16-Ноя-17 20:17
(спустя 13 мин.)
unchqua писал(а):
74244624Не обновляйтесь до 57, иначе всё накроется.
unchqua
Где ж ты вчера был, родимый...
|
|
unchqua
Стаж: 16 лет 4 месяца Сообщений: 1060
|
unchqua ·
16-Ноя-17 21:05
(спустя 47 мин.)
DeadNews писал(а):
74245556Дополнительные кнопки для текстового редактора сообщений.
+
Был тут вроде такой скрипт, позволяющий пропускать данную страницу:
Скрипт с кнопками обновлю. Скрипта для пропуска не делал, но это, думается, несложно, сделаю.
Ещё обновлю 1) текстовой поиск по теме и 2) чёрный список для тем и 3) для ЛС.
Papant писал(а):
74245551Мейтар предлагает подождать ещё пару обновлений, сидя на 56-й версии. А потом делать выводы..
Согласен, не надо дёргаться, но вообще браузер получился супербыстрый, это подкупает пользователей значительно сильнее, чем отвращает поломкой плагинов. У Мозиллы уже нет пути назад, так что надо привыкать к тому, что есть, и приспосабливаться. Мозилловцы ещё щадяще поступили, столько времени хранили совместимость, пока совсем не допекло.
|
|
Papant
Стаж: 17 лет 2 месяца Сообщений: 56369
|
Papant ·
16-Ноя-17 22:31
(спустя 1 час 25 мин.)
unchqua писал(а):
74244624Если раньше можно было установить скрипт с локального диска, открыв его про Ctrl-O, то теперь нужен веб-сервер
А не сработает фишка, которая была описана в теме - https://rutr.life/forum/viewtopic.php?t=3854155 ?
Указывать адрес в виде
Код:
file:///C:/Temp/скрипт.js
|
|
|