From 46367c66ceee18565d521b1350bbc9bb23431f0f Mon Sep 17 00:00:00 2001 From: ZinYan Date: Sat, 16 Aug 2025 04:21:33 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[deploy]=20deploy=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 2 +- moodico/products/management/commands/generate_clusters.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6c5c796..7c94bda 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Django CI/CD +name: Moodico Server on: workflow_dispatch: diff --git a/moodico/products/management/commands/generate_clusters.py b/moodico/products/management/commands/generate_clusters.py index ead4481..470a7f0 100644 --- a/moodico/products/management/commands/generate_clusters.py +++ b/moodico/products/management/commands/generate_clusters.py @@ -10,8 +10,6 @@ from sklearn.metrics import silhouette_score from sklearn.preprocessing import StandardScaler - -# -------- helpers (kept as in your script) -------- def hex_to_rgb(hex_code): h = hex_code.lstrip('#') if len(h) == 3: From c94668f79b46a77c14de43993aaf7adeeb0cd7ba Mon Sep 17 00:00:00 2001 From: ZinYan Date: Sat, 16 Aug 2025 08:34:50 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[feat]=20oliveyoung=20=EC=9D=B8=EA=B8=B0?= =?UTF-8?q?=EC=83=81=ED=92=88=20=EC=B6=94=EC=B2=9C=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- moodico/moodtest/color_analyzer.py | 2 +- .../management/commands/advertise_scraper.py | 123 ++++++ moodico/products/views.py | 7 +- moodico/recommendation/views.py | 52 ++- static/data/advertise_products.json | 368 ++++++++++++++++++ templates/upload/upload.html | 43 +- 6 files changed, 561 insertions(+), 34 deletions(-) create mode 100644 moodico/products/management/commands/advertise_scraper.py create mode 100644 static/data/advertise_products.json diff --git a/moodico/moodtest/color_analyzer.py b/moodico/moodtest/color_analyzer.py index d07a7ed..82e9c76 100644 --- a/moodico/moodtest/color_analyzer.py +++ b/moodico/moodtest/color_analyzer.py @@ -7,7 +7,7 @@ def product_result_by_mood(mood): try: mood_zones_path = 'static/data/mood_zones.json' - products_path = 'static/data/all_products_hex_update_tempk=4_2_1_1.json' + products_path = 'static/data/all_products.json' with open(mood_zones_path, 'r', encoding='utf-8') as f: mood_zones = json.load(f) diff --git a/moodico/products/management/commands/advertise_scraper.py b/moodico/products/management/commands/advertise_scraper.py new file mode 100644 index 0000000..47530bc --- /dev/null +++ b/moodico/products/management/commands/advertise_scraper.py @@ -0,0 +1,123 @@ +import json +import os +from django.conf import settings +from django.core.management.base import BaseCommand +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.chrome.service import Service +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from webdriver_manager.chrome import ChromeDriverManager + + +class Command(BaseCommand): + help = "Scrape products and save JSON under STATIC_ROOT/data/advertise_products.json" + + def handle(self, *args, **options): + chrome_options = webdriver.ChromeOptions() + chrome_options.add_argument("--headless") + chrome_options.add_argument("--no-sandbox") + chrome_options.add_argument("--disable-dev-shm-usage") + chrome_options.add_argument("--disable-gpu") + chrome_options.add_argument( + 'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' + ) + + driver = webdriver.Chrome( + service=Service(ChromeDriverManager().install()), + options=chrome_options + ) + + try: + url = "https://www.oliveyoung.co.kr/store/main/getBestList.do?dispCatNo=900000100100001&fltDispCatNo=10000010002&pageIdx=1&rowsPerPage=10" + driver.get(url) + wait = WebDriverWait(driver, 15) + + # Wait for