OneTwitt

Скрипт заполнения адресных данных на Алиэкспресс

May 13th, 2020
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.26 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Aliexpress address filler
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author Andronio
  7. // @match ilogisticsaddress.aliexpress.com/addressList.htm*
  8. // @match ilogisticsaddress.aliexpress.ru/addressList.htm*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. /*
  13. Выбираем свою страну: KZ, RU, BY, UA
  14. Область и город так, как написано на страничке адреса
  15. Если область или город не получается, то смотрим код страницы
  16. и ищем свои данные.
  17. Задаем порядок следования ваших данных. Например у меня:
  18. телефон -> адрес -> имя, соответственно у меня порядок
  19. будет 0, 1, 2
  20. */
  21.  
  22. let myIndex = "100000";
  23. let myPhoneCode = "+7";
  24. let myCountry = "KZ";
  25. let myProvince = "oblast";
  26. let myCity = "gorod";
  27.  
  28. let orderPhone = 0;
  29. let orderAddr = 1;
  30. let orderName = 2;
  31.  
  32.  
  33.  
  34. (function () {
  35. 'use strict';
  36.  
  37. var div = document.createElement('div');
  38. div.className = 'myBox';
  39.  
  40. div.innerHTML += `
  41. <input type="text" id="namepass"></br>
  42. <input type="button" id="fillAddr" class="mybutton" value="Заполнить">
  43. `;
  44.  
  45. // Стили
  46. var styles = `
  47. .myBox {
  48. position: fixed;
  49. top: 0;
  50. right: 0;
  51. background: white;
  52. box-shadow: 1px -1px 4px 1px;
  53. max-width: 40%;
  54. max-height: 400px;
  55. padding: 10px 20px;
  56. overflow-y: auto;
  57. overflow-x: hidden;
  58. z-index:9999;
  59. }
  60.  
  61. .mybutton {
  62. display: inline;
  63. padding: 5px 10px;
  64. margin-right:auto;
  65. cursor:pointer;
  66. }`
  67.  
  68. var styleSheet = document.createElement("style")
  69. styleSheet.type = "text/css"
  70. styleSheet.innerText = styles
  71. document.head.append(styleSheet)
  72. document.body.append(div);
  73.  
  74. let mybutton2 = document.getElementById("fillAddr");
  75. mybutton2.addEventListener('click', fillAddrFunc);
  76. let mytext = document.getElementById("namepass");
  77. mytext.addEventListener('keydown', event => {
  78. if (event.keyCode == "13") {
  79. document.getElementById('fillAddr').click();
  80. }
  81. });
  82. mytext.focus();
  83. })();
  84.  
  85.  
  86. let currMode = 0;
  87. let myTemp = "";
  88.  
  89. // Функция заполения адреса
  90. function fillAddrFunc() {
  91.  
  92. let elemCountry = document.querySelector('select[name="country"]');
  93. let elemProvinceSelect = document.querySelector('.sa-province-wrapper > select');
  94. let elemProvinceInput = document.querySelector('.sa-province-wrapper > input');
  95. let elemCitySelect = document.querySelector('.sa-city-wrapper > select');
  96. let elemCityInput = document.querySelector('.sa-city-wrapper > input');
  97.  
  98. switch(currMode) {
  99. case 0:
  100. let namepass = document.getElementById("namepass");
  101. let mass;
  102.  
  103. if (namepass.value == "") return alert("Нет данных");
  104. if (/.+\t.+\t.+/.test(namepass.value)) {
  105. mass = namepass.value.split('\t');
  106. } else if (/.+:.+:.+/.test(namepass.value)) {
  107. mass = namepass.value.split(':');
  108. } else {
  109. namepass.value = "";
  110. return alert("Неправильный формат");
  111. }
  112.  
  113. document.querySelector('input[name="contactPerson"]').value = mass[orderName];
  114. document.querySelector('input[name="address"]').value = mass[orderAddr];
  115. document.querySelector('input[name="zip"]').value = myIndex;
  116. document.querySelector('input[name="mobileNo"]').value = mass[orderPhone];
  117. elemCountry.value = myCountry;
  118. myTemp = elemProvinceSelect.options[1].text;
  119. elemCountry.dispatchEvent(new Event("change"));
  120. currMode = 1;
  121. return setTimeout(fillAddrFunc, 200);
  122. break;
  123. case 1:
  124. if (elemProvinceSelect.options[1].text == myTemp && myCountry != "BY")
  125. return setTimeout(fillAddrFunc, 200);
  126. if (myCountry == "BY") {
  127. elemProvinceInput.value = myProvince;
  128. } else {
  129. elemProvinceSelect.value = myProvince;
  130. elemProvinceSelect.dispatchEvent(new Event("change"));
  131. }
  132. currMode = 2;
  133. return setTimeout(fillAddrFunc, 200);
  134. break;
  135. case 2:
  136. if (elemCitySelect.length == 0 && myCountry != "BY")
  137. return setTimeout(fillAddrFunc, 200);
  138. if (myCountry == "BY") {
  139. elemCityInput.value = myCity;
  140. } else {
  141. elemCitySelect.value = myCity;
  142. elemCitySelect.dispatchEvent(new Event("change"));
  143. }
  144. currMode = 3;
  145. return setTimeout(fillAddrFunc, 200);
  146. break;
  147. case 3:
  148. document.querySelector('input[name="phoneCountry"]').value = myPhoneCode;
  149. currMode = 0;
  150. document.querySelector('.sa-confirm').click();
  151. break;
  152. default:
  153. alert("Ошибка в программе");
  154. }
  155. }
Add Comment
Please, Sign In to add comment