Code Monkey home page Code Monkey logo

pymkm's Introduction

๐Ÿ“™ PyMKM

โ— Cardmarket API down, this app and API wrapper won't work until they reopen it

Python application codecov

See the Changelog for what's new. See the Trello board for ongoing work. Hop in on the Discord server if you want help or to discuss development.

ko-fi

Python wrapper for the cardmarket.com API (version 2.0, using OAuth1 and the "Dedicated app" option).

The included sample app can update your stock prices to trend, all rounded to nearest configurable value per rarity (default .25 โ‚ฌ). A confirmation step allows you to check the result before uploading the new prices.

The app can import a .csv list of cards to your stock. It can also be used to clear your entire stock. The app keeps track of how many API requests your have left each day, and can do partial updates if you have more than 5000 articles to update.

The price calculation is modular and you can write your own algorithm in python if you want.

NOTE: Use all functionality at your own risk, I take no responsibility for the resulting prices or wiped stock. See 'price calculation' below for more details.

Fetching Cardmarket account data...
Fetching account data took 0s
โ•ญโ”€โ”€โ”€ PyMKM 2.3.0 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ 1: Update stock prices (24 items)              โ”‚
โ”‚ 2: Update price for a product                  โ”‚
โ”‚ 3: Find deals from a user                      โ”‚
โ”‚ 4: Show top 10 expensive items in stock        โ”‚
โ”‚ 5: Wantslists cleanup suggestions              โ”‚
โ”‚ 6: Clear partial updates                       โ”‚
โ”‚ 7: Clear entire stock                          โ”‚
โ”‚ 8: Import stock from list.csv                  โ”‚
โ”‚ 9: Track price data to prices.csv              โ”‚
โ”‚ 0: Exit                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Testa Testerson (testerson123)                 โ”‚
โ”‚ API calls used today: 69/5000                  โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Action number: 1
100% (74 of 74) |#########################################| Elapsed Time: 0:00:21 Time:  0:00:21
Total stock value: 49.25
Note: 2 items filtered out because of sticky prices.

Best diffs:

  Count  Name             Foil    Playset      Old price    New price    Diff
-------  ---------------  ------  ---------  -----------  -----------  ------
      1  Manaweft Sliver                            1.25          1.5    0.25

Worst diffs:

  Count  Name                              Foil    Playset      Old price    New price    Diff
-------  --------------------------------  ------  ---------  -----------  -----------  ------
      1  Shield of the Oversoul                                      1            0.75   -0.25
      1  Battle Sliver                             โœ“                 1            0.75   -0.25
      2  Predatory Sliver                          โœ“                 2            1.75   -0.25
      1  Kalemne, Disciple of Iroas (V.1)                            0.75         0.5    -0.25
      1  Foreboding Ruins                                            1.5          1.25   -0.25

Total price difference: -1.25.
Do you want to update these prices? [y/N]:

๐Ÿ”จ How

  1. Install requirements using pip install -r requirements.txt
  2. Copy config_template.json to config.json and fill in your API keys.
  3. Run python pymkm.py.
  4. Profit.

๐Ÿ“ˆ Price calculation

The price data is supplied by the Cardmarket API. This app contains a basic algorithm for updating prices:

NOTE: This is a rough algorithm, designed to be safe and not to sell aggressively.

  1. Filter out English, not altered, not signed, minimum Good condition.
  2. Set price to lowest + (median - lowest / 4), rounded to closest rouding limit.
  3. Undercut price in seller's own country by the rounding limit if not contradicting 2)
  4. Never go below the rounding limit for foils

Base prices (โ‚ฌ) and discounts for lower grading (decimal %) can be set in config.json.

You can also create your own custom price calculation algorithm by using the config value custom_price_calculator (see details below).

๐Ÿ”“ Locking prices

Should you want to avoid updating certain articles in your stock, set the starting character of the comment for that article to ! (possible to change which character in config.json).

๐Ÿ’ฒ Price checking wantslist to .csv

This function selects a wantslist and dumps price data for all products in that list to a .csv file.

NOTE: This does not work for metaproducts, only for products.

๐Ÿ‘ฉโ€๐Ÿ’ป CLI

Some functions have command line support, see python pymkm.py --help for more info. Note that the --cached or --no-cached argument is required to set to be able to use CLI variant of pymkm.

Example 1

python pymkm.py --update_stock --partial 500 --cached

This updates the stock, 500 articles each time, using the local cache of the stock if available.

Example 2

python pymkm.py --price_check_wantslist fancycards --no-cached

This dumps price data for all the cards in the wantslist "fancycards" to a .csv file, not using the local cache of the wantslists.

๐Ÿ“„ CSV importing

If you scan cards using an app like Delver Lens or the TCG Player app, this feature can help you do bulk import of that list. Only works for Magic.

Drop your list of cards into a file called list.csv in the root directory (there is an example file included in this repo).

Remove all quotation marks and extra commas in card names.

Any cards that fail to import are written to a new .csv file called failed_imports.csv.

Configuration of CSV import

The following columns are imported as default. This can be changed in config.json.

Note that you can only remove or move around columns, not add ones that are not present in the list below!

  • name: Card name, i.e. "Temple of Silence"
  • set_name: Expansion "long name", i.e. "Scars of Mirrodin"
  • count: Number of cards to be imported for this row
  • foil: Is the card foil? ["foil" = true, empty column = false]
  • language_name: Language long name, i.e. "English". For a list of compatible langauge names, see idLanguage chapter in this README.
  • condition: The card condition as per Cardmarket's grading (see minCondition chapter in this README).
  • comments: The comments to add to the article in your stock.

The following columns are available but not enabled by default:

  • signed: Is the card signed? [any string = true, empty column = false]
  • altered: Is the card altered? [any string = true, empty column = false]
  • playset: Is the card a playset? [any string = true, empty column = false]

โš™๏ธ Config parameters

custom_price_calculator

This can be used to load in a custom price calculation module. Here is an example config value for addressing your custom class:

"custom_price_calculator": "custom.calculators.DiscountForGoblinsCalculator",

Use the supplied example class to get started. Look at DefaultPriceCalculator in pymkm_calculators if you want to study the default algorithm.

price_limit_by_rarity

Set a lower price limit (and also rounding target) for different rarities. Example: "mythic": "1.0" would set the lowest price Mythic rarity cards to โ‚ฌ1, and would set prices to round to nearest โ‚ฌ1.

discount_by_condition

Set a decimal multiplier on each card condition level. Example: "PL": "0.5" would set the price for Played cards to 50% off the trend price.

search_filters

Variable Value
language Specify a language to find deals from a specific user.
isAltered Determines if the card is altered.
isSigned Determines if the card is signed.
minCondition Determines the minimal condition of a card. (see below for additional information)
userType Only articles from sellers with the specified user type are returned. (private, commercial, powerseller)
idLanguage Only articles that match the given language are returned. (see below for additional information)

minCondition

Abbreviation Condition
MT Mint
NM Near Mint (default value when not specified)
EX Excellent
GD Good
LP Light-played
PL Played
PO Poor

idLanguage

ID Language
1 English
2 French
3 German
4 Spanish
5 Italian
6 Simplified Chinese
7 Japanese
8 Portuguese
9 Russian
10 Korean
11 Traditional Chinese

sticky_price_char

The character in the card comment used to disable price updates for specific cards. Default !.

partial_update_filename

The name of the file storing partial updates. Default partial_stock_update.txt.

local_cache_filename

The name of the database file storing cached data. Default local_pymkm_data.db.

csv_import_filename

The name of the file which CSV importing is done from. Default list.csv.

csv_import_default_condition

The default condition for all CSV import rows that are not specified in the csv file. Default NM.

show_num_best_worst_items

How many best and worst items to show after a price update. Default 20.

show_top_x_expensive_items

How many items to show in the Top X expensive function. Default 20.

log_level

Log level for the application and API. Default WARNING.

stock_settings

Variable Value
idGame Specifies the Game the stock file is for. (1=Mtg, 3=YGO, 6=PKM)
isSealed Specifies if sealed product should be returned. (true, false)
idLanguage Specifies the Language of the Local Name column. (default is 1 for English)

pymkm's People

Contributors

andli avatar caliendojulien avatar callj avatar morphclue avatar rakorea avatar shantu58 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pymkm's Issues

Need help installing

Context

Sorry Andreas but im a noob :) I hope you can help me. I installed python i tried to run the pip install command but its not working.
Do i need to put your pymkm-master files inside the python instal path? IDK sorry for this and thanks in advance :)

Web-based UI

Greeting @andli ,

First of all, very nice tool, for quite some time I want to start something similar.
However, I always imagine something with web-bases UI client, using Django maybe.
Are you interested in start something similar that can work as top layer connected to cardmarket API where a user can better managing his store?

Best regards,
Andrรฉ Cardoso

Feature Request

Hey,

after some time using your amazing tool, I have a feature suggestion that would really help imo:

Generally, most calculated prices are close enough to what I would manually set. However that is not the case for cards in really bad condition. It would be awesome to be able to set discounts based on condition in the config.json, e.g. 10% lower price for GD, 20% for LP and so on.

Just a suggestion, thank you again for your work!

Bug with Yugioh cards

When updating stock prices, app crash with error message :

File "C:\Users\Calie\Documents\pymkm\pymkm_app.py", line 618, in get_article_with_updated_price
article['isFoil'],
KeyError: 'isFoil'

Yugioh Cards don't have 'isFoil' attribute :
{'idArticle': 530741424, 'idProduct': 369122, 'language': {'idLanguage': 2, 'languageName': 'French'}, 'price': 1, 'count': 1, 'product': {'idGame': 3, 'enName': 'Dark Magician', 'locName': 'Magicien Sombre', 'image': '/srv/home/www/img/items/5/SS01/369122.jpg', 'expansion': 'Speed Duel Starter Decks: Destiny Masters', 'nr': 'A01', 'expIcon': '3', 'rarity': 'Common'}, 'isSigned': False}

Import from list.csv

Context

The language of imported cards are changed to "French".

Steps to Reproduce

Steps to reproduce the behavior:

  1. Create my list.csv
  2. Content of my list.csv:

Card,Set Name,Quantity,Foil,Language
Heliod's Pilgrim,Theros Beyond Death,1,,English
Dreadful Apathy,Theros Beyond Death,1,,English
Indomitable Will,Theros Beyond Death,1,,English
Triumphant Surge,Theros Beyond Death,1,,English
Pious Wayfarer,Theros Beyond Death,1,,English

  1. Select "8: Import stock from list.csv"

Expected result

Cards imported to Cardmarket should be in English Language.

Actual result

Cards imported to Cardmarket are in French Language

OS

Ubuntu 18.04 // Python 3.8.7
PyMkm 2.3.0

Possible Fix

References

Problem with inserting stock

When I try to use your script I cannot insert any stock.
I looked at the reponse and cardmarket returns, for example:

r.content
b'{"inserted":[{"success":false,"tried":{"idProduct":"2767","idLanguage":"1","count":"1","comments":"a","price":"0.13","condition":"nm","isFoil":"false","amount":"1"},"error":"An error has ocurred, the card has NOT been listed."}]}'

So it says success is dalse, and the error is just "An error has ocurred, the card has NOT been listed".
Does the code work on your side?

Error when updating prices with custom rounding prices

Hello,

On a Windows 10 with Python 3.7.4, I got the error below when updating my stock price with custom rounding prices.

Traceback (most recent call last):
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 379, in get_rounding_limit_for_rarity
    self.config['price_limit_by_rarity'][rarity.lower()])
KeyError: 'land'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\main.py", line 19, in <module>
    main()
  File ".\main.py", line 15, in main
    app.start()
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 71, in start
    menu.show()
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\micro_menu.py", line 34, in show
    func(**kwargs)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkmapi.py", line 25, in wrapper
    return_value = func(*arg, **kwargs)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 77, in update_stock_prices_to_trend
    uploadable_json = self.calculate_new_prices_for_stock(api=self.api)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 345, in calculate_new_prices_for_stock
    article, api=self.api)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 362, in get_price_for_single_article
    article['idProduct'], article['product']['rarity'], article['isFoil'], language_id=article['language']['idLanguage'], api=self.api)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 387, in get_price_for_product
    rounding_limit = self.get_rounding_limit_for_rarity(rarity)
  File "C:\Users\Romain\Desktop\pymkm-master - Copie\pymkm-master\pymkm_app.py", line 381, in get_rounding_limit_for_rarity
    print(f"ERROR: Unknown rarity for {r}. Using default rounding.")
NameError: name 'r' is not defined
100% (1709 of 1709) |############################################################| Elapsed Time: 0:02:20 Time:  0:02:20

Best,

Romain

import from csv failed

Unfortunately, import from csv don't work even after last fix.

Most failures are due to mismatching set names or multiple versions of cards.

Error happen with list.csv in the repo :(

Sometimes not all price updates are applied

As you asked me to open a seperate issue, here it is :)

Sometimes not all price updates shown in the best/worst diffs list are actually applied. Not sure how to reproduce this. I just updated 3000 products and printed the 30 best diffs. Out of those, 6 prices were not updated to the printed new value.
I'm pretty sure this happened in the old version too.

seems to happen only when a lot of prices have to get updated, maybe an issue with the chunking to 100 at a time?

Action nr 4 error

Hello,

I get this error while executing action numeber 4:

Action number: 4
Traceback (most recent call last):
File "main.py", line 539, in
main()
File "main.py", line 73, in main
show_top_expensive_articles_in_stock(20, api=api)
File "/home/redhat/pymkm/pymkm.py", line 29, in call
return_value = self.function(*arg, **kwargs)
File "main.py", line 438, in show_top_expensive_articles_in_stock
[article['product']['enName'], article['product']['expansion'], u'\u2713' if article['isFoil'] else '', article['language']['languageName'] if article['language'] != 1 else '', article['price']])
KeyError: 'expansion'

Running python3 on:
Linux belatrix 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13) x86_64 GNU/Linux

First time user experience

Hey there!
I just stumbled upon and tried out your tool for the first time, awesome work! I will thoroughly try it out over the next days :)
I noticed some very minor errors that i was able to fix by myself but i thought I'd let you know:

First I tried importing a CSV file (my main use case is importing lists created with Delver Lens. I got the following error:
pymkm
I just included a static False in the get_price_for_product call, which fixed the issue.

For missing rarities I guess I can just add them in the config.json right? I would suggest adding all the missing rarities in the provided template for ease of use.
image

Best wishes!

Failed CS

Context

Tried to import the following list.csv (Master branch):

Card,Set Name,Quantity,Foil,Language
Tormented Soul,Magic 2012,1,,German

Steps to Reproduce

Steps to reproduce the behavior:

  1. update your list file to the above mentioned
  2. Use option 9, import stock
  3. Success!
  4. Card does not appear in stock

Expected result

Card is listed as usual

Actual result

Nothing happened

OS

Ubuntu 20.04

Error - <Response [403]

Hi,

thanks for the tool.
I getting this error:
pymkm.pymkmapi - ERROR - <Response [403]> for https://api.cardmarket.com/ws/v2.0/output.json/account

Could you please help?

Error while search for deals from user

Hi,

Today I got this error while trying to search for some deals:

Searching top X expensive cards for deals, choose X (1-539):
300
 25% (76 of 300) |#########################################                                                                                                                         | Elapsed Time: 0:00:25 ETA:   0:01:17Traceback (most recent call last):
  File "main.py", line 19, in <module>
    main()
  File "main.py", line 15, in main
    app.start()
  File "/Users/ruben/Downloads/pymkm/pymkm_app.py", line 97, in start
    menu.show()
  File "/Users/ruben/Downloads/pymkm/micro_menu.py", line 38, in show
    func(**kwargs)
  File "/Users/ruben/Downloads/pymkm/pymkmapi.py", line 25, in wrapper
    return_value = func(*arg, **kwargs)
  File "/Users/ruben/Downloads/pymkm/pymkm_app.py", line 232, in find_deals_from_user
    expansion = p['product']['expansion']['enName']
KeyError: 'expansion'

Thanks for the great tool!

Updating part of the stock

Hi! As I've been listing more and more cards, I recently exceeded 5000 different products so I'm running out of API-requests. Is there a way I can update only part of the stock with option 1? Like the first 4000 products one day and the rest on the next day?
This may not be relevant for most users so if I can add those limits to my local code that would help a lot already. Thanks for your great work once again!

Issue with List Competition for Card

Hi,
Might be user error but I follow the example in your readme for hydroid I get the following error:
Action number: 3
Search card name:
hydroid
Foil? [y/n]:
n
Traceback (most recent call last):
File "main.py", line 19, in
main()
File "main.py", line 15, in main
app.start()
File "D:\Temp\PYMKM2\pymkm_app.py", line 65, in start
search_string, is_foil, api=self.api)
File "D:\Temp\PYMKM2\pymkmapi.py", line 25, in wrapper
return_value = func(*arg, **kwargs)
File "D:\Temp\PYMKM2\pymkm_app.py", line 191, in list_competition_for_product
product = products[0]
IndexError: list index out of range

(base) D:\Temp\PYMKM2>
(base) D:\Temp\PYMKM2>

Using Python 3.7.1 anaconda environment

I've managed to get the get_product working but not this piece.
Apologies if user error.

0.25 cent Minimum?

Hi @andli, thanks for this nice tool. I have a small issue though:

From the docs I understood that the tool would use the trend price provided by the cardmarket.

I am using PyMKM 1.0.2 and recently ran an "Update stock prices" for the first time. Unfortunately, the minimum price that is set by the tool seems to be 0.25 cent, for all sorts of cards which is not really competitive, especially for non-foil commons with a trend price of e.g. 0.03 cent.

Could this be a bug or am I missing something?

Screenshot 2019-07-22 at 17 37 17

Problematic import niche cases

I found a few niche cases of cards not working when imported from CSV. Names that are less than 4 characters long:
Fog,Seventh Edition,1,,English

And cards that have a "," in their name:
Inner Calm, Outer Strength,Saviors of Kamigawa,1,,English

Not worth fixing probably, as these cases are pretty rare. Just for your info :)

Need beta testers for pymkm 2.0.0

Context

I need people who have large stocks to test the new much faster pymkm.

Please get in touch here if you are interested. Checkout the async branch and try it out!

CSV Import

I got an error when importing card from list.csv

Action number: 7
Note the required format: Card, Set name, Quantity, Foil, Language (with header row).
Cards are added in condition NM.
N/A% (0 of 10) | | Elapsed Time: 0:00:00 ETA: --:--:--Traceback (most recent call last):
File "main.py", line 545, in
main()
File "main.py", line 89, in main
import_from_csv(api=api)

File "main.py", line 133, in import_from_csv
product_match[0]['idProduct'], foil, langauge_id, api)
File "C:\Users\CJ\Downloads\pymkm-master\pymkm.py", line 29, in call
return_value = self.function(*arg, **kwargs)
File "main.py", line 393, in _get_price_for_product
r = api.get_product(product_id)
AttributeError: 'int' object has no attribute 'get_product'

list.csv is :
Card,Set Name,Quantity,Foil,Language
brain pry,Dissension,1,,French
court hussar,Dissension,3,,French
flaring flame-kin,Dissension,1,,French
mistral charger,Dissension,1,,French
prahv, spires of order,Dissension,2,,French
sky hussar,Dissension,2,,French
slithering shade,Dissension,1,,French
stoic ephemera,Dissension,1,,French
transguild courier,Dissension,1,,French

Price update crashes on special character

Context

When the stock contains this card: https://www.cardmarket.com/de/Magic/Products/Singles/2006-Player-Cards/Carlos-Romao
the whole script crashes and no prices get updated

Steps to Reproduce

Steps to reproduce the behavior:

  1. Add https://www.cardmarket.com/de/Magic/Products/Singles/2006-Player-Cards/Carlos-Romao to your stock (ArticleID: 874687504)
  2. Use option 1, update stock prices
  3. App crashes
  4. See error pymkm.pymkmapi.CardmarketError: {'error': 'Invalid POST data.'}

Expected result

If the special char cannot be used for the stock update, a graceful handling without crashing the whole update would be great

Actual result

crash, no prices updated but articles are written to partial_update anyway

OS

Ubuntu 20.04

Clean up suggestion is not working

Context

Option 6 6: Wantslists cleanup suggestions crashes

Expected result

Avoid a crash

Actual result

(3.6.9/envs/pymkm) โžœ  pymkm git:(master) โœ— python pymkm.py
โ•ญโ”€โ”€โ”€ PyMKM 2.0.4 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ 1: Update stock prices                                 โ”‚
โ”‚ 2: Update price for a product                          โ”‚
โ”‚ 3: List competition for a product                      โ”‚
โ”‚ 4: Find deals from a user                              โ”‚
โ”‚ 5: Show top 20 expensive items in stock                โ”‚
โ”‚ 6: Wantslists cleanup suggestions                      โ”‚
โ”‚ 7: Show account info                                   โ”‚
โ”‚ 8: Clear entire stock (WARNING)                        โ”‚
โ”‚ 9: Import stock from list.csv                          โ”‚
โ”‚ 10: Track price data to prices.csv                      โ”‚
โ”‚ 0: Exit                                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ API calls used today: 1073/5000                        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Action number: 6
This will show items in your wantslists you have already received.
Gettings wantslists from Cardmarket...
Wantslists cached (21 items).
Wantslists_Lists cached (21 items).
Gettings received orders from Cardmarket...
Matching received purchases with wantslists...
N/A% (0 of 179) |                                                                                                                                          | Elapsed Time: 0:00:00 ETA:  --:--:--Traceback (most recent call last):
  File "pymkm.py", line 51, in <module>
    main()
  File "pymkm.py", line 46, in main
    app.start(args)
  File "/Users/guillaume/dev/pymkm/pymkm/pymkm_app.py", line 184, in start
    break_signal = menu.show()
  File "/Users/guillaume/.pyenv/versions/3.6.9/envs/pymkm/lib/python3.6/site-packages/micromenu.py", line 48, in show
    func(**kwargs)
  File "/Users/guillaume/dev/pymkm/pymkm/pymkm_app.py", line 787, in clean_purchased_from_wantslists
    "wantlist_name": wantslists[key],
IndexError: list index out of range

Possible Fix

pymkm/pymkm_app.py:785 needs a better wantlist lookup

KeyError: 'isFoil'

Hello

First of all, thank you. I learned alot of your code :-).

I have a problem, that i sadly can not resolve by myself and i hope for a input from a kind soul.
pymkm tool gives me always a KeyError: 'isFoil'. I tried different Index (1.1; 1.41; 1.42) and always get the KeyError on Win10 and Win7. I also tried the "Hack" in the code, but it didnt help.

In the Attachments is my Python Shell.

PythonShellKeyError

I did not try everything in the tool, but everything else seems to work wonderfull.

Problem in all option

hi, i have this problem, when I go to click on one of the options
Action number: 4
Traceback (most recent call last):
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\main.py", line 19, in
main()
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\main.py", line 15, in main
app.start()
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\pymkm_app.py", line 97, in start
menu.show()
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\micro_menu.py", line 38, in show
func(**kwargs)
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\pymkmapi.py", line 25, in wrapper
return_value = func(*arg, **kwargs)
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\pymkm_app.py", line 202, in find_deals_from_user
self.report("find deals from user")
File "C:\Users\Samuele\Desktop\Samuele\pymkm-master\newpymkm\pymkm_app.py", line 48, in report
if ALLOW_REPORTING and not self.config['dev_mode']:
KeyError: 'dev_mode'
how i can resolve this error?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.