| import sys |
| from pathlib import Path |
|
|
| |
| project_root = Path(__file__).resolve().parent.parent.parent |
| sys.path.insert(0, str(project_root)) |
|
|
| from typing import List |
| from gql import Client |
| import pandas as pd |
| from collections import Counter |
| from src.datacollection.design_object_model import DesignObject |
| from src.datacollection.fetch_cooper_hewitt import create_client, fetch_design_objects |
|
|
| def fetch_from_cooper_hewitt() -> int: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| return 0 |
|
|
|
|
|
|
| def fetch_from_MoMA() -> int: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
| return 0 |
|
|
| def fetch_from_1stdibs() -> int: |
| urls_for_fetching = { |
| "https://www.1stdibs.com/furniture/?origin=american,canadian&per=1960s,1970s,1980s,1990s,21st-century-and-contemporary&sort=newest", |
| "https://www.1stdibs.com/jewelry/?origin=american,canadian&page=9&per=1960s,1970s,1980s,1990s,21st-century-and-contemporary&sort=newest", |
| "https://www.1stdibs.com/fashion/handbags-purses-bags/?origin=american,canadian&per=1960s,1970s,1980s,1990s,21st-century-and-contemporary&sort=newest", |
| "https://www.1stdibs.com/fashion/clothing/shoes/?origin=american,canadian&per=1960s,1970s,1980s,1990s,21st-century-and-contemporary&sort=newest", |
| "https://www.1stdibs.com/fashion/accessories/?origin=american,canadian&per=1960s,1970s,1980s,1990s,21st-century-and-contemporary&sort=newest", |
| } |
|
|
|
|
|
|
| def count_classifications_from_xlsx(file_paths: list[Path]): |
| |
| dfs = [pd.read_excel(path) for path in file_paths] |
| df = pd.concat(dfs, ignore_index=True) |
|
|
| |
| df = df.dropna(subset=['classification']) |
|
|
| |
| counts = df['classification'].value_counts() |
|
|
| |
| print(f"\nFound {len(counts)} unique classifications:\n") |
| for classification, count in counts.items(): |
| print(f"{classification}: {count} items") |
|
|
| return counts |
|
|
|
|
| def combine_xlsx_files_to_fetch_all(file_paths: list[Path], drop_duplicates: bool = True): |
| dfs = [pd.read_excel(path) for path in file_paths] |
|
|
| for i, df in enumerate(dfs): |
| print(f"File {i + 1} has {len(df)} rows") |
|
|
| combined_df = pd.concat(dfs, ignore_index=True) |
| print(f"Combined before deduplication: {len(combined_df)} rows") |
|
|
| if drop_duplicates: |
| combined_df = combined_df.drop_duplicates() |
| print(f"Combined after deduplication: {len(combined_df)} rows") |
|
|
| |
| output_dir = Path(__file__).resolve().parent.parent.parent / "data" / "metadata" |
| output_dir.mkdir(parents=True, exist_ok=True) |
| output_path = output_dir / "fetch_ALL.xlsx" |
|
|
| |
| combined_df.to_excel(output_path, index=False) |
| print(f"Combined and saved to: {output_path}") |
| print(f"Total rows: {len(combined_df)}") |
|
|
| return combined_df |
|
|
|
|
| if __name__ == "__main__": |
| |
| metadata_dir = project_root / "data" / "metadata" |
| |
| combine_xlsx_files_to_fetch_all([ |
| metadata_dir / "fetch_MoMA.xlsx", |
| metadata_dir / "fetch_cooper_hewitt.xlsx", |
| metadata_dir / "mobile_phone_museum_data.xlsx", |
| metadata_dir / "datamath_calculators.xlsx", |
| ]) |
|
|
|
|
|
|