调用Seafile AI


通过API读取云盘系统的系统信息数据,读取的数据可以用来每天给管理员通过微信、邮件等发送通知,了解系统基本情况。

下面读取系统的用户数,计算已分配的空间配额,读取实际已使用的存储空间,以及总文件数,并将信息发送到微信群:云盘-消息通知(微信发送程序需要额外实现)

#! /usr/bin/env python3

import json
import requests
from loguru import logger

# 导入logger记录日志
logger.add('/opt/logs/custom/get_user_count.log',
           level='DEBUG',
           format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
           rotation="10 MB")

headers = {
    'cache-control': 'no-cache',
    'content-type': 'application/json',
    'charset': 'utf-8',
    'indent': '4',
}

# seafile站点的URL,后面调用api会用到
url = 'https://example.com/'
# 微信发送程序的url
url_wechat = 'https://example.com/wechat'
# 管理员账户
data_admin = {
    'username': 'admin-api@example.com',
    'password': 'password',
}
RCV_USERS = {
    'wechat': ['云盘-消息通知',]
}

# 使用管理员账号获取token
def get_admin_token():
    url_token = url + 'api2/auth-token/'
    response = requests.post(url_token, data=data_admin)
    res = json.loads(response.text)
    if res is None:
        logger.warning("Get admin token failed")
    else:
        return res['token']

def get_admin_sysinfo():
    # 管理后台系统信息的API
    url_sysinfo = url + 'api/v2.1/admin/sysinfo/' 
    admin_token = get_admin_token()
    # 将获取到的token放入请求的headers
    headers['Authorization'] = 'Token ' + admin_token
    response = requests.get(url_sysinfo, headers=headers)
    res = json.loads(response.text)
    return res

    # 将读取到的信息发送给微信发送程序
def send_sms_wechat():
    sys_info = get_admin_sysinfo()
    user_count = sys_info['users_count']
    total_quota = user_count * 50 # GB 每人50GB配额
    total_storage = int(sys_info['total_storage']/1000/1000/1000) # GB 换算单位为1000
    total_files_count = sys_info['total_files_count'] # 总文件数
    content = '云盘系统信息' +\
            '\n- 当前用户数:' + str(user_count) +\
            '\n- 总配额空间(GB):' + str(total_quota) +\
            '\n- 已用存储空间(GB):' + str(total_storage) +\
            '\n- 存储文件数:' + str(total_files_count)

    # 把消息发给列表中的所有微信用户
    for user in RCV_USERS['wechat']:
        response = requests.get(url_wechat, params={'to':user, 'msg':content})
        logger.info("{} ---发送给: {} - 内容: {} -",response.text,user,content.replace('\n',''))
    return

send_sms_wechat()

文章作者: Netcat-fan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Netcat-fan !
  目录