Amazon Automation

Automations for Amazon.

当前为 2018-10-29 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Amazon Automation
  3. // @namespace https://gf.qytechs.cn/users/222319
  4. // @version 1.4.37
  5. // @date 2018-10-30
  6. // @description Automations for Amazon.
  7. // @author Explisam <explisam@gmail.com>
  8. // @compatible chrome
  9. // @compatible firefox
  10. // @compatible opera
  11. // @compatible safari
  12. // @license MIT License <https://opensource.org/licenses/MIT>
  13. // @include *://*.amazon.co*/*
  14. // @grant GM_addStyle
  15. // @run-at document-idle
  16. // ==/UserScript==
  17.  
  18. (function() {
  19.  
  20. const ListContainer = document.getElementById("wl-list-collaborators");
  21. const CartContainer = document.getElementById('sc-active-cart');
  22. const SaveContainer = document.getElementById('sc-saved-cart');
  23.  
  24. if (ListContainer) {
  25. ListPolymer();
  26. }
  27.  
  28. if (CartContainer) {
  29. CartPolymer();
  30. }
  31.  
  32. if (SaveContainer) {
  33. SavePolymer();
  34. }
  35.  
  36. function polymerBuild(id, float, margin, style, action, text, host) {
  37. var buttonDec = document.createElement("span");
  38. buttonDec.className = "a-declarative";
  39. buttonDec.id = id;
  40. buttonDec.addEventListener("click", action, false);
  41.  
  42. if (float) {
  43. buttonDec.style.float = float;
  44. }
  45.  
  46. if (margin) {
  47. buttonDec.style.marginBottom = margin;
  48. buttonDec.style.display = "block";
  49. }
  50.  
  51. var buttonPab = document.createElement("span");
  52. buttonPab.style.width = "100%";
  53. buttonPab.className = "a-button a-button-normal a-button-primary " + style;
  54.  
  55. var buttonInn = document.createElement("span");
  56. buttonInn.className = "a-button-inner";
  57.  
  58. var button = document.createElement("span");
  59. button.appendChild(document.createTextNode(text));
  60. button.className = "a-button-text";
  61. button.role = "button";
  62.  
  63. buttonDec.appendChild(buttonPab);
  64. buttonPab.appendChild(buttonInn);
  65. buttonInn.appendChild(button);
  66. host.appendChild(buttonDec);
  67.  
  68. return buttonDec;
  69. }
  70.  
  71. function ListPolymer() {
  72. var checkdi = document.getElementById('amazonAutoCAd');
  73. var checkli = document.getElementById("g-items").querySelectorAll('[data-action=add-to-cart]');
  74.  
  75. if (!checkdi && checkli[0]) {
  76. var button = polymerBuild("amazonAutoCAd", "right", undefined, "wl-info-aa_add_to_cart", AddList, "Add List to Cart", ListContainer)
  77. var referenceNode = ListContainer.querySelector('.aok-inline-block');
  78. referenceNode.parentNode.insertBefore(button, referenceNode.nextSibling);
  79. }
  80. }
  81.  
  82. function CartPolymer() {
  83. var checkdi = document.getElementById('amazonAutoCDt');
  84. var checkli = CartContainer.querySelectorAll('*[name^="submit.delete"]');
  85.  
  86. if (!checkdi && checkli[0]) {
  87. var button = polymerBuild("amazonAutoCDt", undefined, "20px", "a-row", DeleteCart, "Delete all items", CartContainer)
  88. var referenceNode = document.getElementById('sc-active-cart');
  89. referenceNode.insertBefore(button, referenceNode.firstChild);
  90. }
  91. }
  92.  
  93. function SavePolymer() {
  94. var checkdi = document.getElementById('amazonAutoCSv');
  95. var checkli = SaveContainer.querySelectorAll('*[name^="submit.delete"]');
  96.  
  97. if (!checkdi && checkli[0]) {
  98. var button = polymerBuild("amazonAutoCSv", undefined, "20px", "a-row", DeleteSave, "Delete all saved", CartContainer)
  99. var referenceNode = document.getElementById('sc-saved-cart');
  100. referenceNode.insertBefore(button, referenceNode.firstChild);
  101. }
  102. }
  103.  
  104. function getRex(name) {
  105. return document.getElementById(name).getElementsByTagName('span')[0].getElementsByTagName('span')[0].getElementsByTagName('span')[0];
  106. }
  107.  
  108. var ListPass;
  109. var ListLength;
  110. var ListTimer;
  111.  
  112. function AddList(zEvent) {
  113. if (ListPass) {
  114. return;
  115. }
  116.  
  117. var addObj = document.getElementById('amazonAutoCAd');
  118. addObj.disabled = "disabled";
  119. ListPass = true;
  120.  
  121. ListLength = document.getElementById("g-items").querySelectorAll('[data-action=add-to-cart]').length;
  122.  
  123. ListTimer = window.setInterval(function() {
  124. var listButtons = document.getElementById("g-items").querySelectorAll('[data-action=add-to-cart]');
  125.  
  126. if (listButtons[0]) {
  127. listButtons[0].click();
  128. getRex('amazonAutoCAd').innerText = "Added " + (ListLength - listButtons.length + 1) + " items..";
  129. } else {
  130. getRex('amazonAutoCAd').innerText = "Added " + ListLength + " items to cart";
  131. window.clearInterval(ListTimer);
  132. }
  133. }, 500);
  134. }
  135.  
  136. var CartPass;
  137.  
  138. function DeleteCart(zEvent) {
  139. if (CartPass) {
  140. return;
  141. }
  142.  
  143. var cartLength = CartContainer.querySelectorAll('*[name^="submit.delete"]').length;
  144. var cartObj = document.getElementById('amazonAutoCDt');
  145. cartObj.disabled = "disabled";
  146. CartPass = true;
  147.  
  148. var cartTimer = window.setInterval(function() {
  149. var listButtons = CartContainer.querySelectorAll('*[name^="submit.delete"]');
  150.  
  151. if (listButtons[0] && cartLength == listButtons.length) {
  152. listButtons[0].click();
  153.  
  154. cartLength = listButtons.length - 1;
  155. getRex('amazonAutoCDt').innerText = cartLength + " items left..";
  156. } else if (!listButtons[0]) {
  157. cartObj.parentNode.removeChild(cartObj);
  158. window.clearInterval(cartTimer);
  159. }
  160. }, 500);
  161. }
  162.  
  163. var SavePass;
  164.  
  165. function DeleteSave(zEvent) {
  166. if (SavePass) {
  167. return;
  168. }
  169.  
  170. var saveLength = SaveContainer.querySelectorAll('*[name^="submit.delete"]').length;
  171. var saveObj = document.getElementById('amazonAutoCSv');
  172. saveObj.disabled = "disabled";
  173. SavePass = true;
  174.  
  175. var saveTimer = window.setInterval(function() {
  176. var listButtons = SaveContainer.querySelectorAll('*[name^="submit.delete"]');
  177.  
  178. if (listButtons[0] && saveLength == listButtons.length) {
  179. listButtons[0].click();
  180.  
  181. saveLength = listButtons.length - 1;
  182. getRex('amazonAutoCSv').innerText = saveLength + " items left..";
  183. } else if (!listButtons[0]) {
  184. saveObj.parentNode.removeChild(saveObj);
  185. window.clearInterval(saveTimer);
  186. }
  187. }, 500);
  188. }
  189. })();

QingJ © 2025

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