paper-dynasty-database/app/routers_v2
Cal Corum 30b5eefa29 feat: APNG animated card effects for T3/T4 refractor tiers (#186)
Closes #186

- Add app/services/apng_generator.py: scrubs CSS animations via Playwright
  (negative animation-delay + running override), assembles frames with apng lib
- Add GET /{player_id}/{card_type}card/{d}/{variant}/animated endpoint: returns
  cached .apng for T3/T4 cards, 404 for T0-T2
- T3: 12 frames × 200ms (gold shimmer, 2.5s cycle)
- T4: 24 frames × 250ms (prismatic sweep + diamond glow, 6s cycle)
- Cache path: storage/cards/cardset-{id}/{type}/{player_id}-{d}-v{variant}.apng
- Add apng==3.1.1 to requirements.txt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 03:22:05 +00:00
..
__init__.py Initial Commit with /current 2023-09-13 14:44:26 -05:00
admin.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
awards.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
batstats.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
battingcardratings.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
battingcards.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
cardpositions.py feat: add limit/pagination to cardpositions endpoint (#142) 2026-03-24 07:31:59 -05:00
cards.py fix: update stale evolution comment in cards.py 2026-03-23 14:23:00 -05:00
cardsets.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
current.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
decisions.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
events.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
gamerewards.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
gauntletrewards.py feat: capture total_count before limit across all paginated endpoints 2026-03-24 07:37:26 -05:00
gauntletruns.py feat: add limit/pagination to gauntletruns endpoint (#146) 2026-03-24 07:08:37 -05:00
mlbplayers.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
notifications.py fix: capture total_count before applying limit so response count reflects matching records not page size 2026-03-24 12:11:18 +00:00
packs.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
packtypes.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
paperdex.py feat: add limit/pagination to paperdex endpoint (#143) 2026-03-24 07:02:47 -05:00
pitchingcardratings.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
pitchingcards.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
pitstats.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
players.py feat: APNG animated card effects for T3/T4 refractor tiers (#186) 2026-04-07 03:22:05 +00:00
rarity.py fix: replace broad except Exception blocks with DoesNotExist (#15) 2026-03-05 15:32:53 -06:00
refractor.py fix: ensure count is never null in GET /refractor/cards (#183) 2026-04-07 03:15:21 +00:00
results.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
rewards.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
scout_claims.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
scout_opportunities.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
scouting.py fix: remove stub live_update_pitching endpoint (#11) 2026-03-07 01:37:52 -06:00
season_stats.py docs: update stale docstrings to reflect full-recalculation approach 2026-03-19 10:34:55 -05:00
stratgame.py fix: skip total_count query for CSV requests and consolidate rewards.py counts 2026-03-24 07:43:14 -05:00
stratplays.py fix: remove plaintext bearer token from warning logs (#7) 2026-03-05 03:43:27 +00:00
teams.py fix: complete remaining evolution→refractor renames from review 2026-03-23 14:17:03 -05:00