Характеристики
AW2725D
03:07
Alienware AW2725D — это 27-дюймовый игровой монитор премиум-класса на базе матрицы QD-OLED (Quantum Dot OLED) от Samsung.
Он позиционируется как более доступная альтернатива флагманской модели AW2725DF с оптимизацией под видеокарты NVIDIA и современные консоли.
Ключевые характеристики:
Экран: 26.7 дюйма, плоский, разрешение QHD (2560×1440), соотношение сторон 16:9.
Матрица: QD-OLED третьего поколения. Обеспечивает бесконечную контрастность, глубокий черный цвет и мгновенное время отклика в 0.03 мс (GtG).
Частота обновления: 280 Гц.
Цветопередача: 99.3% охвата пространства DCI-P3 и профессиональная заводская калибровка (Delta E Ctrl+V). Программа-менеджер буфера обмена помнит всё, что вы копировали за день.
Как это работает: Вы заходите на сайт-источник и подряд нажимаете Ctrl+C на диагонали, разрешении, матрице, интерфейсах. У вас в памяти сохраняется сразу 10-15 элементов. Потом переходите в свою админку и по очереди вставляете их горячими клавишами. Это экономит до 50% времени на прыжках между вкладками.
Давайте попробуем облегчить работу прямо сейчас. Можете описать или скинуть скриншот того, в каком порядке идут поля в вашей админке, когда вы добавляете монитор? Я настрою шаблон под вас.
смотри на моем сайте я копирую всего 2 раза в одно описание. и 1 картинку. Если я дам тебе доступ к админке и скажу откуда брать информацию ты сможешь это сделать автоматически?
03:24
Я не могу напрямую заходить в вашу админку и делать это сам — у меня нет доступа к интерфейсам сайтов из соображений безопасности [1].
Но мы можем полностью автоматизировать этот процесс с помощью простого скрипта на Python, который вы сможете запускать на своем компьютере одной кнопкой. Программистом для этого быть не нужно — я сам напишу весь код, пошагово объясню, куда его вставить, и научу им пользоваться.
Как это будет работать для вас:
Вы запускаете на компьютере маленькую программку (скрипт).
Она сама заходит на сайт-источник, забирает нужные характеристики, очищает текст от кривых переносов, скачивает картинку.
Затем она сама открывает админку вашего сайта, входит под вашим логином/паролем, создаёт карточку товара, заполняет эти 2 описания и загружает изображение.
Чтобы я смог написать для вас этот скрипт, мне нужно понять, как устроена ваша админка и откуда брать данные. Начнем с первого шага: пришлите, пожалуйста, ссылку на один из сайтов-источников (откуда вы обычно копируете) и название модели, которую нужно перенести. Посмотрим, как удобнее всего забирать оттуда информацию.
итак для начала товар коготорый мне надо завести. Это мой сайт https://kelwin.ru/admin/product/57128/
03:25
Отлично, теперь понятна задача. Сайт kelwin.ru действительно имеет классическую админку, где для каждого товара отведена своя страница редактирования (в данном случае, карточка товара №57128).
Чтобы написать рабочий скрипт автоматизации, мне нужно точно знать две вещи: куда вставлять и откуда брать. Заходить на ваш сайт я не буду, мы сделаем так, чтобы робот работал у вас локально.
Шаг 1: Поймем структуру вашей админки
Опишите, как выглядят те 2 поля описания и 1 поле для картинки, которые вы заполняете.
Например:
Первое описание — это «Краткое описание» (текстовая строчка) или «Характеристики» (большое текстовое поле)?
Второе описание — это подробный текст о товаре?
Картинка — вы нажимаете кнопку «Обзор/Загрузить файл» или просто вставляете ссылку на картинку в специальное поле?
Шаг 2: Откуда берем данные?
По какому принципу скрипт должен находить нужный товар-донор?
Вы хотите давать скрипту прямую ссылку (например, на страницу с Gigabyte MO27Q28GR с какого-то конкретного сайта, где вы обычно берете данные)?
Или вы хотите вводить только название модели (например, «Gigabyte MO27Q28GR»), а скрипт должен сам искать её в Яндексе/Google, переходить на первый попавшийся сайт с характеристиками и копировать оттуда?
Расскажите, с какого сайта (или сайтов) вы чаще всего копируете эти характеристики, и мы перейдем к созданию скрипта.
Huawei Technical Supporthttps://support.huawei.com
Preparations and WebUI Login - FusionCol600 Monitoring Module ...
Prerequisites * Operating system: Windows 7 or later. * Recommended browser: Chrome, Firefox, or Microsoft Edge Microsoft Edge is ...
1b.apphttps://1b.app
Product URL on the website and in the admin panel - OneBox OS
Product URL on the website and in the admin panel * url. * url товара * url товара н сайте * url товару на сайті * формирование ur...
Первое описание — это «Краткое описание» (текстовая строчка) Я беру ообычно с сайта regard.ru там тоже есть краткое описание . Итак товар https://kelwin.ru/admin/product/57129/ краткое описание https://www.regard.ru/product/786999/monitor-gigabyte-24-gs24f14a там начинаю с Коротко о товаре и заканчиваю перед Полные характеристики
03:27
Automating the population of product descriptions from Regard to Kelwin can be achieved using a Python Selenium script designed to parse the "Коротко о товаре" section from the source page. The provided script, which handles website bot protection via a headless Chrome browser, extracts and cleans the text to prepare it for insertion into the target content management system. You can review the parser script's logic and the target product data at Regard.ru.
а теперь пожалуйста на русском это же
03:28
Теперь картинка полностью сложилась. Мы автоматизируем именно этот процесс для монитора Gigabyte GS24F14A (и любых следующих моделей).
Поскольку у вас нет навыков программирования, самый простой способ запустить такую автоматизацию без сложной установки программ — это использовать бесплатное расширение для браузера Tampermonkey. Оно позволяет внедрить на ваш сайт кнопку «Заполнить», которая сама сходит на Регард, заберет нужные данные и вставит их в вашу админку.
Вот пошаговый план, как мы это сделаем:
Шаг 1. Как устроен ваш процесс вставки «Краткого описания»?
Мы поняли, что на Регарде мы берем блок «Коротко о товаре»:
Диагональ: 23.8", Матрица: SS IPS, Разрешение: 1920x1080 (16:9), Частота: 180 Гц, Время отклика: 1 мс...
Скажите, когда вы вставляете этот текст в свою админку на kelwin.ru/admin/product/57129/:
Вы вставляете его как обычный сплошной текст в одну строчку?
Или вы оформляете его в виде списка с переносами строк, как мы делали выше (чтобы каждая характеристика была с новой строки)?
Шаг 2. Куда вставляется «Второе описание» и Картинка?
Вы упомянули в прошлых сообщениях, что копируете два описания и одну картинку. На примере этого монитора Gigabyte с Регарда:
Второе описание — откуда вы его берете? (Это блок «Полные характеристики» с Регарда или какой-то другой текст?) И в какое поле вашей админки вы его вставляете?
Картинка — вы скачиваете её с Регарда и загружаете через кнопку «Обзор» на свой сайт, или просто копируете ссылку на изображение?
Ответьте на эти вопросы, и я напишу для вас готовый код расширения и дам простую инструкцию, как его включить за 2 минуты!
https://kelwin.ru/admin/product/edit/57129/ - в краткое описани
03:29
Теперь задача понятна на 100%. Вы хотите, находясь на странице редактирования вашего товара (например, https://kelwin.ru/admin/product/edit/57129/), автоматически затягивать блок «Коротко о товаре» с сайта Регард прямо в текстовое поле краткого описания вашей админки.
Самый удобный способ реализовать это для не-программиста — это сделать кнопку автоматизации с помощью расширения Tampermonkey (оно бесплатно и работает в любом браузере: Chrome, Яндекс, Opera, Edge).
Когда вы установите этот скрипт, у вас на странице админки kelwin.ru/admin/product/edit/... появится аккуратная кнопка «Заполнить с Регард». При нажатии на неё скрипт попросит вас вставить ссылку на товар на Регарде, сам незаметно загрузит её, заберет нужный текст и сразу вставит в поле краткого описания вашего сайта.
Пошаговая инструкция по установке:
Установите расширение Tampermonkey из официального магазина расширений вашего браузера.
Кликните по иконке расширения и выберите «Создать новый скрипт» (Create a new script).
Полностью удалите весь шаблонный текст, который там появится, и вставьте вместо него код, приведенный ниже:
javascript
// ==UserScript==
// @name Автозаполнение Kelwin.ru с Регард
// @namespace http://tampermonkey.net
// @version 1.0
// @description Автоматически копирует краткое описание с regard.ru в админку kelwin.ru
// @author You
// @match https://kelwin.ru/admin/product/edit/*
// @match https://kelwin.ru/admin/product/*
// @grant GM_xmlhttpRequest
// @connect regard.ru
// @connect www.regard.ru
// ==UserScript==
(function() {
'use strict';
// Создаем кнопку автоматизации на странице вашей админки
const btn = document.createElement('button');
btn.innerHTML = '⚡ Заполнить с Регард';
btn.type = 'button';
btn.style.position = 'fixed';
btn.style.top = '10px';
btn.style.right = '10px';
btn.style.zIndex = '99999';
btn.style.padding = '10px 15px';
btn.style.backgroundColor = '#28a745';
btn.style.color = '#fff';
btn.style.border = 'none';
btn.style.borderRadius = '5px';
btn.style.cursor = 'pointer';
btn.style.fontWeight = 'bold';
document.body.appendChild(btn);
btn.addEventListener('click', function() {
// Запрашиваем у вас ссылку на Регард
const regardUrl = prompt('Вставьте ссылку на товар с regard.ru:');
if (!regardUrl) return;
btn.innerHTML = '???? Загрузка...';
btn.disabled = true;
// Делаем фоновый запрос к Регарду, чтобы забрать страницу
GM_xmlhttpRequest({
method: 'GET',
url: regardUrl,
onload: function(response) {
try {
// Создаем виртуальный документ из полученного кода страницы Регарда
const parser = new DOMParser();
const doc = parser.parseFromString(response.responseText, 'text/html');
// Ищем блок "Коротко о товаре"
// На Регарде характеристики часто лежат в блоках с определенными классами или текстом
let shortDescText = '';
// Ищем заголовок "Коротко о товаре" и собираем элементы за ним
const headers = Array.from(doc.querySelectorAll('h2, h3, div'));
const shortHeader = headers.find(el => el.textContent.includes('Коротко о товаре'));
if (shortHeader) {
// Берем родительский или следующий блок с характеристиками
const parentBlock = shortHeader.parentElement;
if (parentBlock) {
// Собираем текстовые строчки параметров
const items = parentBlock.querySelectorAll('li, div[class*="item"], p');
if (items.length > 0) {
shortDescText = Array.from(items)
.map(item => item.textContent.trim())
.filter(text => text.length > 0 && !text.includes('Коротко о товаре'))
.join('\n');
} else {
shortDescText = parentBlock.textContent.replace('Коротко о товаре', '').trim();
}
}
}
// Если хитрый поиск не сработал, попробуем взять по стандартным селекторам карточки Регарда
if (!shortDescText) {
const specBlock = doc.querySelector('[class*="Card_characteristics"]');
if (specBlock) shortDescText = specBlock.textContent.trim();
}
if (shortDescText) {
// Ищем поле "Краткое описание" на вашем сайте kelwin.ru
// Обычно в админках это textarea или input с именем short_description, description_short, анонс и т.д.
const myTextArea = document.querySelector('textarea[name*="short"], textarea[name*="brief"], #short_description, #preview_text');
if (myTextArea) {
myTextArea.value = shortDescText;
// Триггерим событие изменения, если на сайте стоят визуальные редакторы
myTextArea.dispatchEvent(new Event('change', { bubbles: true }));
alert('Текст успешно скопирован в поле!');
} else {
// Если скрипт не смог сам найти нужное поле, он выведет текст в окно, чтобы вы не лезли на Регард
console.log(shortDescText);
alert('Текст успешно получен с Регарда, но поле на вашем сайте не найдено автоматически. Текст выведен в консоль браузера (F12).');
}
} else {
alert('Не удалось найти блок "Коротко о товаре" на этой странице Регарда. Проверьте ссылку.');
}
} catch (e) {
alert('Ошибка при обработке страницы: ' + e.message);
} finally {
btn.innerHTML = '⚡ Заполнить с Регард';
btn.disabled = false;
}
},
onerror: function() {
alert('Не удалось загрузить страницу с Регарда. Возможно, сработала защита сайта.');
btn.innerHTML = '⚡ Заполнить с Регард';
btn.disabled = false;
}
});
});
})();
Используйте код с осторожностью.
Нажмите Файл -> Сохранить (Ctrl+S) в меню Tampermonkey.
Как проверить работу:
Откройте страницу редактирования вашего товара на kelwin.ru. В верхнем правом углу экрана должна появиться зеленая кнопка «⚡ Заполнить с Регард». Нажмите её, вставьте ссылку https://regard.ru... и посмотрите, заполнилось ли поле.
Если вдруг поле не заполнилось автоматически, значит, код вашей админки использует специфическое имя для текстового поля (не short, а какое-то другое). Чтобы мы это исправили, нажмите правой кнопкой мыши прямо на ваше пустое поле «Краткое описание» на сайте Kelwin, выберите «Посмотреть код» (Исследовать элемент) и скопируйте мне строчку кода этого поля (там будет что-то вроде ). Я подправлю под неё скрипт.
Попробуем установить расширение?
ну мы не закончили там еще есть полное описание
This Tampermonkey script automates product listing creation by scraping short descriptions, detailed specifications, and main images from regard.ru and injecting them into kelwin.ru admin fields. The updated script adds a button to the admin panel, fetches the full specifications table, and displays the product image for drag-and-drop uploading to the kelwin.ru backend.
For the full script and instructions, visit the provided response content.
на русском
Вы абсолютно правы, давайте доведём дело до конца и добавим полное описание, а также разберёмся с картинкой, чтобы всё заполнялось в один клик.
Поскольку Регард защищает свои картинки от прямого копирования по ссылкам на чужие сайты, мы сделаем так: скрипт заберёт Краткое описание, Полные характеристики и выведет Картинку прямо перед вами на экране вашей админки. Вы сможете просто перетащить эту картинку мышкой в поле загрузки вашего сайта, не скачивая её на компьютер.
Вот обновлённый, полный код скрипта.
Как обновить скрипт в Tampermonkey:
Откройте Tampermonkey и зайдите в редактирование созданного ранее скрипта.
Полностью сотрите старый код и вставьте этот новый вариант:
javascript
// ==UserScript==
// @name Полное автозаполнение Kelwin.ru с Регард
// @namespace http://tampermonkey.net
// @version 2.0
// @description Автоматически копирует краткое, полное описание и картинку с regard.ru в админку kelwin.ru
// @author You
// @match https://kelwin.ru*
// @match https://kelwin.ru*
// @grant GM_xmlhttpRequest
// @connect regard.ru
// @connect www.regard.ru
// ==UserScript==
(function() {
'use strict';
// Создаем кнопку автоматизации на странице вашей админки
const btn = document.createElement('button');
btn.innerHTML = '⚡ Заполнить ВСЁ с Регард';
btn.type = 'button';
btn.style.position = 'fixed';
btn.style.top = '10px';
btn.style.right = '10px';
btn.style.zIndex = '99999';
btn.style.padding = '12px 20px';
btn.style.backgroundColor = '#007bff';
btn.style.color = '#fff';
btn.style.border = 'none';
btn.style.borderRadius = '5px';
btn.style.cursor = 'pointer';
btn.style.fontWeight = 'bold';
btn.style.boxShadow = '0 4px 6px rgba(0,0,0,0.1)';
document.body.appendChild(btn);
// Контейнер для временного отображения картинки товара
const imgContainer = document.createElement('div');
imgContainer.style.position = 'fixed';
imgContainer.style.top = '60px';
imgContainer.style.right = '10px';
imgContainer.style.zIndex = '99999';
imgContainer.style.backgroundColor = '#fff';
imgContainer.style.border = '1px solid #ccc';
imgContainer.style.padding = '5px';
imgContainer.style.display = 'none';
imgContainer.style.textAlign = 'center';
document.body.appendChild(imgContainer);
btn.addEventListener('click', function() {
const regardUrl = prompt('Вставьте ссылку на товар с regard.ru:');
if (!regardUrl) return;
btn.innerHTML = '???? Загрузка данных...';
btn.disabled = true;
GM_xmlhttpRequest({
method: 'GET',
url: regardUrl,
onload: function(response) {
try {
const parser = new DOMParser();
const doc = parser.parseFromString(response.responseText, 'text/html');
// ==========================================
// 1. СБОР КРАТКОГО ОПИСАНИЯ ("Коротко о товаре")
// ==========================================
let shortDescText = '';
const headers = Array.from(doc.querySelectorAll('h2, h3, div'));
const shortHeader = headers.find(el => el.textContent.includes('Коротко о товаре'));
if (shortHeader && shortHeader.parentElement) {
const items = shortHeader.parentElement.querySelectorAll('li, div[class*="item"], p');
if (items.length > 0) {
shortDescText = Array.from(items)
.map(item => item.textContent.trim())
.filter(text => text.length > 0 && !text.includes('Коротко о товаре'))
.join('\n');
} else {
shortDescText = shortHeader.parentElement.textContent.replace('Коротко о товаре', '').trim();
}
}
if (!shortDescText) {
const specBlock = doc.querySelector('[class*="Card_characteristics"]');
if (specBlock) shortDescText = specBlock.textContent.trim();
}
// ==========================================
// 2. СБОР ПОЛНОГО ОПИСАНИЯ (Таблица характеристик)
// ==========================================
let fullDescText = '';
// Ищем блок полных характеристик на Регарде
const fullSpecBlock = doc.querySelector('[class*="Characteristics_block"], [class*="Grid_characteristics"], #characteristics');
if (fullSpecBlock) {
// Собираем строки таблицы аккуратно (Название свойства - Значение)
const rows = fullSpecBlock.querySelectorAll('[class*="Characteristics_row"], tr, div[class*="row"]');
if (rows.length > 0) {
fullDescText = Array.from(rows)
.map(row => {
// Убираем лишние пробелы и переносы внутри строк характеристик
return row.textContent.replace(/\s+/g, ' ').trim();
})
.filter(text => text.length > 0)
.join('\n');
} else {
fullDescText = fullSpecBlock.textContent.trim();
}
}
// ==========================================
// 3. ПОИСК КАРТИНКИ ТОВАРА
// ==========================================
let imgUrl = '';
const mainImg = doc.querySelector('[class*="Slider_main"] img, [class*="Card_image"] img, main img[src*="goods"]');
if (mainImg && mainImg.src) {
imgUrl = mainImg.src;
}
// ==========================================
// 4. ВСТАВКА В ВАШУ АДМИНКУ KELWIN.RU
// ==========================================
// Вставляем Краткое описание
const shortTextArea = document.querySelector('textarea[name*="short"], textarea[name*="brief"], #short_description, #preview_text');
if (shortTextArea) {
shortTextArea.value = shortDescText;
shortTextArea.dispatchEvent(new Event('change', { bubbles: true }));
}
// Вставляем Полное описание
// Ищем поле полного описания (обычно name включает 'full', 'detail', 'text' или 'body')
const fullTextArea = document.querySelector('textarea[name*="full"], textarea[name*="detail"], textarea[name*="text"], textarea[name="body"], #detail_text');
if (fullTextArea) {
fullTextArea.value = fullDescText;
fullTextArea.dispatchEvent(new Event('change', { bubbles: true }));
}
// Выводим картинку на экран для быстрого перетаскивания (Drag & Drop)
if (imgUrl) {
imgContainer.innerHTML = `
Перетащите мышкай в поле загрузки картинки:
`;
imgContainer.style.display = 'block';
}
alert('Краткое и Полное описание успешно загружены!');
} catch (e) {
alert('Ошибка при разборе страницы Регарда: ' + e.message);
} finally {
btn.innerHTML = '⚡ Заполнить ВСЁ с Регард';
btn.disabled = false;
}
},
onerror: function() {
alert('Не удалось загрузить Регард. Проверьте сеть.');
btn.innerHTML = '⚡ Заполнить ВСЁ с Регард';
btn.disabled = false;
}
});
});
})();
Используйте код с осторожностью.
Сохраните изменения (Файл -> Сохранить).
Как теперь будет выглядеть ваша работа:
Заходите в админку на страницу редактирования товара.
Нажимаете синюю кнопку «⚡ Заполнить ВСЁ с Регард» в правом верхнем углу.
Вставляете ссылку на Регард.
Скрипт сам заполняет поле Краткого описания и поле Полного описания (Характеристики).
Справа на экране появляется миниатюра картинки товара с Регарда. Вы просто зажимаете её левой кнопкой мыши и перетаскиваете прямо в поле «Обзор / Загрузить файл» на вашем сайте (так работает функция drag-and-drop в современных браузерах, и вам не нужно сохранять картинку на рабочий стол).
Попробуйте запустить этот скрипт на тестовом товаре. Напишите, заполнились ли оба поля текста, или какое-то из них осталось пустым (если осталось пустым, нам нужно будет точнее настроить его имя под вашу админку).
www.gigabyte.ruФайл удален.
смотри на сайте регард есть полное описание как раз с описаной ранее проблемой с переносом строк для нашего случая оно выгрядит так ОсновныеПроизводитель GigabyteGigabyteКод производителя GS24F14AДиагональ 23.8"КорпусНаклон -5°/+20°Крепление на стену (VESA) 75 х 75 ммМатрицаТип матрицы IPSБитность матрицы 6 + FRC битПодсветка матрицы Edge LEDШирокоформатный монитор даРазрешение экрана 1920x1080 (16:9)Частота обновления кадров 144 Гц,175 Гц (в разгоне)Поверхность экрана матоваяЯркость 400 кд/м2Контрастность 1500:1Время отклика 1 мс, MPRTУгол обзора по горизонтали 178°Угол обзора по вертикали 178°Цветовой охват DCI-P3 90 %Цветовой охват sRGB 104 %Максимальное количество цветов 16.7 млнИнструкции и документыРуководство пользователя Gigabyte 24" GS24F14A Скачать4.3 МбИнтерфейсыРазъёмы 2 x HDMI, DisplayPort, выход на наушникиВерсия HDMI 2.0ПитаниеБлок питания внешнийПотребляемая мощность при работе 13 ВтПотребляемая мощность в режиме ожидания 0.5 ВтПотребляемая мощность в спящем режиме 0.3 ВтОсобенностиПоддержка HDR даВерсия HDR HDR10Переменная частота обновления AMD FreeSync, Adaptive-SyncBlue Light Filter/Shield даТехнология Flicker-free даДополнительноФункциональность стабилизатор изображения,игровой ассистент,виджет OSD,замок KensingtonСтандарты TÜV RheinlandЦвет чёрныйВысота без подставки 317 ммВес без подставки 2.65 кгРазмеры (ШхВхГ) 538 x 415 x 152 ммВес 3.16 кгГарантия 24 мес.Сайт производителя www.gigabyte.ru
An updated Tampermonkey script has been developed to scrape product data from Regard.ru, specifically addressing formatting issues with line breaks and duplicate text in product specifications. The new code intelligently parses the "Full Description" section, pairing attribute names with values and grouping data to ensure a clean output format for insertion into the Kelwin.ru admin panel.
на русском
Понял проблему! В коде сайта Регард название характеристики (например, «Диагональ») и её значение (например, «23.8"») находятся в разных тегах, из-за чего при обычном копировании они разрываются на две строчки. Также «склеивается» производитель («GigabyteGigabyte»).
Я переписал внутреннюю логику скрипта. Теперь он не просто копирует текст, а построчно перебирает элементы таблицы Регарда, находит название параметра и значение, соединяет их через двоеточие в одну строку и только после этого делает перенос. Также добавлена очистка от дублей слов вроде «GigabyteGigabyte».
Вот исправленный и полностью готовый к работе код для Tampermonkey:
javascript
// ==UserScript==
// @name Полное автозаполнение Kelwin.ru с Регард (Без разрывов строк)
// @namespace http://tampermonkey.net
// @version 3.0
// @description Автоматически копирует краткое, полное описание и картинку с regard.ru в админку kelwin.ru с правильными переносами строк
// @author You
// @match https://kelwin.ru*
// @match https://kelwin.ru*
// @grant GM_xmlhttpRequest
// @connect regard.ru
// @connect www.regard.ru
// ==UserScript==
(function() {
'use strict';
// Создаем кнопку автоматизации на странице вашей админки
const btn = document.createElement('button');
btn.innerHTML = '⚡ Заполнить ВСЁ с Регард';
btn.type = 'button';
btn.style.position = 'fixed';
btn.style.top = '10px';
btn.style.right = '10px';
btn.style.zIndex = '99999';
btn.style.padding = '12px 20px';
btn.style.backgroundColor = '#007bff';
btn.style.color = '#fff';
btn.style.border = 'none';
btn.style.borderRadius = '5px';
btn.style.cursor = 'pointer';
btn.style.fontWeight = 'bold';
btn.style.boxShadow = '0 4px 6px rgba(0,0,0,0.1)';
document.body.appendChild(btn);
// Контейнер для временного отображения картинки товара
const imgContainer = document.createElement('div');
imgContainer.style.position = 'fixed';
imgContainer.style.top = '60px';
imgContainer.style.right = '10px';
imgContainer.style.zIndex = '99999';
imgContainer.style.backgroundColor = '#fff';
imgContainer.style.border = '1px solid #ccc';
imgContainer.style.padding = '5px';
imgContainer.style.display = 'none';
imgContainer.style.textAlign = 'center';
document.body.appendChild(imgContainer);
// Функция для очистки дублирующихся подряд слов (например, GigabyteGigabyte)
function cleanDupes(text) {
if (!text) return '';
// Если слово повторяется дважды без пробела (например, AsusAsus, GigabyteGigabyte)
return text.replace(/\b([A-Z][a-z0-9]+)\1\b/g, '$1');
}
btn.addEventListener('click', function() {
const regardUrl = prompt('Вставьте ссылку на товар с regard.ru:');
if (!regardUrl) return;
btn.innerHTML = '???? Загрузка данных...';
btn.disabled = true;
GM_xmlhttpRequest({
method: 'GET',
url: regardUrl,
onload: function(response) {
try {
const parser = new DOMParser();
const doc = parser.parseFromString(response.responseText, 'text/html');
// ==========================================
// 1. СБОР КРАТКОГО ОПИСАНИЯ ("Коротко о товаре")
// ==========================================
let shortDescText = '';
const headers = Array.from(doc.querySelectorAll('h2, h3, div'));
const shortHeader = headers.find(el => el.textContent.includes('Коротко о товаре'));
if (shortHeader && shortHeader.parentElement) {
const items = shortHeader.parentElement.querySelectorAll('li, div[class*="item"], p');
if (items.length > 0) {
shortDescText = Array.from(items)
.map(item => item.textContent.trim())
.filter(text => text.length > 0 && !text.includes(