- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3014
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
7 Q% M- ]8 \% t, |& F/ G( W姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )
8 j* c8 U$ w$ q- I" a- L: @+ ?5 Y3 ~: F; l" I
反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。* a: F9 L4 `; r' Q
特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。+ a3 D1 t6 p1 k' Z9 l, f
* z2 P% |% v' J而且代码就那几行。。。
" D# |3 l( D$ z Q5 w7 D- // ==UserScript==
) u' s9 Q) S' g* l: [ - // @name 18粤漫社获取正文图片' P3 U% `7 U8 m9 x1 [0 J
- // @author HQS# I- F4 g. a$ H: u$ Y* R
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****4 H: V/ S4 W, l/ v3 a9 f
- // @description 描述:获取图片地址,得到我想要的图片
7 g8 ~4 i x6 w3 n6 _7 S
# w* \" @3 V- i9 K- // @version 0.0.0.1
5 t U7 Z% s$ g1 }' ` - // @time 2021-09-17 21:09:15- {( D6 q0 H# q9 s1 _/ J
- : G- b; z" U2 h3 D; x6 t
- // @match *://gomicx.net/*
4 A7 v! k. A0 @ - // @match *://www.gomicx.net/*$ R, K5 F# b. K" o& K) N% A
- ' ?) f4 r6 c3 A' m4 P3 s3 A
- // @grant 授予/none+ D2 W; N* Z% t/ Z8 Y
- // ==/UserScript==1 \$ Q$ e, n+ Q1 j9 R6 u! Z; ]! [
# W# U1 N! x3 E1 |# F- (function() {) R2 U2 @( ?& g) S0 D1 B/ W; j
- 'use strict';7 v" W4 p8 V* k1 C' u8 ~
% Z5 U4 `9 g ?: Z4 l. |: I- //一个对象,存储页面图片数量和下载的数量
. P- j9 c* K9 b4 i - var monitorObj = {
) Y6 t- D c5 t; q& i - imgTotal: 0,
/ {+ S/ G0 Z1 D7 J - imgLoaded: 0
8 M! P+ K, O1 Y* ?8 Z) x - }
/ f1 t! E9 m( n& |5 k - //创建a标签,赋予图片对象相关属性,并插入body
' c: ]. i- M& z6 N - var createA = function (obj,i) {. ]3 x) q& f. r7 l9 E" u9 ~
- var a = document.createElement("a");
$ h. |: N8 \$ t0 m) v0 J2 x - a.id = obj.id;1 Z# @7 W) b7 I3 P1 u# B) C8 u
- a.target = "_blank";//注意:要在新页面打开
6 B1 q5 G0 j! b+ t - a.href = obj.url; //获取地址
7 r; q; N) s( x# q - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
' F5 o/ ~7 S& d; Z4 j( m - a.download = obj.filename; //下载4 j4 T8 R: w; {0 j: \: g& w
- document.body.appendChild(a);0 |0 R/ n$ m7 Q
- }
1 L0 `* j& ?2 s. Q2 N - //获取页面的图片
7 o, L8 L# c, U! J - var ID_postlist = document.getElementById("postlist");; U8 l7 j: q; ?! p# @" L- L Q
- //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
# x% {* |0 n4 b+ t" l. R* u3 T" W+ y - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];( q+ p$ h* w: Z' y9 N1 D
- //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];& B2 J% J4 `# p5 E) l7 e7 o* M
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]. x" N/ n4 y2 c# r. B
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")5 Q% s! S9 L% p( ?
- //1、纯图片,没文字' t5 d" O7 ?+ K: y" I
- var pattl = document.getElementsByClassName("pattl")[0];; ]" N; K4 b1 w6 x x2 s
- var img_number = pattl.getElementsByTagName("img");" Q2 a! _1 E2 ?) 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"].value- |& L7 U$ h+ Y9 y( G H
- //console.log("img的数量是:"+ img_number.length);9 x j8 t( I" P6 B, [3 @1 \/ H
- . L" m- X+ H' G' t
- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"7 D" }( k; _' [
- //3、有说明文字、描述,图片为配图
1 P9 m1 u3 x9 R6 E8 |' D, a - * j3 l* {* }8 \/ p/ R) d1 E& E8 D
- //创建每个图片对象的对应a标签9 b4 k* ^0 V; p T$ _! I
- var qq = 1; h* H6 i0 \# v' E3 P+ h
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];/ k2 R1 @7 H+ U) ~: m$ e
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错" M4 U/ F7 J4 d) r+ x
- //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
3 A3 w9 i0 r+ F* J/ ~5 e/ ^6 E2 ] - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {/ {7 E# k2 I& M+ L
- //continue;: j& g, t$ Q J* e
- //}0 r% [- J# @% |2 U! ?
- //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”4 @7 u J) F" W! r
- var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”! c7 j% q6 l+ D
- if (img_number[i].attributes["file"] != undefined ) {
9 r7 W6 M1 t- b& W( U9 A - var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”* O( V! g' \: J4 k0 U8 Z
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
. E# V( @7 h: k - //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
4 q* H1 C: k. x U9 h/ j5 Q& O - var file_name = filename.substring(0,filename.indexOf("."));2 F H7 U9 |' c( U
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列
, Z$ e- y; |9 h' S$ I5 @ {7 _6 j - if( qq <10 ){
* e: L) { q# n - if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){
6 K' p) c3 r! s - filename = "00"+ filename;
$ t! M9 E8 J2 E' t' R2 _1 L - }8 q$ G2 x# V- @. f" k2 o% f4 P7 V
- else{" Q5 g" |( X& n6 c4 r4 d/ }0 U1 [
- filename = "0"+ qq +" "+ filename;
4 z% l* ]. r) T6 P7 y3 C3 C2 o - }8 E' A3 K0 A- E
- }/ r/ |" H9 I0 `
- else{/ ~' E% N; a( O5 B0 ~" B- o- Y6 q
- filename = qq +" "+ filename; f8 s ~5 P- ^
- }
& M' _2 D) J; t7 K/ g5 m - qq++;
7 y. @6 T0 h& f - }
- {' }3 o" e0 {4 r1 c) b; Y - else{( Q/ B$ B% S) [- r1 ?
- if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
2 I/ `; b* h$ d( ?! U; O: \" F - filename = "0"+ filename;1 l D$ R! \2 c( C0 \
- }7 o" A. b, _: t$ [* s9 ^, d- f& }; S
- else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
5 |" n4 L' K: v- R, L Q5 o' P - filename = "0"+ filename;. O3 o. T E2 `0 O
- }8 R m* ~9 t( i! C/ L
- }5 X U2 P3 O$ I' G$ l! b% I, L4 ^
- var obj = {
6 V( h3 m H* n y* ]9 v - id: "img_" + i,
( M7 j |/ T5 T4 J8 x - filename: filename,
/ Z6 \! g/ A9 _) X - url: domain_name2
# G$ T x6 B+ f/ q6 o% R - }
6 o6 N5 k# G$ V4 d. W - //过滤掉不属于这几种类型的图片( p1 W; P$ b# V/ H* H3 K( G
- if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {
( m- i5 x" f6 Y: b# G4 y - continue;
$ l5 s0 H0 v# v+ W* e. c- M - }2 s0 R2 O' z* h& g- f$ n' }5 }3 v
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50! s2 _3 v: ]4 n% }
- //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {, k& \7 o j3 ?; o: q
- //continue;0 Y( e- P# t0 @9 B" M9 y1 g
- //}1 I M2 Z" e e1 R; A
- //统计图片数量. Z) R& q6 j; P$ l6 j( F
- monitorObj.imgTotal++;
4 [/ D2 s/ o4 ?: o - createA(obj,i);
# A8 X) b/ P4 [. L, a - //console.log("是3整数 "+ i +" :"+ filename);
4 D" J" d- o$ N( q" d" r - }
5 Z" r2 |6 X3 X% W - }
+ o4 x( |$ ]# S1 m! P3 n; `& T - //开始下载图片# O6 K- p. P, m/ z/ V
- for (var j = 0; j < img_number.length; j++) {
5 J0 ^& X8 h+ K/ I$ }9 | - if (document.getElementById("img_" + j)) {, b1 @. H5 q9 |3 T6 v
- //重点:触发a标签的click事件* J9 W, H- k A4 J) a5 Y- p7 T5 l8 A
- document.getElementById("img_" + j).click();
$ h; z* ^7 K, @9 w5 _/ H4 t - monitorObj.imgLoaded++; //统计已下载的图片数量; z; [! b) T- I9 B8 ]0 @1 l( b
- }
F% x7 V4 R$ b$ ?; U& _ - }2 a5 m" F- w6 o( d
- //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);7 N4 L% C+ N: C/ g z- J4 D
- })();
复制代码 ! ]6 |. b" E% E7 C4 H
$ p/ e7 y3 \3 v3 l6 Z+ ?3 z |
|