diff --git a/nba_data/nba_scraper_shot_chart.py b/nba_data/nba_scraper_shot_chart.py index 7bad356..1bb7462 100644 --- a/nba_data/nba_scraper_shot_chart.py +++ b/nba_data/nba_scraper_shot_chart.py @@ -13,7 +13,7 @@ django.setup() from nba_data.models import PlayerShotChartData player_name = 'LeBron James' -season = 2016 +season = 2014 # team = 'LAL' # You might want to find a way to get this from the webpage url = 'https://www.basketball-reference.com/players/j/jamesle01/shooting/' + \ str(season) diff --git a/nba_data/serializers.py b/nba_data/serializers.py index a1b2c63..fd0147c 100644 --- a/nba_data/serializers.py +++ b/nba_data/serializers.py @@ -37,8 +37,13 @@ class PlayerSalaryDataSerializer(serializers.ModelSerializer): fields = '__all__' class PlayerShotChartDataSerializer(serializers.ModelSerializer): + color = serializers.SerializerMethodField() + class Meta: model = PlayerShotChartData - fields = '__all__' + fields = ['top', 'left', 'date', 'qtr', 'time_remaining', 'result', 'shot_type', 'distance_ft', 'lead', 'lebron_team_score', 'opponent_team_score', 'opponent', 'team', 'season', 'color'] + + def get_color(self, obj): + return 'green' if obj.result else 'red' diff --git a/nba_data/urls.py b/nba_data/urls.py index b758db8..6b68608 100644 --- a/nba_data/urls.py +++ b/nba_data/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats, TopScorersbySeasonTotalsList, TopAssistsBySeasonTotalsList, TopReboundsbySeasonTotalsList, TopStealsbySeasonTotalsList, TopBlocksbySeasonTotalsList, TopDefensiveReboundsBySeasonTotalsList, TopOffensiveReboundsbySeasonTotalsList, UsageRateHistogramView +from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats, TopScorersbySeasonTotalsList, TopAssistsBySeasonTotalsList, TopReboundsbySeasonTotalsList, TopStealsbySeasonTotalsList, TopBlocksbySeasonTotalsList, TopDefensiveReboundsBySeasonTotalsList, TopOffensiveReboundsbySeasonTotalsList, UsageRateHistogramView, PlayerShotChartDataList urlpatterns = [ path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'), @@ -34,4 +34,5 @@ urlpatterns = [ path('api/top_25_PTS_ws/playoffs//', Top25ScorersPostSeasonPlayoffs.as_view(), name='top_25_PTS_ws_playoffs'), path('api/top_25_PTS_ws/season//', TopPtsScatterPlotDataFastSelect.as_view(), name='top_25_PTS_ws_season'), path('api/stats/', OverallDBStats.as_view(), name='overall_db_stats'), + path('api/shot_chart_data///', PlayerShotChartDataList.as_view(), name='player_shot_chart'), ] \ No newline at end of file diff --git a/nba_data/views.py b/nba_data/views.py index 5356b2d..148759c 100644 --- a/nba_data/views.py +++ b/nba_data/views.py @@ -1,12 +1,12 @@ from django.shortcuts import render from django.http import JsonResponse, Http404 from django.core import serializers -from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData +from .models import PlayerData, PlayerTotalsData, PlayerAdvancedData, PlayerPlayoffTotalsData, PlayerPlayoffAdvancedData, PlayerShotChartData from rest_framework import generics -from .serializers import PlayerDataSerializer, HistogramDataSerializer, PlayerPlayoffTotalsDataSerializer, PlayerTotalsDataSerializer +from .serializers import PlayerDataSerializer, HistogramDataSerializer, PlayerPlayoffTotalsDataSerializer, PlayerTotalsDataSerializer, PlayerShotChartDataSerializer from rest_framework.views import APIView from rest_framework.response import Response -from django.db.models import Avg, Sum, F, FloatField, Min, Max +from django.db.models import Avg, Sum, F, Min, Max from collections import Counter import math from django.db import connection @@ -659,5 +659,11 @@ class OverallDBStats(APIView): return Response(response_data) - +class PlayerShotChartDataList(generics.ListAPIView): + serializer_class = PlayerShotChartDataSerializer + + def get_queryset(self): + player_name = self.kwargs['player_name'] + season = self.kwargs['season'] + return PlayerShotChartData.objects.filter(player_name__icontains=player_name, season=season).order_by('id')