1
0
forked from erp-dev/erp

feat: search image by tencent tiia

This commit is contained in:
2026-01-18 14:44:29 +08:00
parent a39b9648a4
commit 7e4e5e9cc1
5 changed files with 290 additions and 0 deletions

57
api_v1/views/tiia.py Normal file
View File

@@ -0,0 +1,57 @@
"""
Tencent Cloud TIIA simplified APIs.
Currently provides:
- SearchImage (by ImageUrl) with fixed groupId/region from settings.
"""
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from django.conf import settings
from api_v1.utils.tencentcloud_tiia import SimpleRateLimiter, search_image_url_in_tencent_tiia
class TiiaSearchImageView(APIView):
"""
Tencent Cloud TIIA: SearchImage (simplified)
POST /api/v1/tiia/search-image/
Body:
{
"imageUrl": "https://example.com/xxx.png"
}
Notes:
- groupId/region/endpoint are configured via Django settings (TENCENTCLOUD_TIIA_*).
- Enforces QPS using settings.TENCENTCLOUD_TIIA_QPS (default 10).
"""
permission_classes = [IsAuthenticated]
def post(self, request):
image_url = (
request.data.get('imageUrl')
or request.data.get('ImageUrl')
or request.data.get('image_url')
or request.data.get('ImageURL')
)
try:
limiter = SimpleRateLimiter(qps=float(getattr(settings, 'TENCENTCLOUD_TIIA_QPS', 10)))
resp = search_image_url_in_tencent_tiia(
image_url=str(image_url or ''),
rate_limiter=limiter,
)
return Response(resp, status=status.HTTP_200_OK)
except ValueError as e:
return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return Response(
{'error': '腾讯云搜图失败', 'message': str(e)},
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
)