Skip to content

Releases: ALERTua/bandcamp_async_api

0.1.1 Pagination fix

27 Mar 20:42

Choose a tag to compare

What's changed

Fixes 🔧

  • Fix collection/wishlist pagination returning no results @teancom (#20)

Maintenance ⚙️

  • chore(deps): bump requests from 2.32.5 to 2.33.0 in the uv group across 1 directory @dependabot[bot] (#19)

Full Changelog: 0.1.0...0.1.1

0.1.0: Bandcamp Personal Music Feed

16 Mar 09:00

Choose a tag to compare

New Features ⚡

  • Add fan_dash_feed_updates endpoint support by @teancom in #18

Music Feed

The get_feed() method retrieves a personalized music feed containing new releases from followed artists, fan purchases, and fan picks. This endpoint requires authentication - you must provide an identity token.

import asyncio
from bandcamp_async_api import BandcampAPIClient, BandcampMustBeLoggedInError

async def main():
    async with BandcampAPIClient(identity_token='your_identity_token') as client:
        # Get your music feed
        feed = await client.get_feed()
        print(f"New stories: {len(feed.stories)}")
        print(f"Has more: {feed.has_more}")

        # Iterate through feed stories
        for story in feed.stories:
            print(f"  - {story.story_type}: {story.item_title} by {story.band_name}")

        # Access tracks with streaming URLs
        for track in feed.track_list:
            print(f"  Track: {track.title} - {track.streaming_url}")

        # Paginate through older stories
        if feed.has_more and feed.oldest_story_date:
            older_feed = await client.get_feed(older_than=feed.oldest_story_date)
            print(f"Older stories: {len(older_feed.stories)}")

if __name__ == '__main__':
    asyncio.run(main())

Feed Story Types

The feed contains different story types:

  • np - New track/track release
  • nr - New album release
  • p - Fan purchase
  • fp - Fan pick

Error Handling

The feed endpoint requires authentication. If you try to access it without an identity token, you'll receive a BandcampMustBeLoggedInError:

from bandcamp_async_api import BandcampAPIClient, BandcampMustBeLoggedInError

async def safe_get_feed():
    client = BandcampAPIClient()  # No identity token
    try:
        feed = await client.get_feed()
    except BandcampMustBeLoggedInError:
        print("Feed requires authentication - provide an identity token")

Maintenance ⚙️

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #16
  • chore(deps): bump release-drafter/release-drafter from 6 to 7 by @dependabot[bot] in #17

Full Changelog: 0.0.9...0.1.0

0.0.9: Dummy release. See 0.0.8

03 Mar 17:03

Choose a tag to compare

0.0.8: Access following bands, following fans, and followers

03 Mar 11:42

Choose a tag to compare

New Features ⚡

  • Access following bands, following fans, and followers @teancom (#15)

Maintenance ⚙️

New Contributors

Full Changelog: 0.0.7...0.0.8

0.0.7: configurable default_retry_after parameter

01 Feb 12:12

Choose a tag to compare

What's Changed

  • add configurable default_retry_after parameter by @ALERTua in #9

Full Changelog: 0.0.6...0.0.7

0.0.6: HTTP 429 (rate limit) handling

01 Feb 12:12

Choose a tag to compare

What's Changed

  • Add BandcampRateLimitError exception for handling HTTP 429 (rate limit) responses from the Bandcamp API. by @ALERTua in #8

Full Changelog: 0.0.5...0.0.6

0.0.5: Sanitize comma in search queries

31 Jan 19:47

Choose a tag to compare

What's Changed

  • Sanitize comma in search queries by @ALERTua in #7

New Contributors

Full Changelog: 0.0.4...0.0.5

0.0.4: BandcampMustBeLoggedInError

25 Dec 17:18

Choose a tag to compare

What's changed

  • Added BandcampMustBeLoggedInError in case of missing or wrong identity token

Full Changelog: 0.0.3...0.0.4

0.0.3: polishing

25 Dec 12:55

Choose a tag to compare

Fixes 🔧

  • minor models fixes

Maintenance ⚙️

  • tests expanded

initial release

21 Dec 20:24

Choose a tag to compare