几行代码,网盘链接提头来见!

简介: 晚上,女朋友下班回来,我邀请她下楼去散步,她一副愁眉苦脸的样子,说今晚要加班。仔细询问之下得知:女朋友今天接到上司一个任务,领导丢给她一个文件,里面密密麻麻满是百度网盘链接和提取码,需要她今天结束之前把网盘里的文件提取出来。听到她说要熬夜肝工作那种委屈的模样,我是真的有点心疼。于是本能地问她,现在工作中最影响效率的是哪个环节,我来帮她一起肝。她告诉我,看这个百度网盘的链接看得眼都花了,要复制链接,以及复制提取码是个技术活,因为有其他文字干扰,经常复制不准。

背景

晚上,女朋友下班回来,我邀请她下楼去散步,她一副愁眉苦脸的样子,说今晚要加班。

仔细询问之下得知:女朋友今天接到上司一个任务,领导丢给她一个文件,里面密密麻麻满是百度网盘链接和提取码,需要她今天结束之前把网盘里的文件提取出来。

听到她说要熬夜肝工作那种委屈的模样,我是真的有点心疼。于是本能地问她,现在工作中最影响效率的是哪个环节,我来帮她一起肝。她告诉我,看这个百度网盘的链接看得眼都花了,要复制链接,以及复制提取码是个技术活,因为有其他文字干扰,经常复制不准。

链接类似下面这样的:

链接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取码: j1ub 复制这段内容后打开百度网盘手机App,操作更方便哦

想必大家看到这个链接,都不会陌生。不止百度网盘,还有好多网盘都是这样的。

既然这样,那我当然要帮她解决这个棘手的问题。

思路

其实她的需求很简单,把网盘链接和对应提取码从这个分享文字中提取出来。

大家还记得咱们前段时间给大家分享了正则表达式的文章吧?忘记了就回头看看这两篇文章:懵了!女友突然问我什么是正则表达式

这下女友总算满意了!

解决这个需求只需要用正则表达式匹配分享文字中的 URL 和提取码就行了。

实现解析

代码很简单,直接上:

url_pattern = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
code_pattern = '(?<=提取码: )[0-9a-z]{4}'
url_regex = re.compile(url_pattern)
code_regex = re.compile(code_pattern)

接下来,测试一下:

str = '链接: https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q 提取码: j1ub 复制这段内容后打开百度网盘手机App,操作更方便哦'
print(url_regex.findall(str)[0])
print(code_regex.findall(str)[0])

可以在控制台上看到打印输出两行,第一行是链接,第二行是提取码:

https://pan.baidu.com/s/1ctcXiZymWst2NC_JPDkr4Q j1ub

几行代码一敲,事情就这么搞定了!

等等,这太程序员思维了!

现在还只是个程序,难道要她把一段段文字复制到我的程序里面再运行?这不是更麻烦吗???

17.jpg

就这?

当然不行,我还是有点产品素养的!

当然要给个界面给她。我搜索了下我的知识库,准备用 tkinter 来画一个简单的界面给她使用。

其实现如下:

def draw_window(self):
        self.init_window = Tk()  # 实例化出一个父窗口
        self.init_window.title("百度网盘提取链接工具_v1.0")  # 窗口名
        self.init_window.geometry('800x300+10+10')
        # 源信息
        self.init_data_label = Label(self.init_window, text="复制的提取信息")
        self.init_data_label.grid(row=0, column=0)
        self.init_data_text = Text(self.init_window, width=100, height=5, borderwidth=1, relief="solid")  # 原始数据录入框
        self.init_data_text.grid(row=1, column=0, columnspan=10)
        # 按钮
        self.str_trans_button = Button(self.init_window, text="提取", width=10, height=2, bg="blue",
                                       command=self.extractData)  # 调用内部方法  加()为直接调用
        self.str_trans_button.grid(row=2, column=2)
        # 链接
        self.link_data_label = Label(self.init_window, width=10, text="链接")
        self.link_data_label.grid(row=3, column=0, columnspan=1)
        self.link_data_text = Text(self.init_window, width=60, height=2, borderwidth=1, relief="solid")
        self.link_data_text.grid(row=3, column=1, columnspan=6)
        # 提取码
        self.code_data_label = Label(self.init_window, width=10, text="提取码")
        self.code_data_label.grid(row=3, column=7, columnspan=1)
        self.code_data_text = Text(self.init_window, width=20, height=2, borderwidth=1, relief="solid")
        self.code_data_text.grid(row=3, column=8, columnspan=2)

上面就是画一个界面的代码,运行之后长这样:

18.jpg

界面

丑是丑了点,但是时间紧,任务重,先用起来再说。

和解析代码合体之后,正常的运行情况应该是这样的:


19.jpg


运行

当然,还可以进一步改造,比如获取到网盘链接和提取码之后,直接使用 selenium 来自动控制浏览器打开相应的百度网盘页面,女朋友直接在页面选择文件点击下载即可。

但是今晚时间不够了,先让她用着。

总结

处理一个简单的需求,咱们就用到了正则、画界面,还可以使用浏览器模拟操作的 selenium ,可见平时的知识积累多重要。小伙伴们平时还是要有意识积累一些实用的技术,当需求来时方可信手拈来,而不是“书到用时方恨少”!


目录
相关文章
|
弹性计算 数据安全/隐私保护
雾锁王国/Enshrouded服务器搭建全攻略:2024年最新版步骤详解
随着游戏行业的不断发展,玩家们对于游戏体验的要求也越来越高。为了满足玩家们的需求,阿里云提供了游戏联机服务器一键部署方案,本文将为大家分享基于阿里云服务器10秒钟完成雾锁王国游戏服务器搭建教程,让大家的游戏体验更加顺畅。
|
10月前
|
监控 前端开发 JavaScript
前端工程化和传统前端开发的区别是什么?
前端工程化相比传统前端开发,在开发模式、代码组织与管理、构建与部署流程、团队协作、性能优化以及技术选型等方面都有了显著的改进和提升,能够更好地应对现代前端应用开发的复杂性和高要求。
|
11月前
|
Linux
KyLinV10 安装realtek-r8125 2.5G网卡驱动。
KyLinV10 安装realtek-r8125 2.5G网卡驱动。
|
11月前
|
机器学习/深度学习 算法 数据挖掘
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
|
存储 Ubuntu 5G
LVM 概念、术语和操作简介
LVM 概念、术语和操作简介
981 1
|
Web App开发 JavaScript 前端开发
JavaScript 中的 Range 和 Selection 对象
JavaScript 中的 `Range` 和 `Selection` 对象用于处理文本选择。`Range` 表示文档中选定的区域,而 `Selection` 表示用户选择的文本或光标位置。`Range` 可以创建并设置于任何元素或文本,具有多个属性(如 `startContainer`, `endContainer`, `collapsed`)和方法(如 `cloneContents`, `deleteContents`)。`Selection` 提供了获取和操作用户选择的方法,如 `anchorNode`, `focusNode` 和 `addRange`。两者在所有现代浏览器中基本兼容。
181 1
JavaScript 中的 Range 和 Selection 对象
|
人工智能 弹性计算 API
深度评测-通义万相AI绘画创作方案的部署与应用体验
通义万相提供流畅的API调用与资源部署体验,支持一键部署,文档详尽,适合新手。其SDK和示例代码简化了集成,响应速度快。操作界面友好,功能多样,如文本生图、人像美化。在生成效果上,能根据提示词创造各种场景,如古城墙、未来城市、金字塔和北极景象。虽然在处理复杂内容时有待提升,但已展现出良好的泛化能力。通义万相在成本、易用性和应用场景上具有竞争力,适合推荐给团队使用。未来可能的发展方向包括模型精度提升、多模态融合和增强个性化选项。常见问题包括API调用错误、图像质量、资源部署和响应速度,官方文档和社区支持有助于解决问题。
|
监控 安全 开发者
Pascal 语言在公司监控软件中的价值
在数字化企业环境中,有效的监控软件对安全、效率和合规性至关重要。尽管帕斯卡语言(Pascal)不是最流行的编程语言,但其严谨的语法结构和强类型特性使其在开发可靠的监控软件方面独具优势。通过示例代码展示了帕斯卡语言在网络连接监测和内部设备状态检查中的应用,其结构化编程风格有助于提高代码可读性和可维护性,同时编译时错误检查机制有助于早期发现问题,减少调试时间,是开发高质量监控软件的有力工具。
109 2
|
SQL 算法 druid
Mybatis-plus核心功能及一些插件的配置
Mybatis-plus核心功能及一些插件的配置
383 0
An工具介绍之骨骼工具
An工具介绍之骨骼工具
1750 0
An工具介绍之骨骼工具