- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3020
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
8 @' \ x& s% T/ V
姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )) v- J" P2 d9 S0 x4 F
/ `9 M! R+ D3 R7 U" D4 r' m. W/ p
反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。3 P2 c0 T5 o0 d: F
特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。. C, D9 i0 D' M
4 P6 e9 s% k& W
而且代码就那几行。。。. [; R0 t8 J- T/ V8 q( G
- // ==UserScript==' u3 \# v$ t! a D! T1 b
- // @name 18粤漫社获取正文图片
0 i5 J A6 X) N- b - // @author HQS
N) m/ H& g: @1 g+ W% y - // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****
V$ R/ t7 H5 X$ t6 Q - // @description 描述:获取图片地址,得到我想要的图片
# x, Z" Q* U5 \ - $ ^8 z" k' r. c" c7 D" \5 v
- // @version 0.0.0.14 j* c. k6 B. e4 W# m0 e) c
- // @time 2021-09-17 21:09:15/ G7 c, f( p% R% i8 ?% L
0 m' `7 B) l& j! }* O5 e- // @match *://gomicx.net/*
6 v+ n V2 W/ m% E# C: l - // @match *://www.gomicx.net/*
* }1 K$ F. S. @ - 8 y0 H9 k: M: i% S! j
- // @grant 授予/none& u; d$ I; m7 N7 N* O
- // ==/UserScript==
& D Y: i# N% E' L - " T) T, g# E$ l0 Q( \1 y! {
- (function() {
x: r- \0 a- P) v - 'use strict';2 G) F5 @# X! k0 l$ _) W* M
- / q9 v( L6 E" F" g7 w& ?0 Z+ [; m
- //一个对象,存储页面图片数量和下载的数量
3 D0 a' V2 R! z0 V. I. ] - var monitorObj = {
; B" W6 A1 [8 [/ b \* K - imgTotal: 0," r! i R9 q" z9 U n
- imgLoaded: 0
; ], l t8 F8 {7 m1 h; w3 l2 p5 y; | - }$ j" ^/ t0 K/ o: P+ C
- //创建a标签,赋予图片对象相关属性,并插入body
/ c" s9 K0 i6 W' a x0 b- P( F - var createA = function (obj,i) { `8 N$ a, {& Q2 I+ m
- var a = document.createElement("a");
5 {% O( @6 l& ?! i% ]4 E' } - a.id = obj.id;
9 h& G; f7 E7 F/ J! ~. \ - a.target = "_blank";//注意:要在新页面打开$ n& ^6 A8 o" s" l" a
- a.href = obj.url; //获取地址- @: o- n+ k! C2 X Y
- a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html7 {/ s+ i5 I. O$ D
- a.download = obj.filename; //下载
3 {9 ?+ ^" k1 E5 ~) I' q - document.body.appendChild(a);
: \* S J" }8 O* ]7 X) H% e2 I - } ]5 K0 {0 k# a
- //获取页面的图片+ i- \8 X5 W4 u- I/ P
- var ID_postlist = document.getElementById("postlist");
4 N6 \! u6 _ H3 ]5 C7 v N5 h5 N - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""! A# ~! @3 ^' B; F0 D' L6 E
- //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];0 z% u' D! c! N
- //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];
1 L( m( m9 v/ `2 l9 f - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]8 T" L7 \! Y( N5 w+ |
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")% e2 |4 q( F, O9 {) p K
- //1、纯图片,没文字1 g: B# q! }2 k$ a
- var pattl = document.getElementsByClassName("pattl")[0];9 y# T$ ~$ w/ e8 y) x
- var img_number = pattl.getElementsByTagName("img");
3 A1 F7 e0 h& h9 w8 @+ }7 N2 W) ?5 x - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")[2].attributes["file"].value2 u3 G. S& L8 N" c& a
- //console.log("img的数量是:"+ img_number.length);
R N. `% I& K: q8 g - ; s) N% m0 [, D9 ]& u4 b1 O9 q) Q
- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"' r! n: `& i2 |; ]7 \; J
- //3、有说明文字、描述,图片为配图
' F3 C5 m! M4 E. q! P9 ?
3 G6 T& q% r- g3 T' l- //创建每个图片对象的对应a标签
) }/ T p5 T3 i, |/ P! H - var qq = 1;
& T9 W2 p) `. _: @: i. \ - var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];- U/ A- s2 n6 Z* A0 m; K: d
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错" a+ u# B( v* M! c0 g
- //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
: b* ]& t) |0 O$ L+ ~9 e. b - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {
. q! h7 J0 F& r* S. d: B - //continue;
5 Y4 i$ F4 Q! L$ v& Z/ L - //}7 _0 G- V9 f. Y* n: R y% H8 C! Y5 n
- //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”. I ^ y' x' x
- var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”0 Y. P6 z" d; V3 a; b+ f3 Z
- if (img_number[i].attributes["file"] != undefined ) {6 E, Y1 L6 ~1 x( } m' A
- var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”
2 `" G- x4 o7 [: K2 h5 n6 n - var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
6 c- ] x! J' Z - //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
, U! x; U7 o0 L1 c d4 r8 r; ]5 Q - var file_name = filename.substring(0,filename.indexOf("."));$ f5 q4 s- m* y5 ~" @2 w9 D
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列7 v. ^- [6 g! Z2 d* l: r7 \# Z/ G
- if( qq <10 ){
( X% N( W8 h# @; A - if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){
# Q5 E" p1 ~, @ r - filename = "00"+ filename;5 P# d4 j8 ?( C: v
- }$ h0 Q( u o$ z( r _1 q+ P) U
- else{
( a1 s6 ]! j! x* s/ s, k$ d9 ^ - filename = "0"+ qq +" "+ filename;
; R8 V9 l z3 y/ L$ b! C - }6 R1 g" r" Y5 J& y/ o1 h
- }
, j; T: c5 B3 G( z" W0 u - else{" P, [7 E0 ^; E& E
- filename = qq +" "+ filename;
) S! K+ `# |. U7 L - }
, d) |0 ~6 Z, N - qq++;* T; O7 \+ e$ ^$ F5 s# C
- }9 d Q5 g* C, Q
- else{! f! ~! f3 z7 ?" K! i$ c3 y2 d
- if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”. U" x6 z+ F* C5 ?
- filename = "0"+ filename;4 O3 X6 j2 G5 X* ? F
- }4 S" B W- j" ~3 I$ b
- else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
( o9 T6 `0 h2 M. \+ |5 O. w - filename = "0"+ filename;
. c1 g+ d# x# X. s6 A3 | - }7 N1 Z0 P$ ]2 T
- }8 j' {. e5 |4 F" K
- var obj = {/ ]3 n0 q: P% b) _- i! r
- id: "img_" + i,
% T4 d! p A# f! N1 X, m, b; K - filename: filename,9 {( f/ `* a V* E b% ]2 k, q- `
- url: domain_name22 A! ?1 h% u" a+ Z) V; q0 A v
- }; ^, q3 D2 I8 q
- //过滤掉不属于这几种类型的图片3 }# F. x1 Q: J( Q- _
- if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) { Q9 H( _3 u: ~+ E2 V e
- continue;
3 W8 b( d4 J! C - }
* N, b8 i; P5 E2 k+ \7 L - //这里是为了去掉知乎用户头像的图片,头像大小是50*50
" R( Y- d' ^* N8 w - //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {
% Q* u9 Q; [. m6 B. B - //continue;, {0 b* l3 B$ r9 P
- //}
% h1 H3 B8 X; I$ c- i - //统计图片数量" v8 h% \- V2 j. B
- monitorObj.imgTotal++;+ {! E" D: Q# c' A e: O- o
- createA(obj,i);
) V3 v! R( e+ ~ - //console.log("是3整数 "+ i +" :"+ filename);5 G1 o& w! U7 f# [9 I6 B
- }
6 I# i0 ^8 N8 z" @ - }
" w: G- `( N7 u% M. z, |8 ?$ k - //开始下载图片, [$ D2 W7 H8 C3 @
- for (var j = 0; j < img_number.length; j++) {4 ]& j) k9 q; J" b
- if (document.getElementById("img_" + j)) {
, f6 l% w; y- }1 r - //重点:触发a标签的click事件! }. O+ f1 {" L. J& ^6 d! | D( O: e
- document.getElementById("img_" + j).click();" k* ]* x y I) F* G
- monitorObj.imgLoaded++; //统计已下载的图片数量( n# e6 D3 H# {, q3 x5 J
- }
; Q% r+ @+ O9 f6 V; {$ \ - }
+ ^8 d$ v% H6 t2 Y" C3 I - //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);
# M1 x* w1 }/ i3 g - })();
复制代码 + }/ S+ ]/ E: Y7 |5 Y
1 N, f4 ^" t. A# ]2 m& N8 q3 M5 m. p
|
|