123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- # -*- 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))
|