Dengar's Blog Logo

Dengar's blog...
We will see what I post, probably will be some random tutorials

Wednesday, 9 November 2016

list of all eBay categories and eBay category ids

it's strange that a company like eBay doesn't make it easy for sellers to get the resources they need. have you tried getting a complete list of all eBay categories? maybe with the eBay category tree? - you will find that there's not a convenient download location, albeit there should be!

the "trick" so i've learned is to get it yourself.

here is a very short python script that will get your categories:

#! /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")



the above will then create a tab delimited text file named 'eBay_categories.tsv'.
please note you will need both the "requests" and the "xmltodict" modules. they can be easily obtained using pypi. this code is python 3

Friday, 8 January 2016

why is mac osx is deliberately awkward? and why doesn't somebody go and hurt mac osx developers?

things that are really, really f*cking cr*p in osx:
  • non standard keyboard shortcuts
    having used windows, apple macintosh (many years ago) and linux systems for most of my life and used certain standard keyboard shortcut combinations (ctrl+x, ctrl+c, return, delete or backspace), it is infuriating to see that mac at some point must have thought that it's wise to deviate from everyone else and therefore make their computers more difficult to use.

  • there is no standard programme to open archives - not even zip
    the standard is to unzip an archive. other than in the command line, there doesn't seem to be a way of looking what's inside a zip file. you have to extract it, then delete it. pointless.
    not only that, but zip is really the only thing supported, so you end up installing a different archive manager for tar balls, rar, 7z or any other files.

  • the decision to not support ntfs or fat32 or other file systems out of the box, but just their own journaling file system and exfat

  • you cannot cut and paste in the file browser "finder". wtf??!!
this list will grow over time