// ==UserScript== // @name WeiboPhotoUrlBatchGet // @name:zh-CN 微博相册图片地址批量获取工具 // @namespace http://www.mapaler.com/ // @description BatchGetWeiboPhotoURL // @description:zh-CN 批量获取微博相册图片地址 // @include *://weibo.com/*home* // @include *://weibo.com/*friends* // @include *://weibo.com/*mygroups* // @include *://photo.weibo.com/*albums/detail/album_id/* // @include *://photo.weibo.com/*talbum/index* // @include *://photo.weibo.com/*photos* // @version 1.1.2 // @grant none // @copyright 2016+, Mapaler // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAuCAYAAAC1ZTBOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAASASURBVFiFzZk/bNtGFIc/Cl4KFKjTQSDQIQyaSYvpJWMjg0Az1u7ELrU8tUCH0gjQTYgDrSlMD2lHy5umRGsLCJELdMliGig4tSgzFFA1BCrgwiM73NE6Ho/6W1n5AYTFdxTv07v37t6dLdag1AuOgCeauQ+cAV2rF47UhsrtYBX00GCrA6fAReoFu2rDuiDPgFFJmwO8TL2gkRmsWwCaqNQLNgEX2AcaWvOB1Qvba4OUcIG8HQFthBdPEdCZfXudkEfkk2cEHAAJ8ArYlPb2umISRDarcbkJvJR/TxR7412JyYCxV/vAHsKbrrx/N5R6wWnqBWnqBcd628o9WesMHERCZFmsaxT7dgiQeoFj9cJEf2BpyFpnkHWewdyVf13GwT9NT2PfPiprnBmy1hlkIO6CIJM0in37TlmjEbLWGexKgC0FZtXai327a2rY0A21zuCY8SR7m9oHjJCmeXJVgJG8ylQvaygMd60zSOfoOFGuN4jJOQOJYt82FhG1zqDOeOJWZRzywnDLDh0DSAT8g1wpYt+e5JWJin27X+sMDhHrtKqHGIbc5EkXkShJ7Nv9aR3K2k/N+HOER7umOU/r60/yDoli396eCjmLlKXsWyZPQX3g0OqFRq+XJOkdPUzmLjBSL3CBC8RaKwDffw+27osrrzqi0j4qed2ZwVbXDXN5UgKOy6it+/DlozzcD114cW76etvqhQe60ZCoYezbh6phoxkNXcZeiYCTlltNDIBqKQXffQGfPiii/Htt/oXQSL3g3OqFbc3eJ++9wsKxQb7ArCMCec/QyROyIFcBr67h59fw62/w91sYvC2DBDhOvUDfDUYaZB1NFYqBX0gE6cUGAI8ejAH/+Au+fiaG+PL3aYDZuxua7VJ/SM4wOchZtEsG//knwnJ1DY+fzwKma1+7TwzPTIV0DLatm08Z1I9dATq/9JhLJvaHgOxrDzilL7Y/hBe/CA/+9HoRQOBmlgAg9m0TZMGThfW1GQ3NE/T334jr448WBpTS368zOOpNBUPgUhwS8ZLFhtckfQXS7x31pmJ4AIq/VPyQx8/hq2dlk/WsGukHUibJvRFQDql7UlQmV9di2llOpsLWBO1kHypyddEfymWXLBD6y7HdyLRem0LuRtkUpAM4hmefzs9TUNfqhXpfUJyGIrVMzCD1X+LqGS5fvgxohDjrKSj27TZwD9gBdvSa0gJoRsM6Yg1Xtddyq4X4kScM8+6DImBnloQxqQLQcqt9Q5vpNBarFx4iCpBkxj5ClgAEpZ5sRsNX5CuQpOVW7036sjyN/Ux+Tw2PLNFOpm0h5oUMAP2w6KDlVtvLdqL0oZ6CqAcPo5ZbnX6CIV9wobUnwHbLrc48VDK+QXj3A/LnRJO0UxJ2+e1DMxrqu7cMNDuIH2ntd5X7OsupFFLfd/cpFqUOxf+5rEJJWYNeT5pWg1UqQZ7smvZVmQq7xZIh/z9gEkTWvwGisqE1yXTMcsbiwxtJmMsMbB6YMpkgQ8TcZzqTjBgn0A2IhEmWhVlIzWjorKVjTf8BGAN+rkqYYl0AAAAASUVORK5CYII= // @downloadURL none // ==/UserScript== (function() { var imgs = { img: [] }; function imgObj() { var obj = { addFormUrl: function (url) { var regSrc = /(https?:\/\/[^\/]+)\/.+\/([\d\w]+)\.([\d\w]+)/ig; var result = regSrc.exec(url); if (result == null) return this; this.host = result[1]; this.pid = result[2]; this.extention = result[3]; return this; }, add: function (host, pid, extention) { if (extention == undefined) extention = "jpg"; this.host = host; this.pid = pid; this.extention = extention; return this; }, get: function (size) { if (size == undefined) size = "large"; var src = ""; src = this.host + "/" + size + "/" + this.pid + "." + this.extention; return src; }, host: "", pid: "", extention: "", //width: 0, //height: 0, //large: "", mw690: "", mw600: "", bmiddle: "", small: "", square: "", sq612: "", orj480: "", smsq612all: "", thumb300: "", thumb180: "", thumb150: "", } return obj; } var win = document.createElement('div'); win.id = "WeiboPhotoUrlBatchGet" win.className = "WPUBG_win" var style = document.createElement("style"); win.appendChild(style); style.type = "text/css"; style.innerHTML += [ ".WPUBG_win" + "{\r\n" + [ 'box-shadow:0 0 10px #333', 'position:fixed', 'top:0', 'right:0', 'z-index:1000000', 'font-family:arial,sans-serif', 'padding:5px', 'margin:0', 'border-radius: 0 0 0 5px', 'background:#F5F8FA', ].join(';\r\n') + "\r\n}", ".WPUBG_box" + "{\r\n" + [ 'width:180px', ].join(';\r\n') + "\r\n}", ".WPUBG_tra" + "{\r\n" + [ 'width:180px', 'height:180px', ].join(';\r\n') + "\r\n}", ".WPUBG_cls" + "{\r\n" + [ 'width:40px', 'box-shadow:0 0 2px #333', 'position:absolute', 'top:0', 'left:-40px', 'line-height:25px', 'padding:0', 'margin:0', 'border-radius:0', 'border:none', 'background:#515151', 'z-index:99999', 'text-align:center', 'color:#aaa', 'cursor:pointer', ].join(';\r\n') + "\r\n}", ].join('\r\n'); var box = document.createElement('div'); box.className = "WPUBG_box"; win.appendChild(box); var tra = document.createElement('textarea'); tra.className = "WPUBG_tra"; tra.wrap = "off"; tra.innerHTML = "获取数据中..."; box.appendChild(tra); var lbl = document.createElement('label'); lbl.className = "WPUBG_lbl"; lbl.innerHTML = "Size:"; lbl.title = "常见尺寸:\r\nlarge\r\nmw690\r\nmw600\r\nbmiddle\r\nsmall\r\nsquare\r\nsq612\r\norj480\r\nsmsq612all\r\nthumb300\r\nthumb180\r\nthumb150"; box.appendChild(lbl); var ipt = document.createElement('input'); ipt.className = "WPUBG_ipt"; ipt.type = "text"; ipt.placeholder = "large"; ipt.name = "WPUBG_size"; ipt.title = "常见尺寸:\r\nlarge\r\nmw690\r\nmw600\r\nbmiddle\r\nsmall\r\nsquare\r\nsq612\r\norj480\r\nsmsq612all\r\nthumb300\r\nthumb180\r\nthumb150"; ipt.value = getConfig("WPUBG_size"); ipt.onblur = function () { setConfig("WPUBG_size", this.value); reCreatList(); } lbl.appendChild(ipt); var cls = document.createElement('div'); cls.className = "WPUBG_cls"; win.appendChild(cls); cls.innerHTML = '关闭';//关闭 cls.onclick = function (){ win.parentNode.removeChild(win);} if (document.location.host == "photo.weibo.com") { var album = !(typeof($GLOBAL_DETAIL) == "undefined"); var btnGetAll = document.createElement('button'); //btnGetAll.className = "W_ficon ficon_send S_ficon "; btnGetAll.innerHTML = "获取全部图片地址"; btnGetAll.onclick = function () { getAll(album); } if (album) var insertPlace = document.getElementsByClassName("m_share_like")[0]; else var insertPlace = document.getElementsByClassName("m_user_album")[0]; insertPlace.insertBefore(btnGetAll, insertPlace.firstChild); } else { var insertPlace = document.getElementById("plc_top"); var btnGetUp = document.createElement('button'); //btnGetUp.className = "W_ficon ficon_send S_ficon"; btnGetUp.innerHTML = "获得上传的图地址"; btnGetUp.onclick = function () { getUp(); } insertPlace.appendChild(btnGetUp); } function getUp() { if (win.parentNode || win.parentNode != document.body) document.body.appendChild(win); var drag_pic_list = document.getElementsByClassName("drag_pic_list")[0]; var pics = drag_pic_list.getElementsByClassName("pic"); for (var pi = 0; pi < pics.length; pi++) { var pdiv = pics[pi].getElementsByTagName("div")[0]; var img = new imgObj; imgs.img.push(img.addFormUrl(pdiv.style.backgroundImage)) tra.value += img.get() + "\r\n"; } } function getAll(isAlbum) { if (win.parentNode || win.parentNode != document.body) document.body.appendChild(win); if (imgs.img.length > 0) reCreatList(); else getSource("http://photo.weibo.com/photos/get_all?uid=" + $CONFIG.owner_uid + (isAlbum?"&album_id=" + $GLOBAL_DETAIL.album_info.album_id:"") + "&count=1&type=1&__rnd=" + new Date().getTime(), getFirstJSON, $CONFIG.owner_uid, (isAlbum?$GLOBAL_DETAIL.album_info.album_id:isAlbum)); } function getFirstJSON(response,uid, aid) { var info = JSON.parse(response); getSource("http://photo.weibo.com/photos/get_all?uid=" + uid + (aid?"&album_id=" + aid:"") + "&count=" + info.data.total + "&type=1&__rnd=" + new Date().getTime(), getAllJSON, uid, aid); } function getAllJSON(response, uid, aid) { var info = JSON.parse(response); plist = info.data.photo_list for (pi = plist.length - 1; pi >= 0; pi--) { var img = new imgObj; var regFn = /([\d\w]+)\.([\d\w]+)/ig; var resultFn = regFn.exec(plist[pi].pic_name); imgs.img.push(img.add(plist[pi].pic_host, plist[pi].pic_pid, resultFn[2])) //tra.value += img.get(size) + "\r\n"; } reCreatList(); } function reCreatList(size) { if (size == undefined) size = getConfig("WPUBG_size").length > 0 ? getConfig("WPUBG_size") : "large"; tra.value = ""; for (pi = 0; pi < imgs.img.length; pi++) { tra.value += imgs.img[pi].get(size) + "\r\n"; } } //直接通过XMLHttpRequest对象获取远程网页源代码 function getSource(url, callback, index, index2) { var xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象 xhr.onreadystatechange = function () //设置回调函数 { if (xhr.readyState == 4 && xhr.status == 200) callback(xhr.responseText, index, index2); } xhr.open("GET", url, true); xhr.send(null); return xhr.responseText; } function getConfig(key) { if (window.localStorage) { return window.localStorage.getItem(key) || ""; } else { return getCookie(key); } }; function setConfig(key, value) { if (window.localStorage) { window.localStorage.setItem(key, value); } else { setGdCookie(key, value, 86400 * 365); } }; })();