|
import gradio as gr |
|
import os |
|
import zipfile |
|
import time |
|
from datetime import datetime |
|
from huggingface_hub import login, hf_hub_download, HfApi |
|
|
|
|
|
REPO_ID = os.environ.get("HFPATH") |
|
HF_TOKEN = os.environ.get("MAGIC") |
|
|
|
|
|
login(HF_TOKEN) |
|
|
|
|
|
api = HfApi() |
|
|
|
|
|
def delete_jpg_files(): |
|
print("Chạy lệnh xóa") |
|
|
|
files = api.list_repo_files(repo_id=REPO_ID, repo_type="dataset") |
|
|
|
|
|
jpg_files = [file for file in files if file.endswith('.jpg') and '/' not in file] |
|
|
|
|
|
|
|
|
|
|
|
for i in range(0, len(jpg_files), 99): |
|
batch = jpg_files[i:i + 99] |
|
for file in batch: |
|
api.delete_file(repo_id=REPO_ID, path_in_repo=file, repo_type="dataset") |
|
print(f"Đã xóa file: {file}") |
|
if i + 99 < len(jpg_files): |
|
print("Chờ 1 giờ trước khi tiếp tục...") |
|
time.sleep(3600) |
|
return "Xóa thành công." |
|
|
|
|
|
def download_from_hf(subfolder): |
|
downloaded_files = [] |
|
|
|
|
|
all_files = api.list_repo_files(repo_id=REPO_ID, repo_type="dataset") |
|
|
|
|
|
for file in all_files: |
|
if file.startswith(subfolder + "/"): |
|
|
|
downloaded_file = hf_hub_download(repo_id=REPO_ID, filename=file, repo_type="dataset") |
|
downloaded_files.append(downloaded_file) |
|
|
|
return downloaded_files |
|
|
|
|
|
def create_zip(files): |
|
zip_filename = f"downloaded_files_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip" |
|
with zipfile.ZipFile(zip_filename, 'w') as zipf: |
|
for file in files: |
|
zipf.write(file, os.path.basename(file)) |
|
return zip_filename |
|
|
|
|
|
def download_and_zip(subfolder): |
|
|
|
files = download_from_hf(subfolder) |
|
if files: |
|
zip_file = create_zip(files) |
|
return zip_file |
|
else: |
|
return "Không tìm thấy file trong subfolder đã chỉ định." |
|
|
|
|
|
iface = gr.Interface( |
|
fn=download_and_zip, |
|
inputs=gr.Textbox(label="Tên Subfolder"), |
|
outputs=gr.File(label="Tải File Zip"), |
|
title="Trình Tải File Hugging Face", |
|
description="Nhập tên subfolder để tải file từ dataset Hugging Face và tạo file zip." |
|
) |
|
|
|
iface.launch() |
|
|