AliBetterReviews

User script for making Aliexpress reviews easier to browse

  1. // ==UserScript==
  2. // @name AliBetterReviews
  3. // @author kneels & Ido
  4. // @match https://feedback.aliexpress.com/*
  5. // @version 1.2
  6. // @grant none
  7. // @description User script for making Aliexpress reviews easier to browse
  8. // @namespace https://gf.qytechs.cn/users/906149
  9. // ==/UserScript==
  10. var ownerMemberId = -1,
  11. productId = -1;
  12. var withPics = false,
  13. withInfo = false,
  14. withMoreInfo = false,
  15. myCountry = false;
  16. var sortVal = "sortdefault@feedback",
  17. starFilter = "all+Stars",
  18. translate = "+Y+";
  19. var currentPage = 1;
  20. var imagesExpanded = false;
  21.  
  22. function appendNextPage() {
  23. var http = new XMLHttpRequest();
  24. var url = "https://feedback.aliexpress.com/display/productEvaluation.htm";
  25. var params = "v=2&productId=" + productId + "&ownerMemberId=" + ownerMemberId + "&page=" + ++currentPage
  26. + "&withPictures=" + withPics
  27. + "&withAdditionalFeedback=" + withMoreInfo + "&onlyFromMyCountry=" + myCountry
  28. + "&evaSortValue=" + sortVal + "&evaStarFilterValue=" + starFilter + "&translate=" + translate;
  29.  
  30. http.open("POST", url, true);
  31. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  32. http.onreadystatechange = function() {
  33. if (http.readyState == 4 && http.status == 200) {
  34. var tempDiv = document.createElement('div');
  35. tempDiv.innerHTML = http.responseText;
  36. var newFeedbackList = tempDiv.getElementsByClassName('feedback-list-wrap')[0];
  37. if (newFeedbackList.getElementsByClassName('no-feedback').length > 0) {
  38. console.log('no more pages to load');
  39. return;
  40. }
  41. var parent = document.getElementById('transction-feedback');
  42. var beforeThisNode = document.getElementById('complex-pager');
  43. if (imagesExpanded) {
  44. expandAllImages(newFeedbackList);
  45. }
  46. parent.insertBefore(newFeedbackList, beforeThisNode);
  47. }
  48. }
  49. http.send(params);
  50. console.log(http);
  51. }
  52.  
  53. function expandAllImages(doc) {
  54. var photoLists = doc.querySelectorAll('.r-photo-list');
  55. for (var i = 0; i < photoLists.length; ++i) {
  56. var picItems = photoLists[i].querySelectorAll('.pic-view-item');
  57. var html = "";
  58. for (var k = 0; k < picItems.length; ++k) {
  59. var imgUrl = picItems[k].getElementsByTagName('img')[0].src;
  60. html += '<img src="' + imgUrl + '">';
  61. }
  62. photoLists[i].innerHTML = html;
  63. }
  64. }
  65.  
  66. function inIframe() {
  67. try {
  68. return window.self !== window.top;
  69. } catch (e) {
  70. return true;
  71. }
  72. }
  73.  
  74. window.onload = function() {
  75. ownerMemberId = document.getElementById('ownerMemberId').value;
  76. productId = document.getElementById('productId').value;
  77. withPics = document.getElementById('withPictures').value;
  78. withMoreInfo = document.getElementById('withAdditionalFeedback').value;
  79. myCountry = document.getElementById('onlyFromMyCountry').value;
  80. sortVal = document.getElementById('evaSortValue').value;
  81. starFilter = document.getElementById('evaStarFilterValue').value;
  82. translate = document.getElementById('translate').value;
  83.  
  84. var waitTimer = setInterval(function() {
  85. var feedback = document.getElementById('transction-feedback');
  86. if (feedback !== null) {
  87. // Feedback is done loading
  88. clearInterval(waitTimer);
  89.  
  90. var filterList = document.getElementsByClassName('f-filter-list')[0];
  91.  
  92. if (inIframe()) {
  93. var fsButt = document.createElement('button');
  94. fsButt.innerHTML = "Fullscreen";
  95. filterList.appendChild(fsButt);
  96. fsButt.onclick = function() {
  97. var url = "https://feedback.aliexpress.com/display/productEvaluation.htm?v=2&productId="
  98. + productId + "&ownerMemberId=" + ownerMemberId + "&page=1"
  99. + "&withPictures=" + withPics
  100. + "&withAdditionalFeedback=" + withMoreInfo + "&onlyFromMyCountry=" + myCountry
  101. + "&evaSortValue=" + sortVal + "&evaStarFilterValue=" + starFilter + "&translate=" + translate;
  102. window.open(url, '_blank');
  103. };
  104. } else {
  105. var expandButt = document.createElement('button');
  106. expandButt.innerHTML = "Expand All Images";
  107. filterList.appendChild(expandButt);
  108. expandButt.onclick = function() {
  109. if (!imagesExpanded) {
  110. expandAllImages(document);
  111. imagesExpanded = true;
  112. expandButt.disabled = true;
  113. }
  114. };
  115. // endless scrolling
  116. window.onscroll = function(ev) {
  117. if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
  118. appendNextPage();
  119. }
  120. };
  121. }
  122.  
  123. }
  124. }, 500);
  125. };

QingJ © 2025

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