| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- import requests as req
- from PyQt5.QtWidgets import QMessageBox, QTextEdit
- import logging
- logging.basicConfig(level=logging.DEBUG, format='%(asctime)s: %(message)s')
- logger = logging.getLogger(__name__)
- class BUFFXP():
- def __init__(self, parent=None, title="buff选品", initial_data=None):
- super().__init__(parent)
- @staticmethod
- def get_goods_param_list(self):
- self.search_goods_param_list = {'game': 'csgo'}
- # self.selected_categories 不为空,category 等于self.selected_categories内的数据用逗号拼接
- if len(self.selected_categories) > 0:
- self.selected_categories = ','.join(self.selected_categories)
- self.search_goods_param_list["category"]=self.selected_categories
- self.search_goods_param_list['category_group'] = self.search_goods_param_list['category']
- if len(self.selected_qualities) > 0:
- self.selected_qualities = ','.join(self.selected_qualities)
- self.search_goods_param_list["rarity"]=self.selected_qualities
- if len(self.selected_types) > 0:
- self.selected_types = ','.join(self.selected_types)
- self.search_goods_param_list["quality"]=self.selected_types
- if len(self.selected_appearances) > 0:
- self.selected_appearances = ','.join(self.selected_appearances)
- self.search_goods_param_list["exterior"]=self.selected_appearances
- if len(self.selected_collectibles) > 0:
- self.selected_collectibles = ','.join(self.selected_collectibles)
- self.search_goods_param_list["itemset"]=self.selected_collectibles
- # self.search_goods_param_list.update({'game': 'csgo'})
- # 判断min_price是否为空
- if self.min_price:
- self.search_goods_param_list['min_price'] = self.min_price
- # 判断max_price是否为空
- if self.max_price:
- self.search_goods_param_list['max_price'] = self.max_price
- # 判断sort_mode是否为空
- if self.sort_mode:
- if self.sort_mode == '默认':
- pass
- elif self.sort_mode == '价格升序':
- self.search_goods_param_list['sort_by'] = 'price.asc'
- elif self.sort_mode == '价格降序':
- self.search_goods_param_list['sort_by'] = 'price.desc'
- elif self.sort_mode == '在售数量升序':
- self.search_goods_param_list['sort_by'] = 'sell_num.desc'
- # 判断选品接口每页请求数量是否为空
- if self.page_size:
- self.search_goods_param_list['page_size'] = self.page_size
- # 选品接口每次的page_num 默认100
- if self.max_page:
- self.search_goods_param_list['page_num'] = self.max_page
- self.detail_logger.debug(f"请求网易BUFF商品的接口的入参为:{self.search_goods_param_list}")
- # non_empty_lists = {
- # 'category': self.selected_categories,
- # 'rarity': self.selected_qualities,
- # 'quality': self.selected_types,
- # 'exterior': self.selected_appearances,
- # 'itemset': self.selected_collectibles
- # }
- # # 只保留非空的列表
- # filtered_lists = {k: v for k, v in non_empty_lists.items() if v}
- # # 如果所有列表都为空,返回空列表
- # if not filtered_lists:
- # logger.debug('品类、品质、类别、外观、收藏品的筛选条件都为空')
- # self.search_goods_param_list = [{}]
- # else:
- # # 生成所有可能的组合
- # # 使用itertools.product来生成所有可能的组合
- # from itertools import product
- #
- # # 获取所有非空列表的值
- # values = list(filtered_lists.values())
- # # 获取所有非空列表的键
- # keys = list(filtered_lists.keys())
- #
- # for combination in product(*values):
- # combination_dict = {keys[i]: combination[i] for i in range(len(keys))}
- # self.search_goods_param_list.append(combination_dict)
- # for i in range(len(self.search_goods_param_list)):
- # #判断self.search_goods_param_list[i] 是否存在category元素
- # if self.search_goods_param_list[i].get('category'):
- # self.search_goods_param_list[i]['category_group'] = self.search_goods_param_list[i]['category']
- # 遍历search_goods_param_list
- # for i in range(len(self.search_goods_param_list)):
- # self.search_goods_param_list[i].update({'game': 'csgo'})
- # # 判断min_price是否为空
- # if self.min_price:
- # self.search_goods_param_list[i]['min_price'] = self.min_price
- # # 判断max_price是否为空
- # if self.max_price:
- # self.search_goods_param_list[i]['max_price'] = self.max_price
- # # 判断sort_mode是否为空
- # if self.sort_mode:
- # if self.sort_mode == '默认':
- # pass
- # elif self.sort_mode == '价格升序':
- # self.search_goods_param_list[i]['sort_by'] = 'price.asc'
- # elif self.sort_mode == '价格降序':
- # self.search_goods_param_list[i]['sort_by'] = 'price.desc'
- # elif self.sort_mode == '在售数量升序':
- # self.search_goods_param_list[i]['sort_by'] = 'sell_num.desc'
- # # 判断选品接口每页请求数量是否为空
- # if self.page_size:
- # self.search_goods_param_list[i]['page_size'] = self.page_size
- # # 选品接口每次的page_num 默认100
- # if self.max_page:
- # self.search_goods_param_list[i]['page_num'] = self.max_page
- # logger.debug(f"请求网易BUFF商品的接口的入参为:{self.search_goods_param_list}")
- # @staticmethod
- # def get_goods_param_list(self):
- # non_empty_lists = {
- # 'category': self.selected_categories,
- # 'rarity': self.selected_qualities,
- # 'quality': self.selected_types,
- # 'exterior': self.selected_appearances,
- # 'itemset': self.selected_collectibles
- # }
- # # 只保留非空的列表
- # filtered_lists = {k: v for k, v in non_empty_lists.items() if v}
- # # 如果所有列表都为空,返回空列表
- # if not filtered_lists:
- # logger.debug('品类、品质、类别、外观、收藏品的筛选条件都为空')
- # self.search_goods_param_list = [{}]
- # else:
- # # 生成所有可能的组合
- # # 使用itertools.product来生成所有可能的组合
- # from itertools import product
- #
- # # 获取所有非空列表的值
- # values = list(filtered_lists.values())
- # # 获取所有非空列表的键
- # keys = list(filtered_lists.keys())
- #
- # for combination in product(*values):
- # combination_dict = {keys[i]: combination[i] for i in range(len(keys))}
- # self.search_goods_param_list.append(combination_dict)
- #
- # for i in range(len(self.search_goods_param_list)):
- # #判断self.search_goods_param_list[i] 是否存在category元素
- # if self.search_goods_param_list[i].get('category'):
- # self.search_goods_param_list[i]['category_group'] = self.search_goods_param_list[i]['category']
- #
- # # 遍历search_goods_param_list
- # for i in range(len(self.search_goods_param_list)):
- # self.search_goods_param_list[i].update({'game': 'csgo'})
- # # 判断min_price是否为空
- # if self.min_price:
- # self.search_goods_param_list[i]['min_price'] = self.min_price
- # # 判断max_price是否为空
- # if self.max_price:
- # self.search_goods_param_list[i]['max_price'] = self.max_price
- # # 判断sort_mode是否为空
- # if self.sort_mode:
- # if self.sort_mode == '默认':
- # pass
- # elif self.sort_mode == '价格升序':
- # self.search_goods_param_list[i]['sort_by'] = 'price.asc'
- # elif self.sort_mode == '价格降序':
- # self.search_goods_param_list[i]['sort_by'] = 'price.desc'
- # elif self.sort_mode == '在售数量升序':
- # self.search_goods_param_list[i]['sort_by'] = 'sell_num.desc'
- # # 判断选品接口每页请求数量是否为空
- # if self.page_size:
- # self.search_goods_param_list[i]['page_size'] = self.page_size
- # # 选品接口每次的page_num 默认100
- # if self.max_page:
- # self.search_goods_param_list[i]['page_num'] = self.max_page
- # logger.debug(f"请求网易BUFF商品的接口的入参为:{self.search_goods_param_list}")
- @staticmethod
- def checkBuffXPParams(self):
- # 必填条件,没有则跳出
- # self.phone_number = self.phone_edit_map["选品"].text()
- # self.detail_logger.debug(f"选品手机号码: {self.phone_number}")
- # 判断phone_number是否为空,为空则跳出方法
- # if not self.phone_number:
- # self.detail_logger.debug("选品手机号码不能为空")
- # return False
- # 判断选品cookie是否为空,为空则退出方法
- self.cookie_text = self.xp_cookie_edit.toPlainText()
- # self.detail_logger.debug(f"选品Cookie: {self.cookie_text}")
- if not self.cookie_text:
- self.detail_logger.debug("选品Cookie不能为空")
- return False
- # 获取勾选中的品类编码信息
- self.selected_categories = []
- # 获取勾选中的品类信息
- # self.selected_categories_items = []
- for i in range(self.tree_widget.topLevelItemCount()):
- item = self.tree_widget.topLevelItem(i)
- checkbox = self.tree_widget.itemWidget(item, 0)
- if checkbox.isChecked():
- category_code = item.text(2)
- # category_name = item.text(1)
- self.selected_categories.append(category_code)
- # self.selected_categories_items.append(f"{category_code}({category_name})")
- if self.selected_categories:
- self.detail_logger.debug(f"勾选的品类信息: {', '.join(self.selected_categories)}")
- else:
- self.detail_logger.debug("没有勾选任何品类信息")
- # 获取勾选中的品质编码信息
- self.selected_qualities = []
- # 获取勾选中的品质信息
- # self.selected_qualities_items = []
- for i in range(self.quality_tree_widget.topLevelItemCount()):
- item = self.quality_tree_widget.topLevelItem(i)
- checkbox = self.quality_tree_widget.itemWidget(item, 0)
- if checkbox.isChecked():
- quality_code = item.text(1)
- quality_name = item.text(2)
- self.selected_qualities.append(quality_code)
- # self.selected_qualities_items.append(f"{quality_code}({quality_name})")
- if self.selected_qualities:
- self.detail_logger.debug(f"勾选的品质信息: {', '.join(self.selected_qualities)}")
- else:
- self.detail_logger.debug("没有勾选任何品质信息")
- # 获取勾选中的type编码信息
- self.selected_types = []
- # 获取勾选中的type信息
- # self.selected_types_items = []
- for i in range(self.type_tree_widget.topLevelItemCount()):
- item = self.type_tree_widget.topLevelItem(i)
- checkbox = self.type_tree_widget.itemWidget(item, 0)
- if checkbox.isChecked():
- type_code = item.text(1)
- type_name = item.text(2)
- self.selected_types.append(type_code)
- # self.selected_types_items.append(f"{type_code}({type_name})")
- if self.selected_types:
- self.detail_logger.debug(f"勾选的类别信息: {', '.join(self.selected_types)}")
- else:
- self.detail_logger.debug("没有勾选任何类别信息")
- # 获取勾选中的外观编码信息
- self.selected_appearances = []
- # 获取勾选中的外观信息
- # self.selected_appearances_items = []
- for i in range(self.appearance_tree_widget.topLevelItemCount()):
- item = self.appearance_tree_widget.topLevelItem(i)
- checkbox = self.appearance_tree_widget.itemWidget(item, 0)
- if checkbox.isChecked():
- appearance_code = item.text(1)
- appearance_name = item.text(2)
- self.selected_appearances.append(appearance_code)
- # self.selected_appearances_items.append(f"{appearance_code}({appearance_name})")
- if self.selected_appearances:
- self.detail_logger.debug(f"勾选的外观信息: {', '.join(self.selected_appearances)}")
- else:
- self.detail_logger.debug("没有勾选任何外观信息")
- # 获取勾选中的收藏品编码信息
- self.selected_collectibles = []
- # 获取勾选中的收藏品信息
- # self.selected_collectibles_items = []
- for i in range(self.collectible_tree_widget.topLevelItemCount()):
- item = self.collectible_tree_widget.topLevelItem(i)
- checkbox = self.collectible_tree_widget.itemWidget(item, 0)
- if checkbox.isChecked():
- collectible_code = item.text(1)
- collectible_name = item.text(2)
- self.selected_collectibles.append(collectible_code)
- # self.selected_collectibles_items.append(f"{collectible_code}({collectible_name})")
- if self.selected_collectibles:
- self.detail_logger.debug(f"勾选的收藏品信息: {', '.join(self.selected_collectibles)}")
- else:
- self.detail_logger.debug("没有勾选任何收藏品信息")
- # 获取选品配置信息
- self.min_price = self.min_price_edit.text()
- self.max_price = self.max_price_edit.text()
- self.sort_mode = self.sort_mode_combo.currentText()
- self.stop_condition = self.stop_condition_combo.currentText()
- self.success_count = self.success_count_edit.text()
- self.scan_count = self.scan_count_edit.text()
- self.page_size = self.page_size_edit.text()
- self.pause_time = self.pause_time_edit.text()
- # 获取选品配置信息选品接口最大请求多少页
- self.max_page = self.max_pages_edit.text()
- # 获取选品商品参考价调整系数
- self.ref_price_adjust = int(self.ref_price_adjust_edit.text())
- # 获取选品商品扫货价调整系数
- self.sweep_price_adjust = int(self.sweep_price_adjust_edit.text())
- # 选品API接口需要短信验证时,下次选品暂停时长(秒)
- self.needed_msg_check_pause_time = self.needed_msg_check_pause_time_edit.text()
- # 选品API接口需要短信验证时,尝试几次后仍异常则退出
- self.needed_msg_check_try_times = self.needed_msg_check_try_times_edit.text()
- # 选品剔除的ids列表
- # self.xp_delete_ids = self.delete_ids_label_edit.text()
- # 从当前文件夹下的xppcids.txt中读取每行数据,并用#号链接
- # 读取文件内容
- with open('xppcids.txt', 'r') as file:
- lines = file.readlines()
- # 去除每行末尾的换行符,并用#号链接
- self.xp_delete_ids = '#'.join(line.strip() for line in lines)
- self.detail_logger.debug(f"选品最低价: {self.min_price}\n"
- f"选品最高价: {self.max_price}\n"
- f"选品排序模式: {self.sort_mode}\n"
- f"选品停止条件: {self.stop_condition}\n"
- f"选品成功数量配置: {self.success_count}\n"
- f"选品扫描商品数量: {self.scan_count}\n"
- f"选品接口每页请求数量: {self.page_size}\n"
- f"选品接口暂停时间(秒): {self.pause_time}\n"
- f"选品接口最大请求多少页: {self.max_page}\n"
- f"选品商品参考价调整系数%: {self.ref_price_adjust}\n"
- f"选品商品扫货价调整系数%: {self.sweep_price_adjust}\n"
- f"选品API接口需要短信验证时,下次选品暂停时长(秒): {self.needed_msg_check_pause_time}\n"
- f"选品API接口需要短信验证时,尝试几次后仍异常则退出: {self.needed_msg_check_try_times}\n"
- f"选品剔除的ids列表: {self.xp_delete_ids}\n")
- return True
|