Projetos

Warframe Market Sniper REST API

Código-fonte que realiza o cruzamento de dados e a filtragem de atividade dos usuários:

import requests

def buscar_vendedores_v2(item_slug):
    url = f"https://api.warframe.market/v2/orders/item/{item_slug}"
    headers = {
        'Platform': 'pc',
        'Crossplay': 'true',
        'Language': 'en'
    }
    
    try:
        resposta = requests.get(url, headers=headers, timeout=10)
    except requests.exceptions.RequestException:
        return {}

    if resposta.status_code != 200:
        return {}

    ordens = resposta.json().get('data', [])
    vendedores = {}
    
    for ordem in ordens:
        if ordem.get('type') == 'sell':
            user = ordem.get('user', {})
            status = user.get('status')
            
            if status in ['ingame', 'online']:
                username = user.get('ingameName') or user.get('ingame_name')
                preco = ordem.get('platinum')
                
                if username and preco:
                    if username not in vendedores or preco < vendedores[username]:
                        vendedores[username] = preco
                
    return vendedores

def buscar_multiplos_itens(*lista_slugs):
    dados_por_item = {}
    
    for slug in lista_slugs:
        vendedores = buscar_vendedores_v2(slug)
        if not vendedores:
            return
        dados_por_item[slug] = vendedores

    # Interseção de conjuntos para encontrar o vendedor perfeito
    conjuntos_usuarios = [set(vendedores.keys()) for vendedores in dados_por_item.values()]
    usuarios_em_comum = set.intersection(*conjuntos_usuarios)
    
    if not usuarios_em_comum:
        return

    for user in usuarios_em_comum:
        total_platina = 0
        print(f"\n👤 Vendedor: {user}")
        
        for slug in lista_slugs:
            preco_item = dados_por_item[slug][user]
            total_platina += preco_item
            print(f"   • {slug}: {preco_item}p")
            
        print(f"   💰 Custo total estimado: {total_platina}p")

if __name__ == "__main__":
    buscar_multiplos_itens(
        "glaive_prime_blueprint",
        "glaive_prime_disc",
        "glaive_prime_blade"
    )
Rolar para cima