// ==UserScript==
// @name 京东快捷试用脚本
// @namespace https://blog.cuteribs.com/
// @version 0.20
// @description 一键申请试用
// @author cuteribs
// @match *://try.jd.com/
// @match *://try.jd.com/activity/getActivityList*
// @grant GM.xmlHttpRequest
// @icon https://www.jd.com/favicon.ico
// @downloadURL https://update.greasyfork.icu/scripts/370643/%E4%BA%AC%E4%B8%9C%E5%BF%AB%E6%8D%B7%E8%AF%95%E7%94%A8%E8%84%9A%E6%9C%AC.user.js
// @updateURL https://update.greasyfork.icu/scripts/370643/%E4%BA%AC%E4%B8%9C%E5%BF%AB%E6%8D%B7%E8%AF%95%E7%94%A8%E8%84%9A%E6%9C%AC.meta.js
// ==/UserScript==
(function() {
'use strict';
// 强行转到 https
if (location.protocol === 'http:') {
location.assign(location.href.replace('http:', 'https:'));
}
// 申请试用
const apply = itemId =>
new Promise(resolve => {
const url = `https://try.jd.com/migrate/apply?activityId=${itemId}&source=0`;
$.get(url).done(res => {
switch (res.code) {
case '1':
case '-114':
resolve('已申请');
break;
case '-113':
resolve('操作太快');
break;
case '-125':
follow(itemId).then(r => resolve(r));
break;
}
console.log(res.message);
});
});
// 关注店铺并申请试用
const follow = itemId =>
new Promise(resolve => {
const url = `https://try.jd.com/${itemId}.html`;
$.get(url).done(res => {
const $html = $(res.replace(/
]*>/g, ''));
const vendorId = $html.find('#product-intro').attr('shop_id');
$.get(`https://try.jd.com/migrate/follow?_s=pc&venderId=${vendorId}`).done(res2 => {
if (res2.success) {
apply(itemId).then(r => resolve(r));
}
});
});
});
// 调整申请按钮
const setItem = container => {
const price = parseFloat(container.find('p-price > span').text().substring(1));
if (price < 100) {
container.find('.try-item').css('background-color: #ccc;');
}
const $a = container.find('a.link').remove();
container.find('div.p-img img').wrap(``);
container
.find('div.try-button')
.css('cursor', 'pointer')
.bind('click', e => {
e.preventDefault();
e.cancelBubble = true;
const $button = $(e.target);
const $item = $button.closest('li');
if (!$item.hasClass('applied')) {
const itemId = $item.attr('activity_id');
apply(itemId).then(res => {
if (res) {
$button.text(res);
if (res === '已申请') {
$item.addClass('applied');
}
}
});
}
});
};
setItem($('ul.clearfix'));
const observer = new MutationObserver(records => {
setItem($(records[0].addedNodes[0]));
});
const $panels = $('div.ui-switchable-panel-main div.ui-switchable-panel');
for (let i = 0; i < $panels.length; i++) {
observer.observe($panels[i], {
childList: true
});
}
})();