Files
chunyu_project/apidirectory/management/commands/populate_api_directory.py
T
2026-08-05 23:59:15 +08:00

61 lines
4.2 KiB
Python

from django.core.management.base import BaseCommand
from apidirectory.models import ApiCategory, ApiItem
class Command(BaseCommand):
help = '填充API接口大全的初始数据'
def handle(self, *args, **options):
# 清空现有数据
ApiItem.objects.all().delete()
ApiCategory.objects.all().delete()
# 创建分类
categories_data = [
{'name': '基础工具', 'icon': 'ToolOutlined', 'sort_order': 1},
{'name': '数据查询', 'icon': 'SearchOutlined', 'sort_order': 2},
{'name': '内容生成', 'icon': 'FileTextOutlined', 'sort_order': 3},
{'name': '生活服务', 'icon': 'HomeOutlined', 'sort_order': 4},
{'name': '开发工具', 'icon': 'CodeOutlined', 'sort_order': 5},
]
categories = {}
for cat_data in categories_data:
cat = ApiCategory.objects.create(**cat_data)
categories[cat_data['name']] = cat
self.stdout.write(f'创建分类: {cat.name}')
# 创建API项目
items_data = [
# 基础工具
{'name': 'IP地址查询', 'description': '根据IP地址获取地理位置信息', 'url_path': '/api/getIpData/', 'method': 'GET', 'category': '基础工具', 'icon': 'GlobalOutlined', 'color': '#667eea'},
{'name': '二维码生成', 'description': '将文本或URL转换为二维码图片', 'url_path': '/api/qrcode-generator/', 'method': 'POST', 'category': '基础工具', 'icon': 'QrcodeOutlined', 'color': '#10b981'},
{'name': '短链接生成', 'description': '将长URL转换为短链接', 'url_path': '/api/shorturl/shorten/', 'method': 'POST', 'category': '基础工具', 'icon': 'LinkOutlined', 'color': '#f59e0b'},
{'name': '密码生成器', 'description': '生成随机安全密码', 'url_path': '/api/password-generator/', 'method': 'GET', 'category': '基础工具', 'icon': 'LockOutlined', 'is_coming_soon': True},
# 数据查询
{'name': '天气查询', 'description': '查询全球各地实时天气信息', 'url_path': '/api/weather', 'method': 'GET', 'category': '数据查询', 'icon': 'CloudOutlined', 'color': '#3b82f6'},
{'name': '空气质量', 'description': '查询城市空气质量指数AQI', 'url_path': '/api/air-quality/', 'method': 'GET', 'category': '数据查询', 'icon': 'DashboardOutlined', 'color': '#10b981'},
# 内容生成
{'name': '百度翻译', 'description': '支持多种语言的互译服务', 'url_path': '/api/baiduFanyi/', 'method': 'POST', 'category': '内容生成', 'icon': 'TranslationOutlined', 'color': '#667eea', 'is_new': True},
{'name': 'OCR文字识别', 'description': '从图片中识别文字内容', 'url_path': '/api/baiduFanyi/pictureRecognize/', 'method': 'POST', 'category': '内容生成', 'icon': 'ScanOutlined', 'color': '#8b5cf6', 'is_coming_soon': True},
{'name': '语音识别', 'description': '将语音转换为文字', 'url_path': '/api/baiduFanyi/speechRecognition/', 'method': 'POST', 'category': '内容生成', 'icon': 'AudioOutlined', 'color': '#ec4899', 'is_coming_soon': True},
# 生活服务
{'name': '滑块验证码', 'description': '滑块验证码生成与验证', 'url_path': '/api/captcha/', 'method': 'GET', 'category': '生活服务', 'icon': 'SafetyOutlined', 'color': '#10b981'},
{'name': '图片验证码', 'description': '图片验证码生成与识别', 'url_path': '/api/image-captcha/', 'method': 'GET', 'category': '生活服务', 'icon': 'SafetyOutlined', 'color': '#3b82f6'},
{'name': 'TODO待办', 'description': '管理个人待办事项', 'url_path': '/api/todo/', 'method': 'GET', 'category': '生活服务', 'icon': 'CheckSquareOutlined', 'is_coming_soon': True},
]
for item_data in items_data:
cat_name = item_data.pop('category')
item_data['category'] = categories[cat_name]
item = ApiItem.objects.create(**item_data)
self.stdout.write(f'创建API: {item.name} ({item.method} {item.url_path})')
self.stdout.write(self.style.SUCCESS(
f'\n成功创建 {ApiCategory.objects.count()} 个分类, '
f'{ApiItem.objects.count()} 个API接口'
))