wordpress에서 미사용 미디어 라이브러리 삭제

최근 몇일동안 사이트 사용에 문제가 있었습니다. 예를들어 댓글이 작성이 안되는 문제였습니다. 그 이유는 웹호스팅 디스크 Full 때문이었습니다.

그동안 중복해서 올린 media 라이브러리가 많았는데, 사용하지 않는 미디어파일을 삭제 하는 노트북 파일 입니다.

파일명으로만 검색하기 때문에, 동일한 파일명으로 사용중일때는 있는 것으로 판단합니다. 즉 좀 더 보수적으로 판단 됩니다. 정확하게는 경로명까지 봐서 판단해야 하는데, 이거는 다음에 올린 다음 버젼에서 적용 되었습니다.

ID/PW 부분만 변경해서 사용하면 동작 할것 입니다.

# -*- encoding:utf8 -*-
from curses.ascii import isdigit
from select import select
from turtle import Screen, isvisible
import requests
import random
from configparser import ConfigParser
from selenium import webdriver
from bs4 import BeautifulSoup
import sys
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import math
from selenium.webdriver.support.ui import Select
import logging
import os
from Screenshot import Screenshot_Clipping
from PIL import Image
from inspect import currentframe, getframeinfo
from urllib.request import Request, urlopen
from datetime import datetime,date,timedelta
from requests.auth import HTTPBasicAuth
import json
import base64, json, re, requests

In [244]:

username = 'ID'
password = 'Password'
baseurl = "https://flywithu.com/wp-json/wp/v2"


In [245]:

credentials = username + ':' + password
token = base64.b64encode(credentials.encode())

header = {
'Authorization': 'Basic ' + token.decode('utf-8'),
'Content-Type': 'application/json'}

In [246]:

page = 1
per_page=30
mymedias=[]
while True:
    data = {
    'per_page': per_page,
    'page': page
    }

    response = requests.get(baseurl+"/media", headers=header,data=json.dumps(data))
    result = response.json()
    item_count = len(result)
    page=page+1
    if(item_count<per_page):
        break
    # print(result)
    mymedias.extend(result)
    print("*",end="")
**********************

In [247]:

page = 1
per_page=30
myposts=[]
while True:
    data = {
    'per_page': per_page,
    'page': page
    }

    response = requests.get(baseurl+"/posts", headers=header,data=json.dumps(data))
    result = response.json()
    item_count = len(result)
    page=page+1

    # print(result)
    myposts.extend(result)
    print("*",end="")
    if(item_count<per_page):
        break
page=1
while True:
    data = {
    'per_page': per_page,
    'page': page
    }

    response = requests.get(baseurl+"/pages", headers=header,data=json.dumps(data))
    result = response.json()
    item_count = len(result)
    page=page+1

    # print(result)
    myposts.extend(result)
    print("*",end="")
    if(item_count<per_page):
        break
****************************************************************

In [248]:

mycontent=""
for post in myposts:
    content = post['content']['rendered']
    mycontent=mycontent+content
    
    

In [249]:

def save_text_to_file(text, file_path):
    with open(file_path, 'w') as file:
        file.write(text)

save_text_to_file(mycontent,"result.txt")

In [250]:

def download_file(url, save_path):
    response = requests.get(url)
    
    if response.status_code == 200:
        with open(save_path, 'wb') as file:
            file.write(response.content)
        print(f"파일 다운로드 완료: {save_path}")
    else:
        print("파일 다운로드 실패")

In [251]:

if 'Myimage-29.png' in mycontent:
    print("OK")

In [252]:

mymedia_hash=[]
count = 0 
for mymedia in mymedias:
    myone = os.path.basename(mymedia['guid']['rendered'])
    if myone not in mycontent:
        print(myone)
        print(mymedia['guid']['rendered'])
        print(mymedia['id'])
        download_file(mymedia['guid']['rendered'],"data/"+myone)
        deleteurl = baseurl+f"/media/{mymedia['id']}"
        print(deleteurl)
        count=count+1

        data = {
    'id': mymedia['id'],
    'force': 1,
    }
        print(data)
        res = requests.delete(deleteurl,headers=header,data=json.dumps(data))
        print(res.status_code)

print(count)
tmpr5ze2f_a.png
https://flywithu.com/wp-content/uploads/2023/05/tmpr5ze2f_a.png
6831
파일 다운로드 완료: data/tmpr5ze2f_a.png

Leave a Reply

Your email address will not be published. Required fields are marked *