1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from datetime import datetime
- from sqlalchemy.orm import Session
- from utils import *
- from utils.redis_util import *
- from models import *
- from exceptions import *
- from database import get_local_db
- from extensions import logger
- from common import YzyApi
- from config import settings
- import traceback
- from common import AvconH5API
- def proc():
- lock_key = "avcon_job_proc"
- if redis_lock(lock_key):
- logger.info(datetime.now())
- with get_local_db() as db:
- refresh_device(db)
- refresh_device_channel(db)
- db.close()
- redis_unlock(lock_key)
- def refresh_device(db: Session):
- dev_list = []
- region_list = AvconH5API.get_region()
- if region_list is not None:
- for region_item in region_list:
- region_id = region_item['region_id']
- region_name = region_item['region_name']
- region_group_list = AvconH5API.get_group(region_id)
-
- if region_group_list is not None:
- for region_group_item in region_group_list:
- group_id = region_group_item['group_id']
- group_name = region_group_item['group_name']
- # 子节点下面才有设备
- child_count = region_group_item['child_count']
- if child_count > 0:
- child_region_group_list = AvconH5API.get_group(region_id, group_id)
- if child_region_group_list is not None:
- for child_region_group_item in child_region_group_list:
- child_group_id = child_region_group_item['group_id']
- child_group_name = child_region_group_item['group_name']
- device_list = AvconH5API.get_group_device(child_group_id)
- if device_list is not None:
- for device_item in device_list:
- dev_id = device_item['dev_id']
- dev_name = device_item['dev_name']
- device_item['parent_group_id'] = group_id
- dev_list.append(device_item)
- if len(dev_list) > 0:
- db.query(AvconDevice).delete()
- db.commit()
- for n in dev_list:
- new_dev = AvconDevice(**n)
- db.add(new_dev)
- db.commit()
- def refresh_device_channel(db: Session):
- channel_list = AvconH5API.get_channel_all()
- if len(channel_list) > 0:
- db.query(AvconDeviceChannel).delete()
- db.commit()
- for n in channel_list:
- new_dev = AvconDeviceChannel(**n)
- db.add(new_dev)
- db.commit()
- for n in channel_list:
- channel_id = n['channel_id']
-
- if 'status' in n and n['status'] == 1:
- live_url = AvconH5API.get_live_streaming(channel_id)
- if live_url is not None:
- db.query(AvconDeviceChannel).filter(AvconDeviceChannel.channel_id == channel_id).update({"live_url": live_url, "create_time": datetime.now()})
- db.commit()
- play_url = AvconH5API.get_live_playing(channel_id)
- if play_url is not None:
- db.query(AvconDeviceChannel).filter(AvconDeviceChannel.channel_id == channel_id).update({"play_url": play_url, "create_time": datetime.now()})
- db.commit()
|