- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3006
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
' c- ?) C- u3 w* G- h* R姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 ): h0 k/ ]6 I2 h+ y2 L) \' I& e
: v' ]- J6 @1 {1 Z" I+ w' v5 I
反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。
0 t& d# ~% U ]) ^8 \$ n特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。
% i4 ~9 Q( o% h1 t: S2 k( S% G H1 L6 c& e, o6 i
而且代码就那几行。。。5 i" Z% ^8 U9 |
- // ==UserScript==9 W$ f3 w3 h# w* X; n
- // @name 18粤漫社获取正文图片" O' [; D0 w/ M" O+ S, I
- // @author HQS# J7 z/ \6 }% V1 w& D# b
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****
* j0 G4 K' A9 E @3 U% s# @- b - // @description 描述:获取图片地址,得到我想要的图片# D* ]9 t, O% N2 P/ B* J
- * s9 H! ]' J4 B# s8 i8 f
- // @version 0.0.0.1) u, A6 G- \$ q1 E* e; h7 E8 N
- // @time 2021-09-17 21:09:15! O8 M9 @$ U/ v1 Z' o, l1 r
- 3 p: I9 r, `9 a) \
- // @match *://gomicx.net/*0 H* l. H- n' j+ T, d; I5 m
- // @match *://www.gomicx.net/*
. a, y- M* b& ]$ O4 P, d# A. _; }' s! J - ) c( o! n, N9 i) x% `
- // @grant 授予/none: r1 B+ e/ |2 c7 s& `: K" k3 _
- // ==/UserScript==
& T" R" g3 N" y8 H0 g3 b, K
4 c3 Q# o( m. ? s- (function() {
( z" P5 h4 i: E - 'use strict';
4 X+ M8 { M3 X% q% B - : T! T4 M1 Z) h9 i7 m, N( J9 S
- //一个对象,存储页面图片数量和下载的数量: h! C' S* k2 P# `& p( r
- var monitorObj = {
* s* G1 D. Y- h* ?7 \. {4 x - imgTotal: 0,
) i8 E( y d3 h1 c7 I& | - imgLoaded: 0. z8 y1 J3 k. T" `
- }
/ m. v1 [* V' u7 n" A - //创建a标签,赋予图片对象相关属性,并插入body
4 b }3 r" @" i2 ?6 k; V( x - var createA = function (obj,i) {+ p$ i' ^4 l7 s8 o( j3 L
- var a = document.createElement("a");
" ]0 n. G- y$ D% ] - a.id = obj.id;
! C- |5 r9 [" B* }* v" i% i - a.target = "_blank";//注意:要在新页面打开
6 o7 a( H7 g/ I8 _" ?, ~ - a.href = obj.url; //获取地址
# s& \" q# r+ q l8 J$ ^ - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
7 Z- \. {! I1 G3 d - a.download = obj.filename; //下载
' l2 Z/ M* ]- h& T7 w- q - document.body.appendChild(a);3 n# j7 a/ K, z/ R7 Q* p8 t5 k
- }
' }9 @! A' l7 p* O) [7 L! ?* d/ ? - //获取页面的图片% k. s: W7 @6 p1 n* B5 J. b1 F3 X, {
- var ID_postlist = document.getElementById("postlist");
( U& A$ ?9 y0 V7 E4 U- @ - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
5 | s! S# Q! _: f2 ~ - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
, C* P6 w4 M* h: E& i2 y( ~- K - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];/ Y: S8 E( z4 W& H5 T4 c! U8 n/ o2 f3 s/ S5 t
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]2 X' W" h- ~) \* I/ H
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")
0 i/ C9 m: {9 X. w, Q5 e& i - //1、纯图片,没文字
: H0 ?: K; ~4 T9 k - var pattl = document.getElementsByClassName("pattl")[0];) { a: i# N* r# j L
- var img_number = pattl.getElementsByTagName("img");
( d6 t6 O" [! h: ]. Y5 a - //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( h- I0 O( G2 u+ `: V
- //console.log("img的数量是:"+ img_number.length);0 v1 C/ ]& _7 E9 A2 a; u5 f* c
' [- f. X" ~+ S8 }! H- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"
; f- H. Y- k' C& y# A9 l5 l; w- q - //3、有说明文字、描述,图片为配图5 A* A; L; d& l% v; o: i3 X! m
- 3 k. s2 C) g. \; y' p
- //创建每个图片对象的对应a标签
! G/ s1 }% i3 I' \ - var qq = 1;' K3 i$ U$ {2 w; o
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
" p9 C+ a, L6 {: }' M: {0 k - for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错
1 X- E& P$ H& ?" H7 e. n- c( ^1 C - //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
" E2 p, M. G6 p7 ^" I8 a5 x0 B( d - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {- }$ f3 s5 N$ Q. A0 Z
- //continue;
+ M/ V Y0 r: J+ O - //}: ^, u% P; b @/ d6 Y& e" i
- //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”
% i8 Z1 m/ @5 X - var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”
! `, ~( V* n/ ?' m, s5 b - if (img_number[i].attributes["file"] != undefined ) {1 G8 |* R3 Q4 [
- var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”$ l; ~3 w/ b4 p3 z4 p4 C
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”3 I+ Z6 U, G3 D. {
- //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
: k! R! _( f" W6 q c2 F( F - var file_name = filename.substring(0,filename.indexOf("."));( t0 v, ~2 O/ T
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列! Q9 W* Y) s" y2 U6 f# C0 P4 C
- if( qq <10 ){$ J/ u n% U5 ^- h% V
- if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){9 v4 y( s7 Z j3 h- A
- filename = "00"+ filename;5 \( Y5 K1 i8 M* q; V+ g! T A
- }
9 o# W2 G+ i! @6 b! ~8 Q - else{
, y/ S# m: e O g - filename = "0"+ qq +" "+ filename;
/ M3 g0 R0 R) E4 S - }
$ y, x: z# ~& R L - }) x5 V% a& S) u6 x0 S' N9 ^& D4 F
- else{
) p' F7 g. ~) K& g5 s7 Z+ R - filename = qq +" "+ filename;
* r& e: j9 C! n - }
4 x9 K/ u% f, y, m# @/ l - qq++;) Y" q! d% x! Y6 E* U+ {
- }7 Z9 S4 |# |$ u3 _+ f7 ^
- else{1 I0 q* k1 o7 l1 r2 y
- if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”
& g' E, g' g- ^1 [ - filename = "0"+ filename;
7 j* ]8 z$ f7 z5 ? - }
9 K. Y! m/ E; Z g% Y! ? - else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg4 w" o) x& K! K" c0 Q9 ^
- filename = "0"+ filename;* }6 A# g: P6 I$ p6 d6 ^# U
- }5 ~. Y u" r' a" N: m0 V
- }+ O* \0 Z$ ~# r: g- j! S! |* u
- var obj = {4 }. h0 K8 K7 C$ C) f
- id: "img_" + i,
4 D% C" D% v( o2 a1 f9 H0 a4 @2 \2 C - filename: filename,; `, O. ~5 |) @3 y2 b! {
- url: domain_name22 N" Q. m! H/ `$ j5 D& J
- }, l6 f+ D0 K- j |" g
- //过滤掉不属于这几种类型的图片3 P/ [- U. M8 N8 P2 X- c
- if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {" d" b8 ]- ^; _( r( t o$ E: j
- continue;- Q+ R; D g( ~' L/ f6 q! y
- }4 G6 J& ^) _0 u* r7 i3 I
- //这里是为了去掉知乎用户头像的图片,头像大小是50*50
" l. N. y* E' I7 _$ ^ - //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {
% x0 P X$ ?8 b6 T - //continue;0 r* j* K/ |' O
- //}
) X6 v8 @$ k: S - //统计图片数量/ }* F. f: \0 D4 G5 u9 W
- monitorObj.imgTotal++;
. o- P5 ?$ m8 J9 F - createA(obj,i);
, y+ t. w$ A: t2 U8 G5 L - //console.log("是3整数 "+ i +" :"+ filename);4 c% t% s3 o" x8 c
- }
% {; Y0 L/ k: l* Q! U - }
7 M( T+ \4 |" W* F t3 M8 m - //开始下载图片
F6 ~! \) @, i& u1 z: N - for (var j = 0; j < img_number.length; j++) {
9 D+ k; _# W+ u0 X - if (document.getElementById("img_" + j)) {
+ Y: \# e1 n/ V# t* b - //重点:触发a标签的click事件
) w; f6 n1 T: O- y" J& R - document.getElementById("img_" + j).click();2 }# s4 Q& x$ V: A- F
- monitorObj.imgLoaded++; //统计已下载的图片数量4 w! L! t P% ^- _& _) }
- }
# S/ I x# ^$ k5 e' N - }
( y" }: `5 j9 [- N* l - //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);
" |* N$ W7 q; i/ z( V2 d# w - })();
复制代码 / @% R; P5 h1 B( K, y: }
( m% ]6 c. w7 n j7 s
|
|