#318 multiple price providers

Feature
closed
nobody
None
1
2014-05-17
2014-02-24
kannerke
No

bottemline feature request:
1. be able to display multiple prices for each card (to easily determine the cheapest shop)
2. be able to easily add price providers (plugin mechanism or xml files)
3. be able to display prices in different currencies (EUR/USD)

would it be possible to add multiple "dbprice" entries in the xml file to hold prices of multiple providers? And to select which currency to use $/€?

I would suggest an extra folder PriceDB with files holding the prices for different cards. e.g. PriceDB/TCGPlayer.xml holding prices of TCGPlayer. The mapping can easily be done using the card id. In the header, the used currency can be listed.
<prices>
<name>TCG Player mid</name>
<comment></comment>
<curr>USD</curr>
<list>
<mp>
<id></id>
<dbprice></dbprice>
</mp>
...
</list>
</prices>
or a subfolder for each seller and an xml file per set
PriceDB/TCGPlayer/Tempest.xml
PriceDB/TCGPlayer/Stronghold.xml
PriceDB/TCGPlayer/Exodus.xml
...

I'm still struggling how to do deal with different prices: low, mid, high, foil, ...

No special UI is required for this. It would be nice if it would be possible to drop xml's in a specific folder to get them included.

When I have some time, I'd like to take a look at your price provider code to add some providers. Can you make a mini tutorial to explain the mechanism of your code? that way I can adjust the code more quickly. Just a small overview of what formats are expected (description of input and output objects).

In the meanwhile, I can easily generate xml files ywith my own code and it would be nice if it would be possible to add them to your pool using the xml files and to be able to display multiple prices for each card.

Discussion

  • kannerke
    kannerke
    2014-02-24

    I forgot the synthax for the code:

    <prices>
    <name>TCG Player mid</name>
    <comment></comment>
    <curr>USD</curr>
    <list>
      <mp>
        <id></id> <!-- = card id -->
        <dbprice></dbprice>
      </mp>
      ...
    </list>
    </prices>
    </pre>
    
     
  • I am not sure what is suggested UI? If I don't change columns what price is shown in the SPrice column. You can currently do an import of the prices from csv file but it won't change on the fly. The easiest way to store it is actually use current storage mechanism because I can store property with dynamic keys in the card. But storing them separately is more "right" because this info is kind of external to database itself...
    Anyway it is not hard to do except I still now sure what UX is.
    Regarding $/EU is harder because I really don't want to engage with another web api to get conversion rate...

     
  • kannerke
    kannerke
    2014-02-24

    I would set the conversion rate as a preference (user defined).

    What do you mean with "I am not sure what is suggested UI?" UI = User Interface?

    The UX is that you can quickly change between price providers and compare them: now, You can only store 1 price provider/dbprice and when you switch, you need to update the prices again.

     
  • kannerke
    kannerke
    2014-02-24

    suggestion for the different prices: adding a type:

    <name>TCG Player</name>
    <type>mid</type>
    ...
    

    types could be: low, mid, high, foil

     
    Last edit: kannerke 2014-02-24

  • Anonymous
    2014-02-24

    So leave everything as is UX wise, but selected price provider would also mean it will
    load cached prices for this provider?
    And need a preferences to show currency and exchange rate

     

  • Anonymous
    2014-02-25

    That would be a nice first version.
    The info about the provider should be read from the file system: When I create a folder 'Provider1' in 'PriceDB', I should be able to choose this provider. The contents of the folder should be pre-defined. e.g. set_name.xml containing the above xml structure.

    Would it be hard to have multiple columns?
    The displayed provider can be set afterwards,
    if this would make thing easier (some kind of 'generic' colomns)
    The name of the column could be: 'Provider - type'

    If would also be nice if it is possible to create provider plugins in order to create or update the xml files from MagicAssistant.

     
    Last edit: Anonymous 2014-02-25
  • I posted a version that has this functionality on beta site, what I implemented is:
    - prices now are stored per provider in magiccards/MagicDB/prices/MangledName.xml
    - format of this file is like this

    <name>TCG Player (Medium)</name>
    <comment></comment>
    <type>dbprice</type>
    <list>
    <mc>
      <id>129774</id>
      <dbprice>2.23</dbprice>
    </mc>
    ...
    </list>
    

    where id is the id of card in magic assistant, which is most cases is gatherer id
    this is mostly internal format, not really intended to be used as import, however I implemented a feature that will check for new providers if appear to be in this directory and it will be added along with prices (and it will appear in providers list)
    MangledName - is name of provider where all non alphanum chars in name replaces with _, i.e. in this case name is TCG_Player__Medium_.xml

    • when user select a new provider prices which are shown in Sellers column are auto-reloaded (but due to bug it is not display immediately, so you may have to press refresh action on the view to update them)

    • I fixed the import into database, so you can use any import format to update prices in database using import/extend db feature. In this case prices will be update for currently selected provided.

     
    Last edit: Alena Laskavaia 2014-03-19
  • kannerke
    kannerke
    2014-03-20

    Thank you for this great addon!

    Is is already possible to add multiple xml files to the folder? e.g. 1 file per set?
    I hope I can try this feature this evening. I'll create an xml file for testing.

     
  • kannerke
    kannerke
    2014-03-21

    I don't think supporting multiple files should be very dificult: You could just import all xml files in the price provider's folder. The only requirement is that the xml's should be formatted as described. No need to make agreements on set name's etc. Multiple smaller collections/files seems easier to manage to me.

     
  • kannerke
    kannerke
    2014-03-21

    When I try to add my list, I get the following error:

    An internal error occurred during: "Loading prices (To view enable Price columns)".
    This custom price provider Kannerke () does not support interactive update

    Both Price and Seller Price columns are visible.
    My list (Kannerke()) was also listed; but when I try to update the prices, I get the above error.

     
  • kannerke
    kannerke
    2014-03-21

    I think my prices are loaded anyway.

    A next step can be:
    a folder per Provider instead of one file. (to support multiple files)
    USD and EUR currencies (with user defined ratio's)

     
    Last edit: kannerke 2014-03-21

  • Anonymous
    2014-03-21

    The error is expected because there is no interactive update from the web as for provider written in the software, if I have feature to specify url - loading would refresh prices from that url instead of doing nothing like right now.

    I don't really see a point supporting multiple files per provider, the size of file even if we have ALL cards would be small (in our days). Technically though I just need to remove one line of code to have multiple file support.

    The currency is next

     


Anonymous


Cancel   Add attachments