Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package Updates? #38

Open
ThatOhio opened this issue Nov 17, 2022 · 7 comments
Open

Package Updates? #38

ThatOhio opened this issue Nov 17, 2022 · 7 comments

Comments

@ThatOhio
Copy link

Will this package be properly updated? It is nearly 2023.

Also the documentation for iterating over the pledged users in the readme is incredibly out of date even with the current version of the library.

@nagadomi
Copy link

I tried this package today and Step3 code did not work.
I was able to get it to work with the following code.

api_client = patreon.API(creator_access_token)
campaign_id = api_client.get_campaigns(10).data()[0].id()
members = []
cursor = None
while True:
    members_response = api_client.get_campaigns_by_id_members(
        campaign_id, 100, cursor=cursor,
        includes=["user"],
        fields={
            # See patreon/schemas/member.py
            "member": ["full_name", "email", "lifetime_support_cents"]
        })
    members += members_response.data()
    # debug print
    # print(members_response.json_data)

    if members_response.json_data.get("links") is None:
        # Avoid Exception: ('Provided cursor path did not result in a link' ..
        break
    cursor = api_client.extract_cursor(members_response)

for member in members:
    print(member.relationship("user").id(),
          member.attribute('full_name'),
          member.attribute('email'),
          member.attribute('lifetime_support_cents') / 100)

Is this due to a change in the server side specifications?
I am curious if I can still use this package for developing a new website.

@ThatOhio
Copy link
Author

Patreon seems to have abandoned the library unfortunately. For what it's worth it was not incredibly difficult to create my own library for my purposes, unfortunately I went with C# so it wouldn't be of much use to you I expect. I would suggest making a fork of this repo and making any required changes and using that instead.

@nagadomi
Copy link

Thanks for the advice.
With a few changes as described above, I was able to use the features I wanted to use.

@db0
Copy link

db0 commented Dec 8, 2022

It's disappointing that the official library linked from patreon has been abandoned like this.

@db0
Copy link

db0 commented Dec 8, 2022

Thanks for the code @nagadomi , by using the master branch in my pip requirements, I managed to make it work using your code.

@nagadomi
Copy link

nagadomi commented Dec 9, 2022

I am running the above code in cron(run from scheduler, update database), but note the problem that the create_access_token may be unintentionally updated on the server side.
You can find many similar problems by searching Devloper Forum with access token keyword.
This problem seems to occur when the creator itself uses OAuth authentication.
Once this problem occurs, the refresh_token is also lost, so you must manually update the create_access_token.

I am using the following pseudo code to detect errors while updating the tokens.

client = patreon.OAuth(client_id, client_secret)
refresh_token, access_token = load_tokens()
new_token = client.refresh_token(refresh_token)
if "refresh_token" not in new_token:
    print(new_token)
    raise RuntimeError("error refresh_token is changed on server side!!!")
new_access_token = new_token["access_token"]
new_refresh_token = new_token["refresh_token"] 
save_tokens(new_token)

@Cayllen
Copy link

Cayllen commented Feb 5, 2023

Guys the package still works, although the whole API is super non-intuitive. Took me 3 hours to figure out that there is a v1 and v2 API. The package uses the V1 one, but you can still change the URL in the api.py file like on image 2. Works for me now as expected. Also you have to write new functions for the new API calls (or just change the URL's of the existing one)
image

image

//Edit: Just realized that the package is actually using the V2 API, but when installing the package with the package manager, an old version is used (0.5.0)

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

No branches or pull requests

4 participants