Intelligente Skripte
Smart Scripts lassen PicHound Bilder auf jeder Produktseite automatisch nach Zweck erkennen und gruppieren — ohne manuelles Sortieren. Mit 50+ eingebauten E-Commerce-Skripten für Taobao, Tmall, JD, Amazon, Shopee u. a. trennt es Hauptbilder, SKU, Details und Videos. Es unterstützt JPEG, PNG, GIF, WEBP, BMP, SVG, AVIF, eine UI in 30+ Sprachen und eine Lifetime-Pro-Lizenz für $13.99 mit 3 Geräteaktivierungen (unbegrenzt mit Google-Konto). Alle Regeln laufen 100 % lokal: der erste KI-Modell-Download beträgt etwa 100 MB, danach offline mit RMBG-1.4 / MODNet. Kostenlose Nutzer: 12 große Batches pro Tag (≤10 frei); Lifetime Pro für unbegrenzten Zugriff.

Eigene Skripte für jede Site
Wenn eine Zielsite nicht von eingebauten Skripten abgedeckt ist, erweitern Sie PicHound mit einer eigenen JSON-Vorlage. Die Vorlage matcht Seiten-URLs mit regulären Ausdrücken und extrahiert Bild-/Video-Knoten per DOM-Selektoren oder JavaScript-Ausdrücken — gleiches gruppiertes Download-Erlebnis wie bei offiziellen Skripten.
Voraussetzungen
Eigene Skripte erfordern:
- Vertrautheit mit HTML, JavaScript, CSS und AJAX, um Seitenstruktur und Datenschnittstellen zu verstehen.
- Sicheren Umgang mit Chrome DevTools zum Inspizieren von DOM-Knoten, Prüfen von Netzwerkanfragen und Debuggen.
- Solide Regex-Kenntnisse, um URLs, Attributpfade und Bildadressen präzise zu extrahieren.
- Die Fähigkeit, selbst zu debuggen und Regeln zu iterieren, wenn Seiten sich ändern.
📃Skriptbeispiel
Das JSON unten zeigt anhand einer 1688-Produktdetailseite, wie Hauptbilder, SKU, Details und Videos eigenen Gruppen zugewiesen werden:
{
"id": 10009,
"name": "1688",
"ico": "https://assets.pichound.app/1688.ico",
"version": "25.1.1",
"description": "HD-Bilder und Videos intelligent von 1688-Produktdetailseiten extrahieren",
"reg": "detail.1688.com/offer",
"status": "prod",
"tags": [
"ec"
],
"examples": [
"https://detail.1688.com/offer/739240146617.html"
],
"groups": [
{
"fn": "updateGroupByIds",
"props": {
"groupName": "Hauptbilder",
"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": "Details",
"groupIndex": 2,
"ids": [
{
"id": ".content-detail img",
"attributes": [
"dataset.lazyloadSrc",
"src"
]
}
]
}
},
{
"fn": "updateGroupByIds",
"props": {
"groupName": "Video",
"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-Dokumentation
TypeScript-Interfaces für Gruppierungsregeln, Feldzuordnungen und URL-Ersetzung:
export interface IGroup {
_id?: string;
// Eindeutige ID
id: string;
// Konfiguration: aktiviert oder nicht
enable: boolean;
// Typ
type: 'custom' | 'official';
// Weitere Konfigurationen
config?: IGroupConfig;
// Formular
rawConfig?: string;
// Aktualisierungszeit
updateAt?: number;
}
export interface IGroupConfig {
// Eindeutige ID
id: number;
// Erweiterungsname
name: string;
// Erweiterungssymbol
ico?: string;
// Erweiterungsversion
version?: string;
// Erweiterungsbeschreibung
description?: string;
// Standard-Match-Pfad
reg: string;
// Vor-Skript
prevJS: string;
// Gruppierungsfunktion der Erweiterung
groups: IRun[];
// Veröffentlichungsstatus
status?: string;
// Beispiele
examples?: string[];
}
export interface IRun {
// Funktionsfähigkeit
fn: string;
// Zusätzliche Parameter
props: IRunProps;
}
export interface IIds {
// Parameter-Ids
id: string;
// Parameterpfad
attributes?: string[];
// Typ, ggf. Video
type?: string;
// Bildbeschreibungsinformationen
alt?: string;
// Regeln zur Ersetzung von Bild-URLs
replaceUrlRules?: IReplaceUrlRule[];
// Regeln zum Filtern von Bild-URLs
filterUrlRules?: IReplaceUrlRule[];
// Parameter zum Abrufen von Bildnamen
imageNameAttributes?: string[];
}
export interface IReplaceUrlRule {
// Ersetzungs-Regex
pattern: string
// Regex partiell/vollständig
flags?: string
// Ersetzungswert
replaceValue?: string
}
export interface IRunProps {
// Quellobjekt, Standard document.querySelectorAll, gibt iterierbares Array zurück
source?: string;
// Parameter-Ids
ids: IIds[];
// Gruppenname
groupName: string;
// Gruppenindex
groupIndex: number;
}