- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3014
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
7 c+ ]- Z- g% i姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )
. k% A$ \, t, j( E+ j+ f0 Q
' @* x; m$ @# @/ U i反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。
$ y3 U$ \$ L! a& W特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。! e* r' s4 W0 W; S+ ^1 a' }5 R
9 r) K+ w# m& N8 U
而且代码就那几行。。。
7 \' V E2 N1 F/ s" A: w/ }- // ==UserScript==
6 L, t1 o- w3 o& ^ - // @name 18粤漫社获取正文图片0 f. u1 X/ s' M4 l, \, \; ~
- // @author HQS
1 ^, F; Q9 X' @( a9 L1 Z - // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****0 Z ^+ W# g+ ^- p
- // @description 描述:获取图片地址,得到我想要的图片
( P& X. _9 W% t! n0 e - ) ?1 L& r7 N4 f8 n4 d) C' U
- // @version 0.0.0.15 A* l6 \ v0 X9 d2 v0 a7 H. M! S/ z
- // @time 2021-09-17 21:09:158 O- c0 L5 g% {7 ]% |
4 J' y9 j- E( h0 [8 @2 m- // @match *://gomicx.net/*
9 Q' [$ H% l5 l& h) n - // @match *://www.gomicx.net/*9 f# k* ]) f, I+ f3 Q2 @" [
- ! T, [' u( h- j2 {
- // @grant 授予/none$ c! X0 E7 [; u+ R' D$ z
- // ==/UserScript==* q8 @' H1 ]& C, `5 a& H" ^: c
) {# Q8 z& ]5 u/ s- (function() {
5 b5 S/ ~0 P& W, t; Y( S2 \) } - 'use strict';8 p$ l. Q7 ?' k- x1 }5 M
2 }4 y; m+ I Z8 `/ T7 q3 Q# O- //一个对象,存储页面图片数量和下载的数量! \" j* u+ |$ l1 Q/ B/ O$ d
- var monitorObj = {! }! W' Z) u D
- imgTotal: 0,3 Z: B& u0 [. h1 O1 I
- imgLoaded: 0
$ h5 |+ T! `' o - }$ Z, }5 i, r5 e E/ w6 ]
- //创建a标签,赋予图片对象相关属性,并插入body1 S' C }* A! Z* y
- var createA = function (obj,i) {6 T0 v [& _/ P* s# u
- var a = document.createElement("a");
% H3 Y' ~+ J) R$ e* O$ j - a.id = obj.id;
& L7 a" ]( d+ _9 d - a.target = "_blank";//注意:要在新页面打开
S+ L0 R+ d5 H4 A( K5 Q( I - a.href = obj.url; //获取地址, L! E& U s+ |! }& n$ T
- a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
- [. E+ z, J0 @! ^' t - a.download = obj.filename; //下载
! Q5 D. C% t' V! B! u4 k) u* q - document.body.appendChild(a);8 \; V2 r- i) ~; [( [0 m d, m
- }# A9 A) q9 ~7 j0 T
- //获取页面的图片$ T& |: r# A/ D
- var ID_postlist = document.getElementById("postlist");, i& t; r5 U4 Q0 v$ g
- //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
' {& i6 c D+ H& w, D - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
0 g$ x# _9 w, l - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];
1 F" z& J, b5 z3 M8 e - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]
' O( y& M7 u" A! a% d) s - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")
# X- q% `" _5 K. m - //1、纯图片,没文字+ H) |$ k5 x2 i, d, K5 h
- var pattl = document.getElementsByClassName("pattl")[0];
j: h) ]2 l; r$ T! ~7 T - var img_number = pattl.getElementsByTagName("img");7 b* j/ t H+ V) _: n0 r" x) r
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")[2].attributes["file"].value
& R2 I3 f: _# ^+ d - //console.log("img的数量是:"+ img_number.length);
7 [4 r- C: m# R9 r6 |
7 C: D( h# u( p8 S: t, f+ b- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl") p+ l" Q# }8 J- e+ L' I# i H0 ?
- //3、有说明文字、描述,图片为配图( G2 m7 L6 e! U* [
$ \, l l4 D3 }( b8 L% ]4 a- //创建每个图片对象的对应a标签$ M3 K3 M% O! _# y' u
- var qq = 1;7 E" b2 ^( {) K9 R. `7 e5 d4 I' D
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];' K( W V [7 ~4 i
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错
* _9 k O, o# k- C& J - //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
! K% u+ I7 r6 d) f# m) y' I* P% F1 ~ - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {' d; z8 ]: m3 @: }' t3 B0 ~
- //continue;- O# e8 \0 ?6 h
- //}
) w* L. o" U$ l2 D7 q* Q, c; Z - //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”3 I# H) f* F- f# v2 J
- var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”
& R4 B# N4 j% g; G2 n - if (img_number[i].attributes["file"] != undefined ) {
: F, f7 i4 Q) v6 c - var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”
8 F& g" x0 J/ \; S1 r5 R - var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
* X" u$ K9 t' I/ E - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")[1].attributes["file"].value) {" A2 x: L; u
- var file_name = filename.substring(0,filename.indexOf("."));* \( P3 W8 d2 ]- A' l0 f
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列
: a; b! Z, n7 C+ D& t2 W - if( qq <10 ){, p1 }& ?) [6 I" X8 N
- if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){7 U0 P. C. K: v3 ?& g3 W
- filename = "00"+ filename;
+ N4 ]! C1 n" x" _8 Q* q - }$ h" s4 i/ V/ V7 S. p1 u* t
- else{
4 Q- I3 k }5 v2 K - filename = "0"+ qq +" "+ filename;
. k" l2 I+ M R9 q' Z: q# D0 K - }: D$ m N% B/ W" w
- }% E5 O$ B! t4 `7 y# L
- else{
) n+ b6 b( j; ?/ L. Z - filename = qq +" "+ filename;
- I6 J8 Q0 N3 p" ^+ B. l2 }2 a8 B - }
% w y% T/ f& T6 x9 s( E7 k! O - qq++;+ O5 {1 E. P, t0 T
- }
4 |: ^9 Q( l. Z. U7 x$ t, S - else{
. Q+ w. o& k' c4 q9 _4 S% _ - if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
1 b4 u2 y5 J% n5 I J5 k, @ - filename = "0"+ filename;& ^# n& ]2 Y- x; S8 E
- }
, `/ D$ H$ z8 O% z7 n2 @' ~4 e - else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg8 k/ u. i$ c7 x( }! M# W7 z. @5 G
- filename = "0"+ filename;" S' c7 [$ L. m) k* T
- }
; H, E0 e* c. t/ P( H - }# k3 [* ]5 I( z, G' W
- var obj = {
) v" i p8 Z. o. U. z( @& F9 { - id: "img_" + i,9 b0 g) i/ Z- L3 f
- filename: filename,
: ?: q. a4 ^% P. B* o1 D" ~5 F% u5 G - url: domain_name2+ `4 r! X& V( q& d1 n
- }
% O0 X% w. z- E2 Q - //过滤掉不属于这几种类型的图片
0 J+ y- x' S# S ~" L - if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {. j# L/ e0 R& ?3 r
- continue;
# O7 e$ T% f( i H% i% R - }+ m3 {) U5 a+ t
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50& T( S5 E1 ^( {/ X6 e, j
- //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {
1 y- k, I) k& k7 o1 t8 R+ ^$ k; g, @ - //continue;( e5 p& o4 Y/ X* D+ q+ i+ t0 c
- //}3 d+ s) J# m/ W" F2 @3 o
- //统计图片数量6 D- y( S* I0 s5 `: P4 M
- monitorObj.imgTotal++;! ?: t; ~) f9 { B7 S# d
- createA(obj,i);
6 I7 D) `& K. Q, A8 [1 i* Y - //console.log("是3整数 "+ i +" :"+ filename);
% ^& `. q9 R* {1 ] - }
6 u4 l2 r/ W1 k0 D- N+ t - }
; `' T- l+ D% p( ]1 \; c - //开始下载图片7 ]3 }5 O- z, h9 p$ _* U5 I% s
- for (var j = 0; j < img_number.length; j++) {3 l0 d y b% O
- if (document.getElementById("img_" + j)) {) m4 W, @" k( P% K
- //重点:触发a标签的click事件
- t, }- R% o2 T% {( ~ - document.getElementById("img_" + j).click();8 H6 s W' P: h9 |% {) y5 x
- monitorObj.imgLoaded++; //统计已下载的图片数量
4 O/ e% ?! b* H: s' {( j7 c& C - }
0 X J* U& s8 W8 \! H8 g% R - }; f& J1 o( ?7 G, h' E8 j
- //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);4 P" M5 ]0 y5 O! r; S8 z: i
- })();
复制代码 / n: N5 O$ l+ O# v
/ G, U, u3 L# A6 x6 L |
|