- 等级
- 见习工程师
- 等级进度
-
- 积分
- 2773
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
# {1 h2 j! ]' ^姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 ); `/ V O- g1 }+ C- B
# q0 P+ {1 {* }* E反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。
) N5 J8 o! t8 ]( p2 v, w特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。
3 C% e" b2 G6 ^; ?7 q: r# b( l& E# L) @7 d& u
而且代码就那几行。。。
5 w2 q& O, X7 b [- // ==UserScript==) M7 Z u! p( K& F4 m
- // @name 18粤漫社获取正文图片
, a! A7 P5 |3 j; Y& t - // @author HQS7 m1 |$ a' r; U( Y v
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****
9 m7 L# M2 J* R: R# F - // @description 描述:获取图片地址,得到我想要的图片
; y( D, L" S+ W - ) ^5 e, {8 I5 G$ _- F
- // @version 0.0.0.16 L, I4 H# i7 v1 F' s# [; d
- // @time 2021-09-17 21:09:15
% R" u* F7 J2 X" w% R2 r
, S* z2 n" @, b ~2 b! u- // @match *://gomicx.net/*
4 W2 ^' F3 f! U - // @match *://www.gomicx.net/*
; p' y3 v- F! [9 Z
8 C; w- i, S: y- // @grant 授予/none
2 X6 B7 h! U4 W+ h1 _' I2 T% S - // ==/UserScript==1 t' l" V" m x, r- `( R1 Q( g
& h* b& {7 {4 _2 t* F/ k1 _: K- (function() {
+ ~( d+ X( C1 ? @2 ~" c K# ^ - 'use strict';
- }8 I& j& `8 {. G' b; x
# d" U* X" b+ R6 h7 M5 v! x- //一个对象,存储页面图片数量和下载的数量% r" @; z8 K' M# p4 D% L
- var monitorObj = {. |# p, _8 ~: q3 _0 z5 v% L
- imgTotal: 0,' H! Z8 `, h2 X
- imgLoaded: 0+ y$ c! X8 h& b
- }
: F9 C: |; W. p6 A - //创建a标签,赋予图片对象相关属性,并插入body! W* I& T( P( q' L
- var createA = function (obj,i) {
% Y$ B0 \, n0 x5 q& U - var a = document.createElement("a");
& b$ ? w3 i& S - a.id = obj.id;; Q% V3 L8 d5 K9 P) `
- a.target = "_blank";//注意:要在新页面打开 o- i1 Q$ A' w+ M4 j" Y i! r
- a.href = obj.url; //获取地址
9 p$ L7 a' `$ g- S# Z" ?, W7 o( b - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
( ^- e! ~# M3 d+ n - a.download = obj.filename; //下载
% D/ }- Q$ A& t% o, D - document.body.appendChild(a);% a& O W( B) K- U9 a1 y
- }
& C' j$ K2 q# t, i: e - //获取页面的图片* W8 g5 D: p/ @: \6 Z
- var ID_postlist = document.getElementById("postlist");1 d, v, e2 y4 V( @) i0 O# l" Y
- //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
4 p( B7 S8 _7 R: l2 L: `6 \- | i& a; j - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];, L" E. `, Y/ j4 h& w7 a
- //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];. o$ \8 o& E7 ^3 Y$ D
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]) L+ z" U) h! i$ R( B
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")! i# C6 x; j3 N" X
- //1、纯图片,没文字. x3 S- [ |. ~6 U
- var pattl = document.getElementsByClassName("pattl")[0];
& F3 @) a+ A% J# G! E* G - var img_number = pattl.getElementsByTagName("img");9 N! y; Z: {, R x, S
- //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. a8 |0 _7 X. y, |) s
- //console.log("img的数量是:"+ img_number.length);
- F- m ?+ \$ S. g
" O- Y0 F3 P F# L. x8 ?0 ?; {- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"% H: [& L3 ~- z. z5 H9 X, N9 Y
- //3、有说明文字、描述,图片为配图
, E( @7 a, P! O - 4 Z- O( K Z2 _+ B% x
- //创建每个图片对象的对应a标签
5 I+ j8 K+ r9 w( y; {- y9 N - var qq = 1;4 j* ?( P. m: E2 E, r* R. o o2 D
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];, [, R* W1 w; }9 r; b8 b! r" F
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错
( v5 [( `# F' X& P0 p) `. w' }- c - //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标+ f0 f7 E( q! \9 P8 n+ ?3 U5 U
- //if (img_number[i].width <= 20 || img_number[i].height <= 20) {+ l4 ^6 @/ n9 e( z/ u& |$ ^
- //continue;
+ r ~0 `* M' ?7 H# A4 @ - //}' A' }) ~5 z+ R; P# A& u! E
- //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”. T/ e# Q3 g9 t/ N9 {6 z9 t
- var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”0 C, O- m6 z; y& \
- if (img_number[i].attributes["file"] != undefined ) {$ \. l7 `; o+ z8 G$ ~9 {
- var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”$ H$ U: e5 k- b* l4 Q2 E
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”, b& p' p: C* |
- //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' O3 s) \9 @: I, I7 T3 U
- var file_name = filename.substring(0,filename.indexOf("."));( ]& R$ a" i: g4 u2 m2 r
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列' V& T0 j/ ?3 |2 R
- if( qq <10 ){
/ ^' n& V$ z9 k, \ - if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){4 \! f# ]$ J C
- filename = "00"+ filename;6 G! s z; K2 l2 b5 D! ]- {
- }5 G2 ^# @0 s+ E/ z* W
- else{
( d" J: P9 @' A' e# u& A6 ] - filename = "0"+ qq +" "+ filename;
) Z. y6 K# K3 i% M( j# {! o6 f3 T' F - }- j# o5 F9 y" }' ?$ m
- }
4 K, {4 T" w1 E/ `; v9 B% I - else{! w' d1 C( U8 u$ I0 ~2 e
- filename = qq +" "+ filename;
- C! L0 p! i6 b8 d - }
- _, C+ H( Y3 b5 y k: g - qq++;
& n$ m6 ~# Z5 E - }
3 W! K3 j. [) C7 O9 [ - else{
8 |/ l. x+ q# y& [' b4 D - if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”' }3 K7 n9 @* A, S) `
- filename = "0"+ filename;
5 |. m' O, p6 D( C0 h$ ^ - }
0 f8 W) U- x, t; F- L1 U/ z - else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg3 c2 t- u% D0 ]+ a! C
- filename = "0"+ filename;
5 d0 O+ U- s" Y3 P5 V3 t - }- u4 F+ S! `+ l! Z
- }) l0 e& z# h; ]" u; H. N
- var obj = {
5 p/ d* o' \: |1 B( C7 \ - id: "img_" + i,9 |! U! J6 i% N) D# u
- filename: filename,5 G0 L# D) R6 ~6 C( c( |1 J# r) F
- url: domain_name2
! \5 j( d. m0 S3 K6 e/ B - }
" D0 j" Y9 U& H+ K$ M1 K - //过滤掉不属于这几种类型的图片
6 I. _8 z7 i8 P. T# t! j3 K4 j - if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {
& i# F7 {" j/ a3 o7 A! ` - continue;$ L4 P% c' p& l8 r1 t. Q
- }
e3 y8 z) P/ l E - //这里是为了去掉知乎用户头像的图片,头像大小是50*50
$ s( t& E; t7 X# ~, ~ - //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {# z) s- y* A$ M% t% H# P
- //continue;
; A6 g$ R: k; Q2 x& | - //}; M2 }4 }6 N: T+ N; K6 q0 |
- //统计图片数量
9 C4 w# r5 q) t1 o' I - monitorObj.imgTotal++;3 e4 E1 N9 @ i4 ]$ P/ I4 N) }
- createA(obj,i);
6 o7 ^! P# n) b$ j- t - //console.log("是3整数 "+ i +" :"+ filename);) Q) w1 h- S, x
- }7 t9 q# S5 @' j& m& u
- }
8 m7 z) A8 x! c, ?' M+ \ - //开始下载图片
: h/ W" @! q) b( [, W2 `$ z - for (var j = 0; j < img_number.length; j++) {
- X: b* u# _9 g6 J - if (document.getElementById("img_" + j)) {
3 u# u( N, Y% t5 F" o - //重点:触发a标签的click事件0 h( |4 G7 V. z, n5 H, W7 z
- document.getElementById("img_" + j).click();
" K8 c( M# D" |7 \ - monitorObj.imgLoaded++; //统计已下载的图片数量
( ~- P. i# B% D& O: H* C - }
! x6 k& a" c1 `# m: O8 q. ]6 j - }
$ ~1 {' y T f3 n9 n# U - //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal);! P( j! J- |5 D3 i
- })();
复制代码
/ z2 }' q4 b% `0 `9 ~4 C
- K: o. P9 A* R+ r |
|