吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1769|回复: 28
收起左侧

[Python 原创] Python写的一个钉钉机器人城市天气脚本

  [复制链接]
by12 发表于 2024-5-28 17:08
本帖最后由 by12 于 2024-5-29 11:55 编辑

由于该脚本是存放在服务器上,所以想得知本地天气这个问题肯定不能从获取本机IP来实现,所以我使用的是获取城市名。
将城市名保存到city.txt里,例如我这里写的是杭州。
image.png
那么每次运行脚本,钉钉机器人就会获取杭州这个名字加天气情况反馈到群聊中。
用到的是心知天气的api,需要直接注册一个就行。反正免费的。
image.png
钉钉的机器人hook跟加签获取到后直接替换到链接上就行了。
我用的是宝塔的计划任务,定得每天早上8点执行, image.png
看效果。 image.png
脚本下载就放下面啦,求点CB~
-----------------------
二次修改;
经过反馈有时候会出现无法获取城市的问题提示:
未能获取到天气信息,请检查城市名称。
经过排查发现是API里面没有城市天气信息导致的。应该是吧。
image.png
如果修改一个具体的就没问题了。
image.png
现在代码支持直接查看调试内容了。
image.png
image.png
-,-上面泄露的展示的key地址已经改了,所以大家需要还是去申请自己的吧。
最新下载地址:

https://www.lanzouw.com/id9RP202i2id
求CB来一波

免费评分

参与人数 8吾爱币 +10 热心值 +8 收起 理由
Yangzaipython + 1 用心讨论,共获提升!
sishuiliunian1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
bskhk + 1 用心讨论,共获提升!
racham123 + 1 谢谢@Thanks!
Bob5230 + 1 + 1 我很赞同!
MQ19781011 + 1 + 1 虽然用不到,但是支持一下
yzmb8456 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hack78 发表于 2024-5-30 09:10
换成企业微信版本
[Python] 纯文本查看 复制代码
import requests
import time
import hmac
import hashlib
import base64
import json

def get_weather(city):
    api_key = 'xxxxxxxx'  # 替换为您的心知天气 API 密钥
    url = f'https://api.seniverse.com/v3/weather/now.json?key={api_key}&location={city}&language=zh-Hans'
    response = requests.get(url)
    print(f"Requesting weather data with URL: {url}")

    if response.status_code != 200:
        print(f"Failed to get weather data: {response.status_code} - {response.text}")
        return None
    
    data = response.json()
    if 'results' in data and data['results']:
        weather_info = data['results'][0]['now']
        weather_desc = weather_info['text']
        weather_icon = get_weather_icon(weather_desc)
        temperature = weather_info['temperature']
        return weather_desc, weather_icon, temperature
    else:
        print("No results found in weather data")
        return None

def get_weather_forecast(city):
    api_key = 'xxxxxxx'  # 替换为您的心知天气 API 密钥
    url = f'https://api.seniverse.com/v3/weather/daily.json?key={api_key}&location={city}&language=zh-Hans&days=3'
    response = requests.get(url)
    print(f"Requesting weather forecast data with URL: {url}")

    if response.status_code != 200:
        print(f"Failed to get weather forecast data: {response.status_code} - {response.text}")
        return None
    
    data = response.json()
    if 'results' in data and data['results']:
        forecasts = data['results'][0]['daily']
        return forecasts
    else:
        print("No results found in weather forecast data")
        return None

def get_weather_icon(weather_desc):
    if '晴' in weather_desc:
        return '☀️'
    elif '多云' in weather_desc:
        return '☁️'
    elif '雨' in weather_desc:
        return '🌧️'
    else:
        return ''

def send_to_wechat(message, webhook_url):
    headers = {'Content-Type': 'application/json'}
    data = {
        'msgtype': 'markdown',
        'markdown': {
            'content': message
        }
    }
    response = requests.post(webhook_url, data=json.dumps(data), headers=headers)
    if response.status_code == 200:
        print("Message sent successfully to WeChat!")
    else:
        print(f"Failed to send message to WeChat: {response.status_code}")

# 直接指定城市名称
city = '北京'

# 从环境变量中获取企业微信机器人的 Webhook URL
webhook_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx'  # 替换为您的企业微信机器人的 Webhook URL

# 获取天气信息
weather_data = get_weather(city)
forecasts = get_weather_forecast(city)

# 构建消息内容
if weather_data and forecasts:
    weather_desc, weather_icon, temperature = weather_data
    message = f"### 今日天气提醒\n\n城市:{city}\n天气:{weather_icon} {weather_desc}\n温度:{temperature}°C\n\n【未来3天天气预报】\n\n"
    for forecast in forecasts:
        date = forecast['date']
        weather_desc = forecast['text_day']
        temperature_high = forecast['high']
        temperature_low = forecast['low']
        message += f"{date}: {weather_desc}, 温度:{temperature_low}°C ~ {temperature_high}°C\n\n"
else:
    message = "未能获取到天气信息,请检查城市名称。"

# 发送消息到企业微信机器人
send_to_wechat(message, webhook_url)
kun5815 发表于 2024-5-28 19:48
yzmb8456 发表于 2024-5-28 19:55
laustar 发表于 2024-5-28 21:02
感谢楼主分享
yuzilin 发表于 2024-5-28 21:57
感谢分享!
meder 发表于 2024-5-28 22:36
感谢楼主分享
头像被屏蔽
hjsen 发表于 2024-5-28 23:16
提示: 作者被禁止或删除 内容自动屏蔽
icode_isky 发表于 2024-5-29 08:51
楼主你好,今天早上发现钉钉机器人无法获取正确的天气信息,昨天晚上手动执行的时候还有天气信息。

xiaofu666 发表于 2024-5-29 09:10
支持顶一下
 楼主| by12 发表于 2024-5-29 11:14
icode_isky 发表于 2024-5-29 08:51
楼主你好,今天早上发现钉钉机器人无法获取正确的天气信息,昨天晚上手动执行的时候还有天气信息。

那需要你检查一下计划任务是否设置正确。设置完你先执行一下看看效果。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表