# -*- codeing = utf-8 -*- # @Time : 2023/2/28 15:51 # @Author : Clown # @File : supplyChainsGoodsInfoControl.py # @Software : PyCharm import pymysql import requests import json def getToken(): url = 'https://cloud.xc-fintech.com/api/v1/login' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'} json_params = {"employee_relation_id":"7008629262119084032"} resp = requests.post(url,headers=headers,json=json_params).json() # print(json.dumps(resp,ensure_ascii=False)) return resp['app_id'],resp['token'] def selectGoodInfoByGoodNo(app_id,token,goods_no): url = 'https://cloud.xc-fintech.com/api/v1/good_centre/goods' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', 'Authorization': token} json_params = {"app_id": app_id, "sell_type": "2", "goods_no": goods_no, "create_time_order": "desc", "current_page": 1, "page_size": 10} resp = requests.post (url, headers=headers, json=json_params).json () good_id = resp['detail'][0]['goods_id'] publish_state = resp['detail'][0]['publish_state'] + 1 try: group_ids = resp['detail'][0]['group_ids'] except: group_ids = '' dict_out = {'goods_id': good_id, 'publish_state': publish_state, 'group_ids': group_ids} return dict_out def selectGoodInfoByGoodId(app_id,token,goods_id): url = 'https://cloud.xc-fintech.com/api/v1/goods_centre/goods/' + goods_id headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', 'Authorization': token, 'Host': 'cloud.xc-fintech.com', 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"', 'Content-Type': 'application/json; charset=UTF-8'} json_params = {"app_id": app_id} resp = requests.post (url, headers=headers, json=json_params).json() dict_out = {'goods_no':resp['goods_no'], 'goods_id':resp['goods_id'], 'name':resp['name'], 'classify_name':resp['classify_name'], 'minunit': '', 'rela_num': 0, 'unit1': '', 'relanum1': 0, 'unit2': '', 'relanum2': 0} spu_unit_list = resp['spu_unit_list'] memo = '' no = 1 for spu_unit in spu_unit_list: if spu_unit['is_min_unit']: dict_out['minunit'] = spu_unit['unit'] dict_out['rela_num'] = spu_unit['rela_num'] else: dict_out[f'unit{no}'] = spu_unit['unit'] dict_out[f'relanum{no}'] = spu_unit['rela_num'] memo =f'【{dict_out[f"relanum{no}"]}{dict_out["minunit"]}=1{dict_out[f"unit{no}"]}】'+memo no += 1 dict_out['memo'] = memo return dict_out def searchGoodsPriceInfo(app_id,token,goods_no,group_ids,min_unit): dict_out = {'minunit_price':'', 'unit1_price':'', 'unit2_price':'', 'memo_price':''} if group_ids != '': shop_window_id = str(group_ids).split(',')[0] url = 'https://cloud.xc-fintech.com/api/v1/goods_centre/shop_window/goods' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', 'Authorization': token, 'Host': 'cloud.xc-fintech.com', 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"', 'Content-Type': 'application/json; charset=UTF-8'} json_params = {"sell_type":2, "goods_no":str(goods_no), "shop_window_id":str(shop_window_id), "current_page":1, "page_size":10, "app_id":app_id} resp = requests.post(url,headers=headers,json=json_params).json() unit_price_list = resp['detail'][0]['unit_price_list'] no = 1 memo = '' for price_info in unit_price_list: min_price = int(price_info['min_price'])/100 unit = price_info['unit'] try: max_price = int(price_info['max_price'])/100 price_range = f'{min_price}~{max_price}元/{unit}' except: price_range = f'{min_price}元/{unit}' if price_info['is_min_unit'] and unit == min_unit: dict_out['minunit_price'] = min_price memo = f'【{price_range}】' + memo else: dict_out[f'unit{no}_price'] = f'{min_price}元/{unit}' no += 1 memo = memo + f'【{price_range}】' dict_out['memo_price'] = memo else: ... return dict_out def searchGoodsInfo(goods_no): try: app_id, token = getToken () dict_out = selectGoodInfoByGoodNo (app_id, token, goods_no) json_out = selectGoodInfoByGoodId (app_id, token, dict_out['goods_id']) json_out['publish_state'] = str(dict_out['publish_state']) price_info = searchGoodsPriceInfo(app_id, token, goods_no, dict_out['group_ids'],json_out['minunit']) json_out['price_info'] = price_info except: json_out = {'goods_no': goods_no, 'goods_id': 'error', 'name': 'error', 'classify_name': 'error', 'minunit': 'error', 'rela_num': 0, 'unit1': 'error', 'relanum1': 0, 'unit2': 'error', 'relanum2': 0, 'memo': 'error', 'publish_state': 1, 'price_info':'error'} return json_out if __name__ == '__main__': goods_no = '7078677777888972800' json_out = searchGoodsInfo(goods_no) print(json.dumps(json_out,ensure_ascii = False))