fetch google sheet
parent
01012ec18a
commit
63eeb4e607
|
@ -28,22 +28,30 @@
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"displayName": "Produkttyp auswählen",
|
"displayName": "Produkttyp auswählen",
|
||||||
"options": [
|
"options": [
|
||||||
"#32420; Gizmo_die Eidechse; Farbe; Grün, Blau, Orange; (Glänzend)",
|
"#32420 Gizmo die Eidechse, Farbe, Grün/Blau/Orange (Glänzend)",
|
||||||
"#92784; Gizmo_die Eidechse; Farbe; Glitzer Grün; (Seidenmatt)",
|
"#83650 Gizmo die Eidechse, Farbe, Gold (Glänzend)",
|
||||||
"#36521; Charlie_das Häschen; Farbe; Hellbraun; (Matt)",
|
"#92784 Gizmo die Eidechse, Farbe, Glitzer Grün (Seidenmatt)",
|
||||||
"#48273; Charlie_das Häschen; Farbe; Gold; (Glänzend)",
|
"#36521 Charlie das Häschen, Farbe, Hellbraun (Matt)",
|
||||||
"#71936; Ruby_die Schlange; Farbe; Feuerrot; (Glänzend)",
|
"#48273 Charlie das Häschen, Farbe, Gold (Glänzend)",
|
||||||
"#58324; Ruby_die Schlange; Farbe; Rot/Blau; (Glänzend)",
|
"#71936 Ruby die Schlange, Farbe, Feuerrot (Glänzend)",
|
||||||
"#21433; Bruno_der Dino; Farbe; Grün/Blau/Orange; (Glänzend)",
|
"#58324 Ruby die Schlange, Farbe, Rot/Blau (Glänzend)",
|
||||||
"#57953; Bruno_der Dino; Farbe; Rot/Blau; (Glänzend)",
|
"#78648 Ruby die Schlange, Farbe, Gold (Glänzend)",
|
||||||
"#90578; Bruno_der Dino; Farbe; Gold; (Glänzend)",
|
"#21433 Bruno der Dino, Farbe, Grün/Blau/Orange (Glänzend)",
|
||||||
"#51563; Bruno_der Dino; Farbe; Himmelblau; (Fluoreszierend)",
|
"#57953 Bruno der Dino, Farbe, Rot/Blau (Glänzend)",
|
||||||
"#23564; Flamara_der Drache; Farbe; Feuerrot; (Glänzend)",
|
"#90578 Bruno der Dino, Farbe, Gold (Glänzend)",
|
||||||
"#51139; Flamara_der Drache; Farbe; Himmelblau; (Fluoreszierend)",
|
"#51563 Bruno der Dino, Farbe, Himmelblau (Fluoreszierend)",
|
||||||
"#77970; Flamara_der Drache; Farbe; Gold; (Glänzend)",
|
"#23564 Flamara der Drache, Farbe, Feuerrot (Glänzend)",
|
||||||
"#32974; Finn der_Sad Hamster; Stil; Standard; ",
|
"#51139 Flamara der Drache, Farbe, Himmelblau (Fluoreszierend)",
|
||||||
"#60798; Finn der_Sad Hamster; Stil; Schlüsselanhänger; ",
|
"#77970 Flamara der Drache, Farbe, Gold (Glänzend)",
|
||||||
"#93047; Mia_das Kätzchen; Farbe; Grau; "
|
"#43356 Flamara der Drache, Farbe, Schwarz",
|
||||||
|
"#32974 Finn der Sad Hamster, Stil, Standard",
|
||||||
|
"#60798 Finn der Sad Hamster, Stil, Schlüsselanhänger",
|
||||||
|
"#30563 Finn der Sad Hamster, Größe, Groß",
|
||||||
|
"#93047 Mia das Kätzchen, Farbe, Grau",
|
||||||
|
"#56083 Hoppel das Häschen, Farbe, Grau",
|
||||||
|
"#78693 Elias der Corgi, Farbe, Braun/Weiß",
|
||||||
|
"#37335 Axel der Axolotl, Farbe, Pink",
|
||||||
|
"#26822 Dilo der Delfin, Farbe, Blau/Weiß"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"category": "Shinnex",
|
||||||
|
"name": "Produkte aus Google Sheets synchronisieren",
|
||||||
|
"globalInputs": [],
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"name": "Produkte aus Google Sheets herunterladen",
|
||||||
|
"onFinish": "next",
|
||||||
|
"undoPossible": false,
|
||||||
|
"repeatPossible": true,
|
||||||
|
"scriptPath": "script.py",
|
||||||
|
"parameters": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
import gspread
|
||||||
|
import json
|
||||||
|
import codecs
|
||||||
|
|
||||||
|
|
||||||
|
def add_underscore_at_position(text, position):
|
||||||
|
# Split the string into a list of words
|
||||||
|
words = text.split()
|
||||||
|
|
||||||
|
# Check if the position is valid
|
||||||
|
if position < 0 or position >= len(words) - 1:
|
||||||
|
raise ValueError("Invalid position for underscore")
|
||||||
|
|
||||||
|
# Add the underscore between the words at the specified position
|
||||||
|
words[position] = words[position] + '_' + words[position + 1]
|
||||||
|
|
||||||
|
# Remove the word at the next position since it's already added
|
||||||
|
del words[position + 1]
|
||||||
|
|
||||||
|
# Join the list back into a string
|
||||||
|
result = ' '.join(words)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
# values by google sheets are returned like "Gold (Gl\u00e4nzend)"
|
||||||
|
def decode_unicode_escapes(text):
|
||||||
|
# Decode Unicode escape sequences
|
||||||
|
return codecs.decode(text, 'unicode_escape')
|
||||||
|
|
||||||
|
|
||||||
|
def update_grouptask_products_list_options(index_json_path, products_list):
|
||||||
|
with open(index_json_path, 'r', encoding='utf-8') as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
options_list = []
|
||||||
|
for product in products_list:
|
||||||
|
# replace _ with " " just for better style in dashboard
|
||||||
|
product_name = product['name'].replace("_", " ")
|
||||||
|
|
||||||
|
option = f"#{product['id']} {product_name}, {product['product_variant']}, {product['product_color']}"
|
||||||
|
options_list.append(option)
|
||||||
|
|
||||||
|
for task in data['tasks']:
|
||||||
|
for parameter in task['parameters']:
|
||||||
|
if parameter['parameterName'] == 'product_type_id':
|
||||||
|
parameter['options'] = options_list
|
||||||
|
|
||||||
|
with open(index_json_path, 'w', encoding='utf-8') as output_file:
|
||||||
|
json.dump(data, output_file, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
|
||||||
|
def google_sheets_products():
|
||||||
|
gc = gspread.service_account(filename="../../secrets/shinnex-424321-b88b144bc9ef.json")
|
||||||
|
|
||||||
|
spreadsheet = gc.open("Produkte")
|
||||||
|
|
||||||
|
worksheet = spreadsheet.get_worksheet(0)
|
||||||
|
|
||||||
|
data = worksheet.get_all_values()
|
||||||
|
|
||||||
|
products = []
|
||||||
|
|
||||||
|
for row in data[2:]:
|
||||||
|
products.append({
|
||||||
|
"id": row[0],
|
||||||
|
"name": add_underscore_at_position(row[1], int(row[24])),
|
||||||
|
"product_variant": row[2],
|
||||||
|
"product_color": row[3]
|
||||||
|
})
|
||||||
|
|
||||||
|
products_dict = {"products": products}
|
||||||
|
|
||||||
|
# Write the products list to a JSON file
|
||||||
|
with open('../../groupsData/google-sheet-products.json', 'w', encoding='utf-8') as json_file:
|
||||||
|
json.dump(products_dict, json_file, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
update_grouptask_products_list_options("../../groups/shx-product-label/index.json", products)
|
||||||
|
update_grouptask_products_list_options("../../groups/shx-all-in-one-order/index.json", products)
|
||||||
|
|
||||||
|
print("Finished. Do not forget to reload the group configuration")
|
||||||
|
|
||||||
|
|
||||||
|
google_sheets_products()
|
|
@ -108,6 +108,37 @@ def downloadFilePDF(url, filename):
|
||||||
page.crop((0, spacing, page.width, h-spacing)
|
page.crop((0, spacing, page.width, h-spacing)
|
||||||
).save(filename, 'PNG')
|
).save(filename, 'PNG')
|
||||||
|
|
||||||
|
def downloadFilePDFDHL(url, filename):
|
||||||
|
pdf_filename = filename + ".pdf"
|
||||||
|
|
||||||
|
command = [
|
||||||
|
"curl",
|
||||||
|
"-L", # Follow redirects
|
||||||
|
"-o",
|
||||||
|
pdf_filename,
|
||||||
|
url,
|
||||||
|
]
|
||||||
|
|
||||||
|
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
stdout, stderr = process.communicate()
|
||||||
|
|
||||||
|
if process.returncode != 0:
|
||||||
|
print("Error downloading file")
|
||||||
|
print("STDOUT:")
|
||||||
|
print(stdout.decode()) # Decoding the stdout for better readability
|
||||||
|
print("STDERR:")
|
||||||
|
print(stderr.decode()) # Decoding the stderr for better readability
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Convert the PDF to a PNG
|
||||||
|
images = convert_from_path(pdf_filename, dpi=300)
|
||||||
|
|
||||||
|
page = images[0]
|
||||||
|
|
||||||
|
# box=(left, upper, right, lower)
|
||||||
|
#page.crop((0, spacing, page.width, h-spacing)).save(filename, 'PNG')
|
||||||
|
page.rotate(90, expand=1).save(filename, 'PNG')
|
||||||
|
|
||||||
|
|
||||||
def replacePlaceholder():
|
def replacePlaceholder():
|
||||||
with open("index.html", "r") as file:
|
with open("index.html", "r") as file:
|
||||||
|
@ -125,7 +156,9 @@ if __name__ == "__main__":
|
||||||
print(f"Creating package label for {customer_first_name}")
|
print(f"Creating package label for {customer_first_name}")
|
||||||
|
|
||||||
#if shipping_label_url contains .pdf, download the file and convert it to a PNG
|
#if shipping_label_url contains .pdf, download the file and convert it to a PNG
|
||||||
if ".pdf" in shipping_label_url or "https://cloud.umbach.dev/" in shipping_label_url:
|
if "247f81-22.myshopify.com" in shipping_label_url:
|
||||||
|
downloadFilePDFDHL(shipping_label_url, "label.png")
|
||||||
|
elif ".pdf" in shipping_label_url or "https://cloud.umbach.dev/" in shipping_label_url:
|
||||||
downloadFilePDF(shipping_label_url, "label.png")
|
downloadFilePDF(shipping_label_url, "label.png")
|
||||||
else:
|
else:
|
||||||
downloadFilePNG(shipping_label_url, "label.png")
|
downloadFilePNG(shipping_label_url, "label.png")
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
/* border: 1px solid black; */
|
border: 1px solid #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.background-image {
|
.background-image {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
const PRODUCT_NAME = "{{PRODUCT_NAME}}", // Gizmo die Eidechse
|
const PRODUCT_NAME = "{{PRODUCT_NAME}}", // Gizmo die Eidechse
|
||||||
PRODUCT_VARIANT = "{{PRODUCT_VARIANT}}", // Farbe Grün/Blau/Orange or Stil Standard
|
PRODUCT_VARIANT = "{{PRODUCT_VARIANT}}", // Farbe Grün/Blau/Orange or Stil Standard
|
||||||
PRODUCT_COLOR_CHARACTERISTICS = "{{PRODUCT_COLOR_CHARACTERISTICS}}", // (Glänzend)
|
PRODUCT_COLOR_CHARACTERISTICS = "{{PRODUCT_COLOR_CHARACTERISTICS}}", // (Glänzend)
|
||||||
PRODUCT_ID = "{{PRODUCT_ID}}", // #32420
|
PRODUCT_ID = "#{{PRODUCT_ID}}", // #32420
|
||||||
LABEL_PAPER_POSITION = "{{LABEL_PAPER_POSITION}}"; // could be a number between 1 and 12 or combination like 1,3,7
|
LABEL_PAPER_POSITION = "{{LABEL_PAPER_POSITION}}"; // could be a number between 1 and 12 or combination like 1,3,7
|
||||||
|
|
||||||
const labelPaperPosition = LABEL_PAPER_POSITION.split(",");
|
const labelPaperPosition = LABEL_PAPER_POSITION.split(",");
|
||||||
|
|
|
@ -20,22 +20,30 @@
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"displayName": "Produkttyp auswählen",
|
"displayName": "Produkttyp auswählen",
|
||||||
"options": [
|
"options": [
|
||||||
"#32420; Gizmo_die Eidechse; Farbe; Grün, Blau, Orange; (Glänzend)",
|
"#32420 Gizmo die Eidechse, Farbe, Grün/Blau/Orange (Glänzend)",
|
||||||
"#92784; Gizmo_die Eidechse; Farbe; Glitzer Grün; (Seidenmatt)",
|
"#83650 Gizmo die Eidechse, Farbe, Gold (Glänzend)",
|
||||||
"#36521; Charlie_das Häschen; Farbe; Hellbraun; (Matt)",
|
"#92784 Gizmo die Eidechse, Farbe, Glitzer Grün (Seidenmatt)",
|
||||||
"#48273; Charlie_das Häschen; Farbe; Gold; (Glänzend)",
|
"#36521 Charlie das Häschen, Farbe, Hellbraun (Matt)",
|
||||||
"#71936; Ruby_die Schlange; Farbe; Feuerrot; (Glänzend)",
|
"#48273 Charlie das Häschen, Farbe, Gold (Glänzend)",
|
||||||
"#58324; Ruby_die Schlange; Farbe; Rot/Blau; (Glänzend)",
|
"#71936 Ruby die Schlange, Farbe, Feuerrot (Glänzend)",
|
||||||
"#21433; Bruno_der Dino; Farbe; Grün/Blau/Orange; (Glänzend)",
|
"#58324 Ruby die Schlange, Farbe, Rot/Blau (Glänzend)",
|
||||||
"#57953; Bruno_der Dino; Farbe; Rot/Blau; (Glänzend)",
|
"#78648 Ruby die Schlange, Farbe, Gold (Glänzend)",
|
||||||
"#90578; Bruno_der Dino; Farbe; Gold; (Glänzend)",
|
"#21433 Bruno der Dino, Farbe, Grün/Blau/Orange (Glänzend)",
|
||||||
"#51563; Bruno_der Dino; Farbe; Himmelblau; (Fluoreszierend)",
|
"#57953 Bruno der Dino, Farbe, Rot/Blau (Glänzend)",
|
||||||
"#23564; Flamara_der Drache; Farbe; Feuerrot; (Glänzend)",
|
"#90578 Bruno der Dino, Farbe, Gold (Glänzend)",
|
||||||
"#51139; Flamara_der Drache; Farbe; Himmelblau; (Fluoreszierend)",
|
"#51563 Bruno der Dino, Farbe, Himmelblau (Fluoreszierend)",
|
||||||
"#77970; Flamara_der Drache; Farbe; Gold; (Glänzend)",
|
"#23564 Flamara der Drache, Farbe, Feuerrot (Glänzend)",
|
||||||
"#32974; Finn der_Sad Hamster; Stil; Standard; ",
|
"#51139 Flamara der Drache, Farbe, Himmelblau (Fluoreszierend)",
|
||||||
"#60798; Finn der_Sad Hamster; Stil; Schlüsselanhänger; ",
|
"#77970 Flamara der Drache, Farbe, Gold (Glänzend)",
|
||||||
"#93047; Mia_das Kätzchen; Farbe; Grau; "
|
"#43356 Flamara der Drache, Farbe, Schwarz",
|
||||||
|
"#32974 Finn der Sad Hamster, Stil, Standard",
|
||||||
|
"#60798 Finn der Sad Hamster, Stil, Schlüsselanhänger",
|
||||||
|
"#30563 Finn der Sad Hamster, Größe, Groß",
|
||||||
|
"#93047 Mia das Kätzchen, Farbe, Grau",
|
||||||
|
"#56083 Hoppel das Häschen, Farbe, Grau",
|
||||||
|
"#78693 Elias der Corgi, Farbe, Braun/Weiß",
|
||||||
|
"#37335 Axel der Axolotl, Farbe, Pink",
|
||||||
|
"#26822 Dilo der Delfin, Farbe, Blau/Weiß"
|
||||||
],
|
],
|
||||||
"global": false
|
"global": false
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ if product_type_id is None or label_paper_position is None:
|
||||||
product_type_id = product_type_id["value"]
|
product_type_id = product_type_id["value"]
|
||||||
label_paper_position = label_paper_position["value"]
|
label_paper_position = label_paper_position["value"]
|
||||||
|
|
||||||
|
"""
|
||||||
product_type_ids = {}
|
product_type_ids = {}
|
||||||
|
|
||||||
def add_product_type_id(product_type_id, product_name, product_variant, product_color_characteristics):
|
def add_product_type_id(product_type_id, product_name, product_variant, product_color_characteristics):
|
||||||
|
@ -38,7 +38,7 @@ for product in products:
|
||||||
data = product.split("; ")
|
data = product.split("; ")
|
||||||
|
|
||||||
# remove the # on the start
|
# remove the # on the start
|
||||||
add_product_type_id(data[0][1:], data[1], data[2] + " " + data[3], data[4])
|
add_product_type_id(data[0][1:], data[1], data[2] + " " + data[3], data[4]) """
|
||||||
|
|
||||||
def createPdf(sourceHtml, outputPdf):
|
def createPdf(sourceHtml, outputPdf):
|
||||||
command = [
|
command = [
|
||||||
|
@ -63,10 +63,44 @@ def createPdf(sourceHtml, outputPdf):
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
utils.move_files_back_from_old_files()
|
utils.move_files_back_from_old_files()
|
||||||
|
|
||||||
# remove the ; on the end of the id
|
|
||||||
# replace placeholders in index.js
|
# replace placeholders in index.js
|
||||||
p_type_id = product_type_id.split(" ")[0].split("#")[1][:-1]
|
|
||||||
|
|
||||||
|
p_type_id = product_type_id.split(" ")[0].split("#")[1]
|
||||||
|
|
||||||
|
print(f"Creating product label for product type #{p_type_id}")
|
||||||
|
|
||||||
|
with open('../../groupsData/google-sheet-products.json', 'r', encoding='utf-8') as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
for product in data["products"]:
|
||||||
|
if product["id"] == p_type_id:
|
||||||
|
with open("index.js", "r") as file:
|
||||||
|
indexjs = file.read()
|
||||||
|
|
||||||
|
product_color_characteristics = ""
|
||||||
|
|
||||||
|
if product["product_variant"] != "Farbe":
|
||||||
|
product_variant = product["product_variant"] + " " + product["product_color"]
|
||||||
|
else:
|
||||||
|
product_color_splitted = product["product_color"].split(" ")
|
||||||
|
|
||||||
|
product_variant = product["product_variant"] + " " + product_color_splitted[0]
|
||||||
|
|
||||||
|
if len(product_color_splitted) > 1:
|
||||||
|
product_color_characteristics = product_color_splitted[1]
|
||||||
|
|
||||||
|
indexjs = indexjs.replace("{{PRODUCT_ID}}", product["id"])
|
||||||
|
indexjs = indexjs.replace("{{PRODUCT_NAME}}", product["name"])
|
||||||
|
indexjs = indexjs.replace("{{PRODUCT_VARIANT}}", product_variant)
|
||||||
|
indexjs = indexjs.replace("{{PRODUCT_COLOR_CHARACTERISTICS}}", product_color_characteristics)
|
||||||
|
indexjs = indexjs.replace("{{LABEL_PAPER_POSITION}}", label_paper_position)
|
||||||
|
|
||||||
|
with open("index.js", "w") as file:
|
||||||
|
file.write(indexjs)
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
"""
|
||||||
if p_type_id not in product_type_ids:
|
if p_type_id not in product_type_ids:
|
||||||
print("Product type not found")
|
print("Product type not found")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -86,6 +120,7 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
with open("index.js", "w") as file:
|
with open("index.js", "w") as file:
|
||||||
file.write(indexjs)
|
file.write(indexjs)
|
||||||
|
"""
|
||||||
|
|
||||||
# create front page
|
# create front page
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,148 @@
|
||||||
|
{
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"id": "32420",
|
||||||
|
"name": "Gizmo_die Eidechse",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Grün/Blau/Orange (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "83650",
|
||||||
|
"name": "Gizmo_die Eidechse",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Gold (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "92784",
|
||||||
|
"name": "Gizmo_die Eidechse",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Glitzer Grün (Seidenmatt)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "36521",
|
||||||
|
"name": "Charlie_das Häschen",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Hellbraun (Matt)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "48273",
|
||||||
|
"name": "Charlie_das Häschen",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Gold (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "71936",
|
||||||
|
"name": "Ruby_die Schlange",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Feuerrot (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "58324",
|
||||||
|
"name": "Ruby_die Schlange",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Rot/Blau (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78648",
|
||||||
|
"name": "Ruby_die Schlange",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Gold (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "21433",
|
||||||
|
"name": "Bruno_der Dino",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Grün/Blau/Orange (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "57953",
|
||||||
|
"name": "Bruno_der Dino",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Rot/Blau (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "90578",
|
||||||
|
"name": "Bruno_der Dino",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Gold (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "51563",
|
||||||
|
"name": "Bruno_der Dino",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Himmelblau (Fluoreszierend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "23564",
|
||||||
|
"name": "Flamara_der Drache",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Feuerrot (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "51139",
|
||||||
|
"name": "Flamara_der Drache",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Himmelblau (Fluoreszierend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "77970",
|
||||||
|
"name": "Flamara_der Drache",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Gold (Glänzend)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "43356",
|
||||||
|
"name": "Flamara_der Drache",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Schwarz"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "32974",
|
||||||
|
"name": "Finn der_Sad Hamster",
|
||||||
|
"product_variant": "Stil",
|
||||||
|
"product_color": "Standard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "60798",
|
||||||
|
"name": "Finn der_Sad Hamster",
|
||||||
|
"product_variant": "Stil",
|
||||||
|
"product_color": "Schlüsselanhänger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "30563",
|
||||||
|
"name": "Finn der_Sad Hamster",
|
||||||
|
"product_variant": "Größe",
|
||||||
|
"product_color": "Groß"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "93047",
|
||||||
|
"name": "Mia_das Kätzchen",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Grau"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "56083",
|
||||||
|
"name": "Hoppel_das Häschen",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Grau"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78693",
|
||||||
|
"name": "Elias_der Corgi",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Braun/Weiß"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "37335",
|
||||||
|
"name": "Axel_der Axolotl",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Pink"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "26822",
|
||||||
|
"name": "Dilo_der Delfin",
|
||||||
|
"product_variant": "Farbe",
|
||||||
|
"product_color": "Blau/Weiß"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
Loading…
Reference in New Issue