wordpress에서 라이브러리와 블로그 링크

wordpress로 블로그를 올리고 미디어 파일을 올립니다. 그런데 미디어파일을 별도로 올리거나 하는 경우 아래와 같이 미디어 파일과 블로그의 글의 링크가 깨지는 경우가 있습니다.

아래의 스크립트를 돌리면 이러한 글들을 미디어파일과 블로그 글을 링크로 연결 해줍니다.

# -*- 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 [ ]:

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

In [ ]:

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

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

In [ ]:

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 [ ]:

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 [ ]:

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 [ ]:

def attach_media_to_post(post_id, attachment_id, baseurl, authname,authpass):
    # 첨부 요청

    credentials = authname + ':' + authpass
    token = base64.b64encode(credentials.encode())

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



    
    targetpost = f'{baseurl}/media/{attachment_id}'
    data = {'post':post_id}
    response = requests.post(targetpost, headers=header, data=json.dumps(data))



    if response.status_code == 200:
        # 첨부 성공
        print('미디어 파일이 블로그 글에 첨부되었습니다.')
    else:
        # 첨부 실패
        print('미디어 파일 첨부에 실패했습니다.')
        print(response.text)

In [ ]:

from urllib.parse import urlparse

count = 0 
for mymedia in mymedias:
    # myone = os.path.basename()
    myone =  urlparse(mymedia['guid']['rendered']).path
    print(myone)
    for post in myposts:
        content = post['content']['rendered']
        if myone in content:
            print(post['id'],mymedia['id'])
            attach_media_to_post(post['id'],mymedia['id'],baseurl,username,password)

2 thoughts on “wordpress에서 라이브러리와 블로그 링크”

  1. 안녕하세요 그간 티맵 덕분에 잘쓰고있던 유저입니다~~요새 티맵 카테고리가 삭제되서 이제 더이상 업뎃을 안하는지요?이유가 있겠지만..아쉽네요..^^

    1. 안녕하세요. 네.. 티맵이 문제가 생겼습니다. ㅠㅠ
      앞으로 티맵을 직접적으로 업데이트 하는 것은 어려울것 같습니다. ㅠ

Leave a Reply

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