- 等级
- 见习工程师
- 等级进度
-
- 积分
- 2767
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
0 U& T6 m) e" S# F( B& ?) ^: p
姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 ): A% U$ C5 }) S# O0 K- u3 c! L, m
2 J/ ^$ ?# X t3 Y6 k% r; s反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。1 j# c4 `$ _2 m# Z
特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。2 p1 k; l" `# J
. @9 `! R4 g7 e1 P. L
而且代码就那几行。。。
; f$ \! D! S' B+ ^+ p- // ==UserScript==
8 g; W4 R Z' a- P7 [1 m+ m - // @name 18粤漫社获取正文图片
/ K, h4 h" @7 F, _2 a4 S - // @author HQS$ K# y& l* v( q" k2 `
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****" j3 Z' a' f/ g7 [( g3 s, |
- // @description 描述:获取图片地址,得到我想要的图片: c2 b7 L! T- T( w6 ]6 [0 }
2 u" M6 v. y! c; h) } `- A2 \ s- // @version 0.0.0.1: j% Y6 Q; M# k3 h' l" J
- // @time 2021-09-17 21:09:15" K( w5 K4 Z& @
- , V2 N2 f/ v' m- B* t5 \' [9 G
- // @match *://gomicx.net/*6 O2 c7 c. ~7 E+ e
- // @match *://www.gomicx.net/*$ r9 F! E+ ~# C+ x! L
- : i6 L+ f3 x' m3 I; E: N
- // @grant 授予/none
2 T! i& h! b% m+ |+ F) D6 x - // ==/UserScript==1 d4 w% J; w! O6 C+ u. d
* _! e: T! o G0 f- (function() {
' q& ^+ ^) P- ^8 v - 'use strict';( J# W* f0 }/ c# N" L3 b
! @% a* ~- a, |, m, \% q% f- //一个对象,存储页面图片数量和下载的数量9 G3 y. f4 |* P7 Q9 L
- var monitorObj = {+ U6 O' S( V, t- k( _7 x
- imgTotal: 0,
" R0 R$ v- g7 a9 ] - imgLoaded: 08 F; D$ T5 y: w3 B6 [6 ~9 [
- }
$ q1 F, ~+ x' a. p: l4 z - //创建a标签,赋予图片对象相关属性,并插入body8 t5 B8 M, S7 x' }
- var createA = function (obj,i) {' }0 M6 |$ |5 r1 F- y8 k- y z
- var a = document.createElement("a");
( X; V& I2 g! H7 J: m* [7 L3 ~ - a.id = obj.id;7 \- x' W, t6 E
- a.target = "_blank";//注意:要在新页面打开+ Z. Y! }* k& K. G" ~- h* h
- a.href = obj.url; //获取地址5 h" k; Q3 V+ }6 S' |+ I
- a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
# G- W) e& h8 |# [- j7 f4 A1 Q, ~' c) D - a.download = obj.filename; //下载! R7 h! [2 w1 y( Z3 L G* k
- document.body.appendChild(a);+ v) u: I. ^2 j& v
- }
, X9 R; s q9 X% i - //获取页面的图片7 }0 Z m2 S3 W! L" i
- var ID_postlist = document.getElementById("postlist");
8 m' |5 U; Y$ b3 F - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
u i+ @: E% Y" q. D8 x) o5 h - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
/ R* t: L) j; V( [ - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];: Q2 v9 v+ R" p
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]- ]7 B/ U1 |! y- t
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")' x5 F; `+ ]: \0 c- T- k
- //1、纯图片,没文字; @! r P, q4 A) v+ s$ k
- var pattl = document.getElementsByClassName("pattl")[0];$ n C& ^; n1 ?: r8 ], K% {/ l
- var img_number = pattl.getElementsByTagName("img");
6 y+ x; p1 K; 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
" N% k4 O* A7 j: @ - //console.log("img的数量是:"+ img_number.length);2 d, U3 n6 n, p' t% \
- ' N- R& X0 u; r/ l k- G# W2 I
- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl": r$ }1 L# T8 P$ G
- //3、有说明文字、描述,图片为配图
/ E1 p3 w( N$ l5 n: Y1 o4 k
) c5 |9 i. g6 \9 y$ V% B- //创建每个图片对象的对应a标签- g3 U4 K8 o X
- var qq = 1;4 N& x; d1 q: r& C8 f( _
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
! E8 @% X) i# x5 _ - for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错* j+ u7 c: u8 [: d) ]
- //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标( E$ C/ c3 G* D
- //if (img_number[i].width <= 20 || img_number[i].height <= 20) {* T& }7 P; p) W' z0 N. _7 i1 j1 @
- //continue;0 m5 g. p. H- V5 [! J
- //}
. S3 v4 E1 ~* m. n4 W6 b - //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”
2 [& ~. q: e- O8 P - var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”5 w& z9 r/ Y& j" V1 h
- if (img_number[i].attributes["file"] != undefined ) {
/ i( n+ D" W" p2 x9 K$ a; V' l - var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”
/ P( B7 |* @# L W8 Y& ]$ n( J - var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”' c# X$ Y& L. |' W% w8 A
- //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) v. F# [7 Y% G) t/ f9 `: V
- var file_name = filename.substring(0,filename.indexOf("."));
+ T; t$ w1 w9 s/ f - if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列
. i' y( q3 d4 J) c) F" b - if( qq <10 ){# K% f# |* K) b; _# L* Q2 T; N6 i
- if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){
& q" \7 g1 T5 z5 C! n. o: w7 E - filename = "00"+ filename;
- ^. ~, P2 o9 E- I! F+ ] - }) p# G7 f; E, s7 ?5 v, ^
- else{
j( F/ q$ s! Q- W; } - filename = "0"+ qq +" "+ filename;
8 c, z+ x$ J! O: C; T - }: L0 i5 q0 l# G" C. c+ p3 j
- }& r6 Z$ F- P( T4 }$ A
- else{, ~( L; X! c! m1 m4 y$ q, o
- filename = qq +" "+ filename;3 f, I; ]: q2 I7 \
- }
/ d( E' t& N' B: x! i( y" T+ b) d9 A - qq++;1 Z8 F3 A. W N! d
- } r3 w) [2 z" B& r, i, F, N3 }; `
- else{
: i. |, S0 L; `6 y3 q; r" s - if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
% L. p6 k& b+ P+ ~8 Z - filename = "0"+ filename;9 K0 ^. d* L5 Q" p2 b2 {" ]
- }
8 l. \9 @9 F0 l% w5 d! \ - else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
/ p c1 Y, Q, s4 H9 u" T - filename = "0"+ filename;
; k/ O4 V8 \5 g' ~% }1 S3 P - }
" d! C3 v5 ` G5 m3 Y - }
6 b6 ?* D5 O2 h - var obj = {) g6 K; I) @. o6 b
- id: "img_" + i,( E( t/ k) X; o' a2 j# S6 R
- filename: filename,
$ |# B( {5 T4 D8 U/ _6 @ - url: domain_name2
m+ T; p+ j- b0 U0 s: D - }
5 D, ]2 `6 v6 l - //过滤掉不属于这几种类型的图片
6 d2 }7 ?8 S1 D: g - if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {
$ j) ^% D/ |+ i& s d - continue;: G7 a6 P* p' \
- }- d. \6 z) E5 a' x T3 `; l
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50
' A) e( v9 w; ?0 A& @ - //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {4 s, E4 c: [( S
- //continue;) `- x# ?$ Z B+ O
- //}: n+ B8 g) l6 }$ M, R; g
- //统计图片数量
+ L. Q/ k5 N* _9 c$ g3 j - monitorObj.imgTotal++;7 l% k! G! ?# @5 ^( G
- createA(obj,i);
( }- y& ^' b' ?8 w: P8 K - //console.log("是3整数 "+ i +" :"+ filename);( t; [: @5 C( e6 T. v7 O
- }9 B+ ^- @) i; \0 R' G
- }
2 f' U, R/ J. f1 T - //开始下载图片
6 m0 i; ]- [3 x6 R2 w - for (var j = 0; j < img_number.length; j++) {
5 {+ U0 h3 K! D/ l - if (document.getElementById("img_" + j)) {
# q3 a8 y8 _- ?" r - //重点:触发a标签的click事件- E/ I( t- }6 a& ~* X
- document.getElementById("img_" + j).click();
9 a: n+ c& O5 M - monitorObj.imgLoaded++; //统计已下载的图片数量 B4 S( n( d( r6 Y
- }: X& K6 D; ]' N1 \5 [( [
- }% ]& u) x) A# D E- {
- //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);$ n' s' ?" R8 g! F: j4 f& H
- })();
复制代码
6 ^, N) P q7 i9 r/ M( H5 \, A: H% V1 B8 \" y: @7 T
|
|