您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已经安装了用户样式管理器,让我安装!)
// ==UserScript==
// @name 省神优惠券,简单易用的淘宝天猫阿里大药房商品优惠券,并且提供同类商品大额优惠券推荐!
// @namespace https://tsr.itwashot.com/
// @version 0.1.3
// @description 简单易用的淘宝天猫阿里大药房优惠券。并提供同类商品大额优惠券推荐。脚本将持续更新,后面陆续支持拼多多,京东等平台。
// @author Kevin Lelf
// @match *://*.taobao.com/*
// @match *://*.tmall.com/*
// @match *://*.liangxinyao.com/*
// @match *://chaoshi.detail.tmall.com/*
// @match *://*.tmall.hk/*
// @connect tsr.itwashot.com
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @require https://cdn.bootcss.com/materialize/1.0.0-rc.2/js/materialize.min.js
// @resource lelf-materialcss https://cdn.jsdelivr.net/gh/lelf2005/cdn@master/material.css?v=20200630
// @run-at document-end
// @grant GM_addStyle
// @grant GM_getResourceText
// ==/UserScript==
(function() {
'use strict';
var $ = $ || window.$;
var materialcss = GM_getResourceText('lelf-materialcss');
GM_addStyle(materialcss);
var apiTBQueryById = 'https://honey-jewelry.com/taobao/getCoupon/';
//var apiTBQueryById = 'http://localhost:8080/getCoupon/';
var tbDetailUrls = ["//item.taobao.com/item.htm","//detail.tmall.com/item.htm", "//chaoshi.detail.tmall.com/item.htm", "//detail.tmall.hk/hk/item.htm","//detail.tmall.hk/item.htm" ];
initCss();
var productId;
if (isTBDetailPage(location.href)) {
productId = window.location.href.split("id=")[1].split('&')[0];
$.get(apiTBQueryById + productId, function(data) {
var htmlCoupon = '';
var htmlSimilarItems = '';
if(data.otherRecommends.length > 0){
for(let i in data.otherRecommends) {
htmlSimilarItems += '<p><a href="'+data.otherRecommends[i].coupon_share_url+'" target="_blank">'+data.otherRecommends[i].coupon_info+'</a></p>';
}
}
if (data.coupon_amount) {
htmlCoupon = '<div><div class="stamp stamp01"><div class="par"><sub class="sign">¥</sub><span>' + data.coupon_amount + '</span><sub>优惠券</sub><p>' + data.coupon_info + '</p></div><div class="copy"><a href="' + data.coupon_share_url + '" target="_blank">领取</a><p>剩余:' + data.coupon_remain_count + '</p></div><i></i></div><div class="similar">类似商品'+htmlSimilarItems+'<p><a id="lelf_rank" class="modal-trigger" href="#lelf_modal_rank">更多大额券...</a></p></div></div>';
} else {
htmlCoupon = '<div><div class="stamp stamp01"><div class="par"><span>暂无</span><p>' + data.coupon_info + '</p></div><div class="copy"><a id="lelf_rank" class="modal-trigger" href="#lelf_modal_rank">同类券</a><p>剩余:' + data.coupon_remain_count + '</p></div><i></i></div><div class="similar">类似商品'+htmlSimilarItems+'<p><a id="lelf_rank" class="modal-trigger" href="#lelf_modal_rank">更多大额券...</a></p></div></div>';
}
//if (data.coupon_amount) {
if (location.href.indexOf('//detail.tmall.') != -1) {
$('.tm-fcs-panel')
.after(htmlCoupon);
} else if (location.href.indexOf('//chaoshi.detail.tmall.') != -1) {
$('.tm-fcs-panel')
.after(htmlCoupon);
} else {
$('ul.tb-meta')
.after(htmlCoupon);
}
//}
$("[id=lelf_rank]").click(function(){
getTopItems();
$('#lelf_modal_rank').modal();
});
})
} else {
var selectorGroup = [];
var locationUrl = location.href;
if ( (locationUrl.indexOf("//list.tmall.com/coudan/search_product.htm") != -1) || (locationUrl.indexOf("//list.tmall.com/search_product.htm") != -1) || (locationUrl.indexOf("//list.tmall.com//search_product.htm") != -1) ) {
selectorGroup.push(".product");
selectorGroup.push(".chaoshi-recommend-list .chaoshi-recommend-item");
} else if ( (locationUrl.indexOf("//s.taobao.com/search") != -1) || (locationUrl.indexOf("//s.taobao.com/list") != -1) ) {
selectorGroup.push(".items .item");
} else if (locationUrl.indexOf("//list.tmall.hk/search_product.htm") != -1) {
selectorGroup.push("#J_ItemList .product");
} else if (document.getElementById('J_ShopSearchResult')) {
selectorGroup.push("#J_ShopSearchResult .item");
}
if (selectorGroup && selectorGroup.length > 0) {
initSelectorGroup(selectorGroup);
initSearchEvent();
doQuery();
}
}
function getTopItems(){
var isAdded = $("#lelf_modal_rank");
if(isAdded.length > 0){
return;
}
var s = ' <div id="lelf_modal_rank" class="modal modal-fixed-footer">'+
' <div class="modal-content">'+
' <h5 class="h5 header" id="itemcat">加载中,请稍等</h5>'+
'<div id="lelf-top-items">'+
'</div>'+
' </div>'+
' <div class="modal-footer">'+
' <a href="#!" class="modal-close waves-effect waves-green btn-flat">关闭</a>'+
' </div>'+
' </div>';
$("body").append(s);
toggleLoader(true);
// $.get('http://localhost:8080/prodQuery/1/1/'+productId+'/20/1', function(data) {
$.get('https://honey-jewelry.com/taobao/prodQuery/1/1/'+productId+'/50/1', function(data) {
var colors = ["lelf-gold","lelf-silver","lelf-orange","lelf-blue"];
var item_color = 0;
$("#itemcat").html("类似商品推荐");
var topItems =data;
var htmlItems = '';
for(var i=0;i<topItems.length;i++){
item_color = i<3?i:3;
var strCoupon ='';
if(topItems[i].coupon.coupon_amount > 0){
strCoupon = '<span class="lelf-ribbon4">'+topItems[i].coupon.coupon_amount+'元券</span>';
}
var str_url = topItems[i].clickUrl;
if(topItems[i].coupon.coupon_share_url){
str_url = topItems[i].coupon.coupon_share_url;
}
htmlItems = htmlItems + '<div class="row">'+
'<div class="col s1">'+
'<div class="lelf-badge-container"><div class="lelf-badge '+colors[item_color]+'">'+
'<div class="lelf-circle"> <div class="h5 strong" style="margin-top:3px;">'+(i+1)+'</div></div></div>'+
'</div>'+
'</div>'+
'<div class="col s11">'+
'<div class="card horizontal">'+
' <div class="card-image">'+
' <img src="'+topItems[i].picUrl+'_200x200.jpg">'+
' </div>'+
' <div class="card-stacked">'+
' <div class="card-content">'+
' <p class="h6">'+topItems[i].title+'</p>'+
' <div style="margin-top:18px;">价格 <span class="h5 red-text"> ¥'+topItems[i].current_price+'</span>'+strCoupon+'</div>'+
' </div>'+
' <div class="card-action">'+
'<div class="btn-flat" style="text-decoration:none;font-size:18px;">30天销售<span class="red-text">'+topItems[i].volume+'</span>件</div>'+
' <a href="'+str_url+'" target="_blank" class="btn waves-effect waves-light red lighten-2" style="text-decoration:none;font-size:20px;float: right;">领券购买</a>'+
' </div>'+
' </div>'+
' </div>'+
'</div>'+
' </div>'
}
$("#lelf-top-items").html(htmlItems);
})
}
function toggleLoader(flag){
if(flag){
var strHtml='<div class="lelf-loader" id="loader"><div class="lelf-dot"></div><div class="lelf-dot"></div><div class="lelf-dot"></div><div class="lelf-dot"></div><div class="lelf-dot"></div></div>';
$("#lelf-top-items").append(strHtml);
}else{
$("#loader").remove();
}
}
function initSelectorGroup(selectorGroup) {
setInterval(function() {
selectorGroup.forEach(function(selector) {
$(selector)
.each(function() {
initQueryItem(this);
});
});
}, 2500);
};
function initSearchEvent() {
$(document)
.on("click", ".boxArea", function() {
var $this = $(this);
if ($this.hasClass("boxQuerying")) {
$this.removeClass("boxQuerying");
} else if ($this.hasClass("boxWaiting")) {
doQueryItem(this);
} else {
$this.addClass("boxQuerying");
}
});
};
function doQuery() {
setInterval(function() {
$(".boxWaiting")
.each(function() {
doQueryItem(this);
});
}, 2800);
};
function initQueryItem(selector) {
var $this = $(selector);
if ($this.hasClass("boxDone")) {
return;
}
$this.addClass("boxDone")
var nid = $this.attr("data-id");
if (!isVailidItemId(nid)) {
nid = $this.attr("data-itemid");
}
if (!isVailidItemId(nid)) {
if ($this.attr("href")) {
nid = location.protocol + $this.attr("href");
} else {
var $a = $this.find("a");
if (!$a.length) {
return;
}
nid = $a.attr("data-nid");
if (!isVailidItemId(nid)) {
if ($a.hasClass("j_ReceiveCoupon") && $a.length > 1) {
nid = location.protocol + $($a[1])
.attr("href");
} else {
nid = location.protocol + $a.attr("href");
}
}
}
}
if (isValidNid(nid)) {
appendQueryHtml($this, nid);
}
};
function appendQueryHtml(selector, nid) {
selector.append('<div class="boxArea boxWaiting" data-nid="' + nid + '"><a class="boxInfo boxInfo-default" title="点击查询">待查询</a></div>');
};
function doQueryItem(selector) {
var $this = $(selector);
$this.removeClass("boxWaiting");
var nid = $this.attr("data-nid");
$.get(apiTBQueryById + nid, function(data) {
if (data.coupon_amount && data.coupon_amount > 0) {
showQueryFound($this, data.coupon_amount);
} else {
showQueryNotFound($this);
}
})
};
function showQueryFound(selector, couponMoney) {
selector.html('<a target="_blank" class="boxInfo boxInfo-find" title="优惠券">有券(减' + couponMoney + '元)</a>');
};
function showQueryNotFound(selector) {
selector.addClass("boxQuerying");
selector.html('<a href="javascript:void(0);" class="boxInfo boxInfo-empty" title="优惠券">暂无优惠</a>');
};
function isTBDetailPage(url) {
for (var i = 0; i < tbDetailUrls.length; i++) {
if (url.indexOf(tbDetailUrls[i]) > 0) {
return true;
}
}
return false;
};
function isVailidItemId(itemId) {
if (!itemId) {
return false;
}
var itemIdInt = parseInt(itemId);
if (itemIdInt == itemId && itemId > 10000) {
return true;
} else {
return false;
}
};
function isValidNid(nid) {
if (!nid) {
return false;
} else if (nid.indexOf('http') >= 0) {
if (isTBDetailPage(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) {
return true;
} else {
return false;
}
} else {
return true;
}
};
function addCss(cssText) {
var acss = document.createElement('style');
acss.textContent = cssText;
var doc = (document.head || document.documentElement);
doc.appendChild(acss);
}
function initCss() {
addCss(`.stamp * {
padding: 0;
margin: 0;
list-style: none;
}
.stamp {
width: 342px;
padding: 0 10px;
margin-top: 5px;
position: relative;
overflow: hidden;
display: inline-block;
}
.stamp:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 10px;
right: 10px;
z-index: -1;
}
.stamp:after {
content: '';
position: absolute;
left: 10px;
top: 10px;
right: 10px;
bottom: 10px;
z-index: -2;
}
.stamp i {
position: absolute;
right: 20%;
bottom: 45px;
height: 190px;
width: 390px;
background-color: rgba(255,255,255,.15);
transform: rotate(-30deg);
}
.stamp .par {
float: left;
padding: 16px 15px;
width: 180px;
border-right: 2px dashed rgba(255,255,255,.3);
text-align: center;
}
.stamp .par p {
color: #fff;
font-size: 16px;
line-height: 21px;
}
.stamp .par span {
font-size: 50px;
color: #fff;
margin-right: 5px;
line-height: 65px;
}
.stamp .par .sign {
font-size: 34px;
}
.stamp .par sub {
position: relative;
top: -5px;
color: rgba(255,255,255,.8);
}
.stamp .copy {
display: inline-block;
padding: 21px 14px;
width: 100px;
font-size: 30px;
color: rgb(255,255,255);
text-align: center;
}
.stamp .copy p {
font-size: 14px;
margin-top: 15px;
}
.stamp .copy a {
color : white;
}
.similar {
display: inline-block;
vertical-align: top;
font-size: 14px;
background: #F39B00;
margin-left: 5px;
margin-top: 5px;
padding: 9px 25px;
color: white;
}
.similar a {
color : white;
}
.stamp01 {
background: #F39B00;
background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 5px, #F39B00 5px);
background-size: 15px 15px;
background-position: 9px 3px;
}
.stamp01:before {
background-color: #F39B00;
}
#tb-cool-area {
border: 1px solid #eee;
margin: 0 auto;
position: relative;
clear: both;
display: none;
}
#tb-cool-area .tb-cool-area-home {
position: absolute;
top: 5px;
right: 10px;
z-index: 10000;
}
#tb-cool-area .tb-cool-area-home a {
cursor: pointer;
color: #515858;
font-size: 10px;
text-decoration: none;
}
#tb-cool-area .tb-cool-area-home a.new-version {
color: #ff0036;
}
#tb-cool-area .tb-cool-area-benefit {
width: 240px;
float: left;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode {
text-align: center;
min-height: 150px;
margin-top: 40px;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode canvas,#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-qrcode img {
margin: 0 auto;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title {
margin-top: 20px;
color: #000;
font-size: 14px;
font-weight: 700;
text-align: center;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-title span {
color: #ff0036;
font-weight: 700;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action {
margin-top: 10px;
text-align: center;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action a {
text-decoration: none;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button {
min-width: 120px;
padding: 0 8px;
line-height: 35px;
color: #fff;
background: #ff0036;
font-size: 13px;
font-weight: 700;
letter-spacing: 1.5px;
margin: 0 auto;
text-align: center;
border-radius: 15px;
display: inline-block;
cursor: pointer;
}
#tb-cool-area .tb-cool-area-benefit .tb-cool-quan-action .tb-cool-quan-button.quan-none {
color: #000;
background: #bec5c5;
}
#tb-cool-area .tb-cool-area-history {
height: 300px;
overflow: hidden;
position: relative;
}
#tb-cool-area .tb-cool-area-history #tb-cool-area-chart,#tb-cool-area .tb-cool-area-history .tb-cool-area-container {
width: 100%;
height: 100%;
}
#tb-cool-area .tb-cool-area-history .tb-cool-history-tip {
position: absolute;
margin: 0;
top: 50%;
left: 50%;
letter-spacing: 1px;
font-size: 15px;
transform: translateX(-50%) translateY(-50%);
}
#tb-cool-area .tb-cool-area-table {
margin-top: 10px;
position: relative;
overflow: hidden;
}
#tb-cool-area .tb-cool-quan-tip {
position: absolute;
margin: 0;
top: 50%;
left: 50%;
letter-spacing: 1px;
font-size: 15px;
opacity: 0;
transform: translateX(-50%) translateY(-50%);
}
#tb-cool-area .tb-cool-quan-tip a {
color: #333;
font-weight: 400;
text-decoration: none;
}
#tb-cool-area .tb-cool-quan-tip a:hover {
color: #ff0036;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table {
width: 100%;
font-size: 14px;
text-align: center;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td {
padding: 4px;
color: #1c2323;
border-top: 1px solid #eee;
border-left: 1px solid #eee;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td span {
color: #ff0036;
font-weight: 700;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table tr td:first-child {
border-left: none;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link {
width: 60px;
line-height: 24px;
font-size: 12px;
background: #ff0036;
text-decoration: none;
display: inline-block;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-enable {
cursor: pointer;
color: #fff;
}
#tb-cool-area .tb-cool-area-table .tb-cool-quan-table .tb-cool-quan-link-disable {
cursor: default;
color: #000;
background: #ccc;
}
#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-tip {
opacity: 1;
}
#tb-cool-area .tb-cool-quan-empty .tb-cool-quan-table {
filter: blur(3px);
-webkit-filter: blur(3px);
-moz-filter: blur(3px);
-ms-filter: blur(3px);
}
.boxArea {
position: absolute;
top: 10px;
left: 5px;
z-index: 9999;
}
.boxWaiting {
cursor: pointer;
}
.boxDone {
position: relative;
}
.boxInfo {
width: auto!important;
height: auto!important;
padding: 6px 8px!important;
font-size: 13px;
color: #fff!important;
border-radius: 16px;
cursor: pointer;
}
.boxInfo,.boxInfo:hover,.boxInfo:visited {
text-decoration: none!important;
}
.boxInfo-default {
background: #3186fd!important;
}
.boxInfo-find {
background: #f54848!important;
}
.boxInfo-empty {
color: #000!important;
background: #ccc!important;
}
.boxQuerying {
opacity: .45;
}
.mui-zebra-module .boxInfo {
font-size: 10px;
}
.import-shangou-itemcell .boxArea,.zebra-ziying-qianggou .boxArea {
right: 10px;
left: auto;
}
.item_s_cpb .boxArea {
top: auto;
bottom: 10px;
}
.j-mdv-chaoshi .m-floor .boxArea a {
width: auto;
height: auto;
}
.left-wider .proinfo-main {
margin-bottom: 40px;
}
.detailHd .m-info {
margin-bottom: 20px;
}
.tb-cool-quan-date {
color: #233b3d;
font-weight: 400;
font-size: 12px;
}
.tb-cool-area-has-date .tb-cool-quan-qrcode {
margin-top: 30px!important;
}
.tb-cool-area-has-date .tb-cool-quan-title {
margin-top: 10px!important;
}`);
}
})();