# 迈迈天气模块 **Repository Path**: goforstudio/maimai-web-page-module ## Basic Information - **Project Name**: 迈迈天气模块 - **Description**: 本插件是迈迈语音助手的插件,主要提供通过天气API查询获取中国气象局发布的专业气象数据。为主程序提供天气查询服务。 - **Primary Language**: Unknown - **License**: CC0-1.0 - **Default Branch**: master - **Homepage**: http://mai.ymfm.online/test.html - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-04-26 - **Last Updated**: 2023-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 迈迈天气模块 ## 简介 >本插件是迈迈语音助手的插件,主要提供通过天气API查询获取中国气象局发布的专业气象数据。为主程序提供天气查询服务。 >模块采用golang作为主要的后端语音。早期项目使用ASP.net。需要跨平台部署原因,故而更换后端语言为GO语言。通过设置监听端口、加载网页模板、设置相应方案、读取请求参数,完成模块基本功能。 > 使用GO语言特性,使模块可以做到高并发、低延迟相应。因为GO语言高效的跨平台交叉编译特性。本模块可以部署于Windows、Linux操作系统、支持arm64和amd64架构两种架构。 > 根据《气象预报发布与传播管理办法》,任何个人和组织在未经审批的情况下严禁发布天气预报。故而本模块只能使用来自第三方的AIP(随身云气象API)请求获取来自中国气象局的气象信息。AIP提供两种调用方式,城市名(city)调用和城市代号(citykey)调用,前者可以使用城市汉字名称作为检索关键字,后者使用全国城市统一编码作为检索关键字。前者会有部分城市无法使用,后者更加精确和低延迟响应。本模块保留两种请求方式,同样可以使用城市名(city)调用和城市代号(citykey)调用,前置用于独立访问和测试使用,后者将作为主程序调用方案。主程序通过配置于mai_Config.xml文件中的citykey来获取信息。 ## 模块运行方式 >模块启动时设置监听端口和进行模板加载。完成前期资源加载后进入监听状态。通过监听预设端口(默认为全接口TCP:8808)的http_get请求,接收请求后,处理from字段获取关键字,获取检索关键字。通过检索关键字调用API获取XML数据文件,并保存。之后向请求端返回请求页面、页面样式和js脚本文件。通过js脚本从本地xml中读取字段并反映到html模板文件中。从而向请求端展示天气数据。 ![工作原理](解释图片.png) ## 文件目录、方法、参数说明 ``` # main.go | 本文件是后端程序的主要源代码。通过响应http请求,返回相应网页模板、数据、静态文件等。 | | & load_Template() | | 本方法加载本地网页模板。 | | & to_Get() | | 本函数用于通过发送http_git请求获取天气数据。返回类型为string,返回数据为获取的XML数据。 | | & get_Weather() | | 本函数用于分析请求关键字,保存请求到的XML数据。 | | & main() | | 程序的主方法,包含设立监听端口、加载网页模板、设置响应方案、建立网页服务器等。 # cityCode.josn | 本文件提供城市代码查询,通过检索省市区三级联动信息,获取城市代码。 # maiweather.exe | 本文件为程序在 Windows 10 操作系统、amd64 平台的启动程序 # maiweather_linux_arm64 | 本文件为程序在 Ubuntu 20、华为鲲鹏™ 平台的启动程序 # maiweather_linux_amd64 | 本文件为程序在 统信UOS操作系统、amd64 平台的启动程序 # res 文件夹 | 本文件夹内提供各类静态资源,包含网页使用的html模板、css样式、js脚本、xml数据、图片。 | | # html 文件夹 | | 本文件夹提供html模板。 | | | | # maiweather.html | | | 本文件提供 迈迈天气 的静态页面。 | | | | # test.html | | | 提供一个测试接口文件夹。 | | # css 文件夹 | | | 本文件夹使用存储样式文件。 | | | | # weather.css | | | 本文件为maiweather.html页面采用的样式文件。 | | # js | | 本文件夹用于存储JavaScript。 | | | | # maiwerther.js | | | 本文件为maiweather.html页面所使用的数据加载脚本。 | | | | | | & loadDoc() | | | | 本方法用于网页加载XML数据文件 | | | | | | & load_Mai_Weather() | | | | 本方法用于读取本地XLM文件中的数据,修改网页参数,反馈信息。 | | | | # test.js | | | 本文件为test.html页面所使用的http请求测试脚本。 | | # img | | 本文件夹存放各类图标和UI组件图片资源。 ``` ## 测试地址 - http://mai.ymfm.online/test.html 仅用于测试可用性 #### *气象API来源:http://wthrcdn.etouch.cn ## 声明 本项目开源,作者放弃一切权力。仅供学习参考,请勿商用。