原标题:【暖心一笑】Python趣味编程:定时给Ta讲笑话

大四的生活就是这么无聊,我琢磨着也学了这么多东西了,为啥不能用自己的知识来给生活找点乐子呢?我想反正每天都要给Ta问候一声早安,为何不同时讲个笑话呢?如果能写个程序每天早上定时给Ta发一条问候早安同时讲一个笑话的短信该多好。说干就干,走起~

Part 1

笑话准备

笑话从哪里来?自己写肯定是不现实的。在这个“云”的时代,各种云都有,自然是不缺开放API的(大部分都是免费的)。随意一搜,果然被我找到一个接口:易源_笑话大全http://apistore.baidu.com/apiworks/servicedetail/864.html

根据它给的API可以获取它所有的笑话,关键代码如下:

这里简单做一下介绍:urllib2是Python的一个获取URL的组件。他以urlopen函数的形式提供了一个非常简单的接口,具有利用不同协议获取URL的能力,同样提供了一个比较复杂的接口来处理一般情况。urllib2可用来完成以下功能:

1.获取Web页面

2.在远程http服务器上验证

3.额外数据请求,如表单提交(GET和POST)

4.异常处理

5.非http协议通信(如FTP)

它的详细操作可以查看官方文档https://docs.python.org/2/library/urllib.html

Part 2

发短信

笑话准备好了,那么怎么发短信到手机呢?类似上面小节,我想着肯定也有开放的API,但是这次就没那么幸运了,短信API都是要付费的~, 对于一个学生党来说有点不现实。怎么办??苦思冥想不得其解,这个时候突然收到移动服务号的短信如图:

这提醒了我,移动的139邮箱要给用户收到的邮件发送短信提醒!!这就妙了,因为发邮件是不需要钱的,我只需要发邮件到Ta的139邮箱就可以了,哈哈。关键代码如下:

我是用的是qq邮箱,一般的邮件服务器都会开放smtp,pop3,imap服务的端口给用户,让用户可以查询邮件或者发送邮件。我们这里发送邮件,所以使用smtp服务。Python 的smtplib库可以实现这一功能。

整合代码尝试,效果如下图:

可见不能完全显示,这是因为139邮箱免费版具有140字限制如图:

有两种办法解决,一是付费5块钱(还是不愿意!),二是把一个笑话分成三部分,分别放在发件人,主题和正文中,如下图:

还是不行,字数限制是个硬伤。那就从原来的从笑话列表里选择第一个笑话改为选择字数最少的一个。代码如下:

如下图:

基本可行了,不过发多了过后腾讯会认为是垃圾邮件(汗),主要是发件人名字太奇怪了,大家有什么好主意可以告诉我一下啊,多多交流。

完整代码(joke.py)如下:

Part 3

定时任务

现在准备工作齐全了,就差最后一步定时发送了。Linux 提供了一个定时任务工具crontab,windows提供了一个定时任务工具叫做任务计划,不过我的笔记本又不是随时连上网的,所以把这个脚本放在实验室的虚拟机上了(debian)。一般linux都预装有python环境所以只需以下命令:

Vi /etc/crontab

在文件最后一行添加

30 7 * * * root python /root/joke.py

这样就能达到每天早上7:30 发送给Ta发短信的目的啦!

总觉得程序员是一个很好的职业,虽然会比较累,不过只要有一双发现的眼睛和对生活的热情就能够用自己的知识给生活带来一些闪光点,比如你可以为不会上网的长辈爬取天气预报信息发送到手机短信顺便问候一声,我相信长辈们都会很开心的。

本文链接:http://www.codeceo.com/article/python-talk-funny.html

本文作者:码农网 – 邱康

培养专业的网络安全人才,

成就优秀的安全“大牛“

QQ交流群:204528261返回搜狐,查看更多

责任编辑:

python趣味编程表白_【暖心一笑】Python趣味编程:定时给Ta讲笑话相关推荐

  1. python邮件定时发送短信_Python趣味编程:如何定时发短信给Ta讲笑话

    原标题:Python趣味编程:如何定时发短信给Ta讲笑话 人一无聊,就会想:反正每天都要给Ta问候一声早安,为何不同时讲个笑话呢?如果能写个程序每天早上定时给Ta发一条问候早安同时讲一个笑话的短信该多 ...

  2. 2019想脱单?这款Python智能化“天气提醒”程序暖心你的小姐姐!

    冬天来啦,作为"特困户",每天早上起床的速度感觉会击败全国3%的人. 2019年已经在不知不觉中到来了,2018年还是单身的你是不是已经在努力的脱单中呢? 为了帮助大家顺利脱单,小 ...

  3. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  4. python视频网站项目_价值2400元的python全栈开发系列Flask Python Web 网站编程视频

    2 e/ b4 F1 c' H$ D! X 价值2400元的python全栈开发系列Flask Python Web 网站编程视频-优品课堂' z3 _1 Y7 ]6 j4 z # p# r# g* ...

  5. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  6. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  7. 树莓派python编程优点_树莓派为什么会使用python编程?为什么有时python运行效率不高?...

    在许多编程语言中,Python的语法也有很大不同.Python使用空格或缩进来分隔不同的代码块.C语言和其他语言使用花括号来区分不同的代码块,例如if语句,Python使用冒号和缩进来定义代码块.这也 ...

  8. python 动态类型性能_动态且强类型的Python

    参考自 类型系统 强类型:偏向于不容忍隐式类型转换.譬如说haskell的int就不能变成double 弱类型:偏向于容忍隐式类型转换.譬如说C语言的int可以变成double 静态类型:编译的时候就 ...

  9. python代码编写工具_编写更好的Python代码的终极指南

    python代码编写工具 Despite its 尽管它 downsides, Python remains the king of today's programming world. Its ve ...

最新文章

  1. 人工智能(Artificial Intelligence)常用算法
  2. 机器学习获量子加速!物理学家与计算科学家「自然联姻」
  3. 浅谈移动类型102、122和161区别
  4. ruby简单的基本 6
  5. Catalan数应用
  6. IDEA集成Scala图文教程详细步骤
  7. python sftp模块_python用paramiko模块上传本地目录到远程目录
  8. 解决谷歌浏览器所有页面崩溃问题
  9. c语言cin cou头文件,c+第五次实验
  10. Vuex源码阅读分析
  11. wps如何使用ppt美化大师_WPS的ppt一键美化软件怎么用
  12. BackTrack5(BT5)硬盘安装完美教程
  13. gpt分区android系统备份,OBR一键还原备份系统WINPE专用v2.166版支持GPT分区UEFI
  14. Python字符串的‘ ’,“ ”,''' '''
  15. 网页制作的形式美的规则
  16. 6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)
  17. “排队” 用英语怎么说
  18. 小白学习3D游戏建模从什么软件开始?人物角色建模怎么做?
  19. 一图理解geos的九交矩阵模型——面面关系
  20. 微信电脑端双击不能放大图片怎么回事_电脑微信收到的截图是这样子的,双击一下打开才看的到,我自己也发不出截图...

热门文章

  1. 记一次mpvue开发完整小程序相关笔记
  2. oracle高级查询用法
  3. 2017年前端开发工具趋势
  4. 同步手绘板——将View的内容映射成Bitmap转图片导出
  5. 数据结构Java实现05----栈:顺序栈和链式堆栈
  6. 关于File.separator 文件路径:wind与linux下路径问题 .
  7. selenium webdriver之eclipse java开发环境搭建
  8. android 调用手机震动
  9. mysql 上一条 下一条,MYSQL实现上一条下一条功能
  10. mysql 5.7_MySQL 5.7新特性介绍