趣闻|身为程序员如何用专业技术让女朋友高兴起来

2018年11月15日 澳洲IT圈


点击上方蓝字关注我们



封面

有一个喜欢看十二星座的女朋友是什么体验?她的情绪会随着星座运势走。有这样一个程序员,他使用和部署了简单的云服务器来抓取了每日星座运势,并在云服务器上知道运行了一些脚本和搭建简易站点来实现每日查询和邮件推送服务,能更好的哄女朋友开心。

文 | 倪家禹

编辑 | Hannah

时长 | 看一个星座表的时间


程序员倪家禹的女朋友突然爱上了看“十二星座”相关的内容,逢人就要拉着别人看星座,算运势,心情也变得随着星座运势而变得琢磨不定起来。为了让女朋友情绪回复,他竟然做出了这样的事:


这可怎么办呢?为了摸清其规律,对症下药,挽回我即将逝去的爱情,我搜索“星座运势”,得到这个东东:

这可真是好东西!可是星座运势每天都不一样,如果能像日报那样每天获取到推送就太好了!

我决定使用当今最前沿的互联网云服务,实现自动算命功能,以科学的手段拯救爱情。


  获取星座信息,选定算命网站 


女友的星座?嗯…...我记得好像是白羊或者金牛或者双子…...或者摩羯或者水瓶或者双鱼。算了算了~这个不重要,随机吧!

排名第8的星座:天蝎座。应该就是它了!

然后,我浏览各大算命网站,发现大家算出来的结果都是一个版本,那也随机选一个吧!

主要步骤就是访问API——获取星座JSON数据,十分简单。

贴上代码:

import smtplib    
from email.mime.multipart import MIMEMultipart    
from email.mime.text import MIMEText    
from email.mime.image import MIMEImage 
from email.header import Header   
import requests
import time

#构建调用API函数
def run():
    url = 'https://api.shenjian.io/constellation/today?appid=74a1d223b7f5105634f6e0c3341bea82'  
    params = {'constellation':'天蝎座'}
    data = requests.get(url,params=params).json()
    constellation = data['data']['constellation']
    fate = data['data']['fate']
    total = data['data']['fate_data'][0]['name']
    total_score = data['data']['fate_data'][0]['value']
    love = data['data']['fate_data'][1]['name']
    love_score = data['data']['fate_data'][1]['value']
    work = data['data']['fate_data'][2]['name']
    work_score = data['data']['fate_data'][2]['value']
    fortune = data['data']['fate_data'][3]['name']
    fortune_score = data['data']['fate_data'][3]['value']
    lucky_color = data['data']['lucky_object'][1]
    lucky_num = data['data']['lucky_object'][2]
    health = data['data']['lucky_object'][3]
    analysis = data['data']['analysis']

    #对API返回的数据构建邮件文本内容
    content = '''{}
    星座:{}
    {}:{}
    {}:{}
    {}:{}
    {}:{}
    {}
    {}
    {}
    运势分析:
    {}
    '''.format(fate,constellation,total,total_score,love,love_score,work,work_score,
    fortune,fortune_score,lucky_color,lucky_num,health,analysis)

 

  用脚本获取自动反馈 


第二步,我需要把查询到的结果,每天自动反馈给我,比如通过短信或者邮件。

这里选择邮件,因为发短信要钱,邮件不要钱。

首先,注册一个邮箱,比如163邮箱。获得SMTP服务器地址。

然后编写邮件发送自动发送脚本,脚本内容为通过API获取的星座运势。

接下来,设置定时发送时间,比如每天早上8点。这里为了快速验证脚本,简单设置了间隔60秒发送一次。

1、设置邮件发送任务

#下面的发件人,收件人是用于邮件传输的。
smtpserver = 'smtp.163.com' #邮件服务器
username = '[email protected]' #邮箱
password='XXXXXX' #邮箱密码
sender='[email protected]' #发件人邮箱
receiver='[email protected]' #收件人邮箱
#收件人为多个收件人
#receiver=['[email protected]','[email protected]']


subject = '星座运势' #邮件名称
#通过Header对象编码文本,如果出现中文乱码情况,请使用
#subject = '中文标题'
#subject=Header(subject, 'utf-8').encode()

2、构造邮件对象

#构造邮件对象
#下面的主题,发件人,收件人,日期是显示在邮件页面上的。
msg = MIMEMultipart('mixed'
msg['Subject'] = subject
msg['From'] = '[email protected] <[email protected]>'
msg['To'] = 'XXX@qq.com'
#收件人为多个收件人,通过join将列表转换为以;为间隔的字符串
#msg['To'] = ";".join(receiver) 
#msg['Date']='2018-9-23'

3、构造文字内容

text = content #传入文本  
text_plain = MIMEText(text,'plain', 'utf-8')    
msg.attach(text_plain)   

4、发送邮件

smtp = smtplib.SMTP()    
smtp.connect('smtp.163.com')
#用set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息。
print(smtp.set_debuglevel(1))  
smtp.login(username, password)    
smtp.sendmail(sender, receiver, msg.as_string())    
smtp.quit()

5、构建定时任务

def main(): #构建定时任务
    while 1 :
        run()
        time.sleep(60)#设置脚本运行的时间间隔


到此,简单的算命脚本就弄好了。不过接下来面临一个问题,家中电脑不可能24小时待命运行脚本,我需要一台永不停止的电脑。

利用云服务可以搭建云站点,进行云计算,运行云爬虫……这里我们用来云算命!首先在其中配置Python运行环境,这里以某云为例。具体步骤,请继续往下看。


具体操作步骤 


我们进入管理控制台,查看实例,已经在运行中了:

1)先重置服务器密码,然后进行远程连接。这里会自动生成一个远程连接密码,记下来,不要忘了。

2)输入账号和密码,登陆服务器。

账号:ROOT,密码:就是刚才设置密码时的那个。

3)下面和平时使用CMD安装Python包一样,我们安装一些会使用到的库:

 4)下载一个FileZilla,用来上传脚本至服务器:

5)主机填IP地址。账号密码和刚才一样,端口填22。

6)进入之后,新建一个文件夹,把脚本拖进去:

7)为了使用方便,我们可以再下载一个叫PuTTY用于访问服务器,进行操作:

填入IP和端口,然后点击OPEN,后面和在页面上进行远程管理操作完全一样~

比如,我们可以进入Python环境,运行一些代码:

这里,先CD到脚本所在目录,然后,键入后台运行脚本命令。

然后脚本将会不间断自动运行(为避免不给发邮件的情况,邮件服务器和解决方案应慎重选择)

好了,让我们查看一下邮箱:

点开一封邮件,是这样的:

看!结果一目了然,这样我就可以有针对性的哄女友开心了!

最后想说的是,本文纯属虚构,如有雷同,节哀顺变。

这里主要是想讲一下如何使用和部署简单的云服务器。我们可以在云服务器上自动运行一些脚本,比如时间花费较长的爬虫脚本,或者数据量极大的运算逻辑。

然后,甚至我们可以搭建简易的站点,实现自己的API接口,比如可以尝试一下搭建一个POI查询服务API。

作者简介:本文作者数据侠倪家禹,城市数据团特约撰稿人,数据分析师(Python)微专业学员,喜欢用数据挖掘生活中的小秘密。对数据研究有着敏锐的洞察力,善于把复杂的问题简单化,简单的问题流程化。希望大家通过数据感受生活的魅力。

*原文链接:https://mp.weixin.qq.com/s/CZl8ztr6V_b1YfzK7pkTng 

看到这里,是不是也明白了如何哄女朋友呢?

如果你要说你没有女朋友也没有关系,反正这个作者也没有





澳洲IT求职技术群

我们是澳洲最专业的IT技术交流求职群体,目前已经有六千多个小伙伴,而且我们这个群体在不断壮大中,交流技术、工作内推,欢迎IT行业同仁加入,需要合作的请在后台留言。目前大群人数已过百,想要入群的朋友:

请扫二维码入群




我们是谁

布里斯班 · 悉尼 · 墨尔本· 西雅图

打造澳洲IT精英圈 · 做信息时代的匠人

澳洲IT匠人圈 - 澳洲最专业的IT专业人士组织。我们的初衷就是连接海内外的IT同仁,团结互助、工作内推、职场升迁,让在土澳的我们也能感受到高科技的光芒。IT匠人圈有一系列的品牌活动:Offer收割机、大咖面对面、匠人Workshop、匠人线上公开课、创业英雄会,活动开展以来反响强烈。

  

让我们共同努力,一起实现梦想

欢迎各界人士的加入,合作交流请在后台留言

投稿,请联系小花或E-Mail

[email protected]

商务联系

首席勾搭官 | +61 451 010 217

首席勾搭官小花 | 微信 uniapp001

欢迎关注IT匠人圈微信公众号




收藏 已赞