Spaces:
Runtime error
Runtime error
Update app.py
Browse files
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", "
|
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(
|
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)
|