Files
leonapp/leonapp-cli/api_example.py
2025-09-20 22:20:08 +08:00

122 lines
4.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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')")