Skip to Content
ДокументацияУмные скрипты

Умные скрипты

Умные скрипты позволяют PicHound автоматически распознавать и группировать изображения по назначению на любой карточке товара, без ручной сортировки. С 50+ встроенными скриптами e-commerce для Taobao, Tmall, JD, Amazon, Shopee и др. он разделяет главные изображения, SKU, детали и видео. Поддерживаются JPEG, PNG, GIF, WEBP, BMP, SVG, AVIF, интерфейс на 30+ языках и лицензия Lifetime Pro за $13.99 на 3 активации устройств (безлимит при входе через Google). Все правила выполняются 100% локально в браузере: первая загрузка модели ИИ около 100 МБ, далее офлайн на RMBG-1.4 / MODNet. Бесплатным пользователям — задания до 10 бесплатны, крупные пакеты 12 в день; Lifetime Pro — безлимит.

PicHound smart script e-commerce grouping preview

Пользовательские скрипты для любого сайта

Если целевой сайт не покрыт встроенными скриптами, расширьте PicHound пользовательским JSON-шаблоном. Шаблон сопоставляет URL страниц регулярными выражениями и извлекает узлы изображений/видео через DOM-селекторы или выражения JavaScript — тот же опыт групповой загрузки, что у официальных скриптов.

Предварительные требования

Для пользовательских скриптов нужны:

  1. Знание HTML, JavaScript, CSS и AJAX, чтобы понимать структуру страницы и интерфейсы данных.
  2. Уверенная работа с Chrome DevTools: инспекция DOM, просмотр сетевых запросов, отладка.
  3. Надёжное знание regex для точного извлечения URL, путей атрибутов и адресов изображений.
  4. Умение самостоятельно разбирать проблемы и итерировать правила при изменении страниц.

📃Пример скрипта

JSON ниже на примере карточки 1688 показывает, как назначить главные изображения, SKU, детали и видео отдельным группам:

{ "id": 10009, "name": "1688", "ico": "https://assets.pichound.app/1688.ico", "version": "25.1.1", "description": "Интеллектуально извлекать HD-изображения и видео со страниц товаров 1688", "reg": "detail.1688.com/offer", "status": "prod", "tags": [ "ec" ], "examples": [ "https://detail.1688.com/offer/739240146617.html" ], "groups": [ { "fn": "updateGroupByIds", "props": { "groupName": "Главные изображения", "groupIndex": 0, "source": "Object.entries(window.__INIT_DATA.data).find(([k,v]) => v.componentType === '@ali/tdmod-pc-od-main-pic')[1]?.data?.offerImgList", "ids": [ { "attributes": [] } ] } }, { "fn": "updateGroupByIds", "props": { "groupName": "SKU", "groupIndex": 1, "source": "window.__INIT_DATA.globalData.skuModel.skuProps.reduce((acc, o) => { acc.push(...o.value); return acc }, []);", "ids": [ { "attributes": [ "imageUrl" ], "imageNameAttributes": [ "name" ], "replaceUrlRules": [ { "pattern": "!q.*$", "replaceValue": "?sku" } ] } ] } }, { "fn": "updateGroupByIds", "props": { "groupName": "Детали", "groupIndex": 2, "ids": [ { "id": ".content-detail img", "attributes": [ "dataset.lazyloadSrc", "src" ] } ] } }, { "fn": "updateGroupByIds", "props": { "groupName": "Видео", "groupIndex": 3, "source": "[Object.entries(window.__INIT_DATA.data).find(([k,v]) => v.componentType === '@ali/tdmod-pc-od-main-pic')[1]?.data?.video]", "ids": [ { "attributes": [ "videoUrl" ], "type": "VIDEO" } ] } } ] }

🔑Документация API

Интерфейсы TypeScript для правил группировки, сопоставления полей и замены URL:

export interface IGroup { _id?: string; // Уникальный ID id: string; // Конфигурация: включено или нет enable: boolean; // Тип type: 'custom' | 'official'; // Прочие конфигурации config?: IGroupConfig; // Форма rawConfig?: string; // Время обновления updateAt?: number; } export interface IGroupConfig { // Уникальный ID id: number; // Имя расширения name: string; // Значок расширения ico?: string; // Версия расширения version?: string; // Описание расширения description?: string; // Путь сопоставления по умолчанию reg: string; // Предскрипт prevJS: string; // Функция группировки расширения groups: IRun[]; // Статус публикации status?: string; // Примеры examples?: string[]; } export interface IRun { // Возможность функции fn: string; // Дополнительные параметры props: IRunProps; } export interface IIds { // Параметры Ids id: string; // Путь параметров attributes?: string[]; // Тип, возможно видео type?: string; // Описание изображения alt?: string; // Правила замены URL изображений replaceUrlRules?: IReplaceUrlRule[]; // Правила фильтрации URL изображений filterUrlRules?: IReplaceUrlRule[]; // Параметры для получения имён изображений imageNameAttributes?: string[]; } export interface IReplaceUrlRule { // Regex замены pattern: string // Частичное/полное совпадение regex flags?: string // Значение замены replaceValue?: string } export interface IRunProps { // Исходный объект, по умолчанию document.querySelectorAll, возвращает итерируемый массив source?: string; // Параметры Ids ids: IIds[]; // Имя группы groupName: string; // Индекс группы groupIndex: number; }

Следующие шаги

Обновлено