Python开发款短链生成器,来满足我的需求!
hi,今天又是普普通通的一天,相信大伙宅在家里已经无事可以做了,当然我也是一样的,除了刷刷微博,看看小说.还真是没有什么可以玩耍的。
但是,今天我在写文章的时候,碰到了一个问题,有个链接并没有备案,因此会导致微信的公众号后台无法保存自动回复,所以我上网查了查,好像短链接可以通过微信的防红链接检测,所以我想了想,决定着手开发一个短链接生成器,方便我以后的操作,主程序是这样的。
一.设计流程
1.设计界面(PyQt5的Qtdesigner)
2.简单的网络通信系统(requests库)
3.优化界面以及底层逻辑函数
4.尽可能实现方便化
二.设计界面
首先需要明确我们的程序需要什么样的功能:
1.输入网址
2.选择链接类型
3.转换链接,生成后自动复制系统剪切板
4.可以提供二维码形式
这个,我们首先来确定各个组件的摆放位置,这个其实也就是手动就可以完成的了,一个是文本控件,一个是按钮筛选(radio Button),还有生成按钮(pushButton),一个标签(label)控件即可,确定这些之后,然后在Qt designer上的模板图进行拖放,设置大小即可。
选择设计界面好后,直接保存,然后用pycharm配置好的pyuic直接转换为python源文件即可,由于使用了网格布局,所以无需考虑各个控件的大小形式,只要做好底层各个控件之间的连接通信即可,窗口代码大致如下:
三.简单的网络通信
虽然现在我们已经提供了最初的设计界面,但是,我们还要实现如何让底层源代码与UI界面结合在一起,也就是说:当我输入一串网址的时候,点击生成,就会有新的网址生成,并展示在前端,还可以随心所欲的转换短链的类型,比如百度短链,新浪短链等。
这样的话,我们为了简单一点通信,直接使用单线程请求短链的生成接口即可,然后后端服务会返回缩短后的链接,再经过简单的提取处理,就能展示在前端界面上了,这里我使用的是requests库,毕竟相信大伙有对爬虫进行了解,requests库还是蛮好用的。关键的程序大致如下:
class Sina_Url():def __init__(self, url):'''设置格式:param url:'''self.sina_url='https://www.98api.cn/api/sinaDwz.php'self.url=urldef shorted(self):'''缩短链接:return:'''params={'url':self.url}response=requests.get(url=self.sina_url,params=params)try:if response.status_code == 200:print(response.json())return response.json().get('short_url')else:logging.info('Fail')except Exception as e:logging.error(e)
(左右滑动代码)
关键请求程序中,shorted函数中就是请求返回短链接结果,self.url即是你想要缩短的长链接,这样我们只需要提供我们需要生成的网址即可获取到我们想要的结果,由于接口原因,可能生成有点慢,不过不要介意,我的函数里还提供了几种短链类型的生成函数,以致于方便我随时切换短链类型,来满足我的需求。
四.优化界面逻辑
这里,我就已经大概完成了网络请求以及设计界面基础模型,接下来,我们要开始着手对设计界面和源代码进行相应的底层关联结合,以及美化一下设计界面的模型和字体。
之前生成的界面源代码有两大类:Ui_Form和UI_Short,Ui_Form是已经生成好的界面代码,其实就是各个控件之间的简单布局,我们这里就不用修改,我们要修改结合的是UI_Short这个类,UI_Short里面有__init__初始化参数,这里我仅仅只是用于继承UI_From设计界面而已,Init_UI函数才是相关的关联函数,如下:
Init_UI函数大致如下,主要功能是关联按钮以及文本文件的操作功能,主要代码如下:
def Init_UI(self):'''优化界面:return:'''try:self.image.load('th.jpg') #设置背景图self.palettes.setBrush(self.backgroundRole(),QtGui.QBrush(self.image))self.setPalette(self.palettes)self.setAutoFillBackground(True)self.setWindowIcon(QtGui.QIcon('html.ico'))self.radioButton.toggled.connect(lambda: self.get_url(self.radioButton)) #类型选择按钮连接self.pushButton.clicked.connect(lambda: self.short_url())self.pushButton_2.clicked.connect(lambda: self.clear())self.pushButton_3.clicked.connect(lambda: self.show_qrcode())# self.radioButton_3.toggled.connect(lambda: self.get_url(self.radioButton_3))self.radioButton_4.toggled.connect(lambda: self.get_url(self.radioButton_4))self.radioButton_5.toggled.connect(lambda: self.get_url(self.radioButton_5))self.radioButton_6.toggled.connect(lambda: self.get_url(self.radioButton_6))except Exception as e:logging.error(e)pass
(左右滑动代码)
接下来的函数,主要是判断短链类型的函数,以及显示结果函数,如下:
判断选择短链类型
显示结果类型
我们记得关联上之前写过的接口请求,直接调用那个接口返回的结果,用文本控件显示操作setText结果即可,这里,我为了方便,直接将结果复制到系统剪切板上,生成链接的同时已经复制好了,节约时间。
清除函数
最后也要写上清除函数,为了方便链接的清除和二维码的清除。
五.新功能拓展
这里,为了我的工具更加好用,我直接生成成二维码形式的话,微信后台检测的风险性就更加大大降低了,所以,我这里用了qrcode库,将链接转码为二维码形式,便于生成二维码。主要代码:
def show_qrcode(self):'''展示二维码,其实是简单的二维码转码利用了qrcode库:return:'''try:self.label.setAlignment(Qt.AlignCenter)img = QtGui.QImage() # 图片的自适应qrcodes = qrcode.make(self.url)qrcodes.save('code.png')#保存文件在本地的code.pngif img.load('code.png'):# 自适应图片# self.label_4.setGeometry(0, 0, 400, 400)width = img.width()height = img.height()if width / 350 >= height / 350:ratio = width / 350else:ratio = height / 350new_width = width / rationew_height = height / rationew_img = img.scaled(new_width, new_height, Qt.KeepAspectRatio)self.label.setPixmap(QtGui.QPixmap.fromImage(new_img))except Exception as e:logging.error(e)
(左右滑动代码)
六.总结一下
虽然看似这些过程略微简单一些,但是,我从中修改了很多错误,也学习到了很多新知识,并且对于版本的修改也进行了几次,可以说使我受益匪浅,大伙也可以尝试去实现一下我的代码,能自己写一个比较好用的小程序还是挺有成绩感的。
温馨提示:
如要运行的话,请注意安装所需要的库,否则无法运行成功.
七.源代码获取
关注下面公众号,后台回复代码即可获取下载,注意回复关键词哦,不要写错哦。
你点的每个赞,我都认真当成了喜欢
Python开发款短链生成器,来满足我的需求!相关推荐
- 中电药明招募资深Python开发工程师
本次内推联系人为CW Data Technologies 中电药明人力资源部门VP.欢迎各位互联网公司部门相关技术负责人或招聘经理发送jd,简历和内推信息投递方式请见文末. 职位名称:(资深)Pyth ...
- Python培训教程分享:10款超好用的Python开发工具
学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...
- 十大python开发软件-7款公认比较出色的Python IDE,你值得拥有!
Python作为一款比较"简洁"的编程语言,它拥有很多性价比高的性能,造就了它现在比较火热的局面,很多人都来学习Python.Python 的学习过程少不了 IDE 或者代码编辑器 ...
- python开发工具排名-7款公认比较出色的Python IDE,你值得拥有!
Python作为一款比较"简洁"的编程语言,它拥有很多性价比高的性能,造就了它现在比较火热的局面,很多人都来学习Python.Python 的学习过程少不了 IDE 或者代码编辑器 ...
- python视频课程推荐-听说程序员都在用,5款Python开发工具推荐
很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...
- python开发的优秀界面-八款常用的 Python GUI 开发框架推荐
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- python中文编辑器推荐-推荐10款最好的Python开发编辑器
作者丨Python农夫 https://www.jianshu.com/p/85c800ea3492 1. Vim Vim 可以说是 Python 最好的 IDE.Vim 是高级文本编辑器,旨在提供实 ...
- python编程游戏手机版_利用Python开发手机同款游戏:开心消消乐
手机上面的开心消消乐,我想大部分人都是玩过的吧,今天小编就教大家如何用python开发这款游戏 不过只有十个关卡,不像手机里面那么多的关卡!不过游戏的画面和bgm都是同款的哦~ 效果图 基本配置 wi ...
- python3开发工具推荐_python开发工具有哪些?我推荐这5款python开发工具!
python开发工具有很多,目前我们用的比较多的是pycharm,除了pycharm还有文本编辑器像微软的vscode,sublime text都有非常好的插件,今天,我就把Python程序员使用频率 ...
- python ckeditor上传图片400错误_又一款python开发神器
优秀的python开发工具有很多,比如pycharm,spder,ipython,jupyter以及很多编辑器的插件等.但是如果利用python来做数据分析的话,要是有一款类似Rstudio的工具就好 ...
最新文章
- 关于树论【LCA树上倍增算法】
- 二叉树的递归和非递归遍历
- 日常生活小技巧 -- 虚拟串口工具
- 透过性别看世界_透过树林看森林
- eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战
- python做excel麻烦_高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定!
- mysql为什么不能插入数据_mysql为啥不能插入数据
- 图论 —— 图的连通性 —— Tarjan 求双连通分量
- html写弹出告警状态,基于日志报警插件 elastalert 实现告警(示例代码)
- jmeter-Java关于MD5加密方法 以及16位32位互转
- 2019 related conferences 相关会议 ISMAR, VRST, UIST
- 更改google桌面搜索的索引文件位置
- python笔记-2020/09/01下午-字符串练习(2)
- 1到100的偶数之和是多少_求1到100之间所有偶数之和
- HTML的div作用
- 家电专用降压DC-DC方案PL8310
- Python一帮一学习小组
- 安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization
- 浮动以及清楚浮动的几种方法
- Kali Linux渗透测试之端口扫描(一)——UDP、TCP、隐蔽端口扫描、全连接端口扫描