latterworks commited on
Commit
2adce56
·
verified ·
1 Parent(s): 3f99791

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -10
app.py CHANGED
@@ -2,19 +2,18 @@ import os
2
  import json
3
  import time
4
  import logging
5
- # Import the handlers submodule explicitly
6
- from logging import handlers
7
  import threading
8
  import sys
9
  from pathlib import Path
10
  from concurrent.futures import ThreadPoolExecutor
11
  from datasets import Dataset
12
- from huggingface_hub import HfApi, create_repo, CommitOperationAdd
13
  from PIL import Image, ExifTags
14
  import gradio as gr
 
15
 
16
  # ----------------- CONFIGURATION -----------------
17
- HF_USERNAME = os.getenv("HF_USERNAME", "latterworks")
18
  DATASET_NAME = os.getenv("DATASET_NAME", "geo-metadata")
19
  HF_TOKEN = os.getenv("HF_TOKEN")
20
  CHECK_INTERVAL = int(os.getenv("CHECK_INTERVAL", "3600")) # Check every hour
@@ -24,7 +23,7 @@ SUPPORTED_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.heic', '.tiff', '.bmp', '.web
24
 
25
  # Logging Setup
26
  os.makedirs("logs", exist_ok=True)
27
- log_handler = handlers.RotatingFileHandler("logs/uploader.log", maxBytes=MAX_LOG_SIZE_MB * 1024 * 1024, backupCount=5)
28
  logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", handlers=[logging.StreamHandler(), log_handler])
29
  logger = logging.getLogger(__name__)
30
 
@@ -32,7 +31,7 @@ logger = logging.getLogger(__name__)
32
  STATS = {"uploads": 0, "total_files": 0, "files_with_gps": 0, "startup_time": int(time.time())}
33
 
34
  # Initialize HF API once
35
- api = HfApi(token=HF_TOKEN)
36
 
37
  # ----------------- UTILITIES -----------------
38
  def repository_exists(repo_id, repo_type="dataset"):
@@ -108,7 +107,7 @@ def upload_metadata(metadata_list):
108
  return "No metadata to upload"
109
  repo_id = f"{HF_USERNAME}/{DATASET_NAME}"
110
  dataset = Dataset.from_dict({"metadata": metadata_list})
111
- dataset.push_to_hub(repo_id, commit_message=f"Add {len(metadata_list)} image metadata entries")
112
  return "Upload successful"
113
 
114
  def upload_images(image_paths):
@@ -119,10 +118,11 @@ def upload_images(image_paths):
119
  try:
120
  with open(image_path, "rb") as f:
121
  operations.append(CommitOperationAdd(path_in_repo=f"images/{Path(image_path).name}", path_or_fileobj=f.read()))
122
- except Exception:
 
123
  continue
124
  if operations:
125
- api.create_commit(repo_id=repo_id, repo_type="dataset", operations=operations, commit_message="Batch upload images")
126
 
127
  # ----------------- PROCESSING -----------------
128
  def process_images(image_files):
@@ -169,4 +169,4 @@ if __name__ == "__main__":
169
  ensure_dataset_exists()
170
  if os.getenv("WATCH_DIRECTORY"):
171
  threading.Thread(target=schedule_directory_scan).start()
172
- demo.launch(server_name="0.0.0.0", server_port=7860)
 
2
  import json
3
  import time
4
  import logging
 
 
5
  import threading
6
  import sys
7
  from pathlib import Path
8
  from concurrent.futures import ThreadPoolExecutor
9
  from datasets import Dataset
10
+ from huggingface_hub import HfApi, create_repo, CommitOperationAdd, hf_hub_download
11
  from PIL import Image, ExifTags
12
  import gradio as gr
13
+ import logging.handlers
14
 
15
  # ----------------- CONFIGURATION -----------------
16
+ HF_USERNAME = os.getenv("HF_USERNAME", "latticeworks")
17
  DATASET_NAME = os.getenv("DATASET_NAME", "geo-metadata")
18
  HF_TOKEN = os.getenv("HF_TOKEN")
19
  CHECK_INTERVAL = int(os.getenv("CHECK_INTERVAL", "3600")) # Check every hour
 
23
 
24
  # Logging Setup
25
  os.makedirs("logs", exist_ok=True)
26
+ log_handler = logging.handlers.RotatingFileHandler("logs/uploader.log", maxBytes=MAX_LOG_SIZE_MB * 1024 * 1024, backupCount=5)
27
  logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", handlers=[logging.StreamHandler(), log_handler])
28
  logger = logging.getLogger(__name__)
29
 
 
31
  STATS = {"uploads": 0, "total_files": 0, "files_with_gps": 0, "startup_time": int(time.time())}
32
 
33
  # Initialize HF API once
34
+ api = HfApi()
35
 
36
  # ----------------- UTILITIES -----------------
37
  def repository_exists(repo_id, repo_type="dataset"):
 
107
  return "No metadata to upload"
108
  repo_id = f"{HF_USERNAME}/{DATASET_NAME}"
109
  dataset = Dataset.from_dict({"metadata": metadata_list})
110
+ dataset.push_to_hub(repo_id, commit_message=f"Add {len(metadata_list)} image metadata entries", token=HF_TOKEN)
111
  return "Upload successful"
112
 
113
  def upload_images(image_paths):
 
118
  try:
119
  with open(image_path, "rb") as f:
120
  operations.append(CommitOperationAdd(path_in_repo=f"images/{Path(image_path).name}", path_or_fileobj=f.read()))
121
+ except Exception as e:
122
+ logger.error(f"Failed to process image {image_path}: {e}")
123
  continue
124
  if operations:
125
+ api.create_commit(repo_id=repo_id, repo_type="dataset", operations=operations, commit_message="Batch upload images", token=HF_TOKEN)
126
 
127
  # ----------------- PROCESSING -----------------
128
  def process_images(image_files):
 
169
  ensure_dataset_exists()
170
  if os.getenv("WATCH_DIRECTORY"):
171
  threading.Thread(target=schedule_directory_scan).start()
172
+ demo.launch(server_name="0.0.0.0", server_port=7860)