注册 登录
发贴工具
查看: 11|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] 苹果iOS脚本天气信息查询工具

[复制链接]

2556

主题

2604

帖子

1万

积分

积分
15512
跳转到指定楼层
楼主
苹果iOS脚本天气信息查询工具
苹果iOS脚本天气信息查询工具 群发软件发帖工具

苹果iOS脚本天气信息查询工具 群发软件发帖工具

  1. /**
  2. * AIWROK软件苹果iOS - 天气信息查询工具
  3. * 交流QQ群711841924 | 苹果内测QQ群648461709
  4. *
  5. * 功能特点:
  6. * 1. 支持多个城市查询
  7. * 2. 自动重试机制
  8. * 3. 友好的格式化输出
  9. * 4. 完整的错误处理
  10. */

  11. // =============================================================================
  12. // 配置区域
  13. // =============================================================================

  14. var WEATHER_CONFIG = {
  15.     // 默认查询城市(可以修改为你所在的城市)
  16.     defaultCity: "北京",
  17.    
  18.     // API超时时间(毫秒)
  19.     timeout: 5000,
  20.    
  21.     // 最大重试次数
  22.     maxRetries: 3
  23. };

  24. // =============================================================================
  25. // 核心功能函数
  26. // =============================================================================

  27. /**
  28. * 获取指定城市的天气信息
  29. * @param {String} city - 城市名称
  30. * @returns {Object|null} 天气数据对象或null
  31. */
  32. function getWeatherInfo(city) {
  33.     printl("🌤️ 正在查询 [" + city + "] 的天气信息...");
  34.    
  35.     var http = new OkHttp();
  36.    
  37.     // 设置超时时间
  38.     http.setTimeout(WEATHER_CONFIG.timeout, WEATHER_CONFIG.timeout, WEATHER_CONFIG.timeout);
  39.    
  40.     // 设置请求头
  41.     http.setHeader("User-Agent", "AIWROK-Weather/1.0");
  42.     http.setHeader("Accept", "application/json");
  43.     http.setCharset("UTF-8");
  44.    
  45.     // 使用免费的天气API(Open-Meteo,无需API Key)
  46.     // 注意:这里需要先获取城市坐标,为简化示例,我们使用固定坐标
  47.     var coordinates = getCityCoordinates(city);
  48.    
  49.     if (!coordinates) {
  50.         printl("❌ 未找到城市 [" + city + "] 的坐标信息");
  51.         return null;
  52.     }
  53.    
  54.     var apiUrl = "https://api.open-meteo.com/v1/forecast?latitude=" +
  55.                  coordinates.lat + "&longitude=" + coordinates.lon +
  56.                  "¤t=temperature_2m,relative_humidity_2m,apparent_temperature," +
  57.                  "weather_code,wind_speed_10m&daily=temperature_2m_max,temperature_2m_min" +
  58.                  "&timezone=auto&forecast_days=3";
  59.    
  60.     try {
  61.         printl("📡 发送请求到天气服务器...");
  62.         var startTime = new Date().getTime();
  63.         var response = http.get(apiUrl);
  64.         var endTime = new Date().getTime();
  65.         var duration = endTime - startTime;
  66.         
  67.         if (!response || response.length === 0) {
  68.             printl("❌ 服务器返回空响应");
  69.             return null;
  70.         }
  71.         
  72.         printl("⏱️ 响应时间: " + duration + "ms");
  73.         
  74.         // 解析JSON响应
  75.         var weatherData = JSON.parse(response);
  76.         
  77.         if (!weatherData || !weatherData.current) {
  78.             printl("❌ 响应数据格式异常");
  79.             return null;
  80.         }
  81.         
  82.         return {
  83.             city: city,
  84.             current: weatherData.current,
  85.             daily: weatherData.daily,
  86.             fetchTime: new Date().toLocaleString()
  87.         };
  88.         
  89.     } catch (error) {
  90.         var errorMsg = error.toString();
  91.         printl("❌ 请求失败: " + errorMsg.substring(0, 100));
  92.         
  93.         if (errorMsg.indexOf('timeout') > -1) {
  94.             printl("  原因: 连接超时,请检查网络");
  95.         } else if (errorMsg.indexOf('SSL') > -1) {
  96.             printl("  原因: SSL证书问题");
  97.         }
  98.         
  99.         return null;
  100.     }
  101. }

  102. /**
  103. * 获取城市坐标(简化版,仅包含常见城市)
  104. * @param {String} city - 城市名称
  105. * @returns {Object|null} 包含lat和lon的对象
  106. */
  107. function getCityCoordinates(city) {
  108.     var cityMap = {
  109.         "北京": { lat: 39.9042, lon: 116.4074 },
  110.         "上海": { lat: 31.2304, lon: 121.4737 },
  111.         "广州": { lat: 23.1291, lon: 113.2644 },
  112.         "深圳": { lat: 22.5431, lon: 114.0579 },
  113.         "成都": { lat: 30.5728, lon: 104.0668 },
  114.         "杭州": { lat: 30.2741, lon: 120.1551 },
  115.         "武汉": { lat: 30.5928, lon: 114.3055 },
  116.         "西安": { lat: 34.3416, lon: 108.9398 },
  117.         "南京": { lat: 32.0603, lon: 118.7969 },
  118.         "重庆": { lat: 29.4316, lon: 106.9123 }
  119.     };
  120.    
  121.     return cityMap[city] || null;
  122. }

  123. /**
  124. * 格式化天气代码为中文描述
  125. * @param {Number} code - WMO天气代码
  126. * @returns {String} 天气描述
  127. */
  128. function formatWeatherCode(code) {
  129.     var weatherMap = {
  130.         0: "晴朗 ☀️",
  131.         1: "主要晴朗 🌤️",
  132.         2: "部分多云 ⛅",
  133.         3: "阴天 ☁️",
  134.         45: "雾 🌫️",
  135.         48: "雾凇 🌫️",
  136.         51: "毛毛雨 🌦️",
  137.         53: "中度毛毛雨 🌧️",
  138.         55: "大毛毛雨 🌧️",
  139.         61: "小雨 🌧️",
  140.         63: "中雨 🌧️",
  141.         65: "大雨 🌧️",
  142.         71: "小雪 ❄️",
  143.         73: "中雪 ❄️",
  144.         75: "大雪 ❄️",
  145.         95: "雷雨 ⛈️",
  146.         96: "雷阵雨伴冰雹 ⛈️",
  147.         99: "强雷阵雨伴冰雹 ⛈️"
  148.     };
  149.    
  150.     return weatherMap[code] || "未知天气 (" + code + ")";
  151. }

  152. /**
  153. * 格式化并显示天气信息
  154. * @param {Object} weatherData - 天气数据对象
  155. */
  156. function displayWeatherInfo(weatherData) {
  157.     if (!weatherData) {
  158.         printl("❌ 没有可显示的天气数据");
  159.         return;
  160.     }
  161.    
  162.     printl("\n" + "=".repeat(50));
  163.     printl("🌍 天气报告 - " + weatherData.city);
  164.     printl("📅 查询时间: " + weatherData.fetchTime);
  165.     printl("=".repeat(50));
  166.    
  167.     // 当前天气
  168.     var current = weatherData.current;
  169.     printl("\n📊 当前天气:");
  170.     printl("  温度: " + current.temperature_2m + "°C");
  171.     printl("  体感温度: " + current.apparent_temperature + "°C");
  172.     printl("  湿度: " + current.relative_humidity_2m + "%");
  173.     printl("  风速: " + current.wind_speed_10m + " km/h");
  174.     printl("  天气状况: " + formatWeatherCode(current.weather_code));
  175.    
  176.     // 未来几天预报
  177.     if (weatherData.daily && weatherData.daily.time) {
  178.         printl("\n📅 未来天气预报:");
  179.         var times = weatherData.daily.time;
  180.         var maxTemps = weatherData.daily.temperature_2m_max;
  181.         var minTemps = weatherData.daily.temperature_2m_min;
  182.         
  183.         for (var i = 0; i < Math.min(times.length, 3); i++) {
  184.             var dateStr = times[i];
  185.             var maxTemp = maxTemps[i];
  186.             var minTemp = minTemps[i];
  187.             
  188.             printl("  " + dateStr + ": " + minTemp + "°C ~ " + maxTemp + "°C");
  189.         }
  190.     }
  191.    
  192.     printl("=".repeat(50) + "\n");
  193. }

  194. /**
  195. * 带重试机制的天气查询
  196. * @param {String} city - 城市名称
  197. * @param {Number} retries - 剩余重试次数
  198. * @returns {Object|null} 天气数据
  199. */
  200. function getWeatherWithRetry(city, retries) {
  201.     if (retries === undefined) {
  202.         retries = WEATHER_CONFIG.maxRetries;
  203.     }
  204.    
  205.     for (var attempt = 1; attempt <= retries; attempt++) {
  206.         printl("\n--- 第 " + attempt + "/" + retries + " 次尝试 ---");
  207.         
  208.         var result = getWeatherInfo(city);
  209.         
  210.         if (result) {
  211.             printl("✅ 成功获取天气数据");
  212.             return result;
  213.         }
  214.         
  215.         if (attempt < retries) {
  216.             printl("⚠️ 准备重试...");
  217.             // 短暂延迟后重试(注释掉可能不存在的sleep函数)
  218.             // sleep.millisecond(1000);
  219.         }
  220.     }
  221.    
  222.     printl("❌ 经过 " + retries + " 次尝试后仍然失败");
  223.     return null;
  224. }

  225. /**
  226. * 批量查询多个城市天气
  227. * @param {Array} cities - 城市名称数组
  228. */
  229. function queryMultipleCities(cities) {
  230.     printl("\n&#127760; 开始批量查询 " + cities.length + " 个城市的天气\n");
  231.    
  232.     var results = [];
  233.    
  234.     for (var i = 0; i < cities.length; i++) {
  235.         var city = cities[i];
  236.         printl("\n[" + (i + 1) + "/" + cities.length + "] 查询: " + city);
  237.         
  238.         var weatherData = getWeatherWithRetry(city, 2);
  239.         
  240.         if (weatherData) {
  241.             results.push(weatherData);
  242.             displayWeatherInfo(weatherData);
  243.         } else {
  244.             printl("⚠️ 跳过城市: " + city);
  245.         }
  246.         
  247.         // 避免频繁请求(注释掉可能不存在的sleep函数)
  248.         // if (i < cities.length - 1) {
  249.         //     sleep.millisecond(500);
  250.         // }
  251.     }
  252.    
  253.     printl("\n&#128202; 查询完成统计:");
  254.     printl("  总计: " + cities.length + " 个城市");
  255.     printl("  成功: " + results.length + " 个");
  256.     printl("  失败: " + (cities.length - results.length) + " 个");
  257.    
  258.     return results;
  259. }

  260. // =============================================================================
  261. // 主程序入口
  262. // =============================================================================

  263. function main() {
  264.     printl("========================================");
  265.     printl("&#127780;️ AIWROK 天气信息查询工具 v1.0");
  266.     printl("适用于苹果iOS系统");
  267.     printl("========================================\n");
  268.    
  269.     // 示例1: 查询单个城市
  270.     printl("【示例1】查询单个城市天气");
  271.     var singleCityWeather = getWeatherWithRetry(WEATHER_CONFIG.defaultCity);
  272.     if (singleCityWeather) {
  273.         displayWeatherInfo(singleCityWeather);
  274.     }
  275.    
  276.     // 示例2: 批量查询多个城市
  277.     printl("\n【示例2】批量查询多个城市天气");
  278.     var cities = ["北京", "上海", "广州", "深圳"];
  279.     var batchResults = queryMultipleCities(cities);
  280.    
  281.     // 示例3: 查询用户自定义城市
  282.     printl("\n【示例3】查询其他城市");
  283.     var otherCities = ["成都", "杭州", "武汉"];
  284.     queryMultipleCities(otherCities);
  285.    
  286.     printl("\n========================================");
  287.     printl("✅ 所有查询任务完成");
  288.     printl("========================================");
  289. }

  290. // 执行主程序
  291. main();
复制代码



unto安卓脚本简化版H5日志输出窗口nextnocontent
回复

使用道具 举报

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

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖