122 lines
4.1 KiB
Python
122 lines
4.1 KiB
Python
|
|
#!/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')")
|