728x90
반응형
python으로 Notion에 글을 쓰는 작업을 하던 중 rich text가 많이 쓰이지만 쓸 때마다 번거롭다고 느껴져서 class로 만들어서 정리하였습니다. 필요하신 분들은 가져가셔서 쓰셔도 됩니다.
⭐ rich text의 3가지 타입 중 mention의 경우 잘 쓰이지 않아서 위의 형식처럼 사용할 수 있도록 설정하였습니다. mention data에 대한 자세한 내용은 공식 페이지에서 확인하시고 사용하시길 바랍니다.
👀 전체 코드
success_txt = "변경 성공"
choose_txt = "에서 골라주세요."
class rich_text:
def __init__(self, txt):
self.type = "text"
self.text = {'content': txt, 'link': None}
self.mention = {}
self.equation = {}
self.annotations = { "color": "default" }
self.plain_text = txt
self.href = None
def output(self):
output = {"type": self.type , "annotations": self.annotations, "plain_text": self.plain_text, "href" : self.href}
if self.type == 'text':
output["text"] = self.text
elif self.type == 'mention':
output["mention"] = self.mention
elif self.type == 'equations':
output["equation"] = self.equation
return output
# ------------- 타입 변경 -------------
def changeTypeToText(self, txt):
self.type = "text"
self.text = {'content': txt, 'link': None}
return success_txt
def changeTypeToMention(self, mention_type, mention_data, txt):
types = ["database", "date", "link_preview", "page", "template_mention", "user"]
if not mention_type in types:
return f"{types}" + choose_txt
self.mention = {"type": mention_type}
self.mention[mention_type] = mention_data
self.plain_textain_text = txt
return success_txt
def changeTypeToEquation(self, txt):
self.type = "equation"
self.equation = {"expression": txt}
# ------------- 글자 옵션 변경 -------------
def changeAnnotationsExceptColor(self, value):
if not value in ["bold", "italic", "strikethrough", "underline", "code"]:
return "You can change only [bold, italic, strikethrough, underline, code]"
else:
self.annotations[value] = !self.annotations[value]
return success_txt
def changeHref(self, href):
if self.type == 'text':
self.text['link'] = {"url": href}
self.href = href
return success_txt
def changeColor(self, color):
colors = ["blue", "blue_background", "brown", "brown_background", "default", "gray", "gray_background", "green", "green_background", "ornage", "orange_background", "pink", "pink_background", "purple", "purple_background", "red", "red_background", "yellow", "yellow_background"]
if not color in colors:
return f"{colors}" + choose_txt
else:
self.annotations["color"] = color
return success_txt
def changeText(self, txt):
self.text = {'content': txt, 'link': None}
self.plain_text = txt
return success_txt
반응형
'프로그램 개발 > Python' 카테고리의 다른 글
[python] 이미지 속 한글 추출하기(OpenCV, Pyplot, Pytesseract) (0) | 2024.01.12 |
---|---|
[python] 유튜브 커뮤니티 글 가져오기(Selenium) (1) | 2024.01.02 |
[python] 미국 국채 금리 확인하기(yfinance) (0) | 2023.01.11 |
[python] 미국 증시 3대 지수 확인하기(yfinance) (0) | 2023.01.10 |
[코딩 인터뷰]개념과 알고리즘 - 재귀와 동적 프로그래밍(Python) (0) | 2022.12.28 |