Files
leonapp/leonapp-cli/api_example.py

122 lines
4.1 KiB
Python
Raw Permalink Normal View History

2025-09-20 22:20:08 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
LeonApp API示例 - 展示如何以编程方式调用API
"""
import json
import requests
class LeonAppAPI:
def __init__(self, api_base_url="http://localhost/APP Store/api.php"):
"""初始化API客户端"""
self.api_base_url = api_base_url
def make_request(self, endpoint_type, params=None):
"""基础API请求函数"""
if params is None:
params = {}
# 添加API类型参数
params['t'] = endpoint_type
try:
response = requests.get(self.api_base_url, params=params, timeout=30)
response.raise_for_status() # 抛出HTTP错误
data = response.json()
if data.get('status') == 'error':
print(f"API错误: {data.get('message', '未知错误')}")
return None
return data.get('data')
except requests.exceptions.RequestException as e:
print(f"请求异常: {str(e)}")
return None
except json.JSONDecodeError:
print("无法解析响应")
return None
def get_all_apps(self, page=1, limit=20):
"""获取所有应用列表"""
return self.make_request('getallapps', {'page': page, 'limit': limit})
def get_app_info(self, app_id):
"""获取应用详情"""
return self.make_request('getappinfo', {'id': app_id})
def get_all_tags(self):
"""获取所有标签"""
return self.make_request('getalltags')
def get_tag_apps(self, tag_id, page=1, limit=20):
"""获取标签下的应用"""
return self.make_request('gettagapp', {'id': tag_id, 'page': page, 'limit': limit})
def get_developer_apps(self, developer_id, page=1, limit=20):
"""获取开发者的应用"""
return self.make_request('getdeveloperapp', {'id': developer_id, 'page': page, 'limit': limit})
def get_developer_info(self, developer_id):
"""获取开发者信息"""
return self.make_request('getdeveloperinfo', {'id': developer_id})
def get_all_announcements(self, page=1, limit=20):
"""获取所有公告"""
return self.make_request('getacc', {'page': page, 'limit': limit})
def get_count_info(self):
"""获取统计信息"""
return self.make_request('getcount')
# 示例用法
if __name__ == "__main__":
# 创建API客户端实例
api = LeonAppAPI()
print("LeonApp API示例\n")
# 1. 获取统计信息示例
print("=== 获取统计信息 ===")
count_info = api.get_count_info()
if count_info:
print(f"应用总数: {count_info['total_apps']}")
print(f"开发者总数: {count_info['total_developers']}")
print(f"标签总数: {count_info['total_tags']}")
print(f"公告总数: {count_info['total_announcements']}")
print(f"总下载量: {count_info['total_downloads']}")
print()
# 2. 获取前5个应用示例
print("=== 获取前5个应用 ===")
apps = api.get_all_apps(page=1, limit=5)
if apps and 'apps' in apps:
for app in apps['apps']:
print(f"ID: {app['id']}, 名称: {app['name']}")
print()
# 3. 获取第一个标签的应用示例
print("=== 获取第一个标签的应用 ===")
tags = api.get_all_tags()
if tags and len(tags) > 0:
first_tag = tags[0]
print(f"标签: {first_tag['name']} (ID: {first_tag['id']})")
tag_apps = api.get_tag_apps(first_tag['id'], limit=3)
if tag_apps and 'apps' in tag_apps:
for app in tag_apps['apps']:
print(f"- {app['name']}")
else:
print("该标签下暂无应用")
else:
print("暂无标签数据")
print()
# 4. 使用提示
print("=== 使用提示 ===")
print("1. 你可以在自己的脚本中导入此类并使用相应的方法")
print("2. 根据实际需要处理API返回的数据")
print("3. 记得添加错误处理和异常捕获")
print("4. 如果API地址不同初始化时可以指定api = LeonAppAPI('http://your-api-url/api.php')")