• [其他问题] Fusioncare 有没有北向API接口开发参考
    各位专家,请教一下第三方系统希望通过嵌入方式显示fusioncare管理页面,下载Fusioncase健康检查任务的巡检报告的接口流程,1. Fusioncare 可以支持私有云内第三方用户系统(类似ManageOne 运维面 OC)  用iframe service嵌入FusionCare的健康检查网页吗?https://xxxxxxx:xxxx/index.html?language=zh_CN#/healthcheck,2. 第三方系统也希望下载Fusioncase健康检查任务的巡检报告,论坛上说下载文件的链接在这里:https://<fusioncare_server>:<port>/downLoadExport.action?taskId=任务id但这个地址在第三方系统访问时,使用fusioncare指定的第三方用户通过user/password拿到的运维面x-auth-token方式访问是不允许的,会被重定向到auth服务器然后拒绝连接,fusioncare 有没有北向API接口,可以通过token访问资源吗?要把这个token配在访问fusioncare url的http request参数里面吗?
  • [分享交流] 在CodeArts API中调用华为云API
    调用华为云API,很多API调用时需要鉴权,以华为云语音合成接口为例,写个前置脚本即可以一键调用了,这个前置脚本还可以复用。1、访问API Explorer的语音合成接口:https://console.huaweicloud.com/apiexplorer/#/openapi/SIS/doc?api=RunTts,复制接口地址到CodeArts API2、在CodeArts API中新建接口,将复制的语音合成地址填写到请求地址中,保留如下部分,接口请求方式默认POST,输入接口名3、点击请求参数“Header”,添加参数“X-Auth-Token”4、点击“Body > raw”,按如下设置请求体参数5、点击“前置操作”,设置下前置脚本,即在请求语音合成接口前先执行前置脚本,脚本内容为请求“获取IAM用户Token”接口,将响应头中的参数“X-Subject-Token”值更新到语音合成接口的请求头参数“X-Auth-Token”中。部分脚本代码可参考(region以“cn-north-4”为例):const TokenRequest = {  url: 'https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens',  method: 'POST',  header: 'Content-Type: application/json',  body: {    mode: 'raw',    raw: JSON.stringify({"auth": {  "identity": {   "methods": [    "password"   ],   "password": {    "user": {     "domain": {      "name": "DomianName"     },     "name": "IamName",     "password": "IamPassword"    }   }  },  "scope": {   "project": {    "name": "cn-north-4"   }  } }})  }};......);6、点击“保存”,保存接口。7、点击接口的“调试”,设置下project_id(“cn-north-4”的project_id),可以到“我的凭证”下查询8、点击接口的“Body”,设置下请求体9、点击“发送”,返回语音合成接口的响应体。
  • [分享交流] 在CodeArts API中调用DeepSeek接口
    今天试了下,利用CodeArts API免费调用MaaS提供的DeepSeek接口,效果还是很不错的。创建完项目进入后,新建API,访问MaaS领取200万免费额度后创建API Key,供后续调用DeepSeek接口鉴权时使用,接着设计调用接口,具体步骤如下:1)     访问ModelArts Studio服务,点击“在线推理 > 免费服务”,领取200万免费额度,以DeepSeek-V3-32K(NEW)服务为例:cid:link_02)点击“API Key管理”,点击“创建API Key”,创建成功后,复制API Key。3)返回在线推理页面,点击“调用说明”4)查看调用说明,点击“复制”,将API地址复制到CodeArts API的请求地址中5)去掉API地址中的“https:/”,正确地址如下6)输入接口名称、设置请求参数的Auth,选择“Bearer Token”7)设置请求参数的请求体,点击“Body > raw”,设置请求体中参数8)点击“保存”,保存接口。9)点击接口“调试 > Body > raw > 自动生成”,并按如下设置请求体10)点击接口的“Auth”,将步骤2)复制的API Key复制到Token值中11)点击“发送”,正常返回响应体,就可以看到自己咨询的问题了
  • [互动交流] 安装完torch_npu调用调用npu长时间不返回
    系统版本为openEuler 22.03  python为3.10  cann为8.0.rc3  npu-smi为24.1.rc3  torch为2.1.0  torch 2.1.0.post8  执行x = torch.randn(2,2).npu() 长时间不返回   如何排查错误?执行python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"返回为True
  • [问题求助] 上报设备消息的限制
    stm32通过L610上报设备消息,如果消息长度太长会上报失败,回err1,找不到这个报错码什么意思,之前以为是消息长度不对,我用json在线验证之后是对的,文档也没找到上报的消息有什么限制
  • [问题求助] 外部APP需要对接HCS的CMDB,OC北向接口域名与外网网络是相通的么?
    根据以下文档,如果在外部APP通过接口去对接CMDB,其中会使用到OC北向接口域名,与外网是否是天然相通的呢?还是需要做相应的链路打通操作https://bbs.huaweicloud.com/forum/thread-163821-1-1.html
  • [案例共创] 【案例共创】第3期 基于华为开发者空间+DeepSeek完成AI应用构建开发最佳实践
    【案例共创】第3期 基于华为开发者空间+DeepSeek完成AI应用构建开发实践 1)构建的应用需要完成发布,有应用在线截图。按文档操作,可以轻松实现模型的部署,并可以调用使用   这里做一个demo,帮我生成一个双人对打游戏,结果可以进行操作,“上、下、左、右”的操作,进行配图就可以正常使用了。      2)案例场景和方案以及用到的华为云产品或者开源框架简述。整体架构以及开发环境:  案例场景为华为开发者空间+DeepSeek完成AI应用构建开发实践这里涉及到的华为云产品:1、华为云开发者空间的云主机,类似华为云桌面。CPU架构:X86规格:2 vCPUs 4 GB操作系统:Ubuntu系统镜像:公共镜像 Ubuntu 22.04 Server 定制版      2、华为云ModelArts Studio 产品,   领取免费试用的Tokens   做完实验还剩下的调用量   3)开发过程实际操作描述(文字描述+截图+代码)。在模型部署和调用的过程中可能会缺少依赖,把缺少的依赖下载安装好,就可以正常使用了。  可生成的交互界面程序  试了试通用的问答,制定一个健康的生活计划,内容还是很丰富的。  **目标**:均衡营养,保持健康体重,增强免疫力。**建议**:- **早餐**:富含蛋白质和纤维的食物,如全麦面包、鸡蛋、牛奶、燕麦粥。- **午餐**:均衡搭配碳水化合物、蛋白质和蔬菜,如米饭、鸡胸肉、西兰花、胡萝卜。- **晚餐**:轻食为主,避免高脂肪和高热量食物,如鱼类、豆腐、绿叶蔬菜。- **零食**:选择健康零食,如坚果、水果、酸奶。- **饮水**:每天至少饮用8杯水,保持身体水分平衡。- **避免**:高糖、高脂肪、加工食品和过量酒精。 **示例食谱**:- **周一**:早餐 - 燕麦粥 + 鸡蛋;午餐 - 鸡胸肉 + 西兰花 + 米饭;晚餐 - 鱼类 + 绿叶蔬菜。- **周二**:早餐 - 全麦面包 + 牛奶;午餐 - 豆腐 + 胡萝卜 + 米饭;晚餐 - 豆腐 + 绿叶蔬菜。 #### 2. 运动计划**目标**:增强体能,保持心血管健康,提高肌肉力量。 **建议**:- **有氧运动**:每周至少3次,每次30分钟,如跑步、游泳、骑自行车。- **力量训练**:每周2次,每次20分钟,如举重、俯卧撑、仰卧起坐。- **灵活性训练**:每周2次,每次15分钟,如瑜伽、拉伸。- **日常活动**:增加日常活动量,如步行、爬楼梯。 **示例运动安排**:- **周一**:跑步30分钟 + 瑜伽15分钟。- **周二**:力量训练20分钟 + 步行30分钟。- **周三**:游泳30分钟 + 拉伸15分钟。- **周四**:骑自行车30分钟 + 力量训练20分钟。- **周五**:跑步30分钟 + 瑜伽15分钟。 #### 3. 学习计划**目标**:持续学习,提高知识水平,保持大脑活跃。 **建议**:- **每日学习**:每天至少学习1小时,涵盖专业知识和兴趣爱好。- **阅读**:每周阅读一本书,涵盖不同领域,如科技、文学、历史。- **在线课程**:每月完成一个在线课程,提升专业技能或学习新领域。- **笔记与总结**:每天记录学习笔记,定期总结学习成果。 **示例学习安排**:- **周一**:阅读科技书籍1小时 + 在线课程30分钟。- **周二**:专业知识学习1小时 + 笔记整理30分钟。- **周三**:阅读文学书籍1小时 + 在线课程30分钟。- **周四**:历史书籍阅读1小时 + 学习总结30分钟。- **周五**:专业技能学习1小时 + 笔记整理30分钟。 ### 计划执行与调整- **每周评估**:每周评估饮食、运动和学习计划的执行情况,根据需要进行调整。- **保持灵活性**:根据个人情况和外部环境的变化,灵活调整计划内容。- **长期坚持**:健康生活计划需要长期坚持,逐步形成良好习惯。 如果你有任何具体需求或需要进一步调整计划,请告诉我!4)案例实操需要完整体现,读者可根据案例上手并体验。 按“云主机调用DeepSeek实现代码自动生成”这个操作真的很容易就实现了。
  • [问题求助] Openeye API的美颜及背景图功能
    【问题来源】 北京朗泰宏盛信息技术有限公司【问题简要】【必填】    Openeye  H5 对接接口 关于美颜和背景图相关接口【问题类别】【必填】    【Openeye】【AICC解决方案版本】【必填】    【AICC可选择版本:AICC 24.200】    【UAP可选择版本:V300R001C02SPC125】    【CTI可选择版本:V300R008C25SPC215】【期望解决时间】【3月21】【问题现象描述】【必填】         Openeye H5 接口文档中没有提及, 美颜和背景图相关内容的内容,客户在座席端对接openeye需要使用此功能,请问是否有其他的配置项目或者参数可以统一配置?      
  • [问题求助] AICC OPENEYE 美颜及背景图接口
    AICC 24.200环境用户需要对接使用openeye H5的接口 实现座席端 软电话能够使用视频功能只在openeye的应用端有美颜及背景图功能,在接口中没有对应功能的API 请问是否有其他的全局配置或者参数可以实现美颜及背景图功能?
  • [问题求助] 如何实现获取设备数据经过处理判断后下发命令
    我是初学者,对于平台规则并不是很了解,也没有思路。初步设想是调用api实现查询设备属性和命令下发。我想实现获取设备的信息然后经过(模糊逻辑)判断决定操控设备是否浇水与排水。参数有1.温度Temperature 2.光照Luminance 3.土壤湿度Humidity。浇水命令Agriculture_Control_Motor(枚举值ON,OFF)与排水的命令Agriculture_Control_light(枚举值ON,OFF)以下代码是我经过查询文档以及询问ai所编写的代码# -*- coding:utf-8 -*-import jsonimport osfrom huaweicloudsdkcore.auth.credentials import BasicCredentialsfrom huaweicloudsdkcore.auth.credentials import DerivedCredentialsfrom huaweicloudsdkcore.region.region import Region as coreRegionfrom huaweicloudsdkcore.exceptions import exceptionsfrom huaweicloudsdkiotda.v5 import *def handler (event, context):    ak = os.environ["CLOUD_SDK_AK"]      sk = os.environ["CLOUD_SDK_SK"]            iotdaEndpoint = "<>"  # 从控制台获取的IoTDA平台接入地址(应用侧)    projectId = "{}"  # 华为云项目ID(需替换)    # ========================== 创建凭证对象 ==========================    # 创建基础凭证(AK/SK + 项目ID)     credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())    client = IoTDAClient.new_builder() \        .with_credentials(credentials) \        .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \        .build()        # ========================== 发起设备属性查询 ==========================       request = ListPropertiesRequest()  # 创建属性查询请求对象    request.device_id = "{}"  # 设置目标设备ID(需替换实际设备ID)    response = client.list_properties(request)  # 发送查询请求    if response.properties:        properties = response.properties                      temperature = properties.get("Temperature")        humidity = properties.get("Humidity")        light= properties.get("Luminance")  #以下是数据处理部分          h_dry = max(0.0, 1.0 - abs(humidity - 30)/20.0)  # 覆盖10-50        h_mod = max(0.0, 1.0 - abs(humidity - 50)/20.0)  # 覆盖30-70        h_wet = max(0.0, 1.0 - abs(humidity - 70)/30.0)  # 覆盖40-100        # 温度隶属函数(中心点:20/50/80)        t_cold = max(0.0, 1.0 - abs(temperature - 20)/20.0)        t_mild = max(0.0, 1.0 - abs(temperature - 50)/30.0)        t_hot  = max(0.0, 1.0 - abs(temperature - 80)/20.0)        # 光照隶属函数(中心点:30/60/90)        l_low  = max(0.0, 1.0 - abs(light - 30)/30.0)        l_mod  = max(0.0, 1.0 - abs(light - 60)/30.0)        l_high = max(0.0, 1.0 - abs(light - 90)/30.0)        # 三维规则引擎(保持原规则结构)        water_power = (        h_dry * (0.8*t_cold + 1.0*t_mild + 1.2*t_hot) *                 (0.3*l_low + 0.6*l_mod + 0.8*l_high)        )           # 排水规则(湿润主导)        drain_power = (        h_wet * (1.0*t_cold + 0.6*t_mild + 0.2*t_hot) *                 (1.0*l_low + 0.6*l_mod + 0.2*l_high)        )   #数据处理部分完毕             # 双决策输出        water_power > 35.0,                        # 阈值通过实验校准    浇水决策        drain_power > 25.0                                #排水决策    if result_water:               # 创建设备命令请求对象        request = CreateCommandRequest()        request1 = CreateCommandRequest()        request.device_id = "{67c3e47d8e04aa0690b96404_20030306}"  # 需替换为目标设备ID        request1.device_id = "{67c3e47d8e04aa0690b96404_20030306}"        # 构造命令参数体        request.body = DeviceCommandRequest(        paras="{\"value\":\"OFF\"}",  # 手动构造JSON参数(建议改用json.dumps)        command_name="Agriculture_Control_light",        # 命令名称(需与设备模型定义一致)        service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )               # 发送命令并获取响应        response = client.create_command(request)        request1.body = DeviceCommandRequest(            paras="{\"value\":\"ON\"}",  # 手动构造JSON参数(建议改用json.dumps)            command_name="Agriculture_Control_Motor",        # 命令名称(需与设备模型定义一致)            service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )        response1 = client.create_command(request1)    elif result_drain:                # 创建设备命令请求对象        request = CreateCommandRequest()        request1 = CreateCommandRequest()        request.device_id = "{67c3e47d8e04aa0690b96404_20030306}"  # 需替换为目标设备ID        request1.device_id = "{67c3e47d8e04aa0690b96404_20030306}"        # 构造命令参数体        request.body = DeviceCommandRequest(            paras="{\"value\":\"ON\"}",  # 手动构造JSON参数(建议改用json.dumps)            command_name="Agriculture_Control_light",        # 命令名称(需与设备模型定义一致)            service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )               # 发送命令并获取响应        response = client.create_command(request)        request1.body = DeviceCommandRequest(            paras="{\"value\":\"OFF\"}",  # 手动构造JSON参数(建议改用json.dumps)            command_name="Agriculture_Control_Motor",        # 命令名称(需与设备模型定义一致)            service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )        response1 = client.create_command(request1)    else:               # 创建设备命令请求对象        request = CreateCommandRequest()        request1 = CreateCommandRequest()        request.device_id = "{67c3e47d8e04aa0690b96404_20030306}"  # 需替换为目标设备ID        request1.device_id = "{67c3e47d8e04aa0690b96404_20030306}"        # 构造命令参数体        request.body = DeviceCommandRequest(            paras="{\"value\":\"OFF\"}",  # 手动构造JSON参数(建议改用json.dumps)            command_name="Agriculture_Control_light",        # 命令名称(需与设备模型定义一致)            service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )               # 发送命令并获取响应        response = client.create_command(request)        request1.body = DeviceCommandRequest(            paras="{\"value\":\"OFF\"}",  # 手动构造JSON参数(建议改用json.dumps)            command_name="Agriculture_Control_Motor",        # 命令名称(需与设备模型定义一致)            service_id="Agriculture"           # 服务ID(需与设备模型定义一致)        )        response1 = client.create_command(request1)    return {        "statusCode": 200,        "isBase64Encoded": False,        "body": json.dumps(event),        "headers": {            "Content-Type": "application/json"        }    }以下是报错以及日志函数返回{ "errorMessage": "function entry exception, error: failed to import module 'index'(No module named 'huaweicloudsdkiotda')", "errorType": "ModuleNotFoundError", "stackTrace": [ "File \"./index.py\", line 10, in <module>", " from huaweicloudsdkiotda.v5 import *" ] }查看错误详情日志2025-03-13T15:09:59Z Start invoke request 'b43b398b-7ce0-40f9-a5cb-428569be312b', version: latest2025-03-13T15:09:59Z b43b398b-7ce0-40f9-a5cb-428569be312b ERROR function entry exception, error: failed to import module 'index'(No module named 'huaweicloudsdkiotda')Traceback (most recent call last):File "./index.py", line 10, in <module>from huaweicloudsdkiotda.v5 import *ModuleNotFoundError: No module named 'huaweicloudsdkiotda' 2025-03-13T15:09:59Z Finish invoke request 'b43b398b-7ce0-40f9-a5cb-428569be312b'(invoke Failed), duration: 61.328ms, billing duration: 62ms, memory used: 39.965MB, billing memory: 128MB, cpu used: 0.022U, storage used: 0.039MB   
  • [技术干货] 零基础入门API测试:Postman v11安装与使用全攻略(附下载链接)
    ​一、软件定位与核心功能Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试,2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能。适用于以下场景:前后端分离开发中的接口联调自动化测试脚本编写接口文档自动生成团队协作共享API资源二、安装环境准备1. 系统要求组件最低配置推荐配置操作系统Windows 7Windows 10/11内存4GB8GB磁盘空间500MB1GB SSD2. 网络要求确保443端口开放(用于账户登录和云同步)企业用户需配置代理白名单(若存在网络限制)三、安装全流程详解步骤1:获取安装包访问Postman官网安装包下载页:https://pan.quark.cn/s/407a93c56583/,选择Windows版本步骤2:运行安装程序解压压缩包,打开Postman-win64.exe 文件,选择安装路径(建议修改为D盘):D:\DevTools\Postman_v12 步骤3:完成安装新版默认直接安装启动,不用再启动安装程序勾选Launch Postman选项,点击Finish启动程序四、首次运行配置1. 账户注册/登录点击左下角Sign In,选择注册方式(推荐使用GitHub账号快捷登录)2. 工作区设置选择工作区类型(个人使用建议选Personal)五、功能验证与基础使用测试1:发送GET请求点击**+**号新建请求标签页输入测试接口URL:https://jsonplaceholder.typicode.com/posts/1点击Send按钮查看响应结果测试2:环境变量管理点击右上角齿轮图标进入Environments创建名为"Dev"的环境,添加变量base_url = https://api.example.com在请求URL中使用{{base_url}}/users实现动态配置六、常见问题解答Q1:安装时提示"Unable to authenticate"?检查系统时间是否准确临时关闭杀毒软件防火墙使用命令postman --disable-gpu启动Q2:如何导入Swagger文档?通过Import > Link输入OpenAPI文档URL,自动生成接口集合Q3:请求超时如何调整?在Settings > General中修改Request timeout为30000ms七、延伸学习资源Postman官方学习中心:https://learning.postman.com/声明:本教程使用Postman官方v11版本制作,遵循EULA使用协议。原创内容转载请注明来源。
  • [技术干货] NASA JPL接口错误
    代码如下,一直无法连接上NASA的API是为什么呢import loggingfrom typing import Dict, Listfrom astroquery.jplhorizons import Horizonsfrom astropy.time import Timeimport astropy.units as uimport pandas as pdimport timeimport randomimport requestsfrom requests.adapters import HTTPAdapterfrom urllib3.util.retry import Retryfrom tqdm import tqdm # ============== 日志配置 ==============logging.basicConfig(    level=logging.INFO,    format='%(asctime)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__) # ============== 代理池配置 ==============try:    import socks  # 检测 SOCKS5 支持    PROXY_POOL = [        {"host": "104.248.63.15", "port": 30588, "type": "http"},        {"host": "104.248.63.18", "port": 30588, "type": "http"},        {"host": "104.248.63.17", "port": 30588, "type": "http"},        {"host": "104.248.63.49", "port": 30588, "type": "http"},        {"host": "45.77.71.140", "port": 9050, "type": "socks5"}    ]except ImportError:    logger.warning("未检测到 SOCKS5 支持,已过滤 SOCKS 代理")    PROXY_POOL = [        p for p in [            {"host": "104.248.63.15", "port": 30588, "type": "http"},            {"host": "104.248.63.18", "port": 30588, "type": "http"},            {"host": "104.248.63.17", "port": 30588, "type": "http"},            {"host": "104.248.63.49", "port": 30588, "type": "http"}        ] if p["type"] != "socks5"    ]class SmartProxyPool:    """智能代理池(自动淘汰失效代理)"""    def __init__(self, proxies: List[Dict]):        self.proxies = [{            "url": self._format_url(p),            "success": 0,            "fail": 0,            "score": 100.0        } for p in proxies]     @staticmethod    def _format_url(proxy: Dict) -> str:        """生成代理URL"""        if proxy["type"] == "socks5":            return f'socks5://{proxy["host"]}:{proxy["port"]}'        return f'http://{proxy["host"]}:{proxy["port"]}'     def get_best_proxy(self) -> Dict:        """选择最优代理"""        self.proxies.sort(key=lambda x: x["score"], reverse=True)        return {            'http': self.proxies[0]["url"],            'https': self.proxies[0]["url"]        }     def update_score(self, proxy_url: str, success: bool):        """更新代理评分"""        for p in self.proxies:            if p["url"] == proxy_url:                if success:                    p["success"] += 1                    p["score"] = min(p["score"] * 1.1, 100.0)                else:                    p["fail"] += 1                    p["score"] *= 0.5                break proxy_pool = SmartProxyPool(PROXY_POOL) # ============== 网络会话 ==============def create_secure_session() -> requests.Session:    """创建增强型网络会话"""    session = requests.Session()    session.proxies = proxy_pool.get_best_proxy()     # 重试策略(指数退避 + 随机抖动)    retry = Retry(        total=5,        backoff_factor=0.5 + random.random(),  # 随机抖动        status_forcelist=[500, 502, 503, 504],        allowed_methods=frozenset(['GET', 'POST']),        respect_retry_after_header=True    )     adapter = HTTPAdapter(        max_retries=retry,        pool_connections=50,        pool_maxsize=100,        pool_block=True    )    session.mount('https://', adapter)    session.mount('http://', adapter)     def request_with_retry(method: str, url: str, **kwargs):        """带代理切换的重试机制"""        for _ in range(3):            current_proxy = session.proxies            try:                resp = session.request(                    method=method,                    url=url,                    timeout=(20, 40),                    **kwargs                )                resp.raise_for_status()                proxy_pool.update_score(current_proxy['http'], True)                return resp            except (requests.ProxyError, requests.ConnectTimeout) as e:                proxy_pool.update_score(current_proxy['http'], False)                logger.warning(f"代理 {current_proxy} 失败: {str(e)}")                session.proxies = proxy_pool.get_best_proxy()        raise requests.ConnectionError("所有代理尝试失败")     session.request = request_with_retry    return session # 注入全局会话Horizons._session = create_secure_session() # ============== 天体数据 ==============SOLAR_SYSTEM_IDS = {    "Sun": 10,    "Mercury": 199,    "Venus": 299,    "Earth-Moon Bary": 3,    "Mars": 499,    "Jupiter": 599,    "Saturn": 699,    "Uranus": 799,    "Neptune": 899,    "Pluto": 999} # ============== 参数配置 ==============EPOCH = Time.now().utc  # 使用 UTC 时间OBSERVER = '500@0'QUANTITIES = '1,9,15,19,20,23' # ============== 核心函数 ==============def get_solar_positions() -> pd.DataFrame:    """获取所有天体的位置数据"""    results = []     for name, obj_id in tqdm(SOLAR_SYSTEM_IDS.items(), desc="查询进度"):        try:            obj = Horizons(                id=obj_id,                location=OBSERVER,                epochs=EPOCH.jd,                id_type='id'            )            eph = obj.ephemerides(quantities=QUANTITIES)[0]             # 安全获取字段            results.append({                "Name": name,                "RA (hms)": f"{eph.get('RA', 'N/A'):.3f}h",                "DEC (dms)": f"{eph.get('DEC', 'N/A'):.3f}°",                "Distance (au)": f"{eph.get('delta', 'N/A'):.5f}",                "Apparent Mag": f"{eph.get('V', 'N/A'):.1f}",                "Angular Size ('')": f"{eph.get('ang_width', 'N/A'):.2f}",                "Sky Motion": f"{eph.get('RA_rate', 'N/A'):.2f}/{eph.get('DEC_rate', 'N/A'):.3f}''/min",                "Light Time (min)": f"{(eph.get('lighttime', 0) * 1440):.1f}" if eph.get('lighttime') else 'N/A'            })        except (requests.HTTPError, KeyError) as e:            logger.error(f"数据错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "数据解析失败"})        except requests.RequestException as e:            logger.error(f"网络错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "连接超时"})        except Exception as e:            logger.error(f"未知错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "系统异常"})     return pd.DataFrame(results) # ============== 主程序 ==============if __name__ == "__main__":    logger.info("正在获取数据,可能需要1-2分钟...")    df = get_solar_positions()     print(f"\n====== 太阳系天体坐标(UTC {EPOCH.iso})======")    print(df.to_markdown(index=False))     df.to_csv('solar_system_positions.csv', index=False)    logger.info("结果已保存至 solar_system_positions.csv")
  • [互动交流] 在谷歌Chrome浏览器的“沉浸式翻译”插件中,想调用华为云的自然语言处理NLP的机器翻译API,各个空格应该怎么填?
    在谷歌Chrome浏览器的“沉浸式翻译”插件中,想调用华为云的自然语言处理NLP的机器翻译API,需要填写“自定义API接口地址”、“模型”、“System Prompt”、“Prompt”、“Multiple Prompt”、“Subtitle Prompt”这几项,请问这几项应该填什么?
  • [问题求助] token已经获得,请求头格式正确但设备影子获取不了,报错403,如图:
    程序部分:控制台输出部分:详细data:
  • [问题求助] 请问使用二级VDC的domain和二级VDC下账号 如何获取token
    这边使用HCS API进行对接使用二级的VDC domain和二级的VDC用户和获取token时报 401;使用一级的VDC domain和二级的VDC用户可以获取到token;请问下使用二级VDC domain和二级VDC下用户是不是不支持认证? 请求地址:https://ip:port/v3/auth/tokens payload = {"auth": { "identity": { "methods": ["password"], "password": {"user": { "name": username, "password": password, "domain": {"name": domain} #mo_bss_admin }} }, "scope": {"domain": {"name": domain}} #mo_bss_admin }}
总条数:1427 到第
上滑加载中