用python给朋友发送天气预报,关心一下朋友

2024年最新十行python代码定时给微信好友发送晚安,自动应答--python云舔狗 正如上一篇说到我们可以用python来分析我们的好友,那我们是不是可以用python来联系我们的好朋友,这样用python来解放我们的双手,同时跟多个朋友联系,成为一只“云舔狗”岂不是指日可待,想想就很美好下面展示代码运行结果和心路历程,源码我放到#公众号【一行数据】上,大家关注即可查阅就能看到了哦。 阅读详情

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理

作者:dogfei

原文地址:   https://segmentfault.com/a/1190000038683437

想要获取更多Python学习资料,了解更多关于Python的知识,可以加Q群630390733踊跃发言,大家一起来学习讨论吧!

先看下效果图:

用到的模块:

  • PyMySQL
  • requests
  • threading
  • wxpy

要实现上面的示例,首先是有两大块地方

  • 获取天气信息
  • 通过微信将天气信息发送出去

而获取天气信息又包括几个小的需要注意的地方

  • 获取天气信息

    • 获取天气信息的接口
    • 获取天气信息的城市
    • 获取所在城市的城市码

假如我们给多个人发送天气情况,这几个人来自不同的城市,那么我们不可能每次都要输入城市名,然后查找城市码,然后再访问接口,获取天气情况,这样会非常的麻烦,所以我们需要考虑将城市名跟城市码一一对应起来,说到一一对应,首先想到的数据结构便是字典,所以我们可以将这些信息存入一个字典里,然后持久化到一个文件中,这样便方便很多

首先我们获取最新的 city 表,这个表是一个 list 类型,大体格式如下:

[
  {
    "id": 1,
    "pid": 0,
    "city_code": "101010100",
    "city_name": "北京",
    "post_code": "100000",
    "area_code": "010",
    "ctime": "2019-07-11 17:30:06"
  },
  {
    "id": 2,
    "pid": 0,
    "city_code": "",
    "city_name": "安徽",
    "post_code": null,
    "area_code": null,
    "ctime": null
  }
]

我们就简单的粘贴复制,放到一个空的列表中,如下所示,将所有的城市信息放到列表 citycode 中

citycode = [
  {
    "id": 1,
    "pid": 0,
    "city_code": "101010100",
    "city_name": "北京",
    "post_code": "100000",
    "area_code": "010",
    "ctime": "2019-07-11 17:30:06"
  },
...
...
...
...
...
...
  {
    "id": 2,
    "pid": 0,
    "city_code": "None",
    "city_name": "安徽",
    "post_code": "null",
    "area_code": "null",
    "ctime": "null"
  }
]

cityinfo = {}
#将城市名和城市代码写入json文件中
with open('city_for_code.json','w',encoding='utf-8') as f:
    for i in citycode:
        name = i["city_name"]
        code = i["city_code"]
        cityinfo[name] = code
    f.write(str(cityinfo))

#测试是否能读取
with open('city_for_code.json','r+',encoding='utf-8') as file:
    data_dst = file.readlines()
    d = eval(data_dst[0])

然后就是一顿处理,只把我们所需的 city_name 和 city_code 这俩字段取出即可,随后写入文件中。如果读取的话就按照上面方法去读取,需要注意的是,使用 open()方法读取文件,得到的内容是一个列表,我们需要通过 eval()方法转化成 dict 类型。

这是把 city_name 和 city_code 放到一个文件中的方法,另外我们也可以放到数据库中,这里以 MySQL 为例,安装 PyMySQL 模块

import pymysql

db_parames = {
    'host': 'localhost',
    'user': 'root',
    'password': '123456',
    'database': 'city_code_info'
}
#连接数据库
conn = pymysql.connect(**db_parames)

#创建游标对象,增删改查都在游标上进行
cursor = conn.cursor()

#表存在,就删除
cursor.execute("DROP TABLE IF EXISTS city_code")

#建表语句
create_table_sql = """CREATE TABLE `city_code` (
  `city_name` varchar(20) DEFAULT NULL,
  `city_code` varchar(25) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
"""
#建表
cursor.execute(create_table_sql)

#插入数据
with open('city_for_code.json','r+',encoding='utf-8') as f:
    origin_data = f.readlines()
    current_data = eval(origin_data[0])   #读取的内容是一个列表,且只包含一个元素
    #print(current_data.get('北京','Not Exists.'))
    for name, code in current_data.items():
        sql = """INSERT INTO city_code(city_name, city_code) VALUES ('%s', '%s')""" % (name, code)
        try:
            cursor.execute(sql)
        except:
            conn.rollback()
    conn.commit()
    conn.close()

执行这个 python 程序就可以将文件中的城市名跟城市码存到库中,当然我们也可以直接获取到城市名和城市码,然后跳过文件持久化这一步,直接把这两个字段取出存进去,但是考虑着代码要多练多写,就多此一举了一下。

下面是输入城市名就能得到城市码的代码块:

import pymysql

def get_city_code(city_name):
    db_parames = {
    'host': 'localhost',
    'user': 'root',
    'password': '123456',
    'database': 'city_code_info'
    }
    #连接数据库
    conn = pymysql.connect(**db_parames)

    #创建游标对象,增删改查都在游标上进行
    cursor = conn.cursor()

    #创建查询语句
    select_sql = "SELECT * FROM city_code where city_name='%s'"%(city_name)
    try:
        cursor.execute(select_sql)
        result = cursor.fetchall()
        for row in result:
            city_code = row[1]
        return city_code
    except:
        return "Error: unable fetch data!"

然后是根据输入的城市码来获取天气情况:

import requests

def get_weather(city_name,get_date_time=3):
    city_code = get_city_code(city_name)
    url = 'http://t.weather.sojson.com/api/weather/city/%s'%(city_code)
    header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
    }
    response = requests.get(url,header)
    response.encoding = 'utf-8'
    weather = response.json()
    day = {1: '明天', 2: '后天', 3: '大后天'}
    weather_lst = []
    for num in range(get_date_time):
        City = weather["cityInfo"]["city"]
        Weatherganmao = weather["data"]["ganmao"]
        Weatherquality = weather["data"]["quality"]
        Weathershidu = weather["data"]["shidu"]
        Weatherwendu = weather["data"]["wendu"]
        Weatherpm25 = str(weather["data"]["pm25"])
        Weatherpm10 = str(weather["data"]["pm10"])
        Dateymd = weather["data"]["forecast"][num]["ymd"]
        Dateweek = weather["data"]["forecast"][num]["week"]
        Sunrise = weather["data"]["forecast"][num]["sunrise"]
        Sunset = weather["data"]["forecast"][num]["sunset"]
        Windfx = weather["data"]["forecast"][num]["fx"]
        Windf1 = weather["data"]["forecast"][num]["fl"]
        Weathertype = weather["data"]["forecast"][num]["type"]
        Weathernotice = weather["data"]["forecast"][num]["notice"]
        Weatherhigh = weather["data"]["forecast"][num]["high"]
        Weatherlow = weather["data"]["forecast"][num]["low"]
        if num == 0:
            result = '今日天气预报' + '\n' \
                + '日期: ' + Dateymd + ' ' + Dateweek + ' ' + City + '\n' \
                + '天气: ' + Weathertype + ' ' + Windfx + ' ' + Windf1 + ' ' + Weathernotice + '\n' \
                + '当前温度: ' + Weatherwendu + '℃' + '\n' \
                + '空气湿度: ' + Weathershidu + '\n' \
                + '温度范围: ' + Weatherlow + '' + '~' + '' + Weatherhigh + '\n' \
                + '污染指数: ' + 'PM2.5: ' + Weatherpm25 + ' ' + 'PM10: ' + Weatherpm10 + '\n' \
                + '空气质量: ' + Weatherquality + '\n' \
                + '日出时间: ' + Sunrise + '\n' \
                + '日落时间: ' + Sunset + '\n' \
                + '温馨提示: ' + Weatherganmao
        else:
            which_day = day.get(num,'超出范围')
            result = '\n' + which_day + ' ' + '天气预报' + '\n' \
                + '日期: ' + Dateymd + ' ' + Dateweek + ' ' + City + '\n' \
                + '天气: ' + Weathertype + ' ' + Windfx + ' ' + Windf1 + ' ' + Weathernotice + '\n' \
                + '温度范围: ' + Weatherlow + '' + '~' + '' + Weatherhigh + '\n' \
                + '日出时间: ' + Sunrise + '\n' \
                + '日落时间: ' + Sunset + '\n' \
                + '温馨提示: ' + Weatherganmao
        weather_lst.append(result)
        weather_str = ''     #因为默认要输出三天的天气情况,所以我们需要创建一个空字符串,然后每迭代一次,就将天气情况拼接到空字符串中。
        for msg in weather_lst:
            weather_str += msg + '\n'

    return weather_str

下面是发送微信消息

from wxpy import *

def send_wx(city_name, who):
    bot = Bot(cache_path=True)
    #bot = Bot(console_qr=2, cache_path='botoo.pkl')
    my_friend = bot.friends().search(who)[0]
    msg = get_weather(city_name)
    try:
        my_friend.send(msg)
    except:
        my_friend = bot.friends().search('fei')[0]
        my_friend.send(u"发送失败")

然后我们还需要写一个定时器,每隔一段时间便要发送一次

from threading import Timer

def auto_send():
    city_name = '设置要发送的城市'
    friend_list = ['要发送的人']

    for who in friend_list:
        send_wx(city_name,who)
    global timer
    timer = Timer(1,auto_send)
    timer.start()

最后执行程序

if __name__ == '__main__':
    timer = Timer(1,auto_send)
    timer.start()
用Python实现天气预报 在本文中,我将使用Python编程语言来实现一个简单的天气预报程序。我们将使用一个开放的天气数据API来获取实时天气数据,并将其显示在控制台上。在此示例中,我们将使用OpenWeatherMap的API。然后,我们可以使用该密钥来访问API并获取天气数据。然后,我们将从返回的数据中提取所需的信息,并将其显示在控制台上。然后,我们定义一个函数,该函数将接收一个城市名作为参数,并返回该城市的天气数据。现在,我们可以运行我们的程序并测试它。函数,将城市名作为参数传递给它,并将返回的天气数据保存在。 阅读详情

相关推荐

sunrisesunset:Python脚本确定日出和日落

日出日落 确定日出和日落的Python脚本。

python日出日落时间实现和详解

python实现日出日落得.exe程序教程

Boy_Martin的博客 1582

基于Python实现定时自动给微信好友发送天气预报

主要介绍了基于Python实现定时自动给微信好友发送天气预报的实现代码,,需要的朋友可以参考下

使用python获取天气接口给指定微信好友发天气预报

先看下效果图: 用到的模块: PyMySQL requests threading wxpy 要实现上面的示例,首先是有两大块地方 获取天气信息 通过微信将天气信息发送出去 而获取天气信息又包括几个小的需要注意的地方 获取天气信息 获取天气信息的接口 获取天气信息的城市 获取所在城市的城市码 假如我们给多个人发送天气情况,这几个人来自不同的城市,那么我们不可能每次都要输入城市名,然后查找城市码,然后再访问接口,获取天气情况,这样会非常的麻烦,所以我们需要考虑将城市名跟城市码一一对应起来,说

wx_17600131438 514

FPGA实战:用DDR3和乒乓操作解决视频帧撕裂问题(附Verilog代码)

本文详细介绍了如何利用DDR3内存和乒乓操作架构解决FPGA视频处理中的帧撕裂问题。通过多帧缓存原理、AXI接口配置和自适应乒乓操作设计,有效隔离读写操作,确保视频流稳定传输。文章包含Verilog代码实现和性能优化技巧,适用于工业相机、医疗影像等高速视频处理场景。

m2n3b4v5c6的博客 289

历史预测+LLM双杀!DriveGPT4-V2闭环驾驶配置避坑指南

本文深入探讨了DriveGPT4-V2在工程化部署中的核心挑战与解决方案。通过融合历史轨迹预测与大语言模型,该模型旨在实现更可靠的端到端自动驾驶。文章详细解析了从环境配置、多模态Token对齐、轻量控制头设计到训练优化与闭环仿真验证的全流程,为开发者提供了一份详实的避坑指南。

transformer2023的博客 382

AI Agent实战 之 《女朋友爱看天气预报》

作者从女友细致查看天气预报的习惯中获得灵感,尝试用AI Agent复刻这种生活化的关怀。当机器学习模仿"明天要下雨"的温柔提醒时,技术开始承载生活中的细腻情感。文章记录了将天气预报转化为AI关怀的实践过程,包括技术实现方案和代码展示,展现科技与日常温情的奇妙融合。

LC1237的博客 724

python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)

python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装) 写在前面 事先说明,本人不是大佬,我只是在不断探索的途中找到了解决这个问题的方法,之前在网上搜索的时候没有看到相关文章,所以就来简单讲一下。 正文 借着蚂蚁金服小程序大赛开通了支付宝小程序个人开发者,尝试将一个微信小程序的项目移植到支付宝上,支付宝对于用户唯一id的获取比微信要复杂很多,微信...

weixin_43102379的博客 3642

【感恩节的小礼物】yagmail给家人朋友来一份含有温情的关心和推送吧~Python3自动发送暖心内容邮件。

python3 + requests + yagmail发送了完整的邮件

《易·干》:“君子终日干干,夕惕若厉,无咎。” 6万+

阿里云习题多选部分459道

比如: UserA的用户在杭州有一台经典网络的ECS云服务器InstanceA (内网IP: A.A.A),InstanceA所属的默认安全组为GroupA, UserB的用户在杭州有一台经 典网络的ECS云服务器InstanceB(内网IP:B.B.B),InstanceB所属的默认安全组为GroupB。43.创建阿里云的云服务器ECS实例之前,需要对ECS实例的配置进行选型,阿里云为用户提供了推荐的配置组合方案来满足大部分用户的需求,这些推荐配置只是作为开始使用云服务器ECS实例的参考。

2501_91384465的博客 1309

ADS8681数据手册没讲透的细节:SPI时序、量程切换与电压换算的避坑指南

本文深入解析ADS8681数据手册未提及的SPI时序优化、量程切换陷阱与电压校准技巧。针对树莓派5与ADS8681的SPI通信问题,提供CPOL/CPHA配置建议;详解量程切换的位操作玄机与寄存器配置流程;并提出三步校准法应对非理想供电环境,帮助开发者提升ADC测量精度。

weixin_29178069的博客 518

教你怎么给心爱的她自动定时发送消息!超级简单!

昨天回家女朋友吐槽说最近天气总是多变,突然就下雨了~ 其实我想说,你出门之前能不能看看天气预报,但是谁让她是我的心头肉呢,所以说是不可能说的,但是咱们可以预防! 我直接用Python整了一手自动发消息,每天定时把天气预报发给她,这回总能长点心了! 大家可以收藏一下,以后绝对用得到!也可以弄成定时给你的女神发送关心的消息,想发什么内容改一改就行了,下一个海王就是你~ 考虑到很多小伙伴不会Python,或者正在学习但是不知道怎么学,没有资料,没人解答问题等等各种问题,所以我准备了一个群,就是帮助

轻松学python的博客 965

OpenMV模块视觉测距(避障)+颜色识别+TFT-LCD显示(实现原理与代码分析)

上图所示代码实际运行的帧率比较低,主要原因有以下两个:1.硬件问题,博主使用的版本比较低,可以尝试使用高版本OpenMV2.图像滤波问题。之前加入图像滤波是想提高色块识别的准确性,但是相应的运算速度也会下降。

ediykk的博客 1万+

十行python代码定时给微信好友发送晚安,自动应答--python云舔狗

外链图片转存中…(img-sLJSnwLx-1712787585716)]

2401_84254087的博客 1228

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 732

解决微信小程序长页面滚动到底部点击底部的输入框后输入框漂浮且页面滚动到顶部

一、问题描述 项目中有一个长页面上部展示部分信息下部为信息录入,页面长度为三屏幕(不同手机屏幕大小略有差异),当滚动到第二屏或者第三屏去填写信息时点击输入框后输入框漂浮起来了并且页面向上滚动了一段距离,回到了第一屏中展示的内容。效果如图。 滚动到第二屏,证件号输入。 点击输入框 可以看到证件号输入框漂浮了起来并且页面滚动到了第一屏展示的内容。 注意:小程序是2018年上线,在2020年4月份之前该页面从未出现过这种现象。推测:微信的后续更新中对微信小程序基础库进行了重构,导致点击输入框后页

仰望星空的代码 3255

实现微信向多好友定时发送信息

@TOC利用WeChat向好友定时发送关心及天气信息,表达自己对朋友的关心 第一篇博客,不喜欢不要说出来哈_ 在闲暇之余,通过学习整理了一份可以向微信好友批量发送消息的脚本,包含的内容如下: 1、获取天气信息 2、获取关心数据 3、好友配置表 4、实现微信发送 5、实现定时发送 6、等等 看了很多有帮助的博客 1、python 每天在指定时间段运行程序及关闭程序 https://blog.youkuaiyun.com/weixin_35737303/article/details/99561792?ops_reques

qq_45912018的博客 2266

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

用Python获取所在城市天气预报信息,干得漂亮(30)

只需要修改下city_code即可,即把101020100(上海)改成你所要查询城市的city_code。因此,咱们今天就省略了将获取到的天气预报信息推送给好友步骤,直接手动复制、粘贴、发送就行。如果没查到,或者懒得查询,也可以看同名公号(和猫妹学Python)的此条。在使用这个库的时,有遇到报错,网友提到这个库好久没更新了,不建议使用它。Python擅长数据处理,向服务器请求数据,拿到数据,解析数据。或者小伙伴在上海,但想查询上海具体到某个区的天气,怎么查询呢?如果遇到什么问题,咱们多多交流,共同解决。

parasoft的专栏 1284

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

什么?你还没女朋友?教你如何借助Python俘获女孩子芳心!

在敲代码的过程中,我意识到最难的部分,是想到把两者结合,并编辑土味关怀发送给目标用户了。搞定之后,一个回车,不仅拿到了明天的天气(其实未来几天的都能拿到),还顺带计算了温差。tomorrow = (‘明天是%s,%s,%s,%s-%s度,温差%d度’)% \。print((‘明天是%s,%s,%s,%s-%s度,温差%d度’)% \。#今天天气相关数据:日期,星期几,天气,最低气温,最高气温。#登录完即可一件发送,设置发送给谁,和邮件主题,邮件内容。#登录邮箱,设置登录的账号,密码和port等信息。

2401_84009529的博客 795

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python自动发送天气信息给微信好友 撩妹专用

最近根据一些开源脚本,用python写了一个每天定时给微信好友发送天气情况的脚本,可以用于关心女朋友。 #if __name__ == '__main__':#!/usr/bin/python #coding=utf-8 import schedule import time import random import itchat import urllib.request import gzip import json message_list = [u' 有些路很远,走下去会很累。可是,不走,会后悔。

qq_35066464的博客 661
上一篇: 学习Python之面向对象补充
下一篇: 用Python读取xml文件后,裁剪标注图片和扩容数据
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值