B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 3|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

Æ»¹ûiOS½Å±¾ÌìÆøÐÅÏ¢²éѯ¹¤¾ß

[¸´ÖÆÁ´½Ó]

1106

Ö÷Ìâ

1111

Ìû×Ó

7701

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7701
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷

Æ»¹ûiOS½Å±¾ÌìÆøÐÅÏ¢²éѯ¹¤¾ß
Æ»¹ûiOS½Å±¾ÌìÆøÐÅÏ¢²éѯ¹¤¾ß B2BÍøÂçÈí¼þ


  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.     // ĬÈϲéѯ³ÇÊУ¨¿ÉÒÔÐÞ¸ÄΪÄãËùÔڵijÇÊУ©
  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();
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-6-2 07:32 , Processed in 0.225935 second(s), 34 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí