淘宝 图片获取脚本

淘宝缩略图、首图视频、分类图、详情图下载 ##分类图会将已经无货下架的分类也显示出来 开发环境:Chrome:66.0.3359.170 x64 不保证兼容其他类型浏览器

  1. // ==UserScript==
  2. // @name 淘宝 图片获取脚本
  3. // @namespace https://item.taobao.com/
  4. // @license MIT
  5. // @version 2.31
  6. // @description 淘宝缩略图、首图视频、分类图、详情图下载 ##分类图会将已经无货下架的分类也显示出来 开发环境:Chrome:66.0.3359.170 x64 不保证兼容其他类型浏览器
  7. // @author Richard He
  8. // @homepage http://www.gf.qytechs.cn/users/89556
  9. // @match https://item.taobao.com/*
  10. // @iconURL https://img.alicdn.com/favicon.ico
  11. // @grant GM_notification
  12. // @grant GM_addStyle
  13. // @grant GM_download
  14. // ==/UserScript==
  15. //last edit:2018-5-16 0622
  16. //Jshint Options
  17. /*jshint multistr:true */
  18.  
  19. //Document Css Style
  20. GM_addStyle('\
  21. .thumb-ul{\
  22. font-family:Arial;\
  23. font-weight:bold;\
  24. }\
  25. .thumb-ul li{\
  26. border-style:solid;\
  27. border-color:#FE4403!important;\
  28. font-family:Arial;\
  29. font-weight:bold;\
  30. font-size:16px;\
  31. cursor:pointer;\
  32. }\
  33. .cat-ul li{\
  34. cursor:pointer;\
  35. font-size:14px;\
  36. font-family:Arial;\
  37. }\
  38. .detail-li,.border-li{\
  39. width:40px!important;\
  40. padding:0px!important;\
  41. }\
  42. .tb-tabbar>li{\
  43. min-width:80px!important;\
  44. }\
  45. ');
  46.  
  47. //Global Varible
  48. var d = document;
  49. var paramsObj = {}; //store all the parameters in url
  50. var params = location.search.substr(1).split('&');
  51. var Seq;
  52. for(var i=0;i<params.length;i++)
  53. {
  54. paramsObj[params[i].split('=')[0]] = unescape(params[i].split('=')[1]);
  55. }
  56.  
  57. //下载缩略图及首图视频
  58. document.onreadystatechange = function()
  59. {
  60. var thumbVideoExist = 0;
  61. var thumbVideoSrc = '';
  62. var ulThumb = d.createElement('ul');
  63. ulThumb.className = 'tb-thumb tb-clearfix thumb-ul';
  64. var liThumb,divThumb,aThumb;
  65. d.getElementsByClassName('tb-gallery')[0].appendChild(ulThumb);
  66. if(d.getElementById('J_VideoThumb')!=null)
  67. {
  68. thumbVideoExist = 1;
  69. }
  70. var videoStart = d.getElementsByClassName('vjs-center-start')[0];
  71. if(!!videoStart)
  72. {
  73. videoStart.click(); //click to load video src
  74. }
  75. var lis = d.getElementById('J_UlThumb').getElementsByTagName('li');
  76. var tSrc = [];
  77. for(var i = 0;i<lis.length;i++)
  78. {
  79. if(thumbVideoExist==1&&i==0)
  80. {
  81. tSrc[i] = "https://gtms01.alicdn.com/tps/i1/TB1QqhrFVXXXXb4XFXXrWC4HVXX-96-126.png";
  82. }
  83. else
  84. {
  85. tSrc[i] = lis[i].getElementsByTagName('img')[0].src;
  86. if(tSrc[i].indexOf('SS2')<0)
  87. {
  88. tSrc[i] = tSrc[i].substr(0,tSrc[i].length-16);
  89. }
  90. else
  91. {
  92. tSrc[i] = tSrc[i].substr(0,tSrc[i].length-16)+'_800x800'+tSrc[i].substr(tSrc[i].length-10,4);
  93. }
  94. }
  95. liThumb = d.createElement('li');
  96. ulThumb.appendChild(liThumb);
  97. divThumb = d.createElement('div');
  98. divThumb.className = 'tb-pic tb-s50';
  99. divThumb.style.textAlign = "center";
  100. liThumb.appendChild(divThumb);
  101. aThumb = d.createElement('IMG');
  102. aThumb.src = tSrc[i];
  103. aThumb.style.margin = "0 auto";
  104. aThumb.title = i+1;
  105. aThumb.setAttribute('data',tSrc[i]);
  106. divThumb.appendChild(aThumb);
  107. aThumb.onclick = function()
  108. {
  109. if(thumbVideoExist==1&&(parseInt(this.innerText)-1)==0)
  110. {
  111. GM_notification('此项目为商品首图视频','温馨提示');
  112. GM_download('https:'+d.getElementsByTagName('video')[0].getAttribute('src'),paramsObj.id+'视频');
  113. }
  114. else
  115. {
  116. Seq = this.title < 10 ? "0" + this.title : this.title;
  117. GM_download(this.getAttribute('data'),"S" + paramsObj.id.substr(-2,2) + Seq);
  118. }
  119. };
  120. aThumb.onmouseover = function()
  121. {
  122. lis[parseInt(this.innerText)-1].className = 'tb-selected';
  123.  
  124. };
  125. aThumb.onmouseout = function()
  126. {
  127. lis[parseInt(this.innerText)-1].className = '';
  128. };
  129. }
  130. };
  131.  
  132. //下载图片 分类图片
  133. var catDl = d.getElementsByClassName('J_Prop_Color')[0];
  134. if(catDl!=undefined)
  135. {
  136. var imgExist = 0;
  137. var aExist = catDl.getElementsByTagName('a');
  138. if(aExist!=undefined)
  139. {
  140. for(var j =0;j<catDl.getElementsByTagName('a').length;j++)
  141. {
  142. if(catDl.getElementsByTagName('a')[j].style.backgroundImage!= '')
  143. {
  144. imgExist =1;
  145. }
  146. }
  147. if(imgExist>0)
  148. {
  149. var catImages =[];
  150. var dlCat,dtCat,ddCat,ulCat,liCat,aCat,imgCat;
  151. dlCat = d.createElement('dl');
  152. dlCat.className = 'tb-prop tb-clear J_Prop_Color';
  153. catDl.parentNode.insertBefore(dlCat,catDl.nextSibling);
  154. dtCat = d.createElement('dt');
  155. dtCat.className = 'tb-property-type';
  156. dlCat.appendChild(dtCat);
  157. dtCat.innerText = '分类下载';
  158. ddCat = d.createElement('dd');
  159. dlCat.appendChild(ddCat);
  160. ulCat = d.createElement('ul');
  161. ulCat.className = 'J_TSaleProp tb-img tb-clearfix cat-ul';
  162. ddCat.appendChild(ulCat);
  163. var bgImg;
  164. for(var k=0;k<aExist.length;k++)
  165. {
  166. bgImg = aExist[k].style.backgroundImage;
  167. if(bgImg != '')
  168. {
  169. catImages[k] ='https:'+bgImg.substr(5,bgImg.length-17);
  170. }
  171. else
  172. {
  173. catImages[k] = 0;
  174. }
  175. liCat = d.createElement('li');
  176. ulCat.appendChild(liCat);
  177. aCat = d.createElement('a');
  178. liCat.appendChild(aCat);
  179. imgCat = d.createElement('IMG');
  180. aCat.appendChild(imgCat);
  181. aCat.data = catImages[k];
  182. aCat.innerText = k+1;
  183. imgCat.src = catImages[k];
  184. imgCat.style.width = "30px";
  185. imgCat.style.height = "30px";
  186. aCat.onmouseover = function()
  187. {
  188. if(this.data != 0)
  189. {catDl.getElementsByTagName('li')[this.innerText-1].className = 'tb-selected';}
  190. else
  191. {catDl.getElementsByTagName('li')[this.innerText-1].className += ' tb-selected';}
  192. };
  193. aCat.onmouseout = function()
  194. {
  195. if(this.data != 0)
  196. {catDl.getElementsByTagName('li')[this.innerText-1].className = '';}
  197. else
  198. {catDl.getElementsByTagName('li')[this.innerText-1].className = 'tb-txt';}
  199. };
  200. aCat.onclick = function()
  201. {
  202. if(this.data == 0)
  203. {
  204. GM_notification('请注意:这个分类没有图片','温馨提示');
  205. }
  206. else
  207. {
  208. Seq = this.innerText < 10 ? "0" + this.innerText : this.innerText;
  209. GM_download(this.data,"F" + paramsObj.id.substr(-2,2) + Seq + this.data.substr(-4,4));
  210. }
  211. };
  212. }
  213. }
  214. }
  215. }
  216.  
  217. //获取商品 详情图
  218.  
  219. var imgAdrs = [];
  220. var detailLi = d.createElement('li');
  221. detailLi.className = 'detail-li';
  222. var detailA = d.createElement('a');
  223. detailA.onclick = function()
  224. {
  225. var desLis = document.getElementById('J_DivItemDesc').childNodes;
  226. var des = document.getElementById('J_DivItemDesc');
  227. var imgs = des.getElementsByTagName('img');
  228. for(var i in imgs)
  229. {
  230. if(typeof imgs[i] == 'object' && imgs[i].src.indexOf('assets')<0)
  231. {
  232. imgAdrs.push(imgs[i].src);
  233. }
  234. }
  235. for(var j in imgAdrs)
  236. {
  237. Seq = parseInt(j) + 1;
  238. Seq = Seq < 10 ? "0" + Seq : Seq;
  239. GM_download(imgAdrs[j],"X" + paramsObj.id.substr(-2,2) + Seq);
  240. }
  241. };
  242. detailA.innerText = '下载';
  243. detailA.href = '###';
  244. detailA.className = 'tb-tab-anchor';
  245. detailA.title = '注意:点击之前先将页面下拉,使得所有图片完全显示完毕再点击下载按钮,否则将下载一些不完整的图片';
  246. detailLi.appendChild(detailA);
  247. document.getElementById('J_TabBar').insertBefore(detailLi,document.getElementById('J_ServiceTab').nextSibling);
  248.  
  249. //图片加边框
  250. var borderLi = d.createElement('li');
  251. var detailImagesObj = d.getElementById('J_DivItemDesc').getElementsByTagName('img');
  252. borderLi.className = 'border-li';
  253. var borderA = d.createElement('a');
  254. borderA.setAttribute('borderAdded',0);
  255. borderLi.appendChild(borderA);
  256. borderA.onclick = function()
  257. {
  258. if(this.getAttribute('borderAdded') == 0)
  259. {
  260. for(var i in detailImagesObj)
  261. {
  262. if(typeof detailImagesObj[i] == 'object' && detailImagesObj[i].src.indexOf('assets')<0)
  263. {
  264. detailImagesObj[i].style.borderBottom = '20px solid #F12D03';
  265. }
  266. }
  267. this.setAttribute('borderAdded',1);
  268. this.innerText = '去框';
  269. }
  270. else
  271. {
  272. this.setAttribute('borderAdded',0);
  273. for(var j in detailImagesObj)
  274. {
  275. if(typeof detailImagesObj[j] == 'object' && detailImagesObj[j].src.indexOf('assets')<0)
  276. detailImagesObj[j].style.borderBottom = '0px solid #F12D03';
  277. }
  278. this.innerText = '加框';
  279. }
  280. };
  281. borderA.className = 'tb-tab-anchor';
  282. borderA.href = '###';
  283. borderA.innerHTML = '加框';
  284. borderA.title = '单击一次:给详情图每张图片下方添加20像素宽红色边框;再次单击:取消边框';
  285. document.getElementById('J_TabBar').insertBefore(borderLi,document.getElementById('J_ServiceTab').nextSibling);

QingJ © 2025

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