新浪微博作为图床获取大图片地址油猴代码

结合多个分析结果,使用新浪微博作为免费图床。由于将上传的图片转换为博客使用markdown图片引用代码特别麻烦,并且获取新浪大图也很麻烦,因此制作脚本,完成自动获取大图片地址,并生成markdown图片引用地址,发布博客,很爽,将代码加载到油猴使用。实现了使用油猴代码获取大图片地址,并格式化引用地址。

准备工作

  • 注册新浪微博
  • 谷歌浏览器等安装油猴
  • 自己建立代码(代码欠规范整理,先凑合看,后续整理)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    // ==UserScript==
    // @name Sina Pic Get
    // @namespace http://tampermonkey.net/
    // @version 0.1
    // @description try to take over the world!
    // @author You
    // @match http://photo.weibo.com/*
    // @match http://photo.weibo.com/*
    // @match http://photo.weibo.com/*
    // @run-at document-end
    // ==/UserScript==

    (function() {
    var xpath='//*[@id="album_detail"]/div[1]/div[3]';
    var epath='/html/body/div[2]/div[2]/div[2]/div[2]/ul/li[1]/dl/dd/div[2]';

    //定时检测加载完毕后调用
    var InterId=setInterval(function(){
    // alert("每秒钟都会执行");
    //按需停止
    var imgsx=document.evaluate(xpath, document).iterateNext();

    var eDiv=getElementByAttr('div','class','mark_box M_txtb');//返回data-id为123456的div集合
    //for(var i=0;i<aDiv.length;i++){
    //aDiv[i].style.backgroundColor='#ccc';
       // }
    var imgs=imgsx.innerHTML;
    if (imgs.indexOf('<img src')>0){
    // var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/ig;
    // var src=imgs.match(srcReg);
    // var src = srcReg.exec(imgs);
    var src = [].map.call(imgsx.querySelectorAll('img'), function(img){ return img.src;});
    var srcmd='';

    for(var i= 0;i<src.length;i++){
    var url=src[i];
    //var urlx;
    var m = url.match(/^(https?:\/\/(?:(?:ww|wx|ws|tvax|tva)\d+|wxt)\.sinaimg\.(?:cn|com)\/)([\w\.]+)(\/.+)(?:\?.+)?$/i);
    if (m){
    if(m[2] != "large") {
    url = m[1] + "large" + m[3];
    }
    //alert(url);
    srcmd=srcmd+'![]('+ url +')\r\n';

    }
    // alert(url);
    //var p = document.createElement('p');//创建p节点
    //p.innerHTML ='复制';
    // eDiv[i].appendChild(p);

    //var px = document.createElement('textarea');
    // px.innerHTML ='![]('+ url +')';
    var mdurl0='![]('+ url +')';

    var mdurl=mdurl0.replace(/http:/i, "https:");


    //px.style.display="none";
    // eDiv[i].appendChild(px);
    // eDiv[i].id="picmd"+i;
    //eDiv[i].innerHTML='<button onclick="javascript:copyText(\'picmd'+ i +'\')">复制地址</button>';
    eDiv[i].innerHTML=' <a id=pica' + i + ' style="color:#ff0000" href="javascript:void(0);" onclick="copyText(\''+ mdurl +'\',\'pica'+ i +'\')">复制地址</a>';
    }



    // alert(srcmd);
    //创建textarea
    var p = document.createElement('textarea');//创建p节点
    p.style.width='100%';
    p.style.height='80px';
    p.innerHTML = srcmd;//p节点显示的文字
    var xxpath='//*[@id="album_detail"]/div[1]/div[1]';
    var div=document.evaluate(xxpath, document).iterateNext();
    // div.appendChild(p);//往div中添加p节点

    clearInterval(InterId);
    }
    },100);


    //var xpath2=document.getElementById("album_detail").innerHTML;
    //var sreg=/<img src=\"([^\"]*?)\">/gi;


    copyText=function(id,aid) {
    // alert(id);
    var ta = document.createElement('textarea');
    document.body.appendChild(ta);
    ta.style.position = 'absolute';
    ta.style.top = '0px';
    ta.style.left = '0px';
    ta.value = id;
    ta.select();
    ta.focus();
    var result = document.execCommand('copy');
    document.body.removeChild(ta);
    var addx=document.getElementById(aid);
    addx.innerHTML=addx.innerHTML+'+成功';
    //addx.style.color="#000000";
    };

    function getElementByAttr(tag,attr,value)
    {
    var aElements=document.getElementsByTagName(tag);
    var aEle=[];
    for(var i=0;i<aElements.length;i++)
    {
    if(aElements[i].getAttribute(attr)==value)
    aEle.push( aElements[i] );
    }
    return aEle;
    }

    function _x3(STR_XPATH) {
    var oResult = document.evaluate(STR_XPATH, document, null, XPathResult.ANY_TYPE, null);
    var aNodes = [];
    if (oResult != null) {
    var oElement = oResult.iterateNext();
    while (oElement) {
    aNodes.push(oElement);
    oElement = oResult.iterateNext();
    }
    }
    return aNodes;
    }


    // 如果只查找单个元素,可以简写成这样
    //nodes=document.evaluate("//div[1]", document).iterateNext();
    function XML2String(xmlObject) {
    // for IE
    if (window.ActiveXObject) {
    return xmlobject.xml;
    }
    // for other browsers
    else {
    return (new XMLSerializer()).serializeToString(xmlobject);
    }
    }

    //获取节点
    function _x(STR_XPATH) {
    var xresult = document.evaluate(STR_XPATH, document, null, XPathResult.ANY_TYPE, null);
    var xnodes = [];
    var xres;

    while (xres == xresult.iterateNext()) {
    xnodes.push(xres);
    }

    return xnodes;
    }

    // Your code here...
    })();

使用步骤

  • 打开相册网页http://photo.weibo.com/upload/index?prel=p5_1
  • 按照提示上传图片
  • 完毕后打开相册
  • 出现如下图片,点击复制,大图片网址即可复制到剪贴板,可以使用了
  • 剪贴板代码如下

    1
    ![](https://wx4.sinaimg.cn/large/3f2c99ebgy1g1wuios3z3j20mt0deq3o.jpg)
  • 图片如下
    历程图片

致谢

  • 油猴
  • 新浪微博