简单!实用!易懂!:Java如何批量导出微信收藏夹链接-->转换成Markdown/txt

文章目录

    • 前言
    • 参考方案
      • 方案1:Python
      • 方案2:Python
    • 我的方案
      • 手动前置操作
      • 代码处理

在这里插入图片描述

前言

不知道是否有很多小伙伴跟我一样,有个问题非常愁,对于收藏党来说,收藏了=学会了!然后导致微信收藏夹的东西越来越多了,现在想要把这些内容整理出来导到电脑上,我在全网搜索了太多太多相关的内容,却发现好像没有一个比较实用的工具。

image-20240316110539725

如果手动一个个导的话非常麻烦,操作步骤如下:
1、打开微信收藏,点开标签
2、提取链接:使用鼠标右键点击链接,然后选择“复制地址”
3、导出链接:将复制的链接地址粘贴到一个文本文件中,每个链接一行。

http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666802429&idx=1&sn=11ffbcbb32e8956bf3d52086b7288cc0&chksm=bc99d366a8bc341683438c979d747a8e2582ac2683139e2199f3f2380ee1d0efd785f3893e6a&scene=126&sessionid=1710664419#rd

4、为每个链接进行命名:从微信复制出来的链接,没有名字只有单纯的URL链接,你都不知道这个链接是什么,很不友好,所以还得打开链接,复制标题,类似这样的格式

近日择机发射!:http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666802429&idx=1&sn=11ffbcbb32e8956bf3d52086b7288cc0&chksm=bc99d366a8bc341683438c979d747a8e2582ac2683139e2199f3f2380ee1d0efd785f3893e6a&scene=126&sessionid=1710664419#rd

如果几百条收藏链接,这样操作得有几千步操作,手工完成得多浪费时间!!!

参考方案

方案1:Python

此方案需要你学过一点python,且好像这种并没有提取标题,我这里并未实际尝试过
可参考链接:分享一个批量提取微信收藏链接到TXT文件的方法

image-20240317165905216

方案2:Python

Python轻松下载或整理删除微信收藏

此方案也是采用Python,且看最终的效果不错,有标题和对应的链接,比较符合我的预期,但是我不懂Python咋办??我是Java程序员,我想看看有没有别的方式!

image-20240317170409555

我的方案

手动前置操作

1、先将所有要导出的推文批量多选,并分享给好友或者文件传输助手;

主要批量多选如果在手机没法批量一次性全选的方式,但是电脑可以一键拉取!!!

https://apple-web.oss-cn-hangzhou.aliyuncs.com/img/202403171805430.jpg

电脑可以一键拉取全选!!!这样就可以不用一个个像手机一样手动勾选了,说实话,这点微信做的是真的拉胯,居然多选没有做全选的功能!!!

2、选中发送到文件助手
image-20240317171331269

3、然后在聊天界面多选并使用邮箱发送;这点我又要吐槽一下了:

  • 电脑版本可以一键拉取聊天记录,但是居然没有发送邮件的功能,

  • 手机版本有发送邮件的功能,但是并没有一次性全选的功能,我这里又只能一个个去勾选了。。。

image-20240317180803424

4、打开邮箱,复制内容保存文本为测试链接.txt
image-20240317172203093

代码处理

上面我们把内容保存了为测试链接.txt,里面内容如下所示,
注意一点: 我这里多放了一种不是链接的内容,是因为有时候我在微信收藏的时候,可能收藏的不是一个连接,只是一段文本,代码兼容处理这种情况,收藏的如果是链接的单独处理,非链接的保留原来格式

image-20240317173151257

我的目的就是将txt里面的内容进行处理,需要符合以下条件:

  • 如果是[title:url]这种格式的,就转换成Markdown格式输出,输出到测试链接-md.md
  • 如果是非上面的格式,也就是纯文本这种,就保持原样输出,输出到测试链接-other.txt
  • 同时上面的文件输出时,每个收藏都需要有序号标注

接下来就是代码处理了:

下面代码我们从一个文本输入文件 (E:\code\测试链接.txt) 中读取内容,根据特定的分隔模式切分内容(我们会发现微信导出来的收藏内容,每个都是 微信名字 时间点,也就是需要针对这块进行分割内容,分割的话可以用正则表达式),并根据内容的格式将其转换为Markdown格式或者原始的文本格式,最后将转换后的结果输出到两个不同的文件中(一个是Markdown格式的文件 E:\code\测试链接-md.md,另一个是原始文本格式的文件 E:\code\测试链接-other.txt)。

// 用于处理文本内容转换
public class Content2MdAndTxtForPattern {
  
    // 定义一个正则表达式模式,用于匹配类似 "TA 21:54 " 这样的分隔符,\s+代表一个或多个空格。
    public static final Pattern DELIMITER_PATTERN = Pattern.compile("TA\\s+\\d{2}:\\d{2}\\s+");

    public static void main(String[] args) {
        // 文件名前缀
        String fileName = "测试链接";
        // 定义输入文件的路径
        String inputFilePath = "E:\\code\\" + fileName + ".txt";
        // 定义Markdown格式输出文件的路径
        String outputBPath = "E:\\code\\" + fileName + "-md.md";
        // 定义原始文本格式输出文件的路径
        String outputCPath = "E:\\code\\" + fileName + "-other.txt";

        try {
            // 读取输入文件的全部内容到字符串中
            String content = new String(Files.readAllBytes(Paths.get(inputFilePath)));
            // 使用定义的分隔模式分割文件内容
            String[] sections = DELIMITER_PATTERN.split(content);
            // 初始化Markdown输出文件的序号
            int countB = 1;
            // 初始化原始文本输出文件的序号
            int countC = 1;
            
            try (BufferedWriter writerB = Files.newBufferedWriter(Paths.get(outputBPath));
                 BufferedWriter writerC = Files.newBufferedWriter(Paths.get(outputCPath))) {

                // 遍历分割后的所有部分,从索引1开始,因为分割后的第一个部分(索引0)是不需要的内容
                for (int i = 1; i < sections.length; i++) {
                    // 去除内容前后的空白字符
                    String section = sections[i].trim();
                    // 定义一个新的正则表达式模式,用于匹配带链接的文本
                    Pattern pattern = Pattern.compile("\\[([^\\]]+):\\s*(http[^\\]]+)\\]");
                    // 创建matcher去匹配当前部分内容
                    Matcher matcher = pattern.matcher(section);

                    // 如果匹配到带链接的文本格式
                    if (matcher.find()) {
                        // 提取标题和URL
                        String title = matcher.group(1).trim();
                        String url = matcher.group(2).trim();
                        // 将提取出来的标题和URL转换为Markdown格式,写入到对应的文件中
                        writerB.write(countB++ + ". [" + title + "](" + url + ")\n");
                    } else {
                        // 如果不是链接格式,原样写入到另一个文件中
                        writerC.write(countC++ + ". " + section + "\n");
                    }
                }
            }

            // 文件处理完毕后打印提示信息
            System.out.println("内容已解析到文件:" + outputBPath + " 和 " + outputCPath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最终效果如下:

1、Markdown文件内容如下

image-20240317180312204

2、txt纯文本打开内容如下

image-20240317180417149

参考文章:

https://blog.csdn.net/qq_32832803/article/details/122508085
https://blog.csdn.net/fitAllEnv/article/details/134000975
https://blog.csdn.net/u010751000/article/details/106515427
https://blog.csdn.net/m0_59235245/article/details/124973234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/464361.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年5家香港服务器推荐,性价比top5

​​香港服务器是中小企业建站、外贸建站、个人博客建站等领域非常受欢迎的服务器&#xff0c;2024年有哪些云厂商的香港服务器是比较有性价比的&#xff1f;这里根据小编在IT领域多年服务器使用经验&#xff0c;给大家罗列5家心目中最具性价比的香港服务器厂商。 这五家香港服…

Wireshark抓包工具的使用

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教 文章目录 前言一、下载二、首页三、使用1.读入数据2.分析数据3.筛选IP4.保存数据 四、过滤器表达式五、TCP总结 前言 低头做事&#xff0c;抬头看路。 一、下载 下载路径wire…

Java面试题总结200道(三)

51、什么是 Spring IOC 容器 Spring 框架的核心是 Spring 容器。容器创建对象&#xff0c;将它们装配在一起&#xff0c;配置它 们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的 组件。容器通过读取提供的配置元数据来接收对象进行实例化&#xff0…

【vue video.js】The element or ID supplied is not valid. (videojs) element Ui

问题&#xff1a;使用video.js做了一个弹窗显示视频&#xff0c;效果如下 但是发现弹窗再次打开&#xff0c;视频播放失败&#xff0c;报错The element or ID supplied is not valid 原因是videojs找不到需要初始化的视频id&#xff0c;在关闭弹窗的时候需要重置video.js&…

小迪安全42WEB攻防-通用漏洞文件包含LFIRFI伪协议

#知识点: 1、解释什么是文件包含 2、分类-本地LFI&远程RFI 3、利用-配合上传&日志&会话 4、利用-伪协议&编码&算法等 #核心知识: 1、本地包含LFI&远程包含RF1-区别 一个只能包含本地&#xff0c;一个可以远程加载 具体形成原因由代码和环境配置文件决定…

便利店小程序有哪些功能

​便利店小程序为附近的住户提供小程序在线购物的服务。用户只需要打开小程序&#xff0c;就可以购买需要的商品&#xff0c;可以选择自取或者配送。整个过程非常简单快速。下面具体介绍便利店小程序的功能。 1. **商品展示**&#xff1a;展示便利店的商品信息&#xff0c;包括…

芯片顶级盛会HotChip历年-未来芯片论坛及资料全集下载

提示&#xff1a;下载链接在文章最后。 Hotchips是全球芯片行业影响力最大的会议。 Hot Chips是一个技术会议&#xff0c;聚焦于半导体和微处理器的设计与创新。以下是一些关于Hot Chips的信息和相关链接&#xff1a; Hot Chips会议官方网站&#xff1a;https://www.hotchips…

Prometheus 基于 Consul 实现服务自动发现注册

文章目录 一、概述二、docker-compose 部署 Prometheus1&#xff09;部署 docker2&#xff09;部署 docker-compose3&#xff09;配置 prometheus.yml4&#xff09;配置 rules.yml5&#xff09;配置 alertmanager.yml6&#xff09;编排 docker-compose yaml 文件7&#xff09;开…

【Windows Defender 排除指定 文件夹、文件夹以提升性能】

使用webStorm时候提醒排出程序和目录提升性能, 于是我就把我的代码目录和常用程序全部排出, 不过不知道能不能提升多少性能, 先加上再说 一.使用UI配置排出项 隐私与安全性安全中心 病毒与威胁防护 添加或删除排出项 配置 二.使用命令配置 使用 PowerShell开启自动排除列表…

Redis数据结构对象之字符串对象

字符串对象 字符串对象的编码可以是int、raw或者embstr 如果一个字符串对象保存的是整数值&#xff0c;并且这个整数值可以用long类型来表示&#xff0c;那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void *转换成long)&#xff0c;并且将字符串对象的编码设…

面试算法-39-删除链表的倒数第 N 个结点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 解 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {L…

在idea中配置tomcat服务器,然后部署一个项日

1.下载tomcat Tomcat下载 点击右边的tomcat8 找到zip点击下载 下载完&#xff0c;解压到你想放置的路径下 2.配置环境变量 打开设置找到高级系统设置点击环境变量 点击新建&#xff0c;变量名输入&#xff1a;CATALINA_HOME&#xff0c;变量值就是Tomcat的安装路径&#x…

空间计算综合指南

空间计算&#xff08;spatial computing&#xff09;是指使人类能够在三维空间中与计算机交互的一组技术。 该保护伞下的技术包括增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;。 这本综合指南将介绍有关空间计算所需了解的一切。 你将了解 AR、VR…

Python 查找并高亮PDF中的指定文本

在处理大量PDF文档时&#xff0c;有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…

【代码】提取图像轮廓坐标并保存为YOLOv8所需的txt格式

该段代码的应用场景为对图像标注过后&#xff0c;想要对图像进行裁切&#xff0c;但是标签不能裁切&#xff0c;所以将原图像按照标签进行二值化后&#xff0c;将二值化后的图像进行裁切&#xff0c;然后使用opencv对裁切后的图像进行处理&#xff0c;识别出白色区域轮廓&#…

1987-2022年各省专利申请授权数据(8个指标))

1987-2022年各省专利申请授权数据&#xff08;8个指标&#xff09;&#xff09; 1、时间&#xff1a;1987-2023年 2、指标&#xff1a;国内专利申请受理量(项)、国内发明专利申请受理量(项)、国内实用新型专利申请受理量(项)、国内外观设计专利申请受理量(项)、国内专利申请授…

记录-gitlab-安装在k8s中的一些注意点

一、已有cert-manager的时候如何配置&#xff1f; 1、首先需要创建一个ClusterIssuer apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata:name: letsencrypt-staging spec:acme:# You must replace this email address with your own.# Lets Encrypt will use thi…

【linux】搜索所有目录和子目录下的包含.git的文件并删除

一、linux命令搜索所有目录和子目录下的包含.git的文件 在Linux系统中&#xff0c;要搜索所有目录和子目录下的包含.git的文件&#xff0c;可以使用find命令。find命令允许指定路径、表达式和操作来查找文件。 以下是使用find命令搜索包含.git的文件的方法&#xff1a; 1. 基…

react03

react03 修改脚手架创建的打包命令 根据scripts中的命令&#xff0c;执行npm run eject ,输入y, 如果对原始的脚手架文件有过改动需要进行将修改后的文件提交到git 历史区 &#xff0c;防止暴露后的代码覆盖我们自己的文件 git 提交&#xff1a; git add . git commit -m ‘…

一起玩儿3D打印机——06 Marlin固件的配置(三)

摘要&#xff1a;本文介绍Marlin固件的配置方法 25. 启用EEPROM参数保存功能 #define EEPROM_SETTINGS 打开此功能&#xff0c;会将部分参数保存在打印机中&#xff0c;这样通过屏幕就可以进行调节&#xff0c;而无需重刷固件。 26. 启用板载SD卡支持 #define SDSUPPORT 如…