diff --git a/backend/server/adventures/urls.py b/backend/server/adventures/urls.py index ed8f8bf..a855f02 100644 --- a/backend/server/adventures/urls.py +++ b/backend/server/adventures/urls.py @@ -1,11 +1,13 @@ from django.urls import include, path from rest_framework.routers import DefaultRouter -from .views import AdventureViewSet, TripViewSet, StatsViewSet +from .views import AdventureViewSet, TripViewSet, StatsViewSet, GenerateDescription router = DefaultRouter() router.register(r'adventures', AdventureViewSet, basename='adventures') router.register(r'trips', TripViewSet, basename='trips') router.register(r'stats', StatsViewSet, basename='stats') +router.register(r'generate', GenerateDescription, basename='generate') + urlpatterns = [ # Include the router under the 'api/' prefix diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index c2c166d..0e7b354 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -1,3 +1,4 @@ +import requests from rest_framework.decorators import action from rest_framework import viewsets from django.db.models.functions import Lower @@ -133,4 +134,37 @@ class StatsViewSet(viewsets.ViewSet): 'total_regions': total_regions, 'country_count': country_count, 'total_countries': total_countries - }) \ No newline at end of file + }) + +class GenerateDescription(viewsets.ViewSet): + permission_classes = [IsAuthenticated] + + @action(detail=False, methods=['get'],) + def desc(self, request): + name = self.request.query_params.get('name', '') + # un url encode the name + name = name.replace('%20', ' ') + print(name) + url = 'https://en.wikipedia.org/w/api.php?origin=*&action=query&prop=extracts&exintro&explaintext&format=json&titles=%s' % name + response = requests.get(url) + data = response.json() + data = response.json() + page_id = next(iter(data["query"]["pages"])) + extract = data["query"]["pages"][page_id] + if extract.get('extract') is None: + return Response({"error": "No description found"}, status=400) + return Response(extract) + @action(detail=False, methods=['get'],) + def img(self, request): + name = self.request.query_params.get('name', '') + # un url encode the name + name = name.replace('%20', ' ') + url = 'https://en.wikipedia.org/w/api.php?origin=*&action=query&prop=pageimages&format=json&piprop=original&titles=%s' % name + response = requests.get(url) + data = response.json() + page_id = next(iter(data["query"]["pages"])) + extract = data["query"]["pages"][page_id] + if extract.get('original') is None: + return Response({"error": "No image found"}, status=400) + return Response(extract["original"]) + \ No newline at end of file