示例#1
0
        def _getItemList(data):
            logging.info("--------- response start -------------")
            items = data["items_get_response"]["items"]["item"]
#            items = [{"num_iid":"9257172491"}]
            for index, item in enumerate(items):
                p = {
                    "method" : "taobao.item.get",
                    "nick" : nickname,
                    "num_iid" : item["num_iid"],
                    "fields" : ",".join(fields2)
                    }

                if index == len(items) - 1 : tmp = TaoBao(p, callback = _getLastItemDetail)
                else :tmp = TaoBao(p, callback = _getItemDetail)
                tmp.fetch()
示例#2
0
    def _by_nickname(self, nickname, page):
        page_size = 50

        fields1 = ["num_iid", "title", "nick", "pic_url", "cid", "price", "type", "delist_time", "post_fee"]
        fields2 = ["num_iid", "title", "nick", "type", "props_name",
                  "cid", "seller_cids", "props", "pic_url", "num", "valid_thru", "list_time",
                  "delist_time", "stuff_status", "price", "post_fee", "express_fee", "ems_fee",
                  "has_discount", "freight_payer", "has_invoice", "has_warranty", "modified",
                  "approve_status", "sell_promise", "desc", "item_img", "prop_img", "has_showcase"]
        params1 = dict(
                    method = 'taobao.items.get',
                    nicks = nickname,
                    fields = ",".join(fields1),
                    page_size = page_size,
                    page_no = page
                    )

        def _getItemDetail(data):
            try:
                info = data["item_get_response"]["item"]
                try:
                    t = DBSession.query(Item).filter(Item.num_iid == info["num_iid"]).one()
                    for f in fields2:
                        if f in ["delist_time", "list_time", "modified", "created"] :
                            setattr(t, f, dt.strptime(info[f], "%Y-%m-%d %H:%M:%S"))
                        elif f == "item_img" :
                            if info["item_imgs"]: setattr(t, f, "|".join([img["url"] for img in info["item_imgs"]["item_img"]]))
                        elif f == "prop_img":
                            if info["item_imgs"]: setattr(t, f, "|".join([img["url"] for img in info["prop_imgs"]["prop_img"]]))
                        else:
                            setattr(t, f, info[f])
                except:
                    params = {}
                    for f in fields2:
                        if f in ["delist_time", "list_time", "modified", "created"] : params[f] = dt.strptime(info[f], "%Y-%m-%d %H:%M:%S")
                        elif f == "item_img" :
                            if info["item_imgs"]: params[f] = "|".join([img["url"] for img in info["item_imgs"]["item_img"]])
                        elif f == "prop_img":
                            if info["item_imgs"]: params[f] = "|".join([img["url"] for img in info["prop_imgs"]["prop_img"]])
                        else : params[f] = info[f]
                    DBSession.add(Item(**params))
            except:
                logging.error(traceback.print_exc())

        def _getLastItemDetail(data):
            _getItemDetail(data)
            DBSession.commit()
            self.render("admin/taobao_result.html")


        def _getItemList(data):
            logging.info("--------- response start -------------")
            items = data["items_get_response"]["items"]["item"]
#            items = [{"num_iid":"9257172491"}]
            for index, item in enumerate(items):
                p = {
                    "method" : "taobao.item.get",
                    "nick" : nickname,
                    "num_iid" : item["num_iid"],
                    "fields" : ",".join(fields2)
                    }

                if index == len(items) - 1 : tmp = TaoBao(p, callback = _getLastItemDetail)
                else :tmp = TaoBao(p, callback = _getItemDetail)
                tmp.fetch()
#                params = {}
#                for f in fields : 
#                    if f == "delist_time" : params[f] = dt.strptime(item[f],"%Y-%m-%d %H:%M:%S")
#                    else : params[f] = item[f]
#                DBSession.add(Item(**params))

#            DBSession.commit()
#            logging.info("\n".join(ids))

        t = TaoBao(params1, callback = _getItemList)
        t.fetch()