[scrobbles] Blacken files and add local dev static
All checks were successful
build & deploy / test (push) Successful in 1m47s
build & deploy / deploy (push) Has been skipped

This commit is contained in:
2026-03-08 16:50:43 -04:00
parent 8309a4e3c3
commit 8357ce8901
6 changed files with 182 additions and 289 deletions

View File

@ -155,25 +155,17 @@ class RecentScrobbleList(ListView):
next_date = date + timedelta(weeks=+2)
prev_date = date + timedelta(weeks=-1)
if date.isocalendar()[1] < today.isocalendar()[1]:
data[
"next_link"
] = f"?date={next_date.strftime('%Y-W%W')}"
data["next_link"] = f"?date={next_date.strftime('%Y-W%W')}"
data["prev_link"] = f"?date={prev_date.strftime('%Y-W%W')}"
data[
"title"
] = f"Week {date.strftime('%-W')} of {date.year}"
data["title"] = f"Week {date.strftime('%-W')} of {date.year}"
data = data | Scrobble.as_dict_by_type(
Scrobble.for_week(
user_id, date.year, date.isocalendar()[1]
)
Scrobble.for_week(user_id, date.year, date.isocalendar()[1])
)
elif date_str == "this_month" or date_str.count("-") == 1:
next_date = date + relativedelta(months=1)
prev_date = date + relativedelta(months=-1)
if date.month < today.month:
data[
"next_link"
] = f"?date={next_date.strftime('%Y-%m')}"
data["next_link"] = f"?date={next_date.strftime('%Y-%m')}"
data["title"] = f"{date.strftime('%B %Y')}"
data["prev_link"] = f"?date={prev_date.strftime('%Y-%m')}"
data = data | Scrobble.as_dict_by_type(
@ -182,24 +174,16 @@ class RecentScrobbleList(ListView):
elif date_str == "today" or date_str.count("-") == 2:
next_date = date + timedelta(days=1)
prev_date = date - timedelta(days=1)
data[
"prev_link"
] = f"?date={prev_date.strftime('%Y-%m-%d')}"
data["prev_link"] = f"?date={prev_date.strftime('%Y-%m-%d')}"
if date < today:
data[
"next_link"
] = f"?date={next_date.strftime('%Y-%m-%d')}"
data["next_link"] = f"?date={next_date.strftime('%Y-%m-%d')}"
if date == today:
data["title"] = "Today"
else:
data["title"] = f"{date.strftime('%Y-%m-%d')}"
data[
"today_link"
] = f"?date={today.strftime('%Y-%m-%d')}"
data["today_link"] = f"?date={today.strftime('%Y-%m-%d')}"
data = data | Scrobble.as_dict_by_type(
Scrobble.for_day(
user_id, date.year, date.month, date.day
)
Scrobble.for_day(user_id, date.year, date.month, date.day)
)
elif date_str == "this_year" or date_str.count("-") == 0:
next_date = date + relativedelta(years=+1)
@ -222,9 +206,7 @@ class RecentScrobbleList(ListView):
data = data | Scrobble.as_dict_by_type(
Scrobble.for_day(user_id, date.year, date.month, date.day)
)
data[
"today_link"
] = "" # f"?date={today.strftime('%Y-%m-%d')}"
data["today_link"] = "" # f"?date={today.strftime('%Y-%m-%d')}"
data["active_imports"] = AudioScrobblerTSVImport.objects.filter(
processing_started__isnull=False,
@ -232,7 +214,9 @@ class RecentScrobbleList(ListView):
user=self.request.user,
)
data["counts"] = [] # scrobble_counts(user)
data["daily_calories"] = get_daily_calories_for_user_by_day(self.request.user.id, date)
data["daily_calories"] = get_daily_calories_for_user_by_day(
self.request.user.id, date
)
else:
data["weekly_data"] = week_of_scrobbles()
data["counts"] = scrobble_counts()
@ -251,9 +235,7 @@ class ScrobbleLongPlaysView(TemplateView):
def get_context_data(self, **kwargs):
context_data = super().get_context_data(**kwargs)
context_data["view"] = self.request.GET.get("view", "grid")
context_data["in_progress"] = get_long_plays_in_progress(
self.request.user
)
context_data["in_progress"] = get_long_plays_in_progress(self.request.user)
context_data["completed"] = get_long_plays_completed(self.request.user)
return context_data
@ -330,9 +312,7 @@ class ManualScrobbleView(FormView):
scrobble_fn = MANUAL_SCROBBLE_FNS[key]
scrobble = eval(scrobble_fn)(item_id, self.request.user.id)
return HttpResponseRedirect(
scrobble.redirect_url(self.request.user.id)
)
return HttpResponseRedirect(scrobble.redirect_url(self.request.user.id))
class JsonableResponseMixin:
@ -378,9 +358,7 @@ class AudioScrobblerImportCreateView(
return HttpResponseRedirect(self.request.META.get("HTTP_REFERER"))
class KoReaderImportCreateView(
LoginRequiredMixin, JsonableResponseMixin, CreateView
):
class KoReaderImportCreateView(LoginRequiredMixin, JsonableResponseMixin, CreateView):
model = KoReaderImport
fields = ["sqlite_file"]
template_name = "scrobbles/upload_form.html"
@ -439,9 +417,7 @@ def web_scrobbler_webhook(request):
playing_state = "started"
if request.POST.get("isPlaying") == "false":
playing_state = "stopped"
scrobble = web_scrobbler_scrobble_media(
youtube_id, user_id, status=playing_state
)
scrobble = web_scrobbler_scrobble_media(youtube_id, user_id, status=playing_state)
if not scrobble:
logger.warning(
"[web_scrobbler_webhook] failed",
@ -566,18 +542,12 @@ def import_audioscrobbler_file(request):
scrobbles_created = []
# tsv_file = request.FILES[0]
file_serializer = serializers.AudioScrobblerTSVImportSerializer(
data=request.data
)
file_serializer = serializers.AudioScrobblerTSVImportSerializer(data=request.data)
if file_serializer.is_valid():
import_file = file_serializer.save()
return Response(
{"scrobble_ids": scrobbles_created}, status=status.HTTP_200_OK
)
return Response({"scrobble_ids": scrobbles_created}, status=status.HTTP_200_OK)
else:
return Response(
file_serializer.errors, status=status.HTTP_400_BAD_REQUEST
)
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@permission_classes([IsAuthenticated])
@ -623,9 +593,9 @@ def scrobble_start(request, uuid):
request, messages.ERROR, f"Media with uuid {uuid} not found."
)
if (
user.profile.redirect_to_webpage
and (media_obj.__class__.__name__ == Scrobble.MediaType.WEBPAGE or media_obj.__class__.__name__ == Scrobble.MediaType.BOOK)
if user.profile.redirect_to_webpage and (
media_obj.__class__.__name__ == Scrobble.MediaType.WEBPAGE
or media_obj.__class__.__name__ == Scrobble.MediaType.BOOK
):
logger.info(f"Redirecting to {media_obj} detail page")
return HttpResponseRedirect(media_obj.url)
@ -754,9 +724,7 @@ class ChartRecordView(TemplateView):
).order_by("rank")
if charts.count() == 0:
ChartRecord.build(
user=self.request.user, model_str=media_type, **kwargs
)
ChartRecord.build(user=self.request.user, model_str=media_type, **kwargs)
charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **kwargs
).order_by("rank")
@ -788,9 +756,7 @@ class ChartRecordView(TemplateView):
media_type = self.request.GET.get("media", "Track")
user = self.request.user
params = {}
context_data["chart_type"] = self.request.GET.get(
"chart_type", "maloja"
)
context_data["chart_type"] = self.request.GET.get("chart_type", "maloja")
context_data["artist_charts"] = {}
if not date:
@ -855,9 +821,7 @@ class ChartRecordView(TemplateView):
params["day"] = day
month_str = calendar.month_name[month]
name = f"Chart for {month_str} {day}, {year}"
in_progress = (
now.month == month and now.year == year and now.day == day
)
in_progress = now.month == month and now.year == year and now.day == day
media_filter = self.get_media_filter("Track")
track_charts = ChartRecord.objects.filter(
@ -869,17 +833,13 @@ class ChartRecordView(TemplateView):
).order_by("rank")
if track_charts.count() == 0 and not in_progress:
ChartRecord.build(
user=self.request.user, model_str="Track", **params
)
ChartRecord.build(user=self.request.user, model_str="Track", **params)
media_filter = self.get_media_filter("Track")
track_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params
).order_by("rank")
if artist_charts.count() == 0 and not in_progress:
ChartRecord.build(
user=self.request.user, model_str="Artist", **params
)
ChartRecord.build(user=self.request.user, model_str="Artist", **params)
media_filter = self.get_media_filter("Artist")
artist_charts = ChartRecord.objects.filter(
media_filter, user=self.request.user, **params
@ -900,38 +860,24 @@ class ScrobbleStatusView(LoginRequiredMixin, TemplateView):
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
user_scrobble_qs = Scrobble.objects.filter().order_by("-timestamp")
progress_plays = user_scrobble_qs.filter(
in_progress=True, is_paused=False
)
progress_plays = user_scrobble_qs.filter(in_progress=True, is_paused=False)
data["listening"] = progress_plays.filter(
Q(track__isnull=False) | Q(podcast_episode__isnull=False)
).first()
data["watching"] = progress_plays.filter(video__isnull=False).first()
data["going"] = progress_plays.filter(
geo_location__isnull=False
).first()
data["playing"] = progress_plays.filter(
board_game__isnull=False
).first()
data["sporting"] = progress_plays.filter(
sport_event__isnull=False
).first()
data["browsing"] = progress_plays.filter(
web_page__isnull=False
).first()
data["participating"] = progress_plays.filter(
life_event__isnull=False
).first()
data["going"] = progress_plays.filter(geo_location__isnull=False).first()
data["playing"] = progress_plays.filter(board_game__isnull=False).first()
data["sporting"] = progress_plays.filter(sport_event__isnull=False).first()
data["browsing"] = progress_plays.filter(web_page__isnull=False).first()
data["participating"] = progress_plays.filter(life_event__isnull=False).first()
data["working"] = progress_plays.filter(task__isnull=False).first()
long_plays = user_scrobble_qs.filter(
long_play_complete=False, played_to_completion=True
)
data["reading"] = long_plays.filter(book__isnull=False).first()
data["sessioning"] = long_plays.filter(
video_game__isnull=False
).first()
data["sessioning"] = long_plays.filter(video_game__isnull=False).first()
return data
@ -949,14 +895,16 @@ class ScrobbleDetailView(DetailView):
log = self.object.log or {}
initial_notes = log.get("notes", [])
if isinstance(initial_notes, list) and len(initial_notes) > 0 and isinstance(initial_notes[0], dict):
if (
isinstance(initial_notes, list)
and len(initial_notes) > 0
and isinstance(initial_notes[0], dict)
):
notes_str = note_list_to_str(notes)
else:
notes_str = "\n".join(initial_notes) if initial_notes else ""
notes_str_fixed = notes_str.encode("utf-8").decode(
"unicode_escape"
)
notes_str_fixed = notes_str.encode("utf-8").decode("unicode_escape")
log["notes"] = notes_str_fixed
return FormClass(initial=log)
@ -975,9 +923,7 @@ class ScrobbleDetailView(DetailView):
data[field_name] = original_value
if data.get("with_people_ids", False):
data["with_people_ids"] = [
p.id for p in data["with_people_ids"]
]
data["with_people_ids"] = [p.id for p in data["with_people_ids"]]
if data.get("platform_id", False):
data["platform_id"] = data["platform_id"].id