2022-09-05 15:53:48 +02:00
|
|
|
from rest_framework.decorators import api_view
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from .models import Books
|
2022-09-28 14:29:54 +02:00
|
|
|
import pandas as pd
|
2022-09-05 15:53:48 +02:00
|
|
|
|
|
|
|
from .serializers import BooksSerializer
|
|
|
|
from django.db.models import Q
|
2022-09-28 14:29:54 +02:00
|
|
|
from django.templatetags.static import static
|
|
|
|
import json
|
2022-09-05 15:53:48 +02:00
|
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
|
def api_all_books(request):
|
2022-09-28 14:29:54 +02:00
|
|
|
df = pd.read_csv("api/static/books2.csv", encoding = "utf-8")
|
|
|
|
books = []
|
|
|
|
for book in df['Books']:
|
|
|
|
info = book.split(';')
|
|
|
|
books.append({
|
|
|
|
"name": info[0],
|
|
|
|
"author": info[1],
|
|
|
|
"genre": info[2],
|
|
|
|
"pages": info[3],
|
|
|
|
"readed": info[4],
|
|
|
|
"rating": info[5]
|
|
|
|
})
|
|
|
|
return Response(books)
|
2022-09-05 15:53:48 +02:00
|
|
|
|
|
|
|
@api_view(['GET'])
|
2022-09-28 14:29:54 +02:00
|
|
|
def books_per_genre_per_month(request):
|
|
|
|
|
|
|
|
datayear = request.META.get('HTTP_YEAR')
|
|
|
|
|
|
|
|
if datayear:
|
|
|
|
|
|
|
|
data = []
|
|
|
|
|
|
|
|
# Get CSV file with book data
|
|
|
|
df = pd.read_csv("api/static/books2.csv", encoding = "utf-8", header = 0, sep=';')
|
|
|
|
|
|
|
|
# Filter data on year
|
|
|
|
df = df.where(df['readed'].str.contains(datayear))
|
|
|
|
|
|
|
|
# Filter array on genre and date
|
|
|
|
booksPerMonth = df.groupby(['genre','readed'])['genre'].count().reset_index(name="count")
|
|
|
|
booksPerMonth = booksPerMonth.sort_values(by='readed')
|
2022-09-05 15:53:48 +02:00
|
|
|
|
2022-09-28 14:29:54 +02:00
|
|
|
for index, row in booksPerMonth.iterrows():
|
|
|
|
data.append({
|
|
|
|
"genre": row['genre'],
|
|
|
|
"readed": row['readed'],
|
|
|
|
"count": row['count']
|
|
|
|
})
|
|
|
|
|
|
|
|
return Response(data)
|
2022-09-05 15:53:48 +02:00
|
|
|
else:
|
2022-09-28 14:29:54 +02:00
|
|
|
return Response("No year header included")
|