#! /usr/bin/env python
import tools as t
import xmltodict as xml
import requests
url = 'http://open.api.ebay.com/Shopping?callname=GetCategoryInfo&appid={}&siteid={}&CategoryID={}&version=729&IncludeSelector=ChildCategories'
app_id = 'XXXX' #get your own eBay app id
site_id = '3' # 3 is UK
to_get = [-1] # start at the top
done = []
categories = {}
if __name__ == "__main__":
while len(to_get) > 0:
cid = to_get.pop()
re = requests.get(url.format(app_id, site_id, cid))
root = xml.parse(re.text)
cats = root['GetCategoryInfoResponse']['CategoryArray']['Category']
for cat in cats:
if cat['CategoryID'] not in categories:
print(cat.get('CategoryName', 0))
c = {'category_id': cat.get('CategoryID', 0),
'category_level': cat.get('CategoryLevel', 0),
'category_name': cat.get('CategoryName', 0),
'category_parent_id': cat.get('CategoryParentID', 0),
'leaf_category': cat.get('LeafCategory', 0),
'category_name_path': cat.get('CategoryNamePath', 0)}
categories[cat['CategoryID']] = c
done.append(cid)
if cat['CategoryID'] not in done and cat['LeafCategory'] == 'false' :
to_get.append(cat['CategoryID'])
with open('eBay_categories.tsv', 'w', encoding="utf-8") as of:
of.write("category_id\tcategory_level\tcategory_name\tcategory_parent_id\tleaf_category\tCategoryNamePath\n")
for k,v in categories.items():
of.write(str(v['category_id']) + "\t" + str(v['category_level']) + "\t" + str(v['category_name']) + "\t" + str(v['category_parent_id']) + "\t" + str(v['leaf_category']) + "\t" + str(v['category_name_path']) + "\n")
Labels: categories, ebay, python