返回列表 发新帖

青龙面板脚本分享-天气篇

[复制链接]

311

主题

4004

回帖

3万

积分

管理员

康哥工作室

Rank: 9Rank: 9Rank: 9

金币
47721
好评
276
信誉
141

小明星MT论坛元老MT论坛优秀版主MT论坛最佳新人MT论坛帅哥2018国庆节2019-5.1节快乐MT论坛侠客MT论坛活跃会员MT论坛灌水老大MT论坛土豪挂机大佬MT论坛新人

发表于 2025-12-10 10:28:55 | 显示全部楼层 | 阅读模式  来自 山东
之前自己用的天气通知和每日油价通知,还是挺好用的,后面天气api坏了,就一直没有时间修
今天终于有时间搞一下了,就直接把api改高德的了,自己使用免费次数肯定够用
api注册地址:https://console.amap.com     个人认证免费5000次/月
相关代码
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import notify
  5. from datetime import datetime

  6. # 用户输入的秘钥和城市编码
  7. API_KEY = "9********e"  # 高德地图API key
  8. CITY_CODE = "3****3"  # 城市编码:地理位置(所属地区身份证前6位)

  9. # 天气状况翻译表(只保留需要翻译的,相同的自动使用原词)
  10. WEATHER_TRANSLATION = {
  11.     "晴": "晴天",
  12.     "阴": "阴天"
  13. }

  14. def fetch_weather_data(url):
  15.     """从指定 URL 获取天气数据"""
  16.     try:
  17.         return requests.get(url).json()
  18.     except Exception as e:
  19.         print(f"抓取天气信息失败: {e}")
  20.         return {}

  21. def get_weather_info(api_key, city_code):
  22.     """获取实时和当日天气信息"""
  23.     # 实时天气API和预报天气API
  24.     urls = [
  25.         f"https://restapi.amap.com/v3/weather/weatherInfo?key={api_key}&city={city_code}&extensions=base",
  26.         f"https://restapi.amap.com/v3/weather/weatherInfo?key={api_key}&city={city_code}&extensions=all"
  27.     ]
  28.    
  29.     # 获取实时和预报天气数据
  30.     realtime_data, forecast_data = [fetch_weather_data(url) for url in urls]

  31.     # 检查API响应是否成功
  32.     if realtime_data.get('status') != '1' or forecast_data.get('status') != '1':
  33.         return "无法获取天气数据。"

  34.     # 提取并解析数据
  35.     realtime = realtime_data.get('lives', [{}])[0]
  36.     forecast = forecast_data.get('forecasts', [{}])[0]
  37.     today = forecast.get('casts', [{}])[0]
  38.    
  39.     if not realtime or not forecast or not today:
  40.         return "无法解析天气数据。"

  41.     # 构建输出字符串
  42.     return (
  43.         f"实时天气情况: {WEATHER_TRANSLATION.get(realtime.get('weather', '未知'), realtime.get('weather', '未知'))}\n"
  44.         f"实时温度: {realtime.get('temperature', '0')}°C\n"
  45.         f"湿度: {realtime.get('humidity', '0')}%\n"
  46.         f"风向: {realtime.get('winddirection', '未知')}\n"
  47.         f"风力: {realtime.get('windpower', '0')}级\n"
  48.         f"数据更新时间: {realtime.get('reporttime', '')}\n"
  49.         f"\n当日天气情况: {WEATHER_TRANSLATION.get(today.get('dayweather', '未知'), today.get('dayweather', '未知'))}\n"
  50.         f"夜间天气情况: {WEATHER_TRANSLATION.get(today.get('nightweather', '未知'), today.get('nightweather', '未知'))}\n"
  51.         f"当日温度: {today.get('nighttemp', '0')}°C ~ {today.get('daytemp', '0')}°C\n"
  52.         f"白天风向: {today.get('daywind', '未知')}\n"
  53.         f"白天风力: {today.get('daypower', '0')}级\n"
  54.         f"夜间风向: {today.get('nightwind', '未知')}\n"
  55.         f"夜间风力: {today.get('nightpower', '0')}级\n"
  56.     )

  57. def main():
  58.     """主程序入口"""
  59.     # 网页 URL
  60.     url = "https://www.cngold.org/crude/shandong.html"

  61.     # 设置请求头,模拟浏览器
  62.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

  63.     # 发送 HTTP 请求并解析汽油价格
  64.     try:
  65.         response = requests.get(url, headers=headers)
  66.         if response.status_code == 200:
  67.             soup = BeautifulSoup(response.content, 'html.parser')
  68.             table = soup.find('table', class_='hq_table1')
  69.             if table:
  70.                 headers = [th.get_text(strip=True) for th in table.find('thead').find_all('th')]
  71.                 for row in table.find('tbody').find_all('tr'):
  72.                     cells = [td.get_text(strip=True) for td in row.find_all('td')]
  73.                     try:
  74.                         index = headers.index("92#汽油")
  75.                         oil_price_message = f"92#价格: {cells[index]}\n\n"
  76.                         break
  77.                     except ValueError:
  78.                         oil_price_message = "未找到 92号汽油 列\n"
  79.                         break
  80.             else:
  81.                 oil_price_message = "未找到表格\n"
  82.         else:
  83.             oil_price_message = f"请求失败,状态码: {response.status_code}\n"
  84.     except Exception as e:
  85.         oil_price_message = f"获取汽油价格失败: {e}\n"

  86.     # 增加请求间隔
  87.     time.sleep(0.5)  # 暂停 0.5 秒钟

  88.     # 调用天气信息函数并合并消息
  89.     weather_msg = f"天气信息:\n{get_weather_info(API_KEY, CITY_CODE)}"
  90.     current_date = datetime.now().strftime("%Y-%m-%d")
  91.     summary_msg = f"{oil_price_message}{weather_msg}"


  92. notify.send(f"今日资讯 {current_date}", summary_msg)
  93.     print(f"通知内容:\n{summary_msg}")
  94.     print("通知发送成功")

  95. if __name__ == "__main__":
  96.     main()
复制代码


需要修改的地方

第8,9,68行代码,主要是修改api的key,地理位置(你地区身份证前6位)以及油价的省。
会调用青龙的通知,设置每日几点通知一次就行了



回复

使用道具 举报

48

主题

4316

回帖

1万

积分

博士生

这是?

Rank: 7Rank: 7Rank: 7

金币
2746
好评
11
信誉
117

MT论坛新人考神MT论坛最佳新人MT论坛活跃会员

发表于 2025-12-10 10:30:59 来自手机  | 显示全部楼层  来自 安徽
看下试试
回复

使用道具 举报

140

主题

1954

回帖

7486

积分

硕士生

Rank: 6Rank: 6

金币
3833
好评
25
信誉
120
发表于 2025-12-10 10:53:07 来自手机  | 显示全部楼层  来自 广东
拿去用用
回复

使用道具 举报

18

主题

2777

回帖

7701

积分

硕士生

Rank: 6Rank: 6

金币
958
好评
1
信誉
102
发表于 2025-12-10 11:01:30 来自手机  | 显示全部楼层  来自 河南
康哥不会也是编程大佬吧
回复

使用道具 举报

6

主题

6282

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1201
好评
5
信誉
102
发表于 2025-12-10 11:13:04 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

15

主题

5346

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6286
好评
0
信誉
106
发表于 2025-12-10 12:31:25 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

29

主题

5503

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8165
好评
25
信誉
100

MT论坛帅哥考神MT论坛活跃会员MT论坛新人MT论坛最佳新人

发表于 2025-12-10 12:51:06 来自手机  | 显示全部楼层  来自 湖北
康哥,牛批墙都不扶,就服你
回复

使用道具 举报

311

主题

4004

回帖

3万

积分

管理员

康哥工作室

Rank: 9Rank: 9Rank: 9

金币
47721
好评
276
信誉
141

小明星MT论坛元老MT论坛优秀版主MT论坛最佳新人MT论坛帅哥2018国庆节2019-5.1节快乐MT论坛侠客MT论坛活跃会员MT论坛灌水老大MT论坛土豪挂机大佬MT论坛新人

发表于 2025-12-10 12:51:28 | 显示全部楼层  来自 山东
城南小跟班 发表于 2025-12-10 11:01
康哥不会也是编程大佬吧

以前主要是php,和python了,近期开始研究java相关的安卓编程,时间太少了,其他事太多,没时间学习
回复

使用道具 举报

0

主题

561

回帖

1768

积分

高中生

Rank: 4

金币
99
好评
0
信誉
100
发表于 2025-12-10 14:41:08 | 显示全部楼层  来自 湖北
这个不错哦
回复

使用道具 举报

9

主题

5491

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
700
好评
0
信誉
116

MT论坛新人考神MT论坛帅哥

发表于 2025-12-10 19:43:49 来自手机  | 显示全部楼层  来自 安徽
感谢分享
回复

使用道具 举报

0

主题

476

回帖

1389

积分

高中生

Rank: 4

金币
1255
好评
0
信誉
100

MT论坛新人

发表于 2025-12-21 21:34:09 | 显示全部楼层  来自 广东
会写青龙脚本就是爽。想实现什么自己写
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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