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