tonexus / poe-scambot Goto Github PK
View Code? Open in Web Editor NEWA tool meant to quickly and efficiently search for items in Path of Exile via the stash tab API.
A tool meant to quickly and efficiently search for items in Path of Exile via the stash tab API.
Name: PoE ScamBot Author: Tony Lau System Requirements: Windows, Python 3.6.0 Dependencies: requests PoE ScamBot is a search engine (not an indexer) that maintains a live search of the Path of Exile stash tab API. Unlike indexers, such as poe.trade or poeapp.com, ScamBot does not track historical data and is instead a lightweight parser. Thus, an item may show up multiple times if the player modified other items in their stash. Set Up: 1. Install Python 3.6.0 from https://www.python.org/. During installation, make sure the "Add Python to PATH" box is checked. 2. Open command prompt as an administrator 3. Run the command "pip install requests" Usage: 1. Run scambot.pyw 2. Under the default settings, simply input the desired parameters then press "Start". The app will automatically start searching for items with the input parameters. 3. Start playing Path of Exile. 4. When the app finds a result, it will play a tone and copy a whisper message to your clipboard. 5. Paste the message into chat and profit! Fields: League - the league that the item should be found in Maximum Price - the maximum price that the item should have Minimum Price - the minimum price that the item should have Sockets - the number of sockets that the item should have Links - the number of links that the item should have Rarity - the rarity type that the item should have Allow Corrupted - whether the item can be corrupted Allow Crafted - whether the item can be crafted Search Regex - the regular expression that should match the item's text. (The item's text is made by concatenating the item's name, implicit mods, and explicit mods.)
It appears you are only searching for currency type by name in the JSON. how about converting ex down to chaos down to alchemy/fuse/jewellers at the very least?
I don't want to bog down development with using, say, poe.ninja's most recent values.
This was working fantastic until a few days ago, where all of a sudden it stopped working whenever you press "Start". You get this error:
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\Downloads\poe-scambot-master (1)\poe-scambot-master\scambot.pyw", line 199, in start_parsing
self.queue_parse_ids.put(requests.get(constants.NEXT_API).json()['nextChangeId'])
KeyError: 'nextChangeId'
Was something changed in the API that made it so it no longer works?
Hello, would it be hard to paste in item stats above copied message?
I am really new at regex and I am not sure if the items that I search for are correct, and would be nice to see all item stats above the copied message.
Also a noob Question, how can we search for socket colors? 2g1r3b for example.
This should copy a message:
I would like to buy your item XX in stash tab YYY, offer ZZZ, which would be a textbox that is just pasted at the end.
I was using the ScamBot last night, and it was parsing quickly and finding the items at the prices I was looking for often. However, now that I am using it again the next day with the same min/max prices and items, it is parsing only once every 15-30 seconds and almost never finding items at my chosen price. Currently it is faster for me to manually go to poe trade/poeapp and copy and paste myself when I find something. Also today, most of the items it does find if any, are being sold by offline accounts.
Topic..
Your app kill function in the main scipt crashes out on my setup, I fixed this by commenting out the loop that tries to kill each thread and changing self.kill to self.destroy.
I know you've abandoned. But i would like to know if it;s normal that im getting an KeyError for the sockets. Ive updated the list so it has Bestiary in but i cant get the sockets Key error fixed.
I've been trying to edit my local copy and can't figure this out. I want to hit only level 3 or 4 enlighten gems. and i've added the following above the join statement.
for props in item['properties']
if props['name'] == 'Level':
gemLevel = props['values'][0][0]
it won't parse :(
Tried using it in both Abyss (after changing LEAGUES[0] to "Abyss") and Standard testing with Div Cards and Uniques and did not work.... tested it with my own items as well... not that should make any difference
Any idea how to update?
simple as the title. I tried some of the other options you suggested in another issues thread, but I can't run it from console either. it gives me [Errno 2] no such file or directory. also in windows explorer under the type of file it says "python file (no console)" not sure if that is supposed to be that way. thanks for the help
Maybe it is allready possible, but i would love to have this as a filter in the search.
I'm interested in including the object price as part of the searchable regex. This will allow me to set up multiple searches at different price points e.g.
(Goldwyrm.+[0-5] chaos.+(2[7-9]|30)% increased Q).+(Energy From Within.+[0-10] chaos.+6% increased).
Below is what I've attempted to do, it might help clarify what I'm asking, but on the other hand you may have a simple answer to my request and not need it.
Thanks,
Tim
I've attempted to modify the code myself to accomplish this, but I have no experience in Python and limited self-taught experience in any coding (PHP, JS, SQL, HTML, VBA).
My basic attempt was to make a couple of changes to the parserthread.pyw file.
I moved the code that sets the "price_regex_match" variable above the code that sets the "full_name" and "full_text" variable. I tested scambot after this step and was unable to notice any changes, it appeared to be working as intended.
I changed the full_text variable from
full_text = ' '.join([full_name] + (item['implicitMods'] if 'implicitMods' in item else []) + (item['explicitMods'] if 'explicitMods' in item else []))
to
full_text = ' '.join([price_regex_match] + [full_name] + (item['implicitMods'] if 'implicitMods' in item else []) + (item['explicitMods'] if 'explicitMods' in item else []))
I've tried a few other iterations replacing "price_regex_match" with "price_regex.match", "price_regex", "price_regex_match.group(2)", etc. Always the same issue as follows.
I tested after this change and the program appeared to be working normally, but would not return any results. It loads, starts, stops, allows me to adjust settings, gives the message that it is parsing threads and moves to subsequent threads successfully.
I left the regex field blank for this search and made the other settings extremely broad. Before change #2 such an identically broad search would result in hundreds of beeps within a second or two. After the change it will go minutes with no beeps, so I appear to be doing something that makes the regex unreadable, or causes it to fail the "if not self.regex.search(full_text)" line of code.
My main guess is that I am calling the variable wrong or that I need to convert the variable to a string, but I don't know how to fix either.
Thanks again
Tried it last night for Hardcore bringer league.For some reason it doesn't find div cards. I typed the name of the card and put price from 0 chaos to 20 chaos. At the same time I did that on poe.trade too. In about 30 min poe.trade live search came up with result, but your program didn't. I left it another 30 min running, but it never found the card.
It keeps parsing
Parsing 103022795-108031717-101417857-116882741-109298523...
Yeah I realize its a bit of a vague issue but the parser occasionally slows down from 3 to about 1 parse a second. This means when I change something in my sell tab and leave the area to update the api, it takes ~30 second for it to show up in scambot. Now I've been monitoring the network usage of the program
and that has remained the same and a fresh restart and reinstall means hardware shouldn't be at fault. I'm just confused...
Hi all,
Not an issue with the program, but more of a request. I tried several regex searches after reading the python guide in the readme, but nothing work. Does anyone have a well written guide for how to actually look for items? Levels of gem mainly, but full guide will be god send. Thanks.
Edit: Deleted information that would be more appropriate in other threads.
Hey, first off thanks for making this! The app is extremely quick and works nicely.
I've noticed that the "Allow Corrupted" toggle does not seem to work properly. I have searched for enlighten supports with the "Allow Corrupted" toggled to off. When I do that the app will show me both regular and corrupted enlighten gems. I've tested the toggle both on and off (using my own enlighten gem to force a response from the app). Both settings result in a beep when I update the information on my corrupted gem (by moving it around and changing zones or w/e).
On that note, do you have any idea of how much complicated regex searches will slow the app down? Here is an example of my output (if there are any errors ignore them, I'm still working on getting the excel formulas perfected).
(((Goldwyrm).+(([2][5-9])|([3][0]))% increased Quantity of Items found)|(((Andvarius).+(([6][7-9])|([7][0]))% increased Rarity of items found)|((([5][1-6])% Increased Energy Shield).+(([1][6-7])% to maximum Energy Shield))|(enlighten support)
Currently the item level is not included in the search string, it would be nice to be able to include item level in the search regex.
Without spawning a 2nd parser how about creating the ability to have multiple searches going at once?
Currently with the regex you can search for (chaotic|Vivid) (crimson|viridian) jewel of (smothering|cool-thing) and this is fine for the same rarity/frameType. But what about being able to search for either this one just mentioned AND for a unique (by name) AND for a currency at a certain threshold?
This would slow down the parser for a large amount of concurrent searches. but i think it
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.