이전 버전에서는 EasyEDA API만 사용했기 때문에 재고(stock)와 가격(price) 정보가 없었습니다.
bom-extender 프로젝트를 참고하여 JLCPCB API를 통합했습니다.
플러그인은 이제 두 개의 API를 조합하여 완전한 정보를 제공합니다:
용도: 심볼/풋프린트 데이터
엔드포인트: https://easyeda.com/api/products/{lcsc_id}/components
제공 정보:
- 심볼 UUID (symbol conversion용)
- 풋프린트 UUID (footprint conversion용)
- 제품명 (예: RP2040)
- 제조사 (예: Raspberry Pi)
- 패키지 타입
- JLCPCB 파트 분류
- EasyEDA 전체 데이터 (converters용)
용도: 재고/가격 정보
엔드포인트: https://jlcpcb.com/api/overseas-pcb-order/v1/shoppingCart/smtGood/selectSmtComponentList
제공 정보:
- ✓ 재고 수량 (stockCount)
- ✓ 가격 정보 (componentPrices) - 수량별 티어
- ✓ 데이터시트 URL (dataManualUrl)
- ✓ 제품 이미지 ID (minImageAccessId)
- ✓ 상품 URL (lcscGoodsUrl)
- 상세 설명 (describe)
def _get_jlcpcb_info(self, lcsc_id: str) -> Optional[Dict[str, Any]]:
"""JLCPCB API로 재고/가격 정보 가져오기"""
response = self._make_request(
method="POST",
url=self.JLCPCB_SEARCH_URL,
json_data={"keyword": lcsc_id}
)
# 재고, 가격, 데이터시트 등 추출
return {
"stock": stock,
"price": prices, # 수량별 가격 티어
"datasheet": datasheet_url,
"image": image_id,
"url": product_url,
}def search_component(self, lcsc_id: str) -> Optional[Dict[str, Any]]:
"""EasyEDA와 JLCPCB API를 모두 호출하여 완전한 정보 제공"""
# Step 1: EasyEDA에서 심볼/풋프린트 데이터
easyeda_data = self._get_easyeda_component(lcsc_id)
# Step 2: JLCPCB에서 재고/가격 데이터
jlcpcb_data = self._get_jlcpcb_info(lcsc_id)
# Step 3: 데이터 병합
return merged_component_data가격 표시 형식 개선:
# 재고 표시
Stock: 40,315 units
# 가격 티어 표시
Pricing (per unit):
1-9: $0.9565
10-29: $0.8719
30-99: $0.7937
100-499: $0.7342
500-999: $0.7091
1,000+: $0.6982python3 test_integrated_api.py출력 결과:
✓ Component found!
BASIC INFORMATION
LCSC ID: C2040
Name: RP2040
Manufacturer: Raspberry Pi(树莓派)
Manufacturer Part: RP2040
Package: LQFN-56_L7.0-W7.0-P0.4-EP
JLCPCB Class: Extended Part
STOCK & AVAILABILITY
Stock: 40,315 units
PRICING
Tier 1: 1-9 units @ $0.956500
Tier 2: 10-29 units @ $0.871900
Tier 3: 30-99 units @ $0.793700
Tier 4: 100-499 units @ $0.734200
Tier 5: 500-999 units @ $0.709100
Tier 6: 1,000+ units @ $0.698200
LINKS & RESOURCES
Datasheet: https://www.lcsc.com/datasheet/...pdf
Product URL: https://www.lcsc.com/product-detail/...html
Image: https://assets.jlcpcb.com/attachments/...
✓ ALL CHECKS PASSED!
두 개의 API를 호출하므로 rate limiting이 중요합니다:
- 각 API 호출 간격: 2초 (REQUEST_DELAY)
- 분당 최대 요청: 30회 (MAX_REQUESTS_PER_MINUTE)
- C2040 검색 시: 약 4초 소요 (EasyEDA + JLCPCB)
- KiCad 재시작 (모든 창 닫기)
- KiCad PCB Editor 실행
- 프로젝트 열기 (저장된 프로젝트)
- Tools → External Plugins → LCSC Manager
- "C2040" 검색
예상 결과:
LCSC Part Number: C2040
Name: RP2040
Manufacturer: Raspberry Pi(树莓派) (RP2040)
Package: LQFN-56_L7.0-W7.0-P0.4-EP
JLCPCB Class: Extended Part
Stock: 40,315 units
Pricing (per unit):
1-9: $0.9565
10-29: $0.8719
30-99: $0.7937
100-499: $0.7342
500-999: $0.7091
1,000+: $0.6982
Datasheet: https://www.lcsc.com/datasheet/...pdf
- bom-extender 프로젝트: https://github.com/hulryung/bom-extender
/src/app/api/lcsc/route.ts파일이 JLCPCB API 사용법 제공
- JLCPCB API: 비공식 API (reverse-engineered)
- POST 요청으로 keyword 전달
- 재고, 가격, 데이터시트 정보 제공
-
plugins/lcsc_manager/api/lcsc_api.py_get_jlcpcb_info()메서드 추가search_component()메서드 업데이트- JLCPCB_SEARCH_URL 엔드포인트 추가
-
plugins/lcsc_manager/dialog.py- 재고 표시 개선
- 가격 티어 표시 형식 개선
-
새로운 테스트 파일
test_jlcpcb_api.py- JLCPCB API 단독 테스트test_integrated_api.py- 통합 API 테스트
현재 완료된 기능:
- ✅ 제품 정보 (이름, 제조사, 패키지)
- ✅ 재고 정보
- ✅ 가격 정보 (수량별 티어)
- ✅ 데이터시트 링크
- ✅ 상품 URL
- ✅ 이미지
아직 플레이스홀더인 기능:
⚠️ 실제 심볼 생성 (현재는 generic 2-pin)⚠️ 실제 풋프린트 생성 (현재는 generic 2-pad SMD)⚠️ 3D 모델 다운로드 (현재는 VRML placeholder)
다음 단계:
- EasyEDA 데이터 파싱 및 실제 심볼 생성
- EasyEDA 데이터 파싱 및 실제 풋프린트 생성
- 3D 모델 다운로드 및 변환
Add JLCPCB API integration for stock and pricing
- Integrated JLCPCB API to fetch stock, pricing, and datasheet info
- Plugin now combines EasyEDA (symbols/footprints) + JLCPCB (stock/price)
- Enhanced UI to display stock quantity and price tiers
- Added comprehensive tests for integrated API
Based on bom-extender project implementation.
Example: C2040 now shows:
- Stock: 40,315 units
- Pricing: 6 tiers from $0.9565 to $0.6982
- Datasheet: Direct PDF link
- Product URL: LCSC product page