13

Скрипт для rutor.is

Привет. Не очень мне было удобно пользоваться этим сайтом с торрентами, хотя очень нравится, что не надо регистрироваться, чтобы скачивать. И вот для расширения браузера Tampermonkey написал скрипт, который гуппирует раздачи по названию фильма, сортирует внутри групп по количеству раздающих и подсвечивает раздачи размером 1.3–2.5 Гб, т.е. те, что меня интересуют))

Собственно если кому интересно - то вот сам скрипт и скриншоты его работы:

// ==UserScript==

// @name Rutor — группировка + сортировка по сидерам + подсветка по размеру

// @namespace http://tampermonkey.net/

// @VERSION 1.3

// @Description Группирует раздачи по названию фильма, сортирует внутри групп по количеству раздающих и подсвечивает раздачи размером 1.5–2.5 Гб

// @match *://rutor.is/*

// @GrAnt none

// ==/UserScript==

(function () {

'use strict';

const indexDiv = document.querySelector('#index');

if (!indexDiv) return;

const table = indexDiv.querySelector('table[width="100%"]');

if (!table) return;

// Все строки, кроме первой (шапка)

const rows = Array.from(table.querySelectorAll('tr')).slice(1);

const groups = {};

rows.forEach(row => {

const titleLink = row.querySelector('a[href^="/torrent/"]');

if (!titleLink) return;

let title = titleLink.textContent.trim();

// Берём только "Название (Год)"

const match = title.match(/^(.+?\(\d{4}\))/);

if (match) {

title = match[1];

}

if (!groups[title]) groups[title] = [];

groups[title].push(row);

});

// Очищаем таблицу

table.innerHTML = '';

// Перестраиваем содержимое

for (const [filmTitle, filmRows] of Object.entries(groups)) {

const headerRow = document.createElement('tr');

const headerCell = document.createElement('td');

headerCell.colSpan = 5;

headerCell.style.background = '#eee';

headerCell.style.padding = '5px';

headerCell.style.fontWeight = 'bold';

headerCell.textContent = `${filmTitle} (${filmRows.length})`;

headerRow.appendChild(headerCell);

table.appendChild(headerRow);

// Сортировка по сидерам (обычно колонка с индексом 4)

filmRows.sort((a, b) => {

const tdsA = a.querySelectorAll('td');

const tdsB = b.querySelectorAll('td');

const seedersA = parseInt(tdsA[4]?.textContent.trim()) || 0;

const seedersB = parseInt(tdsB[4]?.textContent.trim()) || 0;

return seedersB - seedersA;

});

filmRows.forEach(r => {

const tds = r.querySelectorAll('td');

// Обычно размер в колонке с индексом 1 или 2 — уточняем

const sizeText = [...tds].map(td => td.textContent.trim()).find(txt => /(?:\d+(?:[.,]\d+)?)\s*(?:GB|ГБ|Mb|МБ|KB|КБ)/i.test(txt));

if (sizeText) {

const match = sizeText.match(/([\d.,]+)\s*(GB|ГБ|MB|МБ|KB|КБ)/i);

if (match) {

let num = parseFloat(match[1].replace(',', '.'));

let unit = match[2].toUpperCase();

// Переводим в ГБ

if (unit.includes('MB') || unit.includes('МБ')) {

num = num / 1024;

} else if (unit.includes('KB') || unit.includes('КБ')) {

num = num / (1024 * 1024);

}

if (num >= 1.3 && num <= 2.5) {

r.style.backgroundColor = '#e6ffe6'; // нежно-зелёный

}

}

}

table.appendChild(r);

});

}

})();

Соответственно работает везде: в поиске, в любом разделе и даже в связанных раздачах

Лига пиратов

72 поста1.1K подписчика

Правила сообщества

Разрешено всё, что не запрещено правилами пикабу. Однако лучше придерживаться тематики, указанной в описании сообщества.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества