- 等级
- 见习工程师
- 等级进度
-
- 积分
- 3020
- 阅读权限
- 65
- 主题
- 精华
- 社区币
- 星梦
- 注册时间
- 2021-7-25
- 最后登录
- 1970-1-1
|
" O' R; @( S H8 B5 U: ^姐姐仔,别这样呀,你是在讽刺我没事找事折腾吗?(开玩笑地问 )
7 c1 U/ N e6 F' f0 Y2 {* @! x. p' c, D! A
反正浏览器有油猴插件,有时候逛论坛,看到喜欢的图片,还要一张一张去点,觉得麻烦。' o3 i2 y* X1 u/ G. q" _% z
特别是某些帖子专门放图片的论坛,手动去点,点多了就像偷懒。4 w& @5 ]8 J3 N
0 E3 D' ]1 g5 a而且代码就那几行。。。
, K$ Z* z! D6 U- // ==UserScript==
6 |( k7 i- x5 g2 |0 R - // @name 18粤漫社获取正文图片 f6 z' V7 V4 ~3 {
- // @author HQS! R7 S1 i8 d' c( g* `6 \) @
- // @namespace http://tampermonkey.net/ 名称空间,比如 https://gitee.com/****7 ?3 a* z7 }0 q7 c, E
- // @description 描述:获取图片地址,得到我想要的图片
$ V9 ?: s) j6 c+ P ]
; R1 C/ ^/ \6 ]; G4 J6 v2 R- // @version 0.0.0.11 ^: ?6 F! V7 P$ U
- // @time 2021-09-17 21:09:15. \6 x$ w% Y' j. J
- ! U! _# O' w# W) D* Z* R; M9 C
- // @match *://gomicx.net/*# F5 }% P: A3 P2 E/ x3 m7 O z0 e
- // @match *://www.gomicx.net/*
/ u. t1 E: |0 ?& j: K4 ^% n4 | - ' q; c2 m2 a- z, ?
- // @grant 授予/none1 v7 e1 @. t; e7 |
- // ==/UserScript==
6 j& k' B* Z( o: e, W, k$ Y7 J - : u8 l7 e( M9 ?7 `6 s: w0 T( r
- (function() {4 u" [- a; r: X) a* a* u
- 'use strict';0 ]3 [1 }: M3 |* K M8 h% v( L1 @
5 ^3 ?8 G- \7 Y: W/ ~; r8 U- //一个对象,存储页面图片数量和下载的数量2 U2 k) g( q0 E: y% a4 p0 x3 f. Q
- var monitorObj = {9 W( O, J, _3 j
- imgTotal: 0,
; H$ Z/ W! t: `. i - imgLoaded: 0
/ \2 i6 V+ K t7 g/ h - }
8 L8 j' S& G6 Y9 } - //创建a标签,赋予图片对象相关属性,并插入body
' D0 M+ @# ^( d9 F - var createA = function (obj,i) {) d6 o) z/ L: l) e% n& u2 I& C
- var a = document.createElement("a");* n7 l# d- p% o. n/ H9 q
- a.id = obj.id;2 v( s; b9 p4 x9 m
- a.target = "_blank";//注意:要在新页面打开
' q( O7 y& [0 H - a.href = obj.url; //获取地址
' `0 q: m, |% X1 B* h - a.filename = obj.filename; //想要修改图片的名称,来自:https://www.cnblogs.com/otsf/p/11512040.html
7 ~% B. `; e7 y - a.download = obj.filename; //下载+ W2 a/ j* q A! M. l
- document.body.appendChild(a);! \0 @, v# X" O- J; ?& |2 p
- }; R+ V& v0 o) m9 w7 i; E" b7 F
- //获取页面的图片
: X7 T7 @8 ?9 r# Y1 ^& b J! ] - var ID_postlist = document.getElementById("postlist");
2 T$ s3 ]6 x. n d% r7 V Z - //帖子有好几种,每个用户的都不一样,所以代码 主要取决于第 8 子类的类型 " div class="t_fsz""
; x1 V4 R; e+ ~1 n - //var children_0 = ID_postlist.children[1].children[0].children[0].children[0].children[0].children[0].children[0].children[1].children[0];
6 ]% o! | ~# @8 } s2 a - //var children_1 = ID_postlist.children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0];
9 C) a. H- } S - //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0]) y+ t8 ~2 Y k% T2 J
- //document.getElementById("postlist").children[2].children[0].children[0].children[0].children[1].children[1].children[1].children[0].getElementsByTagName("img")
1 S8 e. [2 _+ e# ]0 d - //1、纯图片,没文字
: ^& i& p8 X7 V, _7 b - var pattl = document.getElementsByClassName("pattl")[0];
% p% z/ |, y* N6 l0 u8 D6 z - var img_number = pattl.getElementsByTagName("img");
# K! V$ t) ~! ^5 H - //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- B. i; j; H; _: f1 \" D. Y' A
- //console.log("img的数量是:"+ img_number.length);! |& Y1 ]+ P- S
- 2 N6 f: l7 r# n2 ~) k# Q1 [
- //2、有文字,其实也就是标题。然后一个图片的文件名,接显示一个图片,重复的列表,这种有单独的类"pattl"8 K* s8 R/ G' `: e$ V6 d% w
- //3、有说明文字、描述,图片为配图
9 H: u5 J8 h" q7 \
' O$ K8 m2 O/ i- //创建每个图片对象的对应a标签
' @: V5 z/ }$ g - var qq = 1;7 s" J# o( u! ^- R8 w( Y
- var fruits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];" N* s( J6 K' l' B
- for (var i = 0; i < img_number.length;i++){ // 这里要减一,因为 img 的父级标签“ignore_js_op”中,最后一个是 “br”,不减一,就会报错* a) D2 V0 `' B& ]% h. X
- //这里是为了过滤掉 哪些 鼠标悬停在预览图上方的图片地址是,出现的旋转预览图的按钮 小图标
. }: j2 f: K7 P" J - //if (img_number[i].width <= 20 || img_number[i].height <= 20) {
" Z6 @* f n% T- Y - //continue;" ~0 r& l, C5 ]; \: G" M
- //}
" ~( |2 K* ?& |/ S - //var domain_name0 = img_number[i].currentSrc; //获取网址的前辍 比如:“http://bi-si888.xyz/”( C3 A0 w+ y# y5 l/ d( w0 z
- var domain_name1 = img_number[i].baseURI; //获取网址的前辍 比如:“http://bi-si888.xyz/”
- M' a% ]: ?6 ? - if (img_number[i].attributes["file"] != undefined ) {
4 F7 D4 z8 L+ ?3 r* c% T7 G: r - var domain_name2 = img_number[i].attributes["file"].value; //获取图片的非域名地址 比如:“data/attachment/forum/202008/13/153241mv5vbcxd51uvdzdx.jpg.thumb.jpg”- B3 m6 I7 U( }2 D( ^
- var filename = img_number[i].attributes["alt"].value; //获取图片的原文件名 比如:“微信图片_20200813152956.jpg”
/ e6 `: }9 E/ R) ~ - //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
" `1 c; |. J* B' b" @; Y+ `7 r - var file_name = filename.substring(0,filename.indexOf("."));2 n; |+ X. e5 S, q- z
- if(!/^\d+$/.test(file_name)){ //判断文件名是不是数字,不是的话自动加 数字序号排列; i+ v+ T- C' X" p- ] v- T
- if( qq <10 ){
9 Q! q! e9 t% ~: |6 S - if( file_name==="cover" || file_name==="Cover" || file_name==="COVER" ){$ W$ t) I/ \$ n- f( ]" ^7 {) h
- filename = "00"+ filename;
. j) {% `4 v$ Y, x" W - }. W$ Y/ K& r: T Z2 p3 ?+ H" s. W
- else{% ?. O* z1 N& M
- filename = "0"+ qq +" "+ filename;
3 m6 u# H' S8 K' Q+ u - }1 w. {7 C j4 k/ B! f9 K
- }
. O/ g% J' G6 H+ C - else{! g+ E! P, ?/ k5 r0 G
- filename = qq +" "+ filename;
- Y* M. ~, M0 H3 ?% ~ - }: k2 ]6 b& P8 a$ h
- qq++;% l. p' W/ d+ p) A
- }
" v- ~1 T3 n9 {8 v - else{
1 s! f4 P4 z( w" M$ k - if(file_name === "0" ){ //如果图片名字刚好等于 “0.jpg”时,加一个“0”,变成“00.jpg”. C" ]% h3 X6 X) [0 u( u# Z
- filename = "0"+ filename;- C( E; U. s: C+ K
- }5 |4 |1 Y5 E' k) l: h3 i: r
- else if( fruits.indexOf(file_name) != "-1"){ //如果是1.jpg之类的文件名,自动加 0,变成 01.jpg
4 j# P- h5 T; K - filename = "0"+ filename;% ^2 Q8 e7 O6 x7 D/ _5 K
- }
% I# D+ r, f0 P% c: Z+ R4 S/ n - }( q8 K( I$ H0 O
- var obj = {
+ g1 L1 p% }- }, [9 u& H - id: "img_" + i,$ S8 L5 T6 r& v
- filename: filename,
, p) F/ I1 b, O% m: S" E. C - url: domain_name28 r/ X9 f3 k" ?' r) l) I; {! w6 ?
- }
' G7 |# i& d7 r6 v/ @ - //过滤掉不属于这几种类型的图片1 V, P }8 R- @% s" A
- if (["JPG", "JPEG", "PNG","GIF"].indexOf(obj.url.substr(obj.url.lastIndexOf(".")+1).toUpperCase()) < 0) {# z/ ~9 r+ _1 o& [* T
- continue;
: j* f6 q) B6 n2 n: R6 V - }
$ d# l. b- L' n0 J D1 R - //这里是为了去掉知乎用户头像的图片,头像大小是50*509 j* A8 s( g+ @4 c/ y( Y" C% Q
- //if (children_2[i].children[0].width <= 50 || children_2[i].children[0].height <= 50) {) G/ a# O) j) b: y, [
- //continue;
Z: V) w5 R" j3 i* Y* N - //}/ [4 t$ \* {5 \) \' p. \; l
- //统计图片数量
* Q/ M$ r5 S8 V, {9 k: P6 X8 L/ U1 i - monitorObj.imgTotal++;
1 @$ P: o0 l: M7 l' b - createA(obj,i);
2 w' ?% i4 T! `2 U; m' P1 q- S - //console.log("是3整数 "+ i +" :"+ filename);
! t' H9 U* L- k4 s7 f# b - }8 B% S! n: E% R
- }2 x$ W' p9 c2 _
- //开始下载图片
4 U1 g+ V/ j+ p5 r# _# j - for (var j = 0; j < img_number.length; j++) {
3 Z; ~/ z$ W6 e. L$ ?5 f! g - if (document.getElementById("img_" + j)) {
8 Y, n( m; A3 {! Z" @, L6 a2 e - //重点:触发a标签的click事件6 ~" l5 K8 K d% `4 a! a, }: W
- document.getElementById("img_" + j).click();
3 o& [( y2 i# O# p/ H( m& N _ - monitorObj.imgLoaded++; //统计已下载的图片数量
; z- x6 o9 M* t7 g - }; K6 F. m( [' l! c( u9 i% Y
- }2 z- ~4 l1 T( q1 ?8 R- F1 H
- //console.log("已下载:"+monitorObj.imgLoaded + "/" + monitorObj.imgTotal); B) c& g, o/ t- z2 V
- })();
复制代码 - I& [4 [# \% }" ^
/ N$ i5 Q( x9 ~/ K# t6 \4 {4 V
|
|