BUFFXP.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. import requests as req
  2. from PyQt6.QtWidgets import QMessageBox, QTextEdit
  3. class BUFFXP():
  4. def __init__(self, parent=None, title="buff选品", initial_data=None):
  5. super().__init__(parent)
  6. @staticmethod
  7. def get_goods_param_list(self):
  8. non_empty_lists = {
  9. 'category': self.selected_categories,
  10. 'rarity': self.selected_qualities,
  11. 'quality': self.selected_types,
  12. 'exterior': self.selected_appearances,
  13. 'itemset': self.selected_collectibles
  14. }
  15. # 只保留非空的列表
  16. filtered_lists = {k: v for k, v in non_empty_lists.items() if v}
  17. # 如果所有列表都为空,返回空列表
  18. if not filtered_lists:
  19. print('品类、品质、类别、外观、收藏品的筛选条件都为空')
  20. self.search_goods_param_list = [{}]
  21. else:
  22. # 生成所有可能的组合
  23. # 使用itertools.product来生成所有可能的组合
  24. from itertools import product
  25. # 获取所有非空列表的值
  26. values = list(filtered_lists.values())
  27. # 获取所有非空列表的键
  28. keys = list(filtered_lists.keys())
  29. for combination in product(*values):
  30. combination_dict = {keys[i]: combination[i] for i in range(len(keys))}
  31. self.search_goods_param_list.append(combination_dict)
  32. for i in range(len(self.search_goods_param_list)):
  33. self.search_goods_param_list[i]['category_group'] = self.search_goods_param_list[i]['category']
  34. # 遍历search_goods_param_list
  35. for i in range(len(self.search_goods_param_list)):
  36. self.search_goods_param_list[i].update({'game': 'csgo'})
  37. # 判断min_price是否为空
  38. if self.min_price:
  39. self.search_goods_param_list[i]['min_price'] = self.min_price
  40. # 判断max_price是否为空
  41. if self.max_price:
  42. self.search_goods_param_list[i]['max_price'] = self.max_price
  43. # 判断sort_mode是否为空
  44. if self.sort_mode:
  45. if self.sort_mode == '默认':
  46. pass
  47. elif self.sort_mode == '价格升序':
  48. self.search_goods_param_list[i]['sort_by'] = 'price.asc'
  49. elif self.sort_mode == '价格降序':
  50. self.search_goods_param_list[i]['sort_by'] = 'price.desc'
  51. elif self.sort_mode == '在售数量升序':
  52. self.search_goods_param_list[i]['sort_by'] = 'sell_num.desc'
  53. # 判断选品接口每页请求数量是否为空
  54. if self.page_size:
  55. self.search_goods_param_list[i]['page_size'] = self.page_size
  56. # 选品接口每次的page_num 默认100
  57. if self.max_page:
  58. self.search_goods_param_list[i]['page_num'] = self.max_page
  59. print(f"请求网易BUFF商品的接口的入参为:{self.search_goods_param_list}")
  60. @staticmethod
  61. def checkBuffXPParams(self):
  62. # 必填条件,没有则跳出
  63. self.phone_number = self.phone_edit_map["选品"].text()
  64. QMessageBox.information(self, "选品手机号码", f"选品手机号码: {self.phone_number}")
  65. # 判断phone_number是否为空,为空则跳出方法
  66. if not self.phone_number:
  67. QMessageBox.information(self, "选品手机号码", "选品手机号码不能为空")
  68. return False
  69. # 判断选品cookie是否为空,为空则退出方法
  70. self.cookie_text = self.phone_edit_map["选品"].parent().findChild(QTextEdit).toPlainText()
  71. QMessageBox.information(self, "选品Cookie", f"选品Cookie: {self.cookie_text}")
  72. if not self.cookie_text:
  73. QMessageBox.information(self, "选品Cookie", "选品Cookie不能为空")
  74. return False
  75. # 获取勾选中的品类编码信息
  76. self.selected_categories = []
  77. # 获取勾选中的品类信息
  78. self.selected_categories_items = []
  79. for i in range(self.tree_widget.topLevelItemCount()):
  80. item = self.tree_widget.topLevelItem(i)
  81. checkbox = self.tree_widget.itemWidget(item, 0)
  82. if checkbox.isChecked():
  83. category_code = item.text(2)
  84. category_name = item.text(1)
  85. self.selected_categories.append(category_code)
  86. self.selected_categories_items.append(f"{category_code}({category_name})")
  87. if self.selected_categories:
  88. QMessageBox.information(self, "勾选的品类信息",
  89. f"勾选的品类信息: {', '.join(self.selected_categories_items)}")
  90. else:
  91. QMessageBox.information(self, "勾选的品类信息", "没有勾选任何品类信息")
  92. # 获取勾选中的品质编码信息
  93. self.selected_qualities = []
  94. # 获取勾选中的品质信息
  95. self.selected_qualities_items = []
  96. for i in range(self.quality_tree_widget.topLevelItemCount()):
  97. item = self.quality_tree_widget.topLevelItem(i)
  98. checkbox = self.quality_tree_widget.itemWidget(item, 0)
  99. if checkbox.isChecked():
  100. quality_code = item.text(1)
  101. quality_name = item.text(2)
  102. self.selected_qualities.append(quality_code)
  103. self.selected_qualities_items.append(f"{quality_code}({quality_name})")
  104. if self.selected_qualities:
  105. QMessageBox.information(self, "勾选的品质信息",
  106. f"勾选的品质信息: {', '.join(self.selected_qualities_items)}")
  107. else:
  108. QMessageBox.information(self, "勾选的品质信息", "没有勾选任何品质信息")
  109. # 获取勾选中的type编码信息
  110. self.selected_types = []
  111. # 获取勾选中的type信息
  112. self.selected_types_items = []
  113. for i in range(self.type_tree_widget.topLevelItemCount()):
  114. item = self.type_tree_widget.topLevelItem(i)
  115. checkbox = self.type_tree_widget.itemWidget(item, 0)
  116. if checkbox.isChecked():
  117. type_code = item.text(1)
  118. type_name = item.text(2)
  119. self.selected_types.append(type_code)
  120. self.selected_types_items.append(f"{type_code}({type_name})")
  121. if self.selected_types:
  122. QMessageBox.information(self, "勾选的类别信息", f"勾选的类别信息: {', '.join(self.selected_types_items)}")
  123. else:
  124. QMessageBox.information(self, "勾选的类别信息", "没有勾选任何类别信息")
  125. # 获取勾选中的外观编码信息
  126. self.selected_appearances = []
  127. # 获取勾选中的外观信息
  128. self.selected_appearances_items = []
  129. for i in range(self.appearance_tree_widget.topLevelItemCount()):
  130. item = self.appearance_tree_widget.topLevelItem(i)
  131. checkbox = self.appearance_tree_widget.itemWidget(item, 0)
  132. if checkbox.isChecked():
  133. appearance_code = item.text(1)
  134. appearance_name = item.text(2)
  135. self.selected_appearances.append(appearance_code)
  136. self.selected_appearances_items.append(f"{appearance_code}({appearance_name})")
  137. if self.selected_appearances:
  138. QMessageBox.information(self, "勾选的外观信息",
  139. f"勾选的外观信息: {', '.join(self.selected_appearances_items)}")
  140. else:
  141. QMessageBox.information(self, "勾选的外观信息", "没有勾选任何外观信息")
  142. # 获取勾选中的收藏品编码信息
  143. self.selected_collectibles = []
  144. # 获取勾选中的收藏品信息
  145. self.selected_collectibles_items = []
  146. for i in range(self.collectible_tree_widget.topLevelItemCount()):
  147. item = self.collectible_tree_widget.topLevelItem(i)
  148. checkbox = self.collectible_tree_widget.itemWidget(item, 0)
  149. if checkbox.isChecked():
  150. collectible_code = item.text(1)
  151. collectible_name = item.text(2)
  152. self.selected_collectibles.append(collectible_code)
  153. self.selected_collectibles_items.append(f"{collectible_code}({collectible_name})")
  154. if self.selected_collectibles:
  155. QMessageBox.information(self, "勾选的收藏品信息",
  156. f"勾选的收藏品信息: {', '.join(self.selected_collectibles_items)}")
  157. else:
  158. QMessageBox.information(self, "勾选的收藏品信息", "没有勾选任何收藏品信息")
  159. # 获取选品配置信息
  160. self.min_price = self.min_price_edit.text()
  161. self.max_price = self.max_price_edit.text()
  162. self.sort_mode = self.sort_mode_combo.currentText()
  163. self.stop_condition = self.stop_condition_combo.currentText()
  164. self.success_count = self.success_count_edit.text()
  165. self.scan_count = self.scan_count_edit.text()
  166. self.page_size = self.page_size_edit.text()
  167. self.pause_time = self.pause_time_edit.text()
  168. # 获取选品配置信息选品接口最大请求多少页
  169. self.max_page = self.max_pages_edit.text()
  170. # 获取选品商品参考价调整系数
  171. self.ref_price_adjust = int(self.ref_price_adjust_edit.text())
  172. # 获取选品商品扫货价调整系数
  173. self.sweep_price_adjust = int(self.sweep_price_adjust_edit.text())
  174. QMessageBox.information(self, "选品配置信息",
  175. f"选品最低价: {self.min_price}\n"
  176. f"选品最高价: {self.max_price}\n"
  177. f"选品排序模式: {self.sort_mode}\n"
  178. f"选品停止条件: {self.stop_condition}\n"
  179. f"选品成功数量配置: {self.success_count}\n"
  180. f"选品扫描商品数量: {self.scan_count}\n"
  181. f"选品接口每页请求数量: {self.page_size}\n"
  182. f"选品接口暂停时间(秒): {self.pause_time}\n"
  183. f"选品接口最大请求多少页: {self.max_page}\n"
  184. f"选品商品参考价调整系数%: {self.ref_price_adjust}\n"
  185. f"选品商品扫货价调整系数%: {self.sweep_price_adjust}\n")
  186. return True