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)