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)
안녕하세요 그간 티맵 덕분에 잘쓰고있던 유저입니다~~요새 티맵 카테고리가 삭제되서 이제 더이상 업뎃을 안하는지요?이유가 있겠지만..아쉽네요..^^
안녕하세요. 네.. 티맵이 문제가 생겼습니다. ㅠㅠ
앞으로 티맵을 직접적으로 업데이트 하는 것은 어려울것 같습니다. ㅠ