매번 notion에 작업하고 이를 다시 블로그에 옮기는 일련의 과정이 귀찮아서 자동화하려고 한다.
무언가를 정리하고 기록하는 건 notion이 더 편해서 자주 기록을 하게 된다.
그러나 해당 내용을 다시 블로그에 옮겨야 된다는 번거로움이 있어서 해당 과정을 자동화시키고자 한다.
publishBot 일정 계획 (이번주 안에 끝내도록)
publishBot 개발 환경 세팅
기능 개발 시작
selenium을 통해 로그인 및 게시글 작성 및 게시 작업 자동화를 진행했다.
로그인 및 게시글 작성 페이지까지 넘어가서 제목 및 태그 작성까지 가능했지만
본문 작성 실패…(CodeMirror 문제…)
Notion API를 통해 TIL Database에 있는 정보를 읽어오고 Markdown으로 변환시키는 자동화 작업을 진행했다.
Notion 특정 데이터베이스 정보 가져오기
Notion 특정 페이지 정보 가져오기
Notin to Markdown 구현 (Notion2Md 라이브러리 사용) - 자동으로 이미지도 AWS에 올려주는 작업을 해줘서 쉽게 사용할 수 있다.
백준 허브 크롬 익스텐션 설치 및 Github 연동
백준 / 프로그래머스에서 작성한 코드를 자동으로 연동된 github repository에 커밋해주는 최고의 익스텐션…강추!!!
매일매일 코딩테스트 했던 기록을 잔디로 남길 수 있는 미친 익스텐션!!
[https://chrome.google.com/webstore/detail/백준허브baekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko](https://chrome.google.com/webstore/detail/백준허브baekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko)
def solution(board, moves):
answer = 0
stack = []
board_zip = [list(item) for item in list(zip(*board))]
for move in moves:
for idx, fig in enumerate(list(board_zip[move-1])):
if(fig != 0):
stack.append(fig)
board_zip[move-1][idx] = 0
if(len(stack) > 1 and stack[-1] == stack[-2]):
answer += 2
stack = stack[:-2]
break
return answer
from collections import Counter
def solution(participant, completion):
p_dict = Counter(participant)
c_dict = Counter(completion)
for key,value in p_dict.items():
if(c_dict[key] != value):
return key
def getDivisors(number):
if(number == 1) : return 1
divisors = set()
count = 0
for i in range(1, int(number ** 0.5)+1):
if(number % i == 0):
divisors.add(i)
tmp_divisors = divisors.copy()
for i in tmp_divisors:
divisors.add(number//i)
return len(divisors)
def getCost(power, limit, limitPower):
if(power > limit):
return limitPower
else:
return power
def solution(number, limit, power):
answer = 0
divisorCounts = []
for num in range(1, number+1):
divisorCounts.append(getDivisors(num))
for count in divisorCounts:
answer += getCost(count,limit,power)
return answer
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
Velog에 제목
이랑 태그
설정까지는 손쉽게 할 수 있었다.
그러나 본문 내용 입력에서 난관에 봉착했다…
Velog는 Input element
가 아닌 CodeMirror
라는 웹 에디터를 통해 본문 내용을 입력받고 있었다.
이거는 일반적인 Input element
가 아니라서 입력이 되지 않았다…
chat gpt가 알려준 방식대로 진행해봤지만 send_keys
부분에서 에러가 발생했다.
textarea = driver.find_element(By.XPATH, '//div[contains(@class, "CodeMirror")]//textarea')
textarea.send_keys('Test Input')
해당 문제를 해결하기 위해 계속 찾아볼 예정이다…