Bu proje, farklı Amazon pazarlarındaki ASIN’lerin alış-satış fiyatlarını, maliyetlerini ve kar oranlarını otomatik olarak hesaplayıp veritabanına kaydeden bir main worker ve Keepa worker ekosistemini içerir.
Proje hem büyük veri kümelerinde yüksek performans sağlayacak şekilde threading ile paralel çalışır, hem de farklı pazarlar için maliyet, kar ve döviz çevirimi hesaplarını optimize eder.
| Dosya | Açıklama |
|---|---|
main_worker.py |
ASIN bazlı işlem akışını yönetir, threading ile paralel işleme yapar, verileri main dataframe’de toplar ve sonuçları veritabanına yazar. |
keepaWorker.py |
Keepa verilerini işler, minimum alış fiyatını belirler, cost/profit/ratio hesaplamalarını yapar ve veritabanına kaydeder. |
MyMarketPlace.py |
Her pazar için API credentials, currency tipi ve shipping cost bilgilerini içerir. USD dışındaki pazarlarda kur çevirimi sağlar. |
MarketDB.py |
Veritabanı tablolarını temsil eder: • notcompleted: henüz işlenmemiş ASIN’ler • keepaexcel: Keepa verisi • completed_asin: tamamlanan ASIN’ler • completed_keepa: tamamlanan Keepa ASIN’leri • remote_completedX: İşlenmiş sonuçların kaydedildiği pazar bazlı tablolar |
| Alan | Açıklama |
|---|---|
| Title | Ürünün başlığı (Keepa veya Catalog’dan) |
| Asin | ASIN kodu |
| SalesRank | Satış sıralaması |
| Drop_Count | Son 30 günde satış sıralamasındaki düşüş sayısı |
| Buy_Price | Minimum alış fiyatı (FBA, FBM, Buy Box karşılaştırması ile seçilmiş) |
| Sale_Price | Minimum satış fiyatı (FBA, FBM, Buy Box karşılaştırması ile seçilmiş) |
| Ratio | Satış fiyatı / maliyet oranı |
| Cost | Toplam maliyet (alış fiyatı + shipping + sabit ek) |
| Profit | Kar (vergi, komisyon, paketleme dahil) |
| Profit_Percentage | Kar yüzdesi (Profit / Cost) |
| Sales_Info | Satış bilgisi (isteğe bağlı) |
| Date | Hesaplama tarihi |
| Fba_Seller_Count | Amazon tarafından satılan FBA satıcı sayısı |
| Is_Buybox_Fba | BuyBox kazanan FBA satıcı kontrolü (True/False) |
| Amazon_Current | Amazon’un kendi satış fiyatı |
| Lbs | Ürünün ağırlığı (pound cinsinden, cubic veya actual weight) |
| Error_Code | İşlem sırasında hata oluştu mu (True/False) |
- Keepa veya Catalog verisinden alınır.
- FBA, FBM, Buy Box fiyatları karşılaştırılır, en düşük seçilir:
Buy_Price = min(Buy_Price_BB, Buy_Price_FBA, Buy_Price_FBM)
- PackageDimensions varsa, volumetric weight veya actual weight hesaplanır:
lbs_cubic = (Height * Length * Width) / 135
lbs = max(lbs_weight, lbs_cubic)
- Keepa verisi kullanılır.
- Minimum satış fiyatı:
Sale_Price = min(Sale_Price_BB, Sale_Price_FBA, Sale_Price_FBM)
- Kur ve shipping eklenir:
Cost = (Buy_Price + Shipping_Cost + 1) * Currency_Rate
- Currency Rate USD dışı pazarlarda güncel döviz kuru olarak alınır.
- +1 sabiti, handling ve ek maliyetleri temsil eder.
Ratio = Sale_Price / Cost
- Minimum Ratio 1.5. Altındaki ASIN’ler işlem dışı bırakılır.
- Basit pazarlarda (US, CA, JA, AU):
Profit = Sale_Price - Referral_Fee - Pick_Pack_Fee - Cost
- AB pazarı (FR, DE):
Profit = (5/6) * Sale_Price - 1.2 * Referral_Fee - 1.2 * Pick_Pack_Fee - Cost
- UK pazarı:
Profit = Sale_Price - 1.2 * Referral_Fee - 1.2 * Pick_Pack_Fee - Cost
Profit_Percentage = Profit / Cost
- Hem tabloya yazılır, hem işlenmiş ASIN seçiminde kullanılır.
- Her ASIN ayrı thread ile işlenir.
- Thread grupları:
t1 = threading.Thread(target=get_Buy_Price)
t2 = threading.Thread(target=get_Sell_Price)
t3 = threading.Thread(target=calculate)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()- Bu yöntem, büyük veri setlerinde hesaplamaları hızlandırır.
| Kod | Açıklama |
|---|---|
| -8888 | Package Dimensions hatası |
| -777777 | Low Ratio |
| -666666 | Unauthorized |
| -555555 | Invalid Input |
| -444444 | Fees Estimate hatası |
| -333333 | Buybox Prices hatası |
| -222222 | Lowest Prices hatası |
| -111111 | Credential yok |
- Hata oluşan ASIN’ler
Error_Code = Trueolarak işaretlenir ve bir sonraki işlemde tekrar değerlendirilmez.
-
Keepa verisi alınır (
Buy_Price_FBA,Buy_Price_FBM,Buy_Price_BB). -
Minimum fiyat hesaplanır.
-
Target pazar fiyatları alınır (
Sale_Price_FBA,Sale_Price_FBM,Sale_Price_BB). -
Maliyet, Ratio, Kar ve Kar Yüzdesi hesaplanır.
-
Veriler veritabanına güncellenir:
remote_completedXtablosuna insert/updateremote_keepaexcelXtablosundan silme
buy_prices = [price_bb, price_fba, price_fbm]
buy_price = min([p for p in buy_prices if p > 0])cost = (buy_price + shipping_cost + 1) * currency_rate
profit = sale_price - referral_fee - pick_pack_fee - cost
ratio = sale_price / cost
profit_percentage = profit / costthreads = []
for func in [get_Buy_Price, get_Sell_Price, calculate]:
t = threading.Thread(target=func)
t.start()
threads.append(t)
for t in threads:
t.join()- Main Worker: ASIN’leri paralel işleyip matematiksel hesaplamaları yapar.
- Keepa Worker: Keepa verilerini toplar, minimum fiyatı seçer ve profit/cost hesaplar.
- Matematik: Cost, Profit, Ratio ve Profit_Percentage tüm pazarlar için optimize edilmiştir.
- Threading: Her ASIN ayrı thread ile işlenir; büyük veri kümelerinde yüksek performans sağlar.
- Veritabanı: İşlenmiş veriler
completedtablolarına yazılır, Keepa tablosu temizlenir, Error_Code kontrolü ile güvenli işleme yapılır.