Greasy Fork is available in English.
在旧版微博中,对于单条微博,隐藏导航栏、隐藏评论、以原图大小展开所有图片。在药方脚本的勾选隐藏全部模块和阅读模式下效果更佳。
// ==UserScript==
// @name 对于单条微博,隐藏导航栏、隐藏评论、以原图大小展开所有图片
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 在旧版微博中,对于单条微博,隐藏导航栏、隐藏评论、以原图大小展开所有图片。在药方脚本的勾选隐藏全部模块和阅读模式下效果更佳。
// @author vv
// @match *://*.weibo.com/*
// @match *://t.cn/*
// @include *://weibo.com/*
// @include *://*.weibo.com/*
// @include *://t.cn/*
// @exclude *://weibo.com/a/bind/*
// @exclude *://account.weibo.com/*
// @exclude *://kefu.weibo.com/*
// @exclude *://photo.weibo.com/*
// @exclude *://security.weibo.com/*
// @exclude *://verified.weibo.com/*
// @exclude *://vip.weibo.com/*
// @exclude *://open.weibo.com/*
// @exclude *://passport.weibo.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license GNU GPLv3
// ==/UserScript==
/*
描述
- 适用于旧版微博,在药方脚本的勾选隐藏全部模块和阅读模式下效果更佳。
- 适用于单条微博,在全部微博的页面运行测试,发现脚本会出错结束运行,就不另外加判断了。
- 隐藏导航栏、隐藏评论、以原图大小展开所有图片这三个功能被分开在三个函数中,在「脚本实际运行部分」注释掉相应函数调用即可关闭该功能。
参考:
- [药方脚本](https://tiansh.github.io/yawf/)
- [微博图片全显示脚本](http://greasyfork.icu/zh-TW/scripts/10870-%E5%BE%AE%E5%8D%9A%E5%9B%BE%E7%89%87%E5%85%A8%E6%98%BE%E7%A4%BA)
使用场景:
- Windows10+Chrome,在药方脚本的勾选隐藏全部和阅读模式下,通过Zotero-Connector插件将干净的网页存储到Zotero中。
- Zotero-Connector插件保存网页快照时,会重新向服务器发起请求获取图片,在微博上存在跨域问题,导致获取图片失败。可通过安装Chrome插件Allow CORS: Access-Control-Allow-Origin、允许所有Chrome网页跨域来解决。
bug:
- 有时候,从微博列表等第一次进入微博详情页时脚本获取元素失败,再次刷新页面后成功。也可以认为是特色,确定要收集时需手动刷新一下(雾)。
*/
/*============ 脚本实际运行部分 开始===============*/
window.onload = function() {
console.log('------running hide starting------');
// 隐藏导航栏
hideNav();
// 隐藏评论
// 这个函数调用注释掉以后,可以显示评论,展开的图片在微博正文和评论之间。
hideComments();
console.log('------running hide ends------');
// 展开显示所有图片
expandImgs();
}
/*============ 脚本实际运行部分 结束===============*/
/*============ 功能函数部分 开始 ===============*/
/* 隐藏导航栏 */
function hideNav() {
let nav_bar = document.querySelector("#pl_common_top");
nav_bar.style.display = 'none';
}
/* 隐藏评论 */
function hideComments() {
let comment_bg = document.querySelector("div.WB_feed_handle[node-type='feed_list_options']");
let comment_body = document.querySelector("div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3[node-type='comment_detail']");
comment_bg.style.display = 'none';
comment_body.style.display = 'none';
}
/*
微博小图和原图的区别只在中间的url是large
小图:
https://wx4.sinaimg.cn/mw690/6ea15bbfly1gs9sa2uwwhj20u015y4qs.jpg
原图:
https://wx4.sinaimg.cn/large/6ea15bbfly1gs9sa2uwwhj20u015y4qs.jpg
*/
/* 展开显示所有图片 */
function expandImgs() {
console.log('------running expandImgs starting------');
/*
原本图片所在的Element
class为WB_expand_media_box的div有两个,node-type='feed_list_media_disp'的只有一个
*/
let origin_imgs = document.querySelector("div.WB_expand_media_box[node-type='feed_list_media_disp']");
if (origin_imgs === null) {
return;
}
// let parent = document.querySelector('#plc_main').parentNode.parentNode;
let parent = origin_imgs.parentNode;
let imgs_div = getNewImgsDiv(parent.offsetWidth);
parent.appendChild(imgs_div);
/* 删去原来的图片样式 */
if (!!origin_imgs) origin_imgs.parentNode.removeChild(origin_imgs);
// 微博主体下面有个东西,隐藏掉
wb_b = document.querySelector("div.WB_frame_b");
wb_b.style.display = 'none';
console.log('------running expandImgs ends------');
}
// 返回新建的装着所有图片的div,id为expaned_imgs
function getNewImgsDiv(img_width) {
// 原本是判断图片的个数来渲染图片视图,这里用来获取该条微博的所有图片
let media_prev = document.querySelector("div.WB_media_wrap.clearfix[node-type='feed_list_media_prev']");
// 里面是形似 `<img src="//wx4.sinaimg.cn/thumb150/6ea15bbfly1gs9sa2uwwhj20u015y4qs.jpg">`的标签列表
let imgs_tabs = media_prev.getElementsByTagName('img');
let imgs_div = document.createElement('div');
// 设置div的id
imgs_div.id = 'expaned_imgs'
// 图片居中
imgs_div.style.textAlign = 'center';
for (let i = 0; i < imgs_tabs.length; i++) {
let large_img_src = imgs_tabs[i].src;
if (/sinaimg.c(om|n)\/(orj|thumb)\d{3}/.test(large_img_src)) {
/* 存为 https://wx4.sinaimg.cn/large/6ea15bbfly1gs9sa2uwwhj20u015y4qs.jpg */
large_img_src = large_img_src.replace(/(sinaimg\.c(om|n)\/)(orj|thumb)\d{3}/, "$1large");
let img_tag = document.createElement('img');
img_tag.src = large_img_src;
// 设置图片宽度
img_tag.width = img_width;
imgs_div.appendChild(img_tag);
// 一张图片之后换行
imgs_div.appendChild(document.createElement('br'));
// 图片之间空一行
imgs_div.appendChild(document.createElement('br'));
}
}
return imgs_div;
}
/*============ 功能函数部分 结束 ===============*/
/*
let imgs_div = document.querySelector("#expaned_imgs");
let imgs_tabs = imgs_div.getElementsByTagName('img');
*/