mdoupe

[Software] Brickficiency - Find the cheapest BL stores to buy parts

Recommended Posts

This version of Brickficiency is no longer supported

Go here for Brickficiency2: https://github.com/WindmillHelix/Brickficiency2

 

 

 

Brickficiency

The current version is 0.95.4. It was released on Nov 3, 2014. You can download it here: http://buildingoutlo.../brickficiency/

Brickficiency is now open source. You can get the source here: https://github.com/B...d/Brickficiency

Hi all, I'd like to introduce a program I wrote called Brickficiency. If you have a wanted list or LDD file and you want to get all of the pieces in the least (cheapest) number of Bricklink orders possible this program is for you.

Options Window:

xrQO6a6.png

Sample Output:

8FPnRZz.png

All you need is a BrickStore .bsx format file, a Bricklink Wanted list, or an LDD file. Open it with Brickficiency, tell it which countries you'd like to search, and it will do the rest. You can search for combinations of between 1 and 5 stores. It allows you to blacklist individual stores if you do not like their shipping policies. It will return prices in your native currency, depending on the responses it receives from Bricklink.

Let me know what you think, if you have any feature requests or if you find any bugs. :)

New in 0.95.4

  • There was a bug in 0.95.3 that was not extracting the database properly, causing it to crash. I believe this should be fixed now.

New in 0.95.3

  • Brickficiency has outgrown Google drive hosting! The database will now be downloaded from dedicated hosting.

New in 0.95.2

  • Fixed an issue in 0.95 where dependencies were not being included in the .exe. I want to keep Brickficiency as portable as possible, but for now there are a couple of folders containing DLL's that have to sit in the same folder as Brickficiency. I'll try to remedy this in the future.

New in 0.95 - Proper Database, more list creation options

  • There is now a proper database that is automatically updated. It can also be manually updated from the tools menu.
  • Can now manually change item id numbers or double clicking on the item name brings up a change item box
  • Can now create new lists and add parts to a new/existing list (although there is a display bug in the add item dialog)
  • Placing the mouse cursor over a picture of an item will show a larger version of that picture. Double clicking will show an even larger image (the colour may not be accurate on the double clicked image)
  • Selecting a single item will show which sets that item is in, and the quantities it contains.
  • Can now (mostly) import an LDD file, thanks to rebrickable.com! If any items are skipped, the item information (item ID, colour, quantity) will be shown in the message window. If you can figure out which part it is from the lego ID, you can still add it manually.
  • Can now export a list to a bricklink wanted list.
  • Fixed an issue while importing wanted lists when there is no sublists.

New in 0.94 - Context Menu

  • Right clicking on a part or selection of parts will bring up a menu with a bunch of different options that look vaguely familiar.
  • Store total price, item quantity and lot quantity are displayed at the top of each store in the report.
  • Item images and names in the report are now links to the item in the respective Bricklink store.
  • 404 errors while downloading part images are no longer reported (because that was very annoying).
  • Fixed an issue reading Bricklink database files on some computers.
  • The price column will now display 3 decimal places, and the total column 2. Both columns will round to said decimal places.
  • The "Calculation Options" window is now called "Calculation Options".
Edited by mdoupe
added "BL" in the title to clarify it is BL stores

Share this post


Link to post
Share on other sites

Sweet, will try it out, thanks!

Edit: Aw, it requires using Brickstore to make a file to use. Oh well, I guess now I have to re-make my wishlist in Brickstore since I don't see an "Upload Wishlist" option in that program.

Edited by Henchmen4Hire

Share this post


Link to post
Share on other sites

Hi mdoupe and thanks for sharing your software.

If you want to use this topic as reference for Brickficiency, editing the first post and writing an introduction (a more schematic one at least) for it and a little guide (if you think it is necessary), I will index it. I suppose some images will be necessary.

You can use this topic to inform us of the updates of the software.

Share this post


Link to post
Share on other sites

Version 0.84 just posted with the following changes:

A price summary for each store has been added at the top of each match

The name of the report file was accidentally reverted back to Brickficiency-Output.html. This has been fixed.

Cleaned up the code somewhat to release. Because the source is open. Like the page says. Even though you couldn't download the source.

Collapsible sections in the html report now collapse on the first click. Thanks /r/javascript!

Added a progress bar

Fixed a bug where the part list was incomplete

Added ability to find 5 store combinations.

The part list in the report now sorts by number of stores the part is available from.

Added a workaround for the report not opening occasionally when the program exits. Please let me know if you experience this issue, as I have a hard time reproducing it.

Brickficiency no longer accepts any sort of shenanigans. Feeding it a list of 3 parts will no longer look for matches from 4 or more stores. Feeding it a list of 1 lot will call you silly and quit.

automatically merge lots that are the same (ie, if you have two listings for Brick, Round 2 x 2 it will combine them into one lot)

Share this post


Link to post
Share on other sites

Thanks for the nice and usefull program. I noticed however a few things that you maybe could add in a next version:

A "Back" button would be nice. Currently if you select a wrong file or no solution is found, there is only the "Quit" button. To go back to the previous stage would be great.

It should also be possible to copy&paste the result/error message. I for example get an error message "It appears that no stores that a> ship to you and b> are in your list of valid countries have this part." for a "Yellow Technic, LIftarm 1 x 6 Thin" but this part is available from a number of German shops that ship to German customers. But I have to type the whole error message into this post because I can't copy & paste this message.

A file open dialog that uses a file mask to show only supported *.bsx files.

Edited by reibuehl

Share this post


Link to post
Share on other sites

#1 and #3 are implemented in the next version.

#2 copying text is also implemented in the next version

I will look into why Yellow Technic, LIftarm 1 x 6 Thin is showing as unavailable in Germany. Is Yellow Technic, LIftarm 1 x 6 Thin the first item it tries to retrieve? I assume Bricklink is in German when you view it?

Share this post


Link to post
Share on other sites

Version 0.85 has been released.

It includes ability to Import wanted lists from Bricklink, save them as a .bsx and use them.

The generated report has more features, including bricklink wanted list XML for each store.

It will now skip lots that have no sources and list said skipped lots in the report instead of just quitting.

Share this post


Link to post
Share on other sites

Great news.

I tried to import a wanted list using list number, but the operation fails.

Then I tried to import using the list's name, and the operation was successful.

A pair of requests/questions:

- list of countries opens in browser, and it is very uncomfortable to add that.

- it would be very useful to have the chance to save "country groups", and maybe have some presets such as "EU" for European countries.

- Once I imported a wanted list, how can I export it?

- I'd like to import->export bricklink wanted lists without inserting a country and check the stores. Is it possible?

- what about importing more than one list simultaneously, or maybe all the list of a single user?

- the BL wanted list export procedure should allow to set some global parameters, such as list number, notification, new/used, ...

Share this post


Link to post
Share on other sites

Woops. I should probably take out the "or number" part. That didn't make the final cut. :P

yeah, the countries bit is cumbersome. Eventually that will be fixed.

As mentioned in the documentation: if you check the "Save to BrickStore file" and click import, a file called "Brickficiency-WantedListImport.bsx" is saved in the folder with the program. No need to run it through the store check. Also, if you do not specify a list name, it will import everything from all wanted lists.

Share this post


Link to post
Share on other sites
As mentioned in the documentation: if you check the "Save to BrickStore file" and click import, a file called "Brickficiency-WantedListImport.bsx" is saved in the folder with the program.

I'm not sure I've understood. Once I've created the bsx file (avoiding to check the shops), I can directly import it in bricklink? (another account, obviously). I've to make some other test! :classic:

Very interesting I can import all lists together! I've to check the function, it would be useful if the lists are imported separately.

EDIT: I did some other try and I've difficulties to obtain what I want.

Maybe because what I want is only an accessory feature for Brickficiency, so it is not implemented in a comfortable way.

Share this post


Link to post
Share on other sites

First, thank you for creating this program! If I empty my BrickLink "My Wanted List" and then upload the file below (a subset of a file created by Rebrickable) it validates OK in BrickLink. When I then run Brickficiency (ver 0.85) it logs into BrickLink and seemingly imports "My Wanted List" (I left "Wanted List Name or Number" blank) OK. However, when I click on the Continue button I get the error message "There appears to be a problem with the file. Missing info in part number 1." Is this a bug or user error? Thanks again.

<INVENTORY>
<ITEM>
 <ITEMTYPE>P</ITEMTYPE>
 <ITEMID>2431</ITEMID>
 <COLOR>3</COLOR>
 <MINQTY>2</MINQTY>
</ITEM>
<ITEM>
 <ITEMTYPE>P</ITEMTYPE>
 <ITEMID>2444</ITEMID>
 <COLOR>11</COLOR>
 <MINQTY>2</MINQTY>
</ITEM>
</INVENTORY>

Edited by Calabar
: "code" tags added.

Share this post


Link to post
Share on other sites

Hi There,

Excellent bit of software in theory.

Having some issues though, I want to import my wanted lists individually into a BSX file, logs in sucessfully, but it continually says 'Wanted List not found' after a minute or so. Doesn't seem to matter if I use a Name or a number. Does work if I import all of them but I don't want to do that.

Any ideas?

Share this post


Link to post
Share on other sites

just discovered this, can't wait to try it out. Will it work for a 200 lot (8000 piece) wanted list, or will my patience run out before it can find a result?

Share this post


Link to post
Share on other sites

Having some issues though, I want to import my wanted lists individually into a BSX file, logs in sucessfully, but it continually says 'Wanted List not found' after a minute or so. Doesn't seem to matter if I use a Name or a number. Does work if I import all of them but I don't want to do that.

I see you're in England. It's hard for me to test wanted list exports from other countries. I can go through open proxies on the internet, but I don't want to risk logging in with my personal seller account through a proxy. I've tried to contact Bricklink Admin about permission for a second account (both through bricklink and through twitter) as I believe having multiple accounts is against TOS. I've recieved no response.

The best suggestion I can give you is: for each wanted list you want to export, set the "remark" for all of the items on that list, and then export all. The remarks should show up in BrickStore so that you can sort them.

I'm not sure when this bug will be fixed. Does anyone know the best way to contact bricklink admin? (or have an in with them :P )

just discovered this, can't wait to try it out. Will it work for a 200 lot (8000 piece) wanted list, or will my patience run out before it can find a result?

It will work. it depends more on the rarity of the items on the list. if all lots are available from several hundred stores, it's going to take a long time. Whereas if there's an item on the list that's only available from a few stores, that cuts the number of potential matches down by a lot.

I find the most tedious part is waiting for it to download price guide info for 200 lots. My best advice is to start it and walk away for 10-20 minutes. :)

Edited by mdoupe

Share this post


Link to post
Share on other sites

Roger that, I'll try it out tonight when I get home and post my results sometime tomorrow. I am really looking forward to this (going to make the rest of my work day drag on now).

Share this post


Link to post
Share on other sites

It could not make a match of the parts I need with 5 sellers, but I am very impressed with the speed of this program. I just need to divide my wanted list into 2 halves and then I think I will be able to make a match. Will report back again.

Share this post


Link to post
Share on other sites

It could not make a match of the parts I need with 5 sellers, but I am very impressed with the speed of this program. I just need to divide my wanted list into 2 halves and then I think I will be able to make a match. Will report back again.

I'd recommend looking at the report html file (it is generated regardless of if it found any matches). It will give you a list of parts sorted by the number of valid stores it found.

I'd either:

a> make a couple orders to remove a few of those "rare" items from the list or

b> make sure the "rare" items at the top of that list are split evenly between your two wanted lists.

good luck!

Share this post


Link to post
Share on other sites

Firstly, thanks for making the program, its potential is excellent!!

Ok, so I've probably done something wrong, but it seemed to be working fine and then it gave me the html report and didn't do anything else. I used a BL wanted list upload and am using ver 0.85. Have I missed a step? Was I correct in thinking it should give me a list of stores to potentially purchase from? The html report is interesting to see what bricks are more/less available but without knowing what the stores it's a bit useless to me.... :wacko:

Any help much appreciated :laugh:

Edited by timmyc1983

Share this post


Link to post
Share on other sites

two things to check:

1. on the brickficiency window, are you sure it's finding matches? It will say either "Matches Found" or "Matches not found".

2. In the HTML report, there are +'s beside "2 Store Matches", etc. you have to click those +'s to expand whichever section to see the matches.

Hope that helps. :)

Edited by mdoupe

Share this post


Link to post
Share on other sites

I just tried the program and it works great. I found a few "problems" though:

  • It would be useful if I can (instead of selecting all the countries I want to query) select a few countries I don't want to query. For example, if I want to buy everywhere except America and Canada, at the moment I have to select all other countries.
  • Everytime I close the program, Windows says the program has is not responding/crashing. But it isn't, I just closed it :tongue:
  • When I open up a report and I open the matches, all matches are opened too. It is easier if they are all closed and I have to open them myself, that's easier to browse the matches.

But thanks for the program. It could save me a lot of money :wink:

Share this post


Link to post
Share on other sites

This is a very useful program thanks!

A few thoughts and observations:

1. Is it possible for the program to be updated to retrieve minimum order values? Occasionally it comes up with combinations that have just a few cheap bricks from one vendor which are below their minimum spend, it would be good if it could automatically discount those combinations.

2. The time it takes to find solutions seems to rise exponentially according to number of bricks and vendors, I am currently running the program on 61 types of bricks in various quantities from four vendors and it is taking hours compared with the minutes a three vendor solution takes. It seems that it analyses every possible permutation, so that a combination that is only a couple of bricks different from another already high priced solution will still be calculated. Is there any way the program can eliminate a whole range of combinations, and thus not spend time calculating them, based upon results of combinations already calculated? i.e. maybe it can eliminate all combinations that include a particular high priced vendor and not spend time calculating them?

Share this post


Link to post
Share on other sites

I have a great problem: i don't know where i'm wrong, but any list (bricklink wanted list or brickstore list) give me a solutions, also if in the list there a only 2 piece. It seems that there isn't ant store with the bricks or they don't ship to me.

I've put in the store list IT,FR,UK,DE,PL,HU,CZ,RO,ES,AT,DK,FI,LU,NL.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.