# API로 사용자의 사이트 전체 게시물을 삭제할 수 있나요?

**URL:** <https://meta.discourse.org/t/delete-all-posts-by-a-user-on-entire-site-with-api/302332>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [4월 4, 2024, 2:53오전 UTC](https://meta.discourse.org/t/delete-all-posts-by-a-user-on-entire-site-with-api/302332 "2024-04-04T02:53:10Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![45thj5ej](https://avatars.discourse-cdn.com/v4/letter/4/34f0e0/32.png) [@45thj5ej](https://meta.discourse.org/u/45thj5ej)\
**Post date:** [4월 4, 2024, 2:08오후 UTC](https://meta.discourse.org/t/delete-all-posts-by-a-user-on-entire-site-with-api/302332/4 "2024-04-04T14:08:45Z")

</div>

감사합니다, 오늘 안에 시도해 보겠습니다! 그런데, 그 rake 관련 작업은 일반 사용자 계정으로 할 수 있을까요? 스태프가 아닌 일반 사용자 계정으로 모든 작업을 처리하고 싶습니다.

> [@Lilly](#):
>
> 스크립트를 작성해야 할 것 같습니다

맞습니다.

아래 Python 스크립트를 실행했을 때:

```plaintext
import requests
# Configuration
discourse_base_url = 'https://forums.mysite.me/'
api_key = 'eb4065d1dergrgh45h45h54h45reg4g70cbeb274bf7f87'
api_username = 'username'
target_username = 'targetusername'

# Headers for API requests
headers = {
    'eb4065d1dergrgh45h45h54h45reg4g70cbeb274bf7f87': api_key,
    'B': api_username
}

def get_user_posts(username):
    """Fetch posts by a specific user."""
    posts = []
    url = f'{discourse_base_url}/posts.json?username={username}'
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        posts_data = response.json()
        posts = posts_data.get('latest_posts', [])
    return posts

def delete_post(post_id):
    """Delete a specific post."""
    url = f'{discourse_base_url}/posts/{post_id}.json'
    response = requests.delete(url, headers=headers)
    return response.status_code == 200

def main():
    # Fetch user posts
    posts = get_user_posts(target_username)
    
    # Delete each post
    for post in posts:
        post_id = post.get('id')
        if delete_post(post_id):
            print(f'Successfully deleted post {post_id}')
        else:
            print(f'Failed to delete post {post_id}')

if __name__ == ' __main__':
    main()

```

터미널/콘솔에서 다음과 같은 결과가 나옵니다:

```plaintext
Failed to delete post 73
Failed to delete post 71
Failed to delete post 69
Failed to delete post 60
Failed to delete post 47

```

만들었던 API 키 두 개를 시도해 보았습니다. 하나는 저만 사용할 수 있는 키이고, 다른 하나는 모든 사용자가 사용할 수 있는 키입니다. 두 번 모두 Global 옵션을 사용했습니다. 결과는 동일했습니다.

---

_[View the full topic](https://meta.discourse.org/t/delete-all-posts-by-a-user-on-entire-site-with-api/302332)._
