python获取海康威视所有摄像头的OSD通道名称

  1. 读取IP地址的txt文档

  2. 根据IP地址获取监控摄像头的OSD通道名称

    # coding=utf-8
    import os
    import time
    import requests
    from requests.auth import HTTPBasicAuth, HTTPDigestAuth
    import xml.etree.ElementTree as ET
    #注意:和ip.txt放在一个文件夹,会生成ip_name.txt文件#根据ip地址清单,获取摄像头的信息
    #和监控摄像头通讯需要一个双方认可的密钥,可以随机生成
    def generate_key():# 生成一个16字节的随机字节数组,16字节对应128位random_bytes = os.urandom(16)# 将字节数组转换成十六进制字符串hex_key = random_bytes.hex()return hex_key
    def fun_GetOSD_Name(url):# 尝试使用Basic Auth登录session = requests.Session()session.auth = HTTPDigestAuth(USERNAME, PASSWORD)try:# 发送GET请求response = session.get(url)if response.status_code == 200:# 解析XML响应以获取OSD通道名称osd_config = ET.fromstring(response.text)#print("OSD Configuration:", osd_config)else:print("Failed to retrieve OSD configuration. Status code:", response.status_code)# 找到并打印摄像头的OSD-name元素的文本name_element = osd_config.find('{http://www.hikvision.com/ver20/XMLSchema}name')if name_element is not None:osd_name = name_element.textreturn osd_nameelse:print("Name element not found")return '没找到通道名称'except Exception as e:print("An error occurred:", e)def get_ip_list():#从txt中获得ip列表,根据列表获得摄像头信息并,存入txt中# 文件路径file_path =f'{os.getcwd()}/ip.txt'# 创建一个空列表来存储每一行的数据data_list = []try:# 打开文件with open(file_path, 'r', encoding='utf-8') as file:# 逐行读取文件内容for line in file:# 去除行尾的换行符(\n 或 \r\n),然后添加到列表中data_list.append(line.strip())except FileNotFoundError:print(f"Error: The file {file_path} does not exist.")except Exception as e:print(f"An error occurred: {e}")# 打印列表,验证是否正确读取了文件内容print(data_list)return data_listif __name__=='__main__':USERNAME = 'admin'PASSWORD = 'qlyy1234'ip_list=[]ip_list=get_ip_list()#跳转1:ip_name_list=[]for ip in ip_list:HOST=ipasekey=generate_key()#url1:输出格式的地址;url2:输出OSD名字的地址,后边的密钥可以是任意值url1=f'http://{HOST}/ISAPI/System/Video/inputs/channels/1/overlays'url2=f'http://{HOST}/ISAPI/System/Video/inputs/channels/1/?security=1&iv={asekey}'#获取通道名称Name=fun_GetOSD_Name(url2)ip_name=f'{ip}\t{Name}'ip_name_list.append(ip_name)print(ip_name)time.sleep(0.2)#写入文本# 文件路径file_path =f'{os.getcwd()}/ip_name.txt'# 如果文件存在,则先重命名if os.path.exists(file_path):new_file_path = file_path + '.bak'os.rename(file_path, new_file_path)try:# 打开文件,如果不存在则会被创建with open(file_path, 'w', encoding='utf-8') as file:# 写入列表中的每个元素,每行一个for ip in ip_name:file.write(ip + '\n')except IOError as e:print(f"An error occurred while writing to the file: {e}")else:print(f"Successfully wrote data to {file_path}")# 如果之前重命名了文件,可以在这里做进一步处理,例如删除旧文件或记录日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文略读:Can Long-Context Language Models Subsume Retrieval, RAG, SQL, and More?

202406 arxiv 1 intro 传统上,复杂的AI任务需要多个专门系统协作完成。 这类系统通常需要独立的模块来进行信息检索、问答和数据库查询等任务大模型时代,尤其是上下文语言模型(LCLM)时代,上述问题可以“一体化”完成…

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错

前序 代码剑宗等级分明,其门下弟子等级划分如下: 入门弟子 刚刚拜入代码剑宗,学习基础编程语言和基本剑法(语法和基础概念)。他们的代码还显得生涩,但已经开始展现出对优雅代码的追求。 江湖小虾 初步掌握…

《python程序语言设计》2018版第5章第53题利用turtle绘制sin和cos函数 sin蓝色,cos红色和52题类似

直接上题和代码 5.53 (Turtle:绘制sin和cos函数)编写程序绘制蓝色的sin函数和红色的cos函数。 代码和结果 turtle.speed(10) turtle.penup() # sin 用蓝色 turtle.color("blue") #这道题和上道题一样,先把turtle放到起始…

架构面试-数据库优化问题

文章目录 如何定位慢查询1. 开启慢查询日志MySQL示例:PostgreSQL示例: 2. 分析慢查询日志MySQL:PostgreSQL: 3. 使用数据库性能工具MySQL:PostgreSQL: 4. 优化慢查询5. 监控与持续优化 sql语句执行的很慢&a…

从0到1制作单只鳌虾运动轨迹追踪软件

前言 需要准备windows10操作系统,python3.11.9,cuDNN8.9.2.26,CUDA11.8,paddleDetection2.7 流程: 准备数据集-澳洲鳌虾VOC数据集 基于RT-DETR目标检测模型训练导出onnx模型进行python部署平滑滤波处理视频帧保留的…

简介时间复杂度

好了,今天我们来了解一下,我们在做练习题中常出现的一个名词。时间复杂度。我相信大家如果有在练习过题目的话。对这个名词应该都不陌生吧。但是可能很少的去思考它是干什么的代表的什么意思。反正我以前练习的时候就是这样。我只知道有这么一个名词在题…

【全面讲解下iPhone新机官网验机流程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

MybatisPlus实现插入/修改数据自动设置时间

引言 插入数据时自动设置当前时间,更新数据时自动修改日期为修改时的日期。 使用MybatisPlus的扩展接口MetaObjectHandler 步骤 实现接口 实体类加注解 实现接口 package com.example.vueelementson.common;import com.baomidou.mybatisplus.core.handlers.M…

C++ 模版进阶

目录 前言 1. 非类型模版参数 1.1 概念与讲解 1.2 array容器 2. 模版的特化 2.1 概念 2.2 函数模版特化 2.3 类模版特化 2.3.1 全特化 2.3.2 偏特化 3.模版的编译分离 3.1 什么是分离编译 3.2 模版的分离编译 3.3 解决方法 4. 模版总结 总结 前言 本篇文章主要…

包/final/权限修饰符/代码块

包package 1、包的作用 包用来管理不同的类。 2、包名 包名要全部小写,一般是域名反写,如com.liu。在Java中,java解释器会将package中的.解释为目录分隔符/,也就是说该文件的目录结构为:...com/liu/... 3、全类名…

1.pwn的汇编基础(提及第一个溢出:整数溢出)

汇编掌握程度 能看懂就行,绝大多数情况不需要真正的编程(shellcode题除外) 其实有时候也不需要读汇编,ida F5 通常都是分析gadget,知道怎么用, 调试程序也不需要分析每一条汇编指令,单步执行然后查看寄存器状态即可 但…

Text2SQL提问中包括时间的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

实现多数相加,但是传的参不固定

一、情景 一般实现的加法和减法等简单的相加减函数的话。一般都是写好固定传的参数。比如: function add(a,b) {return a b;} 这是固定的传入俩个,如果是三个呢,有人说当然好办! 这样写不就行了! function add(a…

vue中自定义设置多语言(包括使用vue-i18n),并且运行js脚本自动生成多语言文件

在项目中需要进行多个国家语言的切换时,可以用到下面方法其中一个 一、自定义设置多语言 方法一: 可以自己编写一个设置多语言文件 在项目新建js文件,命名为:language.js,代码如下 // language.js 文档 let languagePage {CN…

聊一下Maven打包的问题(jar要发布)

文章目录 一、问题和现象二、解决方法(1)方法一、maven-jar-pluginmaven-dependency-plugin(2)方法二、maven-assembly-plugin 一、问题和现象 现在的开发一直都是用spring boot,突然有一天,要自己开发一个…

Django之项目开发(二)

目录 一、安装和使用uWSGI 1.1、安装 1.2、配置文件 1.3、启动与停止uwsgi 二、安装nginx 三、Nginx 配置uWSGI 四、Nginx配置静态文件 五、Nginx配置负载均衡 一、安装和使用uWSGI uWSGI 是一个 Web 服务器,可以用来部署 Python Web 应用。它是一个高性能的通用的 We…

味蕾与理解:应对自闭症儿童挑食的策略与理解

在星贝育园自闭症康复学校,我们深知饮食习惯对孩子们的成长至关重要,而自闭症儿童的挑食问题往往比同龄儿童更为突出,给家长和照顾者带来了额外的挑战。今天,作为这里的老师,我想与大家分享一些应对自闭症儿童挑食的策…

(南京观海微电子)——电阻应用及选取

什么是电阻? 电阻是描述导体导电性能的物理量,用R表示。 电阻由导体两端的电压U与通过导体的电流I的比值来定义,即: 所以,当导体两端的电压一定时,电阻愈大,通过的电流就愈小;反之&…

鸿蒙应用实践:利用扣子API开发起床文案生成器

前言 扣子是一个新一代 AI 应用开发平台,无需编程基础即可快速搭建基于大模型的 Bot,并发布到各个渠道。平台优势包括无限拓展的能力集(内置和自定义插件)、丰富的数据源(支持多种数据格式和上传方式)、持…

[Unity入门01] Unity基本操作

参考的傅老师的教程学了一下Unity的基础操作: [傅老師/Unity教學] Unity3D基礎入門 [華梵大學] 遊戲引擎應用基礎(Unity版本) Class#01 移动:鼠标中键旋转:鼠标右键放大:鼠标滚轮飞行模式:右键WASDQEFocus模式&…