快手小店库

自用

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/454059/1111652/%E5%BF%AB%E6%89%8B%E5%B0%8F%E5%BA%97%E5%BA%93.js

  1. // ==UserScript==
  2. // @name 快手小店库
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.5
  5. // @description 自用
  6. // @author Mr Liu
  7. // @match *
  8. // @grant none
  9. // ==/UserScript==
  10. function copy() {
  11. let a = ''
  12. for (let i = 0; i < $('.ant-select-selection__choice').length; i++) {
  13. let value = $('.ant-select-selection__choice').eq(i).text().replace(/[-]/g, "\t")
  14. a += value + '\r\n'
  15. }
  16.  
  17. GM_setClipboard(a)
  18. alert('复制成功,共复制' + (a.split("\r\n").length - 1) + '个地区')
  19. }
  20.  
  21. async function getUpdate() {
  22. const e = await fetch("https://s.kwaixiaodian.com/rest/app/tts/ks/express/template/list?offset=0&limit=20&searchUsed=true", {
  23. "method": "GET",
  24. })
  25. const v = await e.json()
  26. if (v.data.total) {
  27. let date = new Date(v.data.content[0].updateTime).toLocaleString().replace(/[/]/g, '-')
  28. return date
  29. }
  30. }
  31.  
  32. function arrangement(area) {//处理手动输入的屏蔽地区
  33. area = area.split("\r\n")
  34. area = [... new Set(area)]//去重
  35. let adr = area.map(e => {
  36. let v = e.split("\t")
  37. return {
  38. province: v[0],
  39. city: v[1] || "",
  40. area: v[2] || ""
  41. }
  42. })
  43. // area = area.replace(/[,,.。]/g, '、')//替换标点
  44. // area = area.replace(/[\n\r]/g, '、')//替换换行符
  45. // let adr = area.split('、')//变成数组
  46. // adr = adr.filter(function (s) {//去空值
  47. // return s && s.trim();
  48. // });
  49.  
  50. // adr = adr.map(v => v.replace(/(().+())/g, ''))//去括号
  51. return adr
  52. }
  53.  
  54. function getvalue(data, area) {//计算屏蔽id 返回对象{aid:包邮地区,Id:屏蔽地区}
  55. const code = data.map(e => e.code)
  56. let list = [], del_list = [];
  57. list = arrangement(area)
  58. console.log("list", list)
  59. console.log("data", data)
  60. let list1 = list.filter(e => e.area == "" && e.city == "")
  61. console.log("list1", list1)
  62. let id = []
  63. for (let e of list1) {
  64. if (data.some((v) => v.name.includes(e.province))) {
  65. const a = data.find(v => v.name.includes(e.province))
  66. id.push(a.code)
  67. console.log("删除", a)
  68. data.splice(data.indexOf(a), 1)
  69. del_list.push(e)
  70. }
  71. }
  72. if (del_list.length) {
  73. list = list.filter(e => !del_list.includes(e))
  74. del_list = []
  75. }
  76. let list2 = list.filter(e => e.area == "" && e.city != "")
  77. console.log("id", id)
  78. console.log("list1", list1)
  79. console.log("list", list)
  80. console.log("data", data)
  81. console.log(2222222222222222222)
  82.  
  83. let data_children = data.map(e => e.children).flat()//把市提取出来
  84. console.log("data_children", data_children)
  85. console.log("list2", list2)
  86. for (let e of list2) {
  87. if (data_children.some(v => v.name.includes(e.city))) {
  88. const a = data_children.find(v => v.name.includes(e.city))
  89. id.push(a.code)
  90. console.log("删除", a)
  91. data_children.splice(data_children.indexOf(a), 1)
  92. del_list.push(e)
  93. }
  94. }
  95. if (del_list.length) {
  96. list = list.filter(e => !del_list.includes(e))
  97. del_list = []
  98. }
  99. let list3 = list.filter(e => e.area != "")
  100. console.log("id", id)
  101. console.log("list2", list2)
  102. console.log("list", list)
  103. console.log("data_children", data_children)
  104.  
  105. console.log(33333333333333333)
  106. let data_children_children = data_children.map(e => e.children).flat()//把市提取出来
  107. console.log("data_children", data_children)
  108. console.log("list3", list3)
  109. for (let e of list3) {
  110. if (data_children_children.some(v => v.name.includes(e.area))) {
  111. const a = data_children_children.find(v => v.name.includes(e.area) && data.find(r => r.children.find(t => t.children.find(y => y == v))).name.includes(e.province))
  112. if (a) {
  113. id.push(a.code)
  114. console.log("删除", a)
  115. data_children_children.splice(data_children_children.indexOf(a), 1)
  116. del_list.push(e)
  117. }
  118. } else if (["区", "县", "市"].includes(e.area.slice(-1))) {
  119. const b = data.find(v => v.name.includes(e.province))
  120. const c = b && b.children.find(v => v.name.includes(e.city))
  121. const a = c && c.children.find(v => v.name.includes(e.area.slice(0, -1)))
  122. if (a) {
  123. id.push(a.code)
  124. console.log("删除111111111111111111", a)
  125. data_children_children.splice(data_children_children.indexOf(a), 1)
  126. del_list.push(e)
  127. }
  128. }
  129. }
  130. if (del_list.length) {
  131. list = list.filter(e => !del_list.includes(e))
  132. del_list = []
  133. }
  134. console.log("id", id)
  135. console.log("list3", list2)
  136. console.log("list", list)
  137. console.log("data_children_children", data_children_children)
  138.  
  139. let aid = code.filter(e => ![...new Set(id.map(v => v.slice(0, 2)))].includes(e))
  140. console.log("aid", aid)
  141.  
  142. return {
  143. 'aid': aid,
  144. 'Id': id,
  145. 'adr': list
  146. }
  147.  
  148. }
  149.  
  150. async function save() {
  151. let area = prompt('输入要屏蔽的地区')
  152. if (area) {
  153. let value = getvalue(await getData(), area)
  154. if (!value.adr.length) {
  155. console.log('全部添加完成')
  156. if (confirm('已匹配所有地区,点击确定开始保存')) {
  157. go(value)
  158. }
  159. } else {
  160. let data = String(value.adr.map(e => e.province + "\t" + e.city + "\t" + e.area + "\r\n")).replace(/[,]/g, "")
  161. console.log(data)
  162. GM_setClipboard(data)
  163. if (confirm('未匹配成功的地区:\n' + data + '\n点击确定开始保存')) {
  164. go(value)
  165. }
  166. }
  167.  
  168. }
  169. async function go(value) {
  170. let key = await getKey()
  171. let cookie = await getCookie(key)
  172. let detail = await get_detail(cookie, key)
  173. fet(cookie, key, detail, value)
  174. }
  175. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址