微信推送浏览功能拓展

更佳的浏览体验,更快获得微信推送封面图与文章摘要以及更多功能

目前为 2021-05-17 提交的版本,查看 最新版本

作者
Ziu
评分
0 0 0
版本
0.5
创建于
2021-05-14
更新于
2021-05-17
大小
3.8 KB
许可证
GPL-2.0
适用于

(Ver 0.5)油猴脚本:微信推送浏览功能拓展

Latest update date:2021/05/18 Ver0.5

Ver0.5 更新说明:

功能特性:

  • 增加单击文本复制文章摘要功能

  • 增加设置默认时间显示格式

  • 增加设置引导关注栏的开启或关闭

  • 移除了“封面链接”按钮,获取封面链接可以点击公众号蓝字后点击内部的二维码获取

性能优化:

  • 用对象变量统一管理功能开闭的逻辑,所有功能的启用与关闭都可以自行配置

  • 增加checkout()函数,脚本运行主要功能前首先进行逻辑判断,减小不必要的性能开销

  • 引入jQuery库,相比原生DOM操作代码量更小,代码可读性更高

  • 适配新标准,停用var声明变量,改用ES6新增的let与const


主要功能:

  • 一键跳转微信推送封面图链接
  • 在推送正文头部显示推送摘要全文,一键文本复制文章摘要功能
  • 设置默认时间显示格式
  • 所有功能可以配置是否启用

使用方法:

1.安装 Tampermonkey 浏览器插件(脚本管理器)

​ 到浏览器拓展商城搜索Tampermonkey,安装拓展。

​ 或者访问Tampermonkey 官网下载安装自己浏览器对应的拓展版本。

2.安装脚本

​ 访问Greasyfork,安装脚本到脚本管理器中。

3.使用脚本

​ 确保脚本在脚本管理器中处于启用状态,在浏览器中随意打开一篇推送,例:春节期间小程序及小游戏审核调整通知注:文章链接须以mp.weixin.qq.com开头

使用脚本前:

使用脚本后(现有功能全开启):

在文章正文头部,显示了文章摘要全文,可以选择复制。

点击公众号蓝字,点击弹出浮窗中的二维码图片,可以跳转到文章封面图链接,同时隐藏了右侧悬浮的引导关注栏。

20210515-004607-0837.jpg

如图为单击“封面链接”后跳转的网页页面

所有功能可以在修改是否启用,后期计划中将为脚本配置可视化设置界面,支持自定义文章显示样式(true为启用,false为禁用)

后期计划

  • 将全部原生DOM操作替换为jQuery操作
  • 优化变量声明过程,让代码更简洁
  • 增加设置窗口,可以设置脚本默认功能,如日期显示、不同形式的封面图
  • 增加更多的可选样式(自定义样式)
  • 搭建网站,将功能迁移至公共网站,以美化输入框方式输入链接,提取封面图、摘要等内容,同时适配手机端和电脑端。
  • 欢迎持续关注!

相关链接:

CSDN:用.exe可执行程序获取微信推送封面图

*CSDN:*13行MATLAB代码实现网络爬虫 爬取NASA画廊星图

源代码(JavaScript):

// ==UserScript==
// @name         微信推送浏览功能拓展
// @namespace    https://blog.csdn.net/Huuc6
// @version      0.5
// @description  更佳的浏览体验,更快获得微信推送封面图与文章摘要以及更多功能
// @author       huuc
// @match        *://mp.weixin.qq.com/s*
// @icon         https://gitee.com/ziuc/utool-filebed/raw/master/20210514-231824-0795.png
// @require      http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/clipboard.min.js
// @license      GPL-2.0

//New Features
/*
* 功能特性:
* 增加单击文本复制文章摘要功能
* 增加设置默认时间显示格式
* 增加设置引导关注栏的开启或关闭
* 移除了“封面链接”按钮,获取封面链接可以点击公众号蓝字后点击内部的二维码获取
* 性能优化:
* 用对象变量统一管理功能开闭的逻辑,所有功能的启用与关闭都可以自行配置
* 增加checkout()函数,脚本运行主要功能前首先进行逻辑判断,减小不必要的性能开销
* 引入jQuery库,相比原生DOM操作代码量更小,代码可读性更高
* 适配新标准,停用var声明变量,改用ES6新增的let与const
* */
// ==/UserScript==

(function() {
    'use strict';
    let state=
        {
            url_state : true, // 是否启用点击二维码跳转到封面图链接功能
            recommend_state : true, // 是否显示引导关注栏
            datetype_state : true, // 是否启用修改默认时间显示模式功能
            summary_state : true // 是否启用显示摘要功能
        }

    if(checkout(state)===true)
    {
        const data = document.documentElement.outerHTML;

        //点击二维码跳转到封面图链接
        if(state.url_state===true)
        {
            let linkReg_1 = /msg_cdn_url = "(.*)"/ig;
            let url = linkReg_1.exec(data);
            let trueurl = url[1];
            console.log(trueurl);
            $('#js_profile_qrcode_img').click(function(){window.location.href=trueurl});
        }

        // 向网页中添加文章摘要并加入复制到剪切板功能
        if(state.summary_state===true)
        {
            let meta = document.getElementsByName("description");
            let contents = meta[0].content;
            let d2 = document.getElementById('meta_content');
            let clipboard = new ClipboardJS('.btn'); // 要使用 clipboard.js 需要声明一个clipboard实例
            d2.insertAdjacentHTML('afterend','<div id="summary" class="btn" data-clipboard-text="#" style="color: #B3B3B3FF; border-radius: 5px"></div><br/>');
            $('#summary').html("文章摘要:"+contents);
            $('#summary').attr("data-clipboard-text",contents);
        }

        //修改时间格式
        if(state.datetype_state===true)
        {
            let linkReg_2 = /",i="(\d{4}-\d{1,2}-\d{1,2})";/g;
            let date = linkReg_2.exec(data);
            $('#publish_time').text(date[1]);
        }

        //隐藏引导关注栏
        if (state.recommend_state!==true)
        {
            $('.qr_code_pc').hide();
        }
    }
    else
    {
        console.log('WeChat article browsing function expansion scripts is disabled.');
    }

    // checkout()函数
    function checkout(state)
    {
        let states = Object.keys(state);
        let num = states.length;
        let j=0;
        for (let i = 0; i < num-1; i++) // num:状态判断个数
        {
            if(state[states[i]]===false)
            {
                j++;
            }
        }
        return j !== num - 1;
    }
})();

//todo:
/*
* 将全部原生jsDOM操作替换为jQuery操作
* 优化变量声明过程,让代码更简洁
* 增加设置窗口,可以设置脚本默认功能,如日期显示、不同形式的封面图
* 增加更多的可选样式(自定义样式)
*/

作者才学尚浅,如使用中遇到问题,欢迎留言评论提供反馈!