Skip to content

Add fan_dash_feed_updates endpoint support#18

Merged
ALERTua merged 1 commit intoALERTua:mainfrom
teancom:feature/fan-feed-endpoints
Mar 16, 2026
Merged

Add fan_dash_feed_updates endpoint support#18
ALERTua merged 1 commit intoALERTua:mainfrom
teancom:feature/fan-feed-endpoints

Conversation

@teancom
Copy link
Copy Markdown
Contributor

@teancom teancom commented Mar 16, 2026

I was poking around the Bandcamp API, hoping that I could add some more social features. That didn't really pan out but I did find this endpoint, which we can use to add Bandcamp 'feed' stuff to the Discover tab in Music Assistant via recommendations().

I deleted some of the tests that the robot created as I didn't feel they were high-value. But if there's something test-wise you want me to cover that I didn't, happy to add them.

New get_feed() method retrieves the authenticated user's music feed (new releases, fan purchases, fan picks). Feed is auth-only — the fan_id must match the identity cookie.

New models: FeedStory, FeedTrack, FeedBandInfo, FeedFanInfo, FeedResponse New parsers for all feed response structures.

New get_feed() method retrieves the authenticated user's music feed
(new releases, fan purchases, fan picks). Feed is auth-only — the
fan_id must match the identity cookie.

New models: FeedStory, FeedTrack, FeedBandInfo, FeedFanInfo, FeedResponse
New parsers for all feed response structures.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@kilo-code-bot
Copy link
Copy Markdown

kilo-code-bot bot commented Mar 16, 2026

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0

This PR adds a new get_feed() method to retrieve the authenticated user's music feed from Bandcamp. The implementation includes:

  • New models in models.py: FeedStory, FeedTrack, FeedBandInfo, FeedFanInfo, and FeedResponse
  • New client method in client.py: get_feed() with pagination support via older_than parameter
  • New parser methods in parsers.py: parse_feed_story(), parse_feed_track(), parse_feed_band_info(), parse_feed_fan_info(), and parse_feed_response()
  • New tests with comprehensive fixtures in conftest.py, test_client.py, and test_parsers.py

The code follows existing patterns in the codebase and includes proper error handling for authentication requirements.

Files Reviewed (6 files)
  • src/bandcamp_async_api/__init__.py - exports new Feed models
  • src/bandcamp_async_api/client.py - get_feed() and _post_form() methods
  • src/bandcamp_async_api/models.py - Feed* data models
  • src/bandcamp_async_api/parsers.py - feed response parsers
  • tests/conftest.py - test fixtures
  • tests/test_client.py - client tests
  • tests/test_parsers.py - parser tests

@ALERTua
Copy link
Copy Markdown
Owner

ALERTua commented Mar 16, 2026

Thank you for your valuable contribution! I'm reviewing it right now.
This might even replace my HTML crawling in https://github.com/ALERTua/bandcamp_newsfeed_rss
It is finally possible to filter "announced an album" with is_preorder value!

@ALERTua ALERTua self-requested a review March 16, 2026 08:20
@ALERTua
Copy link
Copy Markdown
Owner

ALERTua commented Mar 16, 2026

Okay, I'm merging this. I will improve here and there afterward.
Thank you!

@ALERTua ALERTua merged commit a15b346 into ALERTua:main Mar 16, 2026
5 checks passed
@ALERTua
Copy link
Copy Markdown
Owner

ALERTua commented Mar 16, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants