Blame | Last modification | View Log | RSS feed
from elixir import *from shop2020.model.v1.catalog.impl.DataService import Item, Categoryfrom shop2020.model.v1.catalog.impl import DataServicefrom shop2020.config.client.ConfigClient import ConfigClientfrom shop2020.clients.InventoryClient import InventoryClientfrom shop2020.model.v1.catalog.script import AmazonAsyncScraperimport xlwtfrom datetime import datetimeimport timeconfig_client = ConfigClient()host = config_client.get_property('staging_hostname')amScraper = AmazonAsyncScraper.Products("AKIAII3SGRXBJDPCHSGQ", "B92xTbNBTYygbGs98w01nFQUhbec1pNCkCsKVfpg", "AF6E3O0VE0X4D")DataService.initialize(db_hostname=host)def writeReport():maxNodeLength = 0countItems = 0sheet_iterator = 1wbk = xlwt.Workbook(encoding="UTF-8")sheet = wbk.add_sheet('Browsing Nodes')xstr = lambda s: s or ""heading_xf = xlwt.easyxf('font: bold on; align: wrap off, vert centre, horiz center')excel_integer_format = '0'integer_style = xlwt.XFStyle()integer_style.num_format_str = excel_integer_formatinventory_client = InventoryClient().get_client()fbaAvailableInventorySnapshot = inventory_client.getAllAvailableAmazonFbaItemInventory()for fbaInventoryItem in fbaAvailableInventorySnapshot:if fbaInventoryItem.location==0:sku = 'FBA'+str(fbaInventoryItem.item_id)elif fbaInventoryItem.location==1:sku = 'FBB'+str(fbaInventoryItem.item_id)else:continuenodes = amScraper.get_product_category_for_sku('A21TJRUUN4KGV', sku)countItems+=1if countItems > 10:time.sleep(10)countItems = 0if maxNodeLength < len(nodes):maxNodeLength = len(nodes)sheet.write(sheet_iterator, 0, sku[3:])sheet.write(sheet_iterator, 1, sku)try:it = Item.query.filter_by(id=fbaInventoryItem.item_id).one()category = Category.query.filter_by(id=it.category).one()parent_category = Category.query.filter_by(id=category.parent_category_id).first()sheet.write(sheet_iterator, 2, xstr(it.brand)+" "+xstr(it.model_name)+" "+xstr(it.model_number)+" "+xstr(it.color))sheet.write(sheet_iterator, 3, parent_category.display_name)except:passrow_iterator = 3for node in nodes:row_iterator+=1sheet.write(sheet_iterator, row_iterator, getNodeValue(node))sheet_iterator+=1writeheaders(sheet,heading_xf,maxNodeLength)filename = "/tmp/browsing-node"+str(datetime.now())+".xls"wbk.save(filename)def getNodeValue(node):x = ""for eachNode in node:x+=eachNode+'>'return x[:-1]def writeheaders(sheet,heading_xf,maxNodeLength):sheet.write(0, 0, "Item Id", heading_xf)sheet.write(0, 1, "Amazon Sku", heading_xf)sheet.write(0, 2, "Product Name", heading_xf)sheet.write(0, 3, "Category", heading_xf)for node_header in range(maxNodeLength):sheet.write(0, node_header+4, "Browsing Node "+str(node_header+1), heading_xf)def main():writeReport()if __name__=='__main__':main()