- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3010
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
+ F r% d- n7 C( M+ Q姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )
& ]+ u6 V+ R, \7 ?, `3 l) F! C3 [' D& j' Q$ R) b( z6 r
反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。
2 D! h& d2 H1 { c1 D特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。
) z4 c; q: G6 U; v% N" A5 b1 M" d w
而且代码就那几行。。。
) @8 x# U @+ {) p% k9 Y# r- H! p- // ==UserScript==) `. u" |' u" t
- // @name 18粤漫社获取正文图片9 Z t0 j, I+ g, H
- // @author HQS. F6 {: X6 g2 G( P& \ Z
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****
! E* K( Q7 U: E) N$ X - // @description 描述:获取图片地址,得到我想要的图片
8 a$ g) m3 z: N- J& N7 O7 z
3 e9 u; O" _* q" k. N- // @version 0.0.0.1, @# g( Q- w. Y: o! b
- // @time 2021-09-17 21:09:15
+ N1 i9 f& \* d$ o; N3 Y - * [/ }& X- p; ]: t+ S" |
- // @match *://gomicx.net/*- w7 x$ c- y2 s7 ~4 K
- // @match *://www.gomicx.net/*9 E$ X3 z u: O9 ~
& n4 M2 [. N m- // @grant 授予/none; _8 r% k7 g/ Q1 U6 D. R
- // ==/UserScript==
2 t& n7 E8 |+ m8 S' e6 v
- T7 V0 v$ \! ^* ^6 E) O- (function() {
' [& {/ E* g2 b$ f) [* R - 'use strict';
+ q$ |" \4 }% `0 n - M+ O q9 y7 w3 R9 [) p3 T7 \% U+ p
- //一个对象,存储页面图片数量和下载的数量
# Y( i! m$ g. o: A, _' @. A( N - var monitorObj = {
N- X( N( z1 D1 Z. Y* P - imgTotal: 0,& E2 X9 m9 r4 r1 ?4 L! ~- X
- imgLoaded: 0
; W. a1 q# ^- [8 F - }$ q; e1 Y t4 f; U* o' T5 ]* }3 D
- //创建a标签,赋予图片对象相关属性,并插入body) E: [1 ]# R+ _" }& Y& N& b# r
- var createA = function (obj,i) {$ {; J ^# }/ z) J
- var a = document.createElement("a");
5 ]% N G# n: T. s) j% K - a.id = obj.id;' J6 B& ^; Y) f' W+ r4 K
- a.target = "_blank";//注意:要在新页面打开" l4 N( y) U( F) t+ ]$ d
- a.href = obj.url; //获取地址
: ^% I- Y6 @/ |* D/ W% e - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html) G/ Z' }2 q) Q5 M4 x( k6 n, G
- a.download = obj.filename; //下载2 k- h8 M5 w+ q1 F5 Q+ ]
- document.body.appendChild(a);
: Q% h3 A; C+ p7 K3 a - }7 a1 u- I2 \" ]$ S5 r4 |
- //获取页面的图片8 a: k+ J/ w1 j1 Z- I' P
- var ID_postlist = document.getElementById("postlist");
* l$ K4 {0 g+ `1 s2 p& A; ` - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""5 b1 Z% N' k& \. m3 J. o
- //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
& j! `+ C9 Y% G - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];
' f/ x1 d8 O0 ^# I3 K5 f - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]6 M% S m, `+ H$ J$ D: X" Q
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")) [) \9 H! }* _4 c- |
- //1、纯图片,没文字$ u7 T4 V5 x( z/ v/ @
- var pattl = document.getElementsByClassName("pattl")[0];
4 T- |0 W& |* @% Z! N* m- u) v$ Y6 h$ i - var img_number = pattl.getElementsByTagName("img");3 X" l& B+ V; i
- //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
& K" _: W; ~# t2 i+ S1 {4 } - //console.log("img的数量是:"+ img_number.length);
3 { G8 j9 N0 ]
" z* ?) |) W. E9 ?9 [% b- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"
( X6 F) h, g& j3 {) a- E# Y* T - //3、有说明文字、描述,图片为配图
5 l* O3 D' s$ m! D - 7 `7 n- e! L* ^0 E
- //创建每个图片对象的对应a标签$ s$ u( Z& r8 D O
- var qq = 1;) @1 H; k3 T* Y+ @/ f; u
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
/ f6 @; d' z$ `3 l) M$ r - for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错
; @! K% q+ k; J; U/ B! a2 J - //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
}. ^ |: e% _ Z- J: | - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {
5 H' F7 B/ ^. Q- P+ Y$ }5 n4 p# w - //continue;2 W l8 y' X: z% S% c7 J9 ?
- //}6 ^( L$ Z4 c+ m7 M6 s( \3 M* z
- //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”
, D1 {; Q% B0 @ - var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”
! Z( }2 i0 H. M5 K6 `0 @6 j - if (img_number[i].attributes["file"] != undefined ) {
' e0 ^0 ?! G, G b5 \- l a* H - var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”, E4 x+ \7 L1 q0 b
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
% |; ?. q& z( s* r* p - //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" ]- M) o1 x! N" r7 @6 e
- var file_name = filename.substring(0,filename.indexOf("."));
: ?. ^: z0 y. f1 l/ [ - if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列
: F( h* y" S( ~3 I - if( qq <10 ){1 [, ?! }; H$ q3 ~, Y% h( n3 l3 F
- if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){
5 i5 G4 \( F& ]! ]: c - filename = "00"+ filename;- f- C0 @. S: y! V- s
- }
4 _/ x; c9 I* v. x - else{
0 {3 V" w7 y( `+ P9 ~ - filename = "0"+ qq +" "+ filename;
1 y+ y$ c5 J8 j+ L# p- f - }1 M. `3 j7 ~4 P! h
- }' n' C6 _0 a7 E) x$ e5 W
- else{
; U- o6 o. D5 F* I) q - filename = qq +" "+ filename;5 `. ]- O! r) H! G( s7 P V
- }& w; S) `+ U: p& {) Y, I
- qq++;9 Z0 Z0 y1 Q) c' u- U2 u# T2 Q& y* |
- }( W7 u* v% ?9 M: u* t# z
- else{
) p( J; W* y$ V! N - if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
/ X5 m! W) l: B8 R) ], b - filename = "0"+ filename;! B' o8 @' H: J
- }
7 l; j+ J! N$ N+ O6 t - else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
/ r7 {" I; s O# H - filename = "0"+ filename;( c+ n8 g. ] e# ^" e6 H
- }% K1 e |# [/ m3 J) M2 F. l, K( d
- }" e1 x, ^) N: Y
- var obj = {- j( r% D- ~) @
- id: "img_" + i,3 Q2 A6 a# v T$ O
- filename: filename,* d! b6 {( T/ \; G$ t6 a3 _
- url: domain_name2
) E' i& X" V8 Y - } m$ T0 Q/ \% _; _* [& D/ f; t
- //过滤掉不属于这几种类型的图片( l4 I/ U3 x; `2 [0 ]
- if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {9 |$ K* I) A, B- n6 B1 M* F
- continue;( a% ]9 `9 _* L. G5 V. w0 f
- }0 z, x9 W# n4 c# f8 r Y
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50* D& G% n" C4 S3 s3 Y$ U& d1 h
- //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {6 L0 w' x, ?9 M; D# J; S; ?
- //continue;
- j( L' {9 p4 r$ t6 [ - //}$ Z3 @: N" }6 r/ n, t- D
- //统计图片数量, `$ A8 T `6 \5 w' J2 a
- monitorObj.imgTotal++;
# d% K( L6 o3 n1 g - createA(obj,i);
p+ W+ M0 k' c- d& h o - //console.log("是3整数 "+ i +" :"+ filename);
5 r- O& [! W1 E9 r. i% ^& y3 h - }. Z! A8 r# [8 Q7 E- \+ {
- }$ \) ^; u4 G. E! F
- //开始下载图片1 T9 V6 c9 X- V* m; W
- for (var j = 0; j < img_number.length; j++) {
, p d+ k& ~) K# y/ O3 m4 t - if (document.getElementById("img_" + j)) {
/ M5 Y5 s( f# O1 s4 A, x1 m - //重点:触发a标签的click事件
6 ?7 x+ B7 C q' Y, a3 ` - document.getElementById("img_" + j).click();' Y, M- S) m1 j4 o% C- m
- monitorObj.imgLoaded++; //统计已下载的图片数量9 E4 c( H1 ?* ~. Z; r
- }' r8 M& G3 r; v \
- }* j9 a% t9 [8 G3 P$ s
- //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);3 ]: I+ t9 l4 g+ [
- })();
复制代码 6 i; W$ }( g. E* p! B8 B% b9 w
; _0 q3 B8 A+ |4 c5 L |
|