DevilXD / TwitchDropsMiner

An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching.
MIT License
1.69k stars 165 forks source link

Completing one campaign completes both for the same game #418

Closed mgbeck002 closed 1 month ago

mgbeck002 commented 9 months ago

I've been experiencing this with Out of the Park Baseball. They typically have an official and an affiliate campaign each day, as shown in the screenshot below.

image

So far today, only affiliates have streamed and I should still have the "Official" campaign available to me, but it's marked as completed in the application and the application will no longer join the official channel.

Inventory screenshot:

image

This is with commit 91f2dacbcce14d3dbc7519bcbff61d1da5ebcb00 on Windows 11, running both as a built executable and when run as a python application directly.

DevilXD commented 9 months ago

Hello o/

I've roughly explained "the issue" of trying to determine if a campaign has been finished or not, here: https://github.com/DevilXD/TwitchDropsMiner/issues/334#issuecomment-1779920333

There is no fix for this, the logic works correctly. The developer of this campaign has used repeating benefits, which can "cross-claim" a campaign in the miner like that. It works like this:

That's the bad news. The good news is that - you can force a campaign like that to appear in your inventory, by watching an applicable channel for at least one minute. Once it does so, and all drops receive a 0% progression bar, the miner will automatically pick up on that, and should continue from there - after a reload, of course. Every further campaign that runs into this issue, has to be started "manually" like this.

Please let me know if that worked out for you.

mgbeck002 commented 9 months ago

Thanks. Yeah. That workaround seems to work. For my curiosity, what part of the code is the part that claims the drops?

DevilXD commented 9 months ago

Thanks. Yeah. That workaround seems to work.

Cool =)

For my curiosity, what part of the code is the part that claims the drops?

The exact code that performs the claim operation is here: https://github.com/DevilXD/TwitchDropsMiner/blob/b655803bf5270f0b58ec5fa3d0270e6a2049b841/inventory.py#L146-L170

But to authorize the claim, you need to have an authorization key (a string of characters obtained back from the login procedure, that authorizes each request to the Twitch servers the miner makes), and a claim ID, that's generated by Twitch once the drop progress reaches 100%.

DevilXD commented 1 month ago

Okay, well, there isn't much I can do here. There's no other way to determine if a campaign is finished or not, than by cross-comparing already mined drops with active campaign times, and the workaround can be used to manually "prime" the campaign for mining. I'm not sure if this is a NoFix or Solved as pretending I've answered a question, but since the "issue" is still there and it won't be worked on, I'm calling this a NoFix bug, that we just need to live with.

If a better campaign completion detection method would come up in the future, I'll be very happy to use it to avoid this issue. For now, it just has to stay as is.