|
import argparse |
|
import datetime |
|
from typing import Optional |
|
|
|
from huggingface_hub import HfApi |
|
|
|
|
|
def delete_space(space_id: str, hf_token: str, api_client: Optional[HfApi] = None): |
|
api_client = api_client or HfApi() |
|
api_client.delete_repo(repo_id=space_id, token=hf_token, repo_type="space") |
|
|
|
|
|
def get_spaces_to_delete( |
|
n_days: int, org_name: str, api_client: Optional[HfApi] = None |
|
): |
|
api_client = api_client or HfApi() |
|
spaces = api.list_spaces(author=org_name) |
|
spaces_to_delete = [] |
|
for space in spaces: |
|
last_modified = api_client.space_info(space.id).lastModified |
|
age = ( |
|
datetime.datetime.now() |
|
- datetime.datetime.fromisoformat(last_modified.rsplit(".", 1)[0]) |
|
).days |
|
if age > n_days: |
|
spaces_to_delete.append(space.id) |
|
return spaces_to_delete |
|
|
|
|
|
if __name__ == "__main__": |
|
parser = argparse.ArgumentParser(description="Upload a demo to a space") |
|
parser.add_argument( |
|
"n_days", |
|
type=int, |
|
help="Spaces older than n_days will be automatically deleted", |
|
) |
|
parser.add_argument( |
|
"org_name", type=str, help="Name of the author/org to search in" |
|
) |
|
parser.add_argument("hf_token", type=str, help="HF API token") |
|
args = parser.parse_args() |
|
api = HfApi() |
|
|
|
to_delete = get_spaces_to_delete(args.n_days, args.org_name, api_client=api) |
|
for space in to_delete: |
|
print(f"Deleting {space}") |
|
delete_space(space, args.hf_token, api_client=api) |
|
|