🏠 返回首頁 

Greasy Fork is available in English.

AliExpress.ru сниппет доставки

Отображение вариантов доставки на странице поиска товара

// ==UserScript==
// @name           AliExpress.ru сниппет доставки
// @namespace   aliexpress.ru-delivery-snippet
// @author      smut
// @license MIT
// @description    Отображение вариантов доставки на странице поиска товара
// @match        https://*aliexpress.ru/wholesale?*
// @run-at       document-end
// @version      0.2.1b
// ==/UserScript==
var country_array = [];
country_array.push('RU', 'CN');
var ratio_array = [];
ratio_array.push(81.4, 11.5, 1);
var SnowContainer = document.querySelector(".product-snippet_ProductSnippet__grid__lido9p");
var observer = new MutationObserver(onMutation);
observer.observe(SnowContainer, {
childList: true,
characterData : true,
subtree: false,
attributes : false,
});
var first_load = false;
function onMutation(mutations) {
if (!first_load){
first_load=true;
return;
}
setTimeout(delivery_snippet(),500);
}
onMutation(observer);
function delivery_snippet(){
var product = document.querySelectorAll('.product-snippet_ProductSnippet__container__lido9p');
product.forEach(function(product_card) {
var datapid = product_card.getAttribute('data-product-id');
var data_ad = product_card.getAttribute('data-ad');
var sku_url = product_card.children[0].children[0].getAttribute("href");
var sku = sku_url.match(/\S+sku_id=(\d*)/);
var min_price_rub = product_card.children[0].children[1].children[0].children[2].children[1].children[0].textContent.slice(0, -8);
min_price_rub = parseInt(min_price_rub.replace(/ /g, ''));
if (data_ad == 'ad'){
return;
}
country_array.forEach(function(country) {
req_api('USD',0);
function req_api(tradecurrency,ratio){
var minPrice = Math.floor(min_price_rub/ratio_array[ratio]*100)/100;
var url = 'https://aliexpress.ru/aer-api/v1/product/detail/freight?product_id=';
var payload = '{"productId":' + datapid +',"sendGoodsCountry":"' + country + '","country":"RU","provinceCode":"917477670000000000","cityCode":"917477679070000000","skuId":"'+ sku[1] +'","count":1,"minPrice":' + minPrice +',"maxPrice":990000,"tradeCurrency":"' + tradecurrency + '","displayMultipleFreight":true,"ext":{"p0":"'+ sku[1] +'","p1":"' + minPrice +'","p3":"' + tradecurrency + '","p4":"990000","p5":"0","p7":"{}","hideShipFrom":"false"}}';
var req = new XMLHttpRequest();
req.responseType = 'json';
req.open('POST', url + datapid + '&_bx-v=2.2.3', true);
req.setRequestHeader('Content-Type', 'application/json');
req.send(payload);
req.onreadystatechange = () => {
if (req.readyState === XMLHttpRequest.DONE && req.status === 200) {
var objResponse = req.response;
if (objResponse.from == null && country == "CN" && tradecurrency == 'USD'){
req_api('CNY',1);
return;
}else if (objResponse.from == null && country == "RU" && tradecurrency == 'USD'){
req_api('RUB',2);
return;
}else if(objResponse.from == null){
return;
}
var country_div = document.createElement('div');
var textnode = document.createTextNode(country);
country_div.style.fontWeight = 'bold';
country_div.style.fontSize = '10px';
country_div.appendChild(textnode);
product_card.children[0].children[1].appendChild(country_div);
objResponse.methods.forEach(function(delivery_type) {
var jsonResponse = JSON.stringify(delivery_type);
var delivery_variants = document.createElement('div');
var jsonParsed = JSON.parse(jsonResponse);
var price = jsonParsed.amount.formatted;
if (price == '0,00 руб.'){
price = 'Бесплатно';
}
var textnode = document.createTextNode(jsonParsed.groupName + ': ' + jsonParsed.dateFormat + ' ' + price);
delivery_variants.style.fontSize = '10px';
delivery_variants.appendChild(textnode);
product_card.children[0].children[1].appendChild(delivery_variants);
})
}
};
}
})
})
}
window.addEventListener('load', function() {
delivery_snippet();
}, false);