import requests
import gzip
awin_token = 'bebd7839-013a-434d-a3da-7db2ecefb6b1'
# Try Awin direct feed downloads
advertisers = {
8193: 'JD Sports NL',
16092: 'Foot Locker NL',
77016: 'adidas NL',
13498: 'ASICS NL',
}
print("=== AWIN FEEDS ===")
for adv_id, name in advertisers.items():
url = f'https://productdata.awin.com/datafeed/download/apikey/{awin_token}/language/nl/fid/{adv_id}/columns/aw_deep_link,product_name,brand_name,search_price,ean,merchant_category/format/csv/delimiter/%2C/compression/gzip/'
try:
r = requests.get(url, timeout=20, stream=True)
ct = r.headers.get('Content-Type', '')
print(f'{name} ({adv_id}): HTTP {r.status_code} [{ct}]')
if r.ok:
chunk = r.raw.read(20000)
try:
data = gzip.decompress(chunk)
lines = data.decode('utf-8', errors='replace').split('\n')[:4]
for l in lines:
print(f' {l[:150]}')
except Exception:
text = chunk.decode('utf-8', errors='replace')[:300]
print(f' Raw: {text}')
else:
print(f' Error: {r.text[:200]}')
except Exception as e:
print(f'{name}: ERROR {e}')
print()
# TradeTracker product feed
print("=== TRADETRACKER FEEDS ===")
tt_urls = [
'https://pf.tradetracker.net/?aid=35058&encoding=utf-8&type=json&limit=5&q=sneakers',
'https://pf.tradetracker.net/?aid=35058&encoding=utf-8&type=xml&limit=5&q=sneakers',
]
for url in tt_urls:
try:
r = requests.get(url, timeout=15)
print(f'HTTP {r.status_code}: {url[:80]}')
print(f' {r.text[:500]}')
except Exception as e:
print(f'Error: {e}')
print()
# Try TradeTracker SOAP to get feed list
print("=== TRADETRACKER SOAP ===")
soap_body = '''
35058
bf0b9eef0da6caf55fe614518375280fe5c4ecca
false
nl_NL
false
'''
try:
r = requests.post('https://ws.tradetracker.com/soap/affiliate',
data=soap_body,
headers={'Content-Type': 'text/xml; charset=utf-8', 'SOAPAction': 'authenticate'},
timeout=15)
print(f'Auth: {r.status_code}')
# Extract session from response
import re
session_match = re.search(r']*>(.*?)', r.text, re.DOTALL)
if not session_match:
session_match = re.search(r']*>(.*?)', r.text, re.DOTALL)
if session_match:
print(f'Session/Return: {session_match.group(1)[:100]}')
# Get cookies
cookies = r.cookies
print(f'Cookies: {dict(cookies)}')
# Now get product feeds list using the session
soap2 = '''
product
'''
r2 = requests.post('https://ws.tradetracker.com/soap/affiliate',
data=soap2,
headers={'Content-Type': 'text/xml; charset=utf-8', 'SOAPAction': 'getFeeds'},
cookies=cookies,
timeout=30)
print(f'getFeeds: {r2.status_code}')
# Parse feed names
feed_names = re.findall(r']*>(.*?)', r2.text)
feed_ids = re.findall(r']*>(.*?)', r2.text)
campaign_names = re.findall(r']*>(.*?)', r2.text)
print(f'Found {len(feed_names)} feeds')
for i in range(min(30, len(feed_names))):
fid = feed_ids[i] if i < len(feed_ids) else '?'
cn = campaign_names[i] if i < len(campaign_names) else '?'
print(f' [{fid}] {feed_names[i]} - {cn}')
except Exception as e:
print(f'SOAP Error: {e}')
import traceback
traceback.print_exc()