refactor: extract fetch_list_item_uris and hydrate_tracks_from_uris (#1277)
Add fetch_list_item_uris() to _internal/atproto/records/fm_plyr/list.py
— fetches an ATProto list record and returns ordered item URIs. Replaces
5 copy-pasted fetch-then-extract blocks across playlists, albums, and
recommendations.
Add hydrate_tracks_from_uris() to api/lists/hydration.py — loads tracks
by AT-URI, batch-aggregates like/comment counts, resolves liked state,
returns ordered TrackResponses. Collapses the identical ~35-line hydration
block duplicated between get_playlist and get_playlist_by_uri.
playlists.py: 952 → 843 lines. Six unused imports removed as a side
effect (the hydration helper absorbed them).
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
authored by