PACYCx / migrate_hf.py
toecm's picture
Deploy hybrid backend with SSR disabled
881ea9e
Raw
History Blame Contribute Delete
2.18 kB
from huggingface_hub import HfApi, HfFileSystem
import urllib.parse
import os
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
api = HfApi()
fs = HfFileSystem()
def get_language(filename):
name = urllib.parse.unquote(filename).lower()
if 'english' in name or 'american' in name or 'british' in name or 'patois' in name or 'pidgin' in name or 'south african' in name:
return 'English'
if 'korean' in name:
return 'Korean'
if 'igbo' in name:
return 'Asusu Igbo'
if 'tagalog' in name or 'filipino' in name:
return 'Filipino'
if 'creole' in name:
return 'Creole'
if 'indonesian' in name:
return 'Indonesian'
return 'Other'
repo_id = "toecm/IEDID"
def migrate():
files = fs.ls(f"datasets/{repo_id}", detail=False)
# Strip prefix 'datasets/toecm/IEDID/'
files = [f.replace(f"datasets/{repo_id}/", "") for f in files]
operations = []
for f in files:
if f in ['.gitattributes', 'README.md', 'minted_history.csv', 'audio', 'audio_files']:
continue
lang = get_language(f)
# Decide if it goes to /data/ or /personas/
if f.endswith('.csv'):
new_path = f"{lang}/data/{f}"
elif f.endswith('.json'):
new_path = f"{lang}/personas/{f}"
else:
continue
print(f"Moving {f} -> {new_path}")
operations.append({
"path_in_repo": f,
"path_in_repo_new": new_path,
})
if not operations:
print("No files to migrate.")
return
print("Executing move operations...")
for op in operations:
try:
# We use fs.mv for moving files on the Hugging Face filesystem
src = f"datasets/{repo_id}/{op['path_in_repo']}"
dest = f"datasets/{repo_id}/{op['path_in_repo_new']}"
fs.mv(src, dest)
print(f"Success: {op['path_in_repo']}")
except Exception as e:
print(f"Failed to move {op['path_in_repo']}: {e}")
if __name__ == "__main__":
migrate()