Tags: #Lego, #website

Backlinks: 

Created: 2026-06-10 06:41
Last edited: 2026-06-10 06:41

Bricklink

A website centered around Lego.

MOC part lists

Download not allowee on licensed stuff.

Fix

Bricklink MOC JSON conversion script

""" FU LEGO Corp.
"""

import json
import sys

with open(sys.argv[1], encoding='utf-8') as f:
    moc_json = json.load(f)

part_qty_dict = {}
for part in moc_json['arrParts']:
    part_id = part['dmItem']['dmItem']['strItemNoFull']
    part_name = part['dmItem']['dmItem']['strItemName']
    part_color_id = part['dmItem']['idColor']
    part_type = part['dmItem']['dmItem']['typeItem']
    part_qty = part['nQty']
    part_key = f'{part_id}_{part_color_id}'
    if part_key not in part_qty_dict:
        part_qty_dict[part_key] = {
            'id': part_id,
            'name': part_name,
            'color_id': part_color_id,
            'part_qty': part_qty,
            'part_type': part_type.upper()
        }
    else:
        part_qty_dict[part_key]['part_qty'] += part_qty

with open('whishlist.xml', 'w', encoding='utf-8') as f:
    f.write('<?xml version="1.0" encoding="UTF-8"?>\n<INVENTORY>\n')
    for pk, pdict in part_qty_dict.items():
        f.write(
            (
                f'<ITEM>\n'
                f'<ITEMTYPE>{pdict["part_type"]}</ITEMTYPE>\n'
                f'<ITEMID>{pdict["id"]}</ITEMID>\n'
                f'<COLOR>{pdict["color_id"]}</COLOR>\n'
                f'<MAXPRICE>-1.0000</MAXPRICE>\n'
                f'<MINQTY>{pdict["part_qty"]}</MINQTY>\n'
                f'<CONDITION>X</CONDITION>\n'
                f'<REMARKS/>\n'
                f'<NOTIFY>N</NOTIFY>\n'
                f'</ITEM>\n'
            )
        )
    f.write('</INVENTORY>')