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

Priority modes not working (?) #579

Closed
T4bletopG4mes opened this issue Oct 13, 2024 · 16 comments
Closed

Priority modes not working (?) #579

T4bletopG4mes opened this issue Oct 13, 2024 · 16 comments
Labels
Help / Issue General or specific issues that just require some additional assistance to solve Solved This issue has been resolved

Comments

@T4bletopG4mes
Copy link

T4bletopG4mes commented Oct 13, 2024

I have noticed that having the "ending first" priority either just gets ignored and goes by my priority list anyway, making it practically useless or it just decides sees the channel has the highest viewers and watches that... I may be doing something wrong, but Im fairly certain most of the users of TDM would want "ending first" and any other mode to look at their priority list and pick the campaign (that is linked) with the least time left but I may be wrong..

@T4bletopG4mes
Copy link
Author

Im fairly certain it is what I said, "ends first" just picks the channel with most viewers which is useless...

@DevilXD
Copy link
Owner

DevilXD commented Oct 13, 2024

Hello,

This issue seems similar to #562, so you may check out the discussion there to learn the specifics of how and why this feature works exactly. The gist of it though, is that - there's only a single way for the miner to determine the order of games to be mined. This "way" can be chosen via the "Priority mode" selector. Regardless of which way you choose, the Priority list always retains it's authority over the user-chosen order - the game at the top of the list is going to be mined first, then the second one, and so on.

With "Priority list only" selected, once all games from the priority list are processed, the miner stops. With any other option though, it continues processing all other games it can (even those not on the list), based on the selected priority mode option. Note that the priority list is always processed first, and the meaning of "priority" is retained: the games on the list are the ones you care the most about, in the order you've decided to put them there. All other games not on the priority list are considered "okay to have if possible", and will be mined in the way selected according to the priority mode. If your intention is for all games to be mined in the way you've selected as the priority mode, then the Priority list has to remain empty - that way, no game is put before any other, and the rest is sorted according to the selected option.

@DevilXD DevilXD added the Help / Issue General or specific issues that just require some additional assistance to solve label Oct 13, 2024
@T4bletopG4mes
Copy link
Author

Imo instead of priority it should be a whitelist or there should be something on top of the priority list.. I can see why priority is important, especially for people who dont leave their pc on for a long time but I would also love to have a mode where the miner mines based on which campaign is ending soonest based on my whitelist/priority list and end after that. I feel like it was like this in the past but I may be wrong.

@JourneyOver
Copy link

JourneyOver commented Oct 13, 2024

I feel like it was like this in the past but I may be wrong

You might have been using a fork that included a "ending soonest" option, which made the priority list function more like a whitelist if the "ending soonest" option was checked. The new priority modes in this repository were introduced only a month ago and have always worked as Devil explained, both in my issue thread and in this thread.

The best way to use either of the two new options in the priority mode are to just empty out your priority list and let TDM do its thing, unless you are wanting a game to be prioritized completely when using either of the modes over everything else.

@DevilXD
Copy link
Owner

DevilXD commented Oct 13, 2024

I would also love to have a mode where the miner mines based on which campaign is ending soonest based on my whitelist/priority list and end after that.

The two things you've mentioned are in conflict with each other. The priority list specifies the order to mine the drops in - you're the one responsible for specifying that order. The ending soonest option mines everything, with the order being based on some attribute (in this case, the campaign's end time). The priority list specifies one order, the attribute sorting specifies a different order - how is the miner supposed to work with that? Which order is the correct one to use?

My solution was to just stick with the priority list's meaning of defining a list of games you care about, in the order you care about, and everything else not on the list you don't care about. It keeps things simple and in line with the naming.

@T4bletopG4mes
Copy link
Author

For the ending soonest option my suggestion is to use the priority list as a "whitelist" of sorts, where the miner doesnt care about the order of the items in the list and mines only them based on which campaign ends soonest.

@DevilXD
Copy link
Owner

DevilXD commented Oct 13, 2024

The problem with that is that it defeats both, the intention and naming of the "priority" list, while also robbing the user off the ability to specify the most important to them games (at least while trying to use the "ending soonest" option). That means I'm not convinced in the slightest, and I'm not going to even consider implementing a change like that.

You can just roll with an empty priority list, or at least trim it to the most important to you games. Only linked games are considered valid mining targets, so the miner will be picking the one "ending soonest" from that list, which usually already contains the games you care about. If you'd run into a game that happens to be linked just because of another game being linked to the same publisher (ex. Blizzard having Heartstone and Overwatch, but you'd care only about one of those), then you can use the Exclude list to tell the miner to ignore the other game.

@T4bletopG4mes
Copy link
Author

T4bletopG4mes commented Oct 13, 2024

Whats the point of having both "ending soonest" and "priority first" at the same time? Imo you want to get the rewards of the games you have whitelisted that you have the least time to get and then the rest. If you wanted the rewards based on your priority list order, then you wouldnt choose "ending soonest" but "priority list only", no? For example if I have a week for game A and a few hours for game B, why would I care if my priority is game A?

Edit: Im suggesting to use the Priority list as a whitelist too so we dont have another list that will most likely have the same items as the priority one.

@DevilXD
Copy link
Owner

DevilXD commented Oct 13, 2024

Whats the point of having both "ending soonest" and "priority first" at the same time?

You're clearly missing the fact that "ending soonest" is a 1 month old feature (a30e8d3), while the priority list has been implemented in v11 of the miner, somewhere before the 9th of April 2022. The priority list has been (and still is) the main way of specifying which games you're the most interested in, and in what order, and everything else is considered unimportant. I've implemented the other priority modes only and solely because someone has suggested, that the non-priority drops could use some kind of ordering to them, instead of having an unspecified order (the miner would just pick "whatever" first was available).

Imo you want to get the rewards of the games you have whitelisted that you have the least time to get and then the rest.

Yes, and as I've already explained, that's possible to achieve in the miner already, by not specifying anything on the priority list at all. The miner will then consider all games you have your account linked to, and mine them in the order resulting from the priority mode specified. The exclude list can be used in case you'd like to avoid mining a certain game. It's the second time I'm explaining this to you.

If you wanted the rewards based on your priority list order, then you wouldnt choose "ending soonest" but "priority list only", no?

That depends. The current system allows you to have one, or the other, or a mix of both. Your suggestion would limit this possibility, and that'd be disregarding the fact of changing the intended purpose of the priority list in the first place.

For example if I have a week for game A and a few hours for game B, why would I care if my priority is game A?

See the 2nd paragraph and my previous message.

Im suggesting to use the Priority list as a whitelist too so we dont have another list that will most likely have the same items as the priority one.

I am not changing the way the priority list works, as that'd defeat it's purpose and meaning, as well as limit the possibilities. If you don't like it, you're welcome to either leave, or suggest a more sensible solution to a "problem" I'm still not able to see. Have you even read my previous message?

@T4bletopG4mes
Copy link
Author

I guess that Im used to a fork that does it similar to what Im suggesting and I personally prefer it that way cause you set the games you want the miner to mine, turn on "ending soonest" and after that you are done. Your way seems to be the opposite of that (in terms of how to set up a whitelist/blacklist) I guess, so Ill have to get used to it. Thanks for the response either way.

@DevilXD DevilXD added the Solved This issue has been resolved label Oct 14, 2024
@mdk25
Copy link

mdk25 commented Oct 22, 2024

Just to mention, this is almost certainly how most users would prefer to set things up:

  1. Create a list of games to mine and ignore or deprioritize the others.
  2. If there's enough time to mine all drops, mine them in order of ending time (I'm not familiar with low availability drops, but those would also be a factor here).
  3. If there's not enough time to mine all drops, choose from the games ending soonest based on a specified priority.

This would best support what is presumably everyone's goal - to mine the most drops possible for a subset of games, while still prioritizing the most important ones when absolutely necessary. Unfortunately, only parts of this ideal can currently be configured.

@DevilXD
Copy link
Owner

DevilXD commented Oct 23, 2024

only parts of this ideal can currently be configured.

All of what you said is currently possible, with the only "catch" being that configuring what you mine with the "ending soonest" mode chosen is done in a roundabout way. The miner considers all linked games as minable, and if you want to narrow down this list further, you need to use the Exclude list. Every game you specify as Excluded won't be mined, and every new game that you link your account to will be added to the mining list automatically. There's no "official list" you can specify to tell the miner exactly what you want to mine.

I'm split on whether or not something needs to be done about this. On one hand, the priority list has been the main mining mode for a long while now, and it's design and meaning was that everything not on the list was to be considered either "unimportant" (old "priority only" option enabled), or "unimportant, but if the miner isn't working on anything else, so it might as well mine these" (old "priority only" option disabled). The priority and exclude lists let you specify "what you want, what is the most important game for you, what game isn't as important, and what you don't want", and have been implemented specifically because the previous way of selecting games relied on the "ending soonest" sorting only, and all kinds of less important drops had to be mined first, in order for the miner to focus on the game you've actually wanted the drops for in the first place. Those initial drops could also have been mined, but ideally after the "most wanted" game would be finished, and thus the priority list was born and put into existence.

On the other hand, I can see how the "ending soonest" option would still be viable for people with lots of time on their hands, and only a handful of linked games, although I'd argue that - since sufficient time is given to always mine out everything fully - the mining order doesn't really matter. If one would really be concerned about losing on drops for a certain game due to campaign's end time, the priority list could be setup in a way that'd prioritize those shorter campaigns first, before the longer, filler ones. Definite most game developers are quite consistent in the types of campaigns they put out, it's either 1-3 drops, 1-3 hours each, short campaign, or 4+ drops, 4+ hours each, filler campaign.

Do you think this topic needs further discussion?

@mdk25
Copy link

mdk25 commented Oct 23, 2024

I pretty frequently run into a situation where several games put out short duration campaigns over the same weekend, and I have to do some simple math to determine which drops to sacrifice to maximize my most desired ones. Or, I don't run the miner for a while and accidentally create this situation for myself. Either way, I then need to temporarily change some settings around to get the miner to do what I want. With some updated/smarter prioritization, that wouldn't be necessary. Up to you if you want to revisit the options, I could personally always change it myself in a fork if it's worth the effort to me.

@DevilXD
Copy link
Owner

DevilXD commented Oct 24, 2024

I then need to temporarily change some settings around to get the miner to do what I want.

This is actually an intended way of using the miner. Rearranging the priority list to better suit your needs. Per the project goals, this isn't a "set and forget" application: https://github.com/DevilXD/TwitchDropsMiner#project-goals I've also talked about this topic in #406 and #330, if you'd like to check them out.

With some updated/smarter prioritization, that wouldn't be necessary.

Yeah, see, I'm still in two minds about this. On one hand, I still feel the same way as the issues I've linked describe. The miner is holding itself together on wishes and prayers, that Twitch will keep the existing API as is, and running into a scram full-stop error/exception is expected to happen sooner or later (ex. see the recent #583). When I was designing the miner, it was intended more like a helpful tool than an application that was going to take care of everything for you. Instead of spending my time on checking available streams and setting up the tabs that I was intending to keep open in the background for drops, I'd just launch the miner and do all the setup from there. Launching the miner, selecting the game to mine, then going on with your usual PC tasks, was a normal daily routine. I'm talking about the early versions of the miner, up to and including v10. There was no priority list, only a game selector. If you selected a game that had no live channels available, the miner would just not do anything. Once the mining was done, it would just terminate, with the window to be closed later. You had to set it up every single time it was launched, otherwise it'd just pick the first game off the linked games list to mine, hoping it'd have some live channels for it. You can take a look at the releases page descriptions of each version to see what I mean: https://github.com/DevilXD/TwitchDropsMiner/releases

Between the initial v2 release and "final at the time" v9 release, it's been about a month of intense feature pushing, fixes and redesigns. v10 was pushed two weeks later, introducing a -g/--game launch option to preselect the game of choice, and watching the status of channels going ONLINE to start mining - if all channels were or went OFFLINE after mining was started, it would terminate. v11 that arrived two more weeks later, was the first version that had an actual loop to restart mining once everything was mined out. It was also the first appearance of the priority list and automatic switching between games, so that the miner wouldn't idle needlessly. This is where things have started going south, people started abusing the miner by running thousands of instances, and Twitch has started to implement anti-bot measures, killing this project several times. v12 was pushed while Twitch was in the middle of pushing out their integrity system, which has killed it shortly afterwards. v13/v14 tried to get around it by switching to a mobile web client with Chrome login, and when that was killed too, then a smart TV client in v15. v16 hasn't happened yet, because Twitch keeps changing things around, and some of the existing issues have to be dealt with before I could declare a new stable release. And then I need to try and fight the cases where the miner is abused, otherwise Twitch will just keep defending themselves, killing this project over and over. It's been like at least 3 times already during the current development version.

The other side of me wants this project to be as autonomous as possible. I'm an automation engineer after all. Stuff like GUI-less / head-less run option, more comprehensive game sorting options based on a weights system, the internals rework that's desperately needed, there's a lot of improvement possibilities here. But all it'll do is let more people abuse the miner, causing Twitch to do something about it. There's no point in investing my time into this project, if all it'll do is make it easier to setup farms for thousands of accounts, and cause Twitch defending itself more and more. It's not like I can somehow stop the abusers entirely, but they'll need to put in some effort themselves. I won't give the abusers everything on a silver plate.

I really don't know what to do here.

@mdk25
Copy link

mdk25 commented Oct 28, 2024

I personally don't think it's worth limiting features that would benefit average users in an attempt to hinder account botters, since those people will always find a way. Regardless, I feel like there's quite a large middle ground between smarter prioritization and full command line automation.

That said, it's also completely reasonable if you want to save all your energy for fixing the major issues that consistently crop up every few months.

@DevilXD
Copy link
Owner

DevilXD commented Oct 28, 2024

those people will always find a way

Nothing is impossible, yes, but as I've said, it'd make it easier. You'd be surprised how effective is requiring a little bit of effort to do this, and any feature that'd make it easier would reduce this effort, so I'm not in a hurry to add it, especially if it's achievable in a different way. "Limiting" features is the only solution I have for now, at least until I can come up with a different solution.

The current setup of the priority mode and priority list lets you specify the games to use the other priority modes already. The inventory page can be used to determine the pool of linked games the miner will pick from, and the exclude list can be used to trim away what you don't need. An average Twitch user will also remember which games they've linked their account to, for games that may not appear in the inventory. This is where I'm leaving it at for now, as the other priority modes are an extra to the miner anyway. The priority list remains the primary way of selecting what you want, in the order you want.

@DevilXD DevilXD closed this as completed Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Help / Issue General or specific issues that just require some additional assistance to solve Solved This issue has been resolved
Projects
None yet
Development

No branches or pull requests

4 participants