Surn commited on
Commit
1092b9f
·
1 Parent(s): 7d9ed9d

Update storage 0.1.1

Browse files
Files changed (3) hide show
  1. modules/constants.py +8 -2
  2. modules/storage.md +3 -1
  3. modules/storage.py +10 -4
modules/constants.py CHANGED
@@ -27,7 +27,11 @@ model_extensions = {".glb", ".gltf", ".obj", ".ply"}
27
  model_extensions_list = list(model_extensions)
28
  image_extensions = {".png", ".jpg", ".jpeg", ".webp"}
29
  image_extensions_list = list(image_extensions)
30
- upload_file_types = model_extensions_list + image_extensions_list
 
 
 
 
31
 
32
  default_slider_images = [
33
  "images/slider/beeuty_545jlbh1_v12_alpha96_300dpi.png",
@@ -37,7 +41,9 @@ default_slider_images = [
37
  default_model_3d = "models/beeuty_545jlbh1_300dpi.glb"
38
 
39
  # Constants for URL shortener
40
- HF_REPO_ID = "Surn/Storage" # Replace with your Hugging Face repository ID
 
 
41
  SHORTENER_JSON_FILE = "shortener.json" # The name of your JSON file in the repo
42
 
43
  # Open Graph Defaults
 
27
  model_extensions_list = list(model_extensions)
28
  image_extensions = {".png", ".jpg", ".jpeg", ".webp"}
29
  image_extensions_list = list(image_extensions)
30
+ audio_extensions = {".mp3", ".wav", ".ogg", ".flac", ".aac"}
31
+ audio_extensions_list = list(audio_extensions)
32
+ video_extensions = {".mp4"}
33
+ video_extensions_list = list(video_extensions)
34
+ upload_file_types = model_extensions_list + image_extensions_list + audio_extensions_list + video_extensions_list
35
 
36
  default_slider_images = [
37
  "images/slider/beeuty_545jlbh1_v12_alpha96_300dpi.png",
 
41
  default_model_3d = "models/beeuty_545jlbh1_300dpi.glb"
42
 
43
  # Constants for URL shortener
44
+ HF_REPO_ID = os.getenv("HF_REPO_ID")
45
+ if not HF_REPO_ID:
46
+ HF_REPO_ID = "Surn/Storage" # Replace with your Hugging Face repository ID
47
  SHORTENER_JSON_FILE = "shortener.json" # The name of your JSON file in the repo
48
 
49
  # Open Graph Defaults
modules/storage.md CHANGED
@@ -4,6 +4,8 @@ The `storage.py` module provides helper functions for:
4
  - Generating permalinks for 3D viewer projects.
5
  - Uploading files in batches to a Hugging Face repository.
6
  - Managing URL shortening by storing (short URL, full URL) pairs in a JSON file on the repository.
 
 
7
 
8
  ## Key Functions
9
 
@@ -53,7 +55,7 @@ files_for_permalink = [
53
  "local/path/to/heightmap.png",
54
  "local/path/to/image.png"
55
  ]
56
- repo_id = "Surn/Storage" # Make sure this is defined, e.g., from constants
57
  folder_name = "my_new_model_with_permalink"
58
 
59
  upload_result = upload_files_to_repo(
 
4
  - Generating permalinks for 3D viewer projects.
5
  - Uploading files in batches to a Hugging Face repository.
6
  - Managing URL shortening by storing (short URL, full URL) pairs in a JSON file on the repository.
7
+ - Retrieving full URLs from short URL IDs and vice versa.
8
+ - Handle specific file types for 3D models, images, video and audio.
9
 
10
  ## Key Functions
11
 
 
55
  "local/path/to/heightmap.png",
56
  "local/path/to/image.png"
57
  ]
58
+ repo_id = "Surn/Storage" # Make sure this is defined, e.g., from constants or environment variables
59
  folder_name = "my_new_model_with_permalink"
60
 
61
  upload_result = upload_files_to_repo(
modules/storage.py CHANGED
@@ -1,5 +1,5 @@
1
  # modules/storage.py
2
- __version__ = "0.1.0" # Added version
3
  import os
4
  import urllib.parse
5
  import tempfile
@@ -8,7 +8,7 @@ import json
8
  import base64
9
  from huggingface_hub import login, upload_folder, hf_hub_download, HfApi
10
  from huggingface_hub.utils import RepositoryNotFoundError, EntryNotFoundError
11
- from modules.constants import HF_API_TOKEN, upload_file_types, model_extensions, image_extensions, HF_REPO_ID, SHORTENER_JSON_FILE
12
  from typing import Any, Dict, List, Tuple, Union
13
 
14
  # see storage.md for detailed information about the storage module and its functions.
@@ -21,6 +21,8 @@ def generate_permalink(valid_files, base_url_external, permalink_viewer_url="sur
21
  """
22
  model_link = None
23
  images_links = []
 
 
24
  for f in valid_files:
25
  filename = os.path.basename(f)
26
  ext = os.path.splitext(filename)[1].lower()
@@ -29,6 +31,10 @@ def generate_permalink(valid_files, base_url_external, permalink_viewer_url="sur
29
  model_link = f"{base_url_external}/{filename}"
30
  elif ext in image_extensions:
31
  images_links.append(f"{base_url_external}/{filename}")
 
 
 
 
32
  if model_link and len(images_links) == 2:
33
  # Construct a permalink to the viewer project with query parameters.
34
  permalink_viewer_url = f"https://{permalink_viewer_url}/"
@@ -212,7 +218,7 @@ def _upload_json_to_repo(data, repo_id, json_file_name, repo_type="dataset"):
212
  temp_dir_for_json = os.getenv("TMPDIR", tempfile.gettempdir())
213
  os.makedirs(temp_dir_for_json, exist_ok=True)
214
 
215
- with tempfile.NamedTemporaryFile(mode="w+", delete=False, suffix=".json", dir=temp_dir_for_json) as tmp_file:
216
  json.dump(data, tmp_file, indent=2)
217
  tmp_file_path = tmp_file.name
218
 
@@ -251,7 +257,7 @@ def _find_url_in_json(data, short_url=None, full_url=None):
251
 
252
  def _add_url_to_json(data, short_url, full_url):
253
  """Adds a new short_url/full_url pair to the data. Returns updated data."""
254
- if data is None:
255
  data = []
256
  data.append({"short_url": short_url, "full_url": full_url})
257
  return data
 
1
  # modules/storage.py
2
+ __version__ = "0.1.1" # Added version
3
  import os
4
  import urllib.parse
5
  import tempfile
 
8
  import base64
9
  from huggingface_hub import login, upload_folder, hf_hub_download, HfApi
10
  from huggingface_hub.utils import RepositoryNotFoundError, EntryNotFoundError
11
+ from modules.constants import HF_API_TOKEN, upload_file_types, model_extensions, image_extensions, audio_extensions, video_extensions, HF_REPO_ID, SHORTENER_JSON_FILE
12
  from typing import Any, Dict, List, Tuple, Union
13
 
14
  # see storage.md for detailed information about the storage module and its functions.
 
21
  """
22
  model_link = None
23
  images_links = []
24
+ audio_links = []
25
+ video_links = []
26
  for f in valid_files:
27
  filename = os.path.basename(f)
28
  ext = os.path.splitext(filename)[1].lower()
 
31
  model_link = f"{base_url_external}/{filename}"
32
  elif ext in image_extensions:
33
  images_links.append(f"{base_url_external}/{filename}")
34
+ elif ext in audio_extensions:
35
+ audio_links.append(f"{base_url_external}/{filename}")
36
+ elif ext in video_extensions:
37
+ video_links.append(f"{base_url_external}/{filename}")
38
  if model_link and len(images_links) == 2:
39
  # Construct a permalink to the viewer project with query parameters.
40
  permalink_viewer_url = f"https://{permalink_viewer_url}/"
 
218
  temp_dir_for_json = os.getenv("TMPDIR", tempfile.gettempdir())
219
  os.makedirs(temp_dir_for_json, exist_ok=True)
220
 
221
+ with tempfile.NamedTemporaryFile(mode="w+", delete=False, suffix=".json", dir=temp_dir_for_json) as tmp_file:
222
  json.dump(data, tmp_file, indent=2)
223
  tmp_file_path = tmp_file.name
224
 
 
257
 
258
  def _add_url_to_json(data, short_url, full_url):
259
  """Adds a new short_url/full_url pair to the data. Returns updated data."""
260
+ if data is None:
261
  data = []
262
  data.append({"short_url": short_url, "full_url": full_url})
263
  return data