Improve Lorcana card data parsing - add comprehensive field mapping and debugging
This commit is contained in:
parent
dbb0353def
commit
ee67b05e28
1 changed files with 102 additions and 90 deletions
|
|
@ -294,28 +294,32 @@ export const lorcanaService = {
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const proxyData = await response.json();
|
const proxyData = await response.json();
|
||||||
|
console.log('🔍 Proxy API response:', JSON.stringify(proxyData, null, 2));
|
||||||
|
|
||||||
if (proxyData.success && proxyData.data) {
|
if (proxyData.success && proxyData.data) {
|
||||||
const cards = proxyData.data.cards || proxyData.data.data || proxyData.data || [];
|
const cards = proxyData.data.cards || proxyData.data.data || proxyData.data || [];
|
||||||
|
|
||||||
if (cards.length > 0) {
|
if (cards.length > 0) {
|
||||||
console.log(`✅ Found ${cards.length} Lorcana cards via proxy (${proxyData.source})`);
|
console.log(`✅ Found ${cards.length} Lorcana cards via proxy (${proxyData.source})`);
|
||||||
|
console.log('🔍 First card structure:', JSON.stringify(cards[0], null, 2));
|
||||||
|
|
||||||
return cards.map((card: any) => ({
|
return cards.map((card: any) => ({
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
@ -336,27 +340,31 @@ export const lorcanaService = {
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
console.log('🔍 Direct API response:', JSON.stringify(data, null, 2));
|
||||||
|
|
||||||
const cards = data.cards || data.data || data || [];
|
const cards = data.cards || data.data || data || [];
|
||||||
|
|
||||||
if (cards.length > 0) {
|
if (cards.length > 0) {
|
||||||
console.log(`✅ Found ${cards.length} Lorcana cards from direct Lorcana API`);
|
console.log(`✅ Found ${cards.length} Lorcana cards from direct Lorcana API`);
|
||||||
|
console.log('🔍 First card structure:', JSON.stringify(cards[0], null, 2));
|
||||||
|
|
||||||
return cards.map((card: any) => ({
|
return cards.map((card: any) => ({
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
@ -382,27 +390,31 @@ export const lorcanaService = {
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
console.log(`🔍 Lorcast API response from ${endpoint}:`, JSON.stringify(data, null, 2));
|
||||||
|
|
||||||
const cards = data.cards || data.data || data || [];
|
const cards = data.cards || data.data || data || [];
|
||||||
|
|
||||||
if (cards.length > 0) {
|
if (cards.length > 0) {
|
||||||
console.log(`✅ Found ${cards.length} Lorcana cards from Lorcast ${endpoint}`);
|
console.log(`✅ Found ${cards.length} Lorcana cards from Lorcast ${endpoint}`);
|
||||||
|
console.log('🔍 First card structure:', JSON.stringify(cards[0], null, 2));
|
||||||
|
|
||||||
return cards.map((card: any) => ({
|
return cards.map((card: any) => ({
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
@ -442,22 +454,22 @@ export const lorcanaService = {
|
||||||
const card = cards[0];
|
const card = cards[0];
|
||||||
console.log(`✅ Found Lorcana card "${name}" via proxy (${proxyData.source})`);
|
console.log(`✅ Found Lorcana card "${name}" via proxy (${proxyData.source})`);
|
||||||
return {
|
return {
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
@ -483,22 +495,22 @@ export const lorcanaService = {
|
||||||
const card = cards[0];
|
const card = cards[0];
|
||||||
console.log(`✅ Found Lorcana card "${name}" from direct Lorcana API`);
|
console.log(`✅ Found Lorcana card "${name}" from direct Lorcana API`);
|
||||||
return {
|
return {
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
@ -530,22 +542,22 @@ export const lorcanaService = {
|
||||||
const card = cards[0];
|
const card = cards[0];
|
||||||
console.log(`✅ Found Lorcana card "${name}" from Lorcast ${endpoint}`);
|
console.log(`✅ Found Lorcana card "${name}" from Lorcast ${endpoint}`);
|
||||||
return {
|
return {
|
||||||
id: card.id || card.uuid || `lorcana-${Math.random()}`,
|
id: card.id || card.uuid || card.card_id || `lorcana-${Math.random()}`,
|
||||||
name: card.name,
|
name: card.name || card.card_name || card.title || '',
|
||||||
set_name: card.set?.name || card.set_name || '',
|
set_name: card.set?.name || card.set_name || card.set_name || '',
|
||||||
set_code: card.set?.code || card.set_code || '',
|
set_code: card.set?.code || card.set_code || card.set_code || '',
|
||||||
card_number: card.number || card.card_number || '',
|
card_number: card.number || card.card_number || card.card_num || '',
|
||||||
rarity: card.rarity,
|
rarity: card.rarity || card.rarity_name || '',
|
||||||
game: 'LORCANA',
|
game: 'LORCANA',
|
||||||
mana_cost: card.cost?.toString() || card.mana_cost,
|
mana_cost: card.cost?.toString() || card.mana_cost || card.ink_cost?.toString() || '',
|
||||||
cmc: card.cost || card.cmc,
|
cmc: card.cost || card.cmc || card.ink_cost || 0,
|
||||||
card_type: card.type || card.card_type,
|
card_type: card.type || card.card_type || card.type_name || '',
|
||||||
colors: card.colors || [],
|
colors: card.colors || card.ink || [],
|
||||||
oracle_text: card.text || card.oracle_text || '',
|
oracle_text: card.text || card.oracle_text || card.description || card.effect || '',
|
||||||
power: card.strength?.toString() || card.power,
|
power: card.strength?.toString() || card.power || card.attack?.toString() || '',
|
||||||
toughness: card.willpower?.toString() || card.toughness,
|
toughness: card.willpower?.toString() || card.toughness || card.defense?.toString() || '',
|
||||||
image_url: card.image_url || card.images?.small || card.images?.png,
|
image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
stock_image_url: card.image_url || card.images?.small || card.images?.png,
|
stock_image_url: card.image_url || card.images?.small || card.images?.png || card.image || '',
|
||||||
current_price: card.price?.market || card.current_price || undefined,
|
current_price: card.price?.market || card.current_price || undefined,
|
||||||
market_price: card.price?.low || card.market_price || undefined,
|
market_price: card.price?.low || card.market_price || undefined,
|
||||||
verified: true,
|
verified: true,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue