- 等级
- 见习工程师
- 等级进度
-
- 积分
- 2767
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
0 V+ {, s' y R7 m
姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )4 ~) X) }+ b5 Y+ R# D8 e( D4 }
7 t/ {/ {: j9 g5 _+ H反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。$ S; H( L+ z: M! L: O
特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。( S; O# P/ Y4 Y+ B. X+ ~6 u
2 e/ P: T' ^8 o' w8 x; o9 @2 h+ Q而且代码就那几行。。。7 t( x' a V2 R2 r/ V8 ]
- // ==UserScript==
. ^* _) O5 i; v* `5 i/ ~ - // @name 18粤漫社获取正文图片
8 i: C0 p4 N$ m4 l - // @author HQS4 H, J0 G6 k5 q
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****) l( }& A) X- j: J8 L) f$ X' G
- // @description 描述:获取图片地址,得到我想要的图片
. j U1 v! Z' e( B5 i9 q
8 r* c) ^, X8 ]- // @version 0.0.0.1
7 m# c4 l1 Q- u5 q( T - // @time 2021-09-17 21:09:15+ P8 k# y% u" {5 u( z, ^' ]* B
- 9 H" X3 [. T0 P1 A' d# F( i
- // @match *://gomicx.net/*
( B% Y4 g% e; ^0 Z C" D - // @match *://www.gomicx.net/*
/ ^4 n; C4 A- u2 i$ d# V4 q
3 _5 t/ ^$ C# S( f% s5 O. {5 c- // @grant 授予/none
% t; u7 ^7 z' w7 S/ ^4 y! P - // ==/UserScript==
; d% v3 |) m' X( w) |
1 |7 s5 I# W3 i' f8 B3 m- (function() {8 w' |- o6 V! `3 K
- 'use strict';: n$ Q- h0 X1 b$ C9 a: X
- : i6 s5 d! M' z8 p: _# a
- //一个对象,存储页面图片数量和下载的数量2 F) c4 N5 o% U4 v7 ^
- var monitorObj = {
2 u, H5 i3 F; j) _; {2 X! _ - imgTotal: 0,: g1 Y" R1 `& e3 P) p
- imgLoaded: 0! A! }* e8 P) q! l% J
- }6 \( r3 `+ g& h' Q- O1 ]; ]
- //创建a标签,赋予图片对象相关属性,并插入body. ?( [ I; I9 y4 Y, D; a5 T
- var createA = function (obj,i) {
# K4 U, u: R$ G2 X+ E - var a = document.createElement("a");
, A4 L+ {9 M* C/ ]5 E6 ] - a.id = obj.id;( B8 Q7 A1 C; y
- a.target = "_blank";//注意:要在新页面打开! h- j: R# H+ y
- a.href = obj.url; //获取地址
' O. n: F: M" c& d# q' i8 |2 | - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
+ L, [7 A! H5 f - a.download = obj.filename; //下载. Q) Y% l S5 Q6 y5 E
- document.body.appendChild(a);0 |6 F5 p0 w5 u9 u$ p5 [/ ?
- }+ |8 t1 P1 r+ \% M
- //获取页面的图片+ G8 M( }, k8 ?1 s4 C
- var ID_postlist = document.getElementById("postlist");
$ S' S# t& p5 T, v - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""% H ~* O+ Y/ ^. S. ]
- //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
, ]$ `3 u5 s3 s( Z+ R+ d3 M f2 b! ~# | - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];
. ?# P2 i, W# W; w7 r - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]8 w8 p' o& Z$ _0 z# V1 v
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")9 ~. `) `& A4 o8 s: C
- //1、纯图片,没文字
T5 R- b" z7 K- ] - var pattl = document.getElementsByClassName("pattl")[0];" q; q6 z! N. V9 c
- var img_number = pattl.getElementsByTagName("img");
" K" l7 ~ i |8 T - //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) u1 g8 q/ k; T/ \8 E3 N+ s( }
- //console.log("img的数量是:"+ img_number.length);7 o* v- v; u' ?2 ?* @
% U' s% e0 L& { |' _/ O- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"
4 l" o, P: |! D* Q2 p( P - //3、有说明文字、描述,图片为配图
* K E6 r: ?* m. W% o. `
: V. J* @ J( }/ e1 @- //创建每个图片对象的对应a标签
* n, P) a* H; B( _& \* _+ d4 V - var qq = 1;
! }! F j @/ @2 Y2 `7 u( V% F6 v2 I - var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];1 q& B2 @" t: z0 L
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错
3 O4 \7 f. F; H: b: c - //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
, o$ e7 X& n/ _% x& I* W3 b - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {3 I; s8 F* Y3 T! M: F4 G
- //continue;
4 X ?) l, J* }9 d; x9 R - //}
* t: y9 @$ }/ Q3 @! g u - //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”
I, W' t7 U" a" O0 a9 q - var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”
3 S; a3 I) x4 Z! S' k - if (img_number[i].attributes["file"] != undefined ) {" w- H; a# V& B; H+ B, n
- var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”9 a0 ^1 a! C3 V: V. f% K& }
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
$ @' E& |+ y* L1 O7 p9 r+ T. M - //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: _2 {. G: V- Q5 x h
- var file_name = filename.substring(0,filename.indexOf("."));% z' {; q. x1 ]1 i5 X* \
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列
! _% k- N( ~. s2 \" M* J - if( qq <10 ){% A; Y6 n* C, I4 U ^5 Z
- if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){ \1 b; n# G2 Z
- filename = "00"+ filename;
V9 G4 R# U+ R3 B& [+ t. ]6 a3 H - }
9 r5 ^/ N" d$ W+ d9 T7 f - else{
% s( l$ z t _6 Y- H1 u - filename = "0"+ qq +" "+ filename;
7 t. n1 k1 i) a% g3 D; G5 r - }
5 D! z; Z1 Y" n1 [ - }
+ }( T, b( x( C7 K - else{8 r& n4 q: i+ x' u6 X- w& Q. H
- filename = qq +" "+ filename;
: S9 T( S7 h, ?4 w - }
& u p7 e U5 c! b, |2 P - qq++;
% j9 H" }, t2 \' E2 g+ w: v( j, f1 c5 I - }
' r. q' K+ i, B, H% l2 W - else{5 I5 \* O" }7 P' ^# B
- if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
, o8 |0 Q% A$ V - filename = "0"+ filename;* Q6 f0 I4 h: g* Q# b5 \# t
- }+ i% S. [- `8 b6 [& t- ]
- else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
7 }" A5 v# P6 X - filename = "0"+ filename;
: E" J; B4 t, }2 k0 l - }; I. H3 U Y# {8 f9 z
- } ^ w" x9 D" y) i" e3 S$ j
- var obj = {
2 X! A2 w& r4 }, Z; q8 U - id: "img_" + i,
% y4 w7 q; F$ f: ~ - filename: filename,
/ Q. j, G% z7 U0 A9 O8 Q - url: domain_name2! p3 Z/ r- \8 z0 q/ L/ j7 ]8 _
- }
* m# Q: |' Y% T% J" R* M9 _, N - //过滤掉不属于这几种类型的图片
! H Q! ~$ J# F2 K! Q `" O - if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {9 U6 g5 b4 F/ f" n( ^
- continue;
. c( e: `1 A2 Z% y: M e6 S b - }; u: Z1 c( _6 `5 _* l3 H
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50
9 F+ v$ R; b3 t$ J4 B - //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {
5 T5 z; C9 I Z& v/ @ - //continue;' d+ x$ }- h, r% ]( n. H" g. I
- //}# X0 c* H. _0 Q: I
- //统计图片数量# ^6 G6 Z" y% t5 w& O3 F
- monitorObj.imgTotal++;: e/ g0 `% ?* z" C* ?; M# n6 i3 R
- createA(obj,i);$ ?/ }" b! p$ W( \/ {3 C
- //console.log("是3整数 "+ i +" :"+ filename);
r" Z' T) q/ E4 j - }
' S/ g6 q; s& z2 }: r( i - } ~$ _. h0 x+ f/ Q
- //开始下载图片( M5 g9 g7 d0 e, z
- for (var j = 0; j < img_number.length; j++) {9 H4 g: W, O; `9 {
- if (document.getElementById("img_" + j)) {; Y# _8 @4 w$ j6 m
- //重点:触发a标签的click事件
. D9 t' H3 j+ z; q7 o+ \ - document.getElementById("img_" + j).click();. c0 G- R0 `5 S( f& X) a, X
- monitorObj.imgLoaded++; //统计已下载的图片数量
+ Y; i$ o0 x8 k - }
7 s9 t7 B3 Z' M- f6 h$ k) L- H - }
0 Q q: Q/ t+ }8 Q, W - //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);
1 U5 f ?. Y2 R4 k& T3 X+ C8 O) D$ I - })();
复制代码
, Q3 \ N+ f0 q2 Y/ q* e* H
! a8 a5 {6 c4 L |
|