How to Snipe Specific Items in Azeroth Auction Assassin Using desired_items.json
Azeroth Auction Assassin (AAA) monitors the World of Warcraft Auction House for items listed at or below prices defined in AzerothAuctionAssassinData/desired_items.json, automatically alerting you when snipe opportunities appear.
Azeroth Auction Assassin is an open-source sniper tool that scans WoW auction house data to find underpriced items instantly. To snipe specific items in AAA using desired_items.json, you create a JSON mapping of item IDs to your maximum buyout prices, which the application loads during startup and references during every auction scan.
Creating the desired_items.json File
The snipe list is a simple JSON object stored at AzerothAuctionAssassinData/desired_items.json. Each key is a numeric item ID (as a string or integer), and each value is the maximum price you are willing to pay expressed in gold.
{
"194641": 5.0,
"159840": 0.4,
"168185": 12.5
}
- Keys: Numeric WoW item IDs (e.g.,
194641for Abyssal Dust). - Values: Maximum buyout price in gold (e.g.,
5.0means 5 gold). - Location: Save the file as
AzerothAuctionAssassinData/desired_items.jsonin your AAA installation folder.
If you provide a custom path, the MegaData class accepts it via the path_to_desired_items parameter during initialization.
How AAA Loads Your Snipe List
When the application starts, the MegaData class in utils/mega_data_setup.py executes __set_desired_items (lines 86–119) to parse your JSON:
- Locates
desired_items.jsoninAzerothAuctionAssassinDataor uses your custom path. - Loads the JSON mapping and normalizes keys to
intand values tofloat. - Stores the result in
self.DESIRED_ITEMSfor fast lookup during scans. - Calls
__validate_snipe_lists(lines 64–81) to ensure at least one snipe list (items, pets, ilvl, etc.) is present before proceeding.
If the file is missing or empty, AAA aborts initialization unless another snipe list type is configured.
Auction Scanning and Alert Logic
During each auction scan, mega_alerts.py (lines 244–256) compares live listings against your DESIRED_ITEMS dictionary. The logic performs a currency conversion because the WoW API reports prices in copper while your JSON defines prices in gold:
# Simplified logic from mega_alerts.py
for auction in auction_list:
item_id = auction["item"]["id"]
buyout = auction["item"]["buyout"] # Price in copper
if item_id in mega_data.DESIRED_ITEMS:
max_price_gold = mega_data.DESIRED_ITEMS[item_id]
if buyout < max_price_gold * 10000: # Convert gold to copper
create_alert(auction)
When an auction meets the criteria, AAA generates a desktop notification and highlights the entry in the UI, allowing you to purchase the item immediately.
Importing Items via the UI
You can load or replace desired_items.json at runtime without restarting the application:
- Launch AAA and navigate to the Items tab.
- Click "Import Item Data" (handled in
AzerothAuctionAssassin.py, lines 106–119). - Select your JSON file in the file picker.
The ItemPage.import_item_data method in AzerothAuctionTarget.py (lines 49–73) validates the JSON structure, ensuring item IDs fall between 1 and 500,000 and prices between 0 and 10,000,000 gold. If validation fails, a message box displays the specific error; if successful, the UI list populates instantly with your snipe targets.
Programmatic Configuration (Advanced)
For automation or custom integrations, instantiate MegaData with an explicit file path:
from utils.mega_data_setup import MegaData
# Load from a custom location
mega = MegaData(path_to_desired_items="/path/to/my_items.json")
# Access the loaded dictionary
print(mega.DESIRED_ITEMS) # Output: {194641: 5.0, 159840: 0.4}
This approach bypasses the UI entirely and is useful for headless deployments or testing snipe logic against historical auction data.
Summary
- Place a correctly formatted JSON file at
AzerothAuctionAssassinData/desired_items.jsoncontaining item ID to gold-price mappings. MegaData.__set_desired_itemsloads and normalizes this file intoself.DESIRED_ITEMSon startup.mega_alerts.pychecks every auction listing against your prices, converting gold to copper (multiplying by 10,000) for comparison.- Use the "Import Item Data" button to reload snipe lists at runtime without restarting.
- Validation ensures item IDs range 1–500,000 and prices range 0–10,000,000 gold.
Frequently Asked Questions
What is the exact file path for desired_items.json?
AAA looks for desired_items.json inside the AzerothAuctionAssassinData folder relative to the application root. You can override this default by passing a custom path_to_desired_items argument to the MegaData constructor in utils/mega_data_setup.py.
How does AAA convert gold prices to Auction House API values?
The Auction House API returns buyout prices in copper. AAA multiplies your gold price from desired_items.json by 10,000 (since 1 gold = 10,000 copper) before comparing it to the live auction data in mega_alerts.py.
Can I update my snipe list without restarting AAA?
Yes. Click the "Import Item Data" button in the Items tab to open a file picker and load a new JSON file immediately. The ItemPage.import_item_data method validates the structure and updates the internal items_list dictionary without requiring an application restart.
What validation does AAA perform on the JSON file?
According to AzerothAuctionTarget.py (lines 49–73), AAA validates that item IDs are integers between 1 and 500,000 and that prices are numbers between 0 and 10,000,000 gold. If the JSON is malformed or values exceed these ranges, the UI displays an error message and rejects the import.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →