Scripts intelligents
Les scripts intelligents permettent à PicHound de reconnaître et regrouper automatiquement les images par usage sur n’importe quelle fiche produit, sans tri manuel. Avec 50+ scripts e-commerce intégrés couvrant Taobao, Tmall, JD, Amazon, Shopee, etc., il sépare visuels principaux, SKU, détails et vidéos. Il prend en charge JPEG, PNG, GIF, WEBP, BMP, SVG, AVIF, une UI en 30+ langues, et une licence Lifetime Pro à $13.99 pour 3 activations (illimitées avec un compte Google). Toutes les règles s’exécutent 100 % localement : le premier modèle IA fait environ 100 Mo, puis tout est traité hors ligne avec RMBG-1.4 / MODNet. Les utilisateurs gratuits ont 12 gros lots par jour (10 ou moins restent gratuits) ; passez à Lifetime Pro pour un accès illimité.

Des scripts personnalisés pour n’importe quel site
Lorsqu’un site n’est pas couvert par les scripts intégrés, étendez PicHound avec un modèle JSON personnalisé. Le modèle correspond aux URL via des expressions régulières et extrait les nœuds image/vidéo via sélecteurs DOM ou expressions JavaScript, pour la même expérience de téléchargement groupé que les scripts officiels.
Prérequis
Écrire des scripts personnalisés demande :
- La maîtrise de HTML, JavaScript, CSS et AJAX pour comprendre structure et interfaces de données.
- L’aisance avec Chrome DevTools pour inspecter le DOM, relire les requêtes réseau et déboguer.
- Une solide connaissance des regex pour extraire précisément URL, chemins d’attributs et adresses d’images.
- La capacité à dépanner et itérer les règles quand les pages changent.
📃Exemple de script
Le JSON ci-dessous utilise une fiche 1688 pour montrer comment attribuer visuels principaux, SKU, détails et vidéos à des groupes distincts :
{
"id": 10009,
"name": "1688",
"ico": "https://assets.pichound.app/1688.ico",
"version": "25.1.1",
"description": "Extraire intelligemment images HD et vidéos des fiches produit 1688",
"reg": "detail.1688.com/offer",
"status": "prod",
"tags": [
"ec"
],
"examples": [
"https://detail.1688.com/offer/739240146617.html"
],
"groups": [
{
"fn": "updateGroupByIds",
"props": {
"groupName": "Images principales",
"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": "Détails",
"groupIndex": 2,
"ids": [
{
"id": ".content-detail img",
"attributes": [
"dataset.lazyloadSrc",
"src"
]
}
]
}
},
{
"fn": "updateGroupByIds",
"props": {
"groupName": "Vidéo",
"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"
}
]
}
}
]
}🔑Documentation API
Interfaces TypeScript pour définir règles de regroupement, correspondances de champs et logique de remplacement d’URL :
export interface IGroup {
_id?: string;
// ID unique
id: string;
// Configuration : activé ou non
enable: boolean;
// Type
type: 'custom' | 'official';
// Autres configurations
config?: IGroupConfig;
// Formulaire
rawConfig?: string;
// Date de mise à jour
updateAt?: number;
}
export interface IGroupConfig {
// ID unique
id: number;
// Nom de l'extension
name: string;
// Icône de l'extension
ico?: string;
// Version de l'extension
version?: string;
// Description de l'extension
description?: string;
// Chemin de correspondance par défaut
reg: string;
// Pré-script
prevJS: string;
// Fonction de regroupement de l'extension
groups: IRun[];
// Statut de publication
status?: string;
// Exemples
examples?: string[];
}
export interface IRun {
// Capacité de la fonction
fn: string;
// Paramètres supplémentaires
props: IRunProps;
}
export interface IIds {
// Ids de paramètres
id: string;
// Chemin de paramètres
attributes?: string[];
// Type, éventuellement vidéo
type?: string;
// Informations de description d'image
alt?: string;
// Règles de remplacement d'URL d'image
replaceUrlRules?: IReplaceUrlRule[];
// Règles de filtre d'URL d'image
filterUrlRules?: IReplaceUrlRule[];
// Paramètres pour obtenir les noms d'images
imageNameAttributes?: string[];
}
export interface IReplaceUrlRule {
// Regex de remplacement
pattern: string
// Correspondance partielle/totale de la regex
flags?: string
// Valeur de remplacement
replaceValue?: string
}
export interface IRunProps {
// Objet source, par défaut document.querySelectorAll, renvoie un tableau itérable
source?: string;
// Ids de paramètres
ids: IIds[];
// Nom du groupe
groupName: string;
// Index du groupe
groupIndex: number;
}