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.text
                return osd_name
            else:
                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_list
    
    
    
    if __name__=='__main__':
    
        USERNAME = 'admin'
        PASSWORD = 'qlyy1234'
        ip_list=[]
        ip_list=get_ip_list()
        #跳转1:
        ip_name_list=[]
        for ip in ip_list:
            HOST=ip
            asekey=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.mfbz.cn/a/779592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

rk3588 Android HDMI IN热插拔解决

一、前言 1、公司在使用 别的厂商的板卡遇到一个问题,开机我们的app自启就会闪退,后来定位发现是camera 的open出错了,这个问题的出现是因为没有插HDMI IN输入的问题导致的,所以需要对HDMI IN的热插拔进行检测,后面我把这个问题也…

SystemUIService启动-Android13

SystemUIService启动-Android13 1、SystemUIService启动2、其他SystemUI services启动2.1 Dagger依赖注入2.2 Recents为例 1、SystemUIService启动 SystemUI启动&#xff0c;及其SystemUIService启动 <!-- SystemUi service component --><string name"config_s…

短信验证码实现

一、设置AccessKey 创建用户并配置使用权限&#xff0c;使我们拥有调用 aliyunAPI 的权限&#xff0c;之后会生成 AccessKeyID 和 AccessKey密码&#xff0c;后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来&#xff0c;否则后期无法查…

关键词搜索商品API的工作原理是什么?

关键词搜索商品API的工作原理基于复杂的数据处理和检索机制&#xff0c;通过爬虫抓取、数据预处理、数据索引等流程。 在网上购物成为日常生活的一部分&#xff0c;关键词搜索商品API成为了电子商务平台不可或缺的功能。通过这种API&#xff0c;消费者可以轻松地通过输入关键字…

用网络编程完成windows和linux跨平台之间的通信(服务器)

服务器代码逻辑&#xff1a; 服务器功能 创建 Socket&#xff1a; 服务器首先创建一个 Socket 对象&#xff0c;用于进行网络通信。通常使用 socket() 函数创建。 绑定&#xff08;Bind&#xff09;&#xff1a; 服务器将 Socket 绑定到一个特定的 IP 地址和端口号上。这是通过…

【每日一练】python三目运算符的用法

""" 三目运算符与基础运算的对比 """ a 1 b 2#1.基础if运算判断写法&#xff1a; if a > b:print("基础判断输出&#xff1a;a大于b") else:print("基础判断输出&#xff1a; a不大于b")#2.三目运算法判断&#xff1a;…

Android C++系列:Linux Socket编程(三)CS模型示例

1. TCP通信 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于 监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服 务器应答,服务器应答一个SYN-ACK段,客户…

全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则,Python模拟主机和传感器自定义类

全网最适合入门的面向对象编程教程&#xff1a;10 类和对象的 Python 实现-类的继承和里氏替换原则&#xff0c;Python 模拟主机和传感器自定义类 摘要&#xff1a; 本文主要介绍了类的继承的基本概念和里氏替换原则&#xff0c;以模拟传感器数据串口输出-上位机串口接收为例…

力扣hot100-普通数组

文章目录 题目&#xff1a;最大子数组和方法1 动态规划方法2 题目&#xff1a;合并区间题解 题目&#xff1a;轮转数组方法1-使用额外的数组方法2-三次反转数组 题目&#xff1a;除自身以外数组的乘积方法1-用到了除法方法2-前后缀乘积法 题目&#xff1a;最大子数组和 原题链…

Mysql5.7并发插入死锁问题

死锁的产生条件 互斥、请求和保持、不可剥夺、循环等待 MySQL锁类型 死锁复现 环境&#xff1a;Mysql 5.7版本&#xff0c;Innodb引擎&#xff0c;可重复度隔离级别 并发场景下使用duplicate key update插入或更新数据可能会造成死锁&#xff0c;下面就产生死锁的条件进行模…

【扩散模型】LCM LoRA:一个通用的Stable Diffusion加速模块

潜在一致性模型&#xff1a;[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (arxiv.org) 原文&#xff1a;Paper page - Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (…

Java常见面试题汇总带答案

本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网 络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、 Kafka、Zookeeper、MySQL、Redis、JVM 等等… JDK 和 JRE 有什么区别? JDK:Jav…

《基于 defineProperty 实现前端运行时变量检测》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流~ &am…

Threejs环境、透视相机、坐标系、光源

文章目录 如何引入threejsnpm方式script方式script module方式 基本流程与坐标摄像机Geometry(几何体)和Material(材质)光源 如何引入threejs 对于很多刚刚上手threejs的朋友&#xff0c;可能第一步引入threejs就出问题了&#xff0c; 明明已经导入了&#xff0c;就是这样问题…

scala基础

scala基础&#xff1a; hello world: 写scala可运行文件的注意事项1、如果一个scala文件要运行&#xff0c;class要改成object2、如果是class&#xff0c;就仅单纯代表一个类&#xff0c;如果是object代表的是单例对象3、scala语法中&#xff0c;一句话结束不需要加分号4、scal…

Linux——进程间通信一(共享内存、管道、systrem V)

一、进程间通信介绍 1.1、进程间通信的概念和意义 进程间通信(IPC interprocess communication)是一组编程接口&#xff0c;让不同进程之间相互传递、交换信息(让不同的进程看到同一份资源) 数据传输:一个进程需要将它的数据发送给另外一个进程 资源共享:多个进程之间共享同样…

Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行

章节内容 上一节我们完成了&#xff1a; Metastore的基础概念配置模式&#xff1a;内嵌模式、本地模式、远程模式实机配置远程模式 并测试 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 V…

Hadoop-YARN-Tutorial

Hadoop-YARN-Tutorial 1 What is YARN? Yarn is the acronym for yet another resource negotiator. Yarn是yet another resource negotiator的缩写。 Yarn is a resource manager created by separating the processing engine and the management function of mapreduce. …

YOLOv8_obb数据集可视化[旋转目标检测实践篇]

先贴代码,周末再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…