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

2018-11-21

JiangRen Mr

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

 

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

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

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

 

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

 

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

排名第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 = 'XXX@163.com' #邮箱
password='XXXXXX' #邮箱密码
sender='XXX@163.com' #发件人邮箱
receiver='XXX@qq.com' #收件人邮箱
#收件人为多个收件人
#receiver=['XXX@126.com','XXX@qq.com']


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

2、构造邮件对象

#构造邮件对象
#下面的主题,发件人,收件人,日期是显示在邮件页面上的。
msg = MIMEMultipart('mixed'
msg['Subject'] = subject
msg['From'] = 'private_server@163.com <XXX@163.com>'
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。

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

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

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

近期开课hot
logo

Follow Us

linkedinfacebooktwitterinstagramweiboyoutubebilibilitiktokxigua

We Accept

/image/layout/pay-paypal.png/image/layout/pay-visa.png/image/layout/pay-master-card.png/image/layout/pay-stripe.png/image/layout/pay-alipay.png

地址

Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)
Level 8, 11 York st, Wynyard, Sydney CBD
Business Hub, 155 Waymouth St, Adelaide SA 5000

Disclaimer

footer-disclaimerfooter-disclaimer

JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.

匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议

© 2017-2024 JR Academy Pty Ltd. All rights reserved.

ABN 26621887572