Integração com a API de Busca por Imagem do Taobao usando Python

Para implementar a funcionalidade de busca de produtos por imagem no Taobao, como a ferramenta "拍立淘", desenvolvedores podem utilizar a API item_search_img. Este conteúdo técnico detalha o processo de integração com Python.

Obtenção de Credenciais de API

Comece registrando-se na plataforma aberta do Taobao para criar uma aplicação. Após o registro, obtenha as chaves de API (app_key e app_secret) necessárias para autenticação.

Upload da Imagem para Servidor

A API requer que a imagem esteja acessível via URL. Utilize o endpoint de upload para enviar imagens locais e obter o URL correspondente.


import requests
import hashlib
import time

def calcular_assinatura(dados, segredo):
    itens_ordenados = sorted(dados.items())
    conteudo = ''.join([f'{chave}{valor}' for chave, valor in itens_ordenados]) + segredo
    return hashlib.md5(conteudo.encode('utf-8')).hexdigest().upper()

def enviar_imagem_para_servidor(chave_app, segredo_app, caminho_arquivo):
    url_base = "https://restapi.taobao.com/router/rest"
    parametros_requisicao = {
        'app_key': chave_app,
        'method': 'taobao.upload.img',
        'format': 'json',
        'v': '2.0',
        'timestamp': int(time.time()),
        'sign_method': 'md5'
    }
    with open(caminho_arquivo, 'rb') as arquivo:
        dados_arquivo = {'file': arquivo}
        parametros_requisicao['sign'] = calcular_assinatura(parametros_requisicao, segredo_app)
        resposta = requests.post(url_base, files=dados_arquivo, params=parametros_requisicao)
        if resposta.status_code == 200:
            conteudo = resposta.json()
            if 'pic_url' in conteudo:
                return conteudo['pic_url']
        return None

# Exemplo de aplicação
chave_exemplo = "minha_chave_app"
segredo_exemplo = "meu_segredo_app"
arquivo_imagem = "imagens/produto.jpg"
url_imagem = enviar_imagem_para_servidor(chave_exemplo, segredo_exemplo, arquivo_imagem)

Execução da Consulta por Imagem

Com o URL da imagem, realize uma solicitação GET ao endponit de busca para recuperar produtos similares.


def buscar_produtos_por_imagem(chave_app, segredo_app, url_imagem, categoria=None, pagina=1):
    url_busca = "https://api.taobao.com/imgsearch/item_search_img.do"
    parametros = {
        'key': chave_app,
        'secret': segredo_app,
        'imgid': url_imagem,
        'cat': categoria if categoria else '',
        'page': pagina
    }
    resposta = requests.get(url_busca, params=parametros)
    if resposta.status_code == 200:
        dados_resposta = resposta.json()
        lista_itens = dados_resposta.get('items', {}).get('item', [])
        for item in lista_itens:
            print(f"Nome do produto: {item['title']}")
            print(f"URL da imagem: {item['pic_url']}")
            print(f"Preço promocional: {item['promotion_price']}")
            print(f"Preço base: {item['price']}")
            print(f"Unidades vendidas: {item['sales']}")
            print(f"Página do produto: {item['detail_url']}")
            print("-" * 30)
    else:
        print(f"Falha na solicitação. Código: {resposta.status_code}")

# Demonstração de uso
buscar_produtos_por_imagem(chave_exemplo, segredo_exemplo, url_imagem)

Estrutura da Resposta da API

A resposta da API é um objeto JSON contendo um array de itens. Cada item inclui atributos como título, preço, vendas e link de detalhes.


[
    {
        "title": "Camiseta de algodão premium para esportes",
        "pic_url": "https://img.alicdn.com/imagens/produto1.jpg",
        "promotion_price": "59.90",
        "price": "79.90",
        "sales": 1500,
        "detail_url": "//item.taobao.com/item.htm?id=123456"
    }
]

Limitações e Recomendações

O desempenho da API depende da qualidade da imagem e da capacidade de reconhecimento visual. Imagens ambíguas ou de baixa resolução podem gerar resultados imprecisso. Assegure-se de cumprir os termos de uso da plataforma.

Tags: Taobao Python API REST busca por imagem e-commerce

Publicado em 6-3 21:24 por Thomas