// ==UserScript== // @name 淘宝天猫图片打包下载,历史价格 // @namespace https://hlelf.com/ // @version 0.2.1 // @description 淘宝主图,主图视频,详情图打包下载。【说明】请先将页面下拉到最后,确认所有详情图完全显示后再点击右下侧的按钮,否则会获取不到图片资源,如果有视频,请等到视频加载后再进行操作。 // @author lelf // @match *://item.taobao.com/* // @match *://detail.tmall.com/* // @connect www.gwdang.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 // @require https://cdn.bootcss.com/jszip/3.2.2/jszip.min.js // @require https://cdn.jsdelivr.net/npm/file-saver@2.0.2/dist/FileSaver.min.js // @require https://cdn.bootcss.com/jszip-utils/0.1.0/jszip-utils.min.js // @require https://code.highcharts.com/highcharts.js // @resource lelf-materialcss https://cdn.jsdelivr.net/gh/lelf2005/cdn/material.css?v=20200111 // @license GPL License // @run-at document-end // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function() { 'use strict'; var $ = $ || window.$; var materialcss = GM_getResourceText('lelf-materialcss'); GM_addStyle(materialcss); addMenu(); var zipImgs; var zipDetailImgs; function addMenu() { var sidenav = '
'+ ''+ '
'+ '
'+ ''+ '
'; $("body").append(sidenav); $('.fixed-action-btn').floatingActionButton({ hoverEnabled: false }); $("#lelf_tb").click(function(){ getTBPics(); $('#lelf_modal2').modal(); }); $("#lelf_price").click(function(){ getHistoryPrice(); $('#lelf_modal_price').modal(); }); } function getTBPics(){ zipImgs = []; zipDetailImgs = []; var imgHtml = ''; var imgSrc = ''; var detailImgSrc = ''; var detailImgHtml = ''; var mainVideo = $("video").find("source"); var isBlobVideo = false; var mainVideoHtml = ''; if(mainVideo.length > 0){ mainVideoHtml = '
'; zipImgs.push(mainVideo[0].src); }else if($("video").length > 0){ mainVideoHtml = '
这个视频隐藏了真实地址,暂时无法解析。
'; } var mainImg = $("#J_UlThumb").find("img"); for(var i =0; i< mainImg.length;i++){ imgSrc = mainImg[i].src; if(imgSrc.lastIndexOf("webp")>-1){ imgSrc = imgSrc.substring(0, imgSrc.lastIndexOf('_', imgSrc.lastIndexOf('_') - 1)); }else{ imgSrc = imgSrc.substring(0, imgSrc.lastIndexOf("_")); } zipImgs.push(imgSrc); imgHtml += '
'; } var detailImg = $("#description > .content").find("img"); for(var k =0; k< detailImg.length;k++){ if(detailImg[k].getAttribute("data-ks-lazyload") !== null){ detailImgSrc = detailImg[k].getAttribute("data-ks-lazyload"); }else{ detailImgSrc = detailImg[k].src; } var theImage = new Image(); theImage.src = detailImgSrc; if(theImage.width > 100 ){ detailImgHtml += '
'; zipDetailImgs.push(detailImgSrc); } } addTBHtml(mainVideoHtml,imgHtml,detailImgHtml); $('.materialboxed').materialbox(); } function addTBHtml(video,imgs,detailImgs){ var isAdded = $("#lelf_modal2"); if(isAdded.length > 0){ isAdded.remove(); } var s = ' '; $("body").append(s); var instance = M.Tabs.init($('.tabs'), '{}'); $('.tabs').tabs('updateTabIndicator'); $("#lelf_tbpic_download").click(function(){ var zip = new JSZip(); var mainImgs = zip.folder("main"); var detailImgs = zip.folder("detail"); var suffix = ''; var totalAssets = zipImgs.length + zipDetailImgs.length; var currentAsset = 0; for(var i=0;i 0){ isAdded.remove(); } var s = ' '; $("body").append(s); var dp_id = window.location.href.split("id=")[1].split('&')[0]; GM_xmlhttpRequest({ method: 'GET', url: 'https://www.gwdang.com/trend/data_www?dp_id='+dp_id+'&show_prom=true&v=2&get_coupon=1&price=', onload: response => { var rsp = JSON.parse(response.responseText); var seriesData = []; var maxPrice = []; var minPrice = []; if(rsp.is_ban == 1){ $("#max_min_price").html("请稍后再试"); }else{ var d = rsp.series[0].data; maxPrice = [rsp.series[0].max_stamp*1000,rsp.series[0].max/100]; minPrice = [rsp.series[0].min_stamp*1000,rsp.series[0].min/100]; $.each(d,function (index,element) { seriesData.push([element.x*1000,element.y/100]); }) $("#max_min_price").html("最高: "+maxPrice[1]+" 元 ("+formatDate(maxPrice[0])+")  最低: "+minPrice[1]+" 元 ("+formatDate(minPrice[0])+")"); //// Highcharts.chart('chart_price', { chart: { type: 'line' }, title: { text: '' }, xAxis: { type: 'datetime', labels: { formatter:function(){ return formatDate(this.value); } } }, yAxis: { title: { text: '' } }, tooltip: { formatter : function (){ var s = ''+formatDate(this.x)+':'+this.y+'元'; return s; } }, legend: { enabled: false }, plotOptions: { series: { marker: { enabled: true }, step: 'left' } }, credits: { enabled: false }, series: [{ name: "历史价格", data: seriesData }], responsive: { rules: [{ condition: { maxWidth: 500 }, chartOptions: { plotOptions: { series: { marker: { radius: 2.5 } } } } }] } }); //// } } }); } function urlToPromise(url) { return new Promise(function(resolve, reject) { JSZipUtils.getBinaryContent(url, function (err, data) { if(err) { reject(err); } else { resolve(data); } }); }); } function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2){month = '0' + month;} if (day.length < 2){day = '0' + day;} return [year, month, day].join('-'); } // Your code here... })();