본문 바로가기
프로그래밍/Python

[Python] 티스토리 API를 사용하여 작성글 쓰기(2)

by 코딩연습생 2021. 1. 14.
반응형

안녕하세요~

 

요즘 블로그에 많은 시간을 할애하고 있네요ㅎㅎ

 

딥러닝 분석을 통한 주식 정보 자동 포스팅 구연하랴...오류수정...개선...끝이 안보이네요ㅎ

 

거기에 블로그의 원래 취지인 코딩 정보 공유까지 할려니 하루가 후딱 지나가고 있습니다

 

휴식과 일의 배율이 참 중요하다는데..코로나로 인해 강제 근무를 더 하게 되는거 같습니다

 

조만간 나올 백신 종전이 될까요?ㅎ

 

사실 개인적으로는 백신이 나와도 선뜻 못 맞을거 같습니다 저는ㅋㅋ

 

이번 포스팅은 저번 포스팅에 이은 2탄~

 

https://codingman.tistory.com/152

 

[Python] 티스토리 API를 사용하여 작성글 쓰기(1)

안녕하세요 코딩연습생입니다~ 저번 포스팅에 이어 파이썬 언어를 통해 티스토리 API를 사용하여 자동 업로드를 구현 두번째 포스팅 입니다 https://codingman.tistory.com/147?category=762038 [Python] 티스토

codingman.tistory.com

파이썬에서 티스토리API를 사용하여 작성글 올리기 입니다

 

저번 포스팅에서 글을 올릴 위치를 지정하기 위한 카테고리 ID 조회까지 구현해 봤는데요

 

이번에는 카테고리 ID를 이용해서 실질적인 글을 올리는 방법에 대해서 포스팅 할려고 합니다

 

해당 포스팅은 분량이 많아 연재식으로 작성 중인데 처음오신분들은 티스토리 API 셋팅 방법 부터 보고 오셔야

 

이해가 되실거라 생각됩니다

 

https://codingman.tistory.com/147?category=762038

 

[Python] 티스토리 API 사용을 위한 Access_token 구하기

안녕하세요 코딩연습생입니다~ 이번 포스팅은 파이썬 언어를 통해 티스토리 API를 사용하여 자동 업로드를 구현해 볼려고 합니다 구현에 앞서 몇가지 준비사항들이 필요한데 1. Token 키를 알아야

codingman.tistory.com

 

처음 티스토리 API설정이 끝나고 카테고리 ID를 조회하여 찾으셨다면 이제 쉽게 글을 올리실수 있습니다

 

일단 티스토리가 html 형식으로 글을 쓰게 됩니다

 

쉬운 방법은 일단 PC를 통해 샘플 글을 미리 작성을 합니다

 

샘플 글을 작성하신 다음 우측 상단에 기본모드를 html 모드로 변경해 줍니다

 

html 모드로 변경을 하면 아래와 같은 형태로 변경됩니다

 

그럼 컨텐츠 영역에 글을 모두 복사 한뒤 파이썬에서 분자열 변수에 담아서 코딩을 합니다

 

    def get_content(self):
        html_content = '<p>* 현재 개발 중인 주식 분석 프로그램 실행 결과 값입니다</p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;"><b>&nbsp; 이 자료는 주식 투자 목적이 아닌 프로그램 분석율 계산을 위한 값이므로 절대 신뢰하지 마세요</b></span></p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;"><b>&nbsp; (이자료를 통한 투자 손해에 대해 필자는 배상하지 않습니다)</b></span></p>'
        html_content += '<p>&nbsp;</p>'
        html_content += '<p data-ke-size="size14">※ 해당 정보는 프로그램 결과값이 정리하여 자동으로 포스팅되는 글라는 점을 참고해 주세요</p>'
        html_content += '<p data-ke-size="size14">&nbsp; &nbsp;(' + nowdate + '프로그램이 자동으로 포스팅한 자료 입니다)</p>'
        html_content += '<p>&nbsp;</p>'
        html_content += '<p>▣' + nowdate + '_급등 주가 리스트</p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;">(현재 기준 지난 30일간 주가가 10배 이상 급등한 주가 리스트입니다)</span></p>'
        html_content += '<p>&nbsp;</p>'
        html_content += '<p><span style="color: #333333;">▣' + nowdate + '_매수 예상 종목</span></p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;">(프로그램에서 현재 기준 매수할 경우 승률이 가장 좋은 리스트 입니다)</span></p>'
        html_content += '<p>&nbsp;</p>'
        html_content += '<p><span style="color: #333333;">▣ 관심 주가별 예상 종가 리스트</span></p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;">(과거 데이터를 이용하여 텐서플로워를 통해 최종 예상 종가를 예측한 값입니다)</span></p>'
        html_content += '<p data-ke-size="size14"><span style="color: #ee2323;">(신뢰성은 매우 낮습니다ㅠ 뭔가 알고리즘을 바꿔야 할거 같습니다)</span></p>'
        html_content += '<p>&nbsp;</p>'
        html_content += '<p>위의 주가 리스트는 ' + nowtime + ' 기준으로 취합된 데이터로 작성된 자료 입니다</p>'
        html_content += '<p>프로그램 결과에 대한 값을 티스토리에 자동 포스팅 중입니다</p>'
        html_content += '<p>프로그램 결과 평일 기준 오전, 오후 두번 포스팅 하고 있습니다</p>'
        html_content += '<p>해당 자료는 테스트 및 분석용으로 사용합니다</p>'
        html_content += '<p>실제 투자에 활용하고자 할 경우 참고만 하시고 최종 분석은 본인이 해야 합니다</p>'
        html_content += '<p>감사합니다</p>'

        html_file = open(html_path, 'w+')
        html_file.write(html_content)
        html_file.close()

이런식으로 아예 함수로 하나를 만들었습니다

 

그런뒤 해당 변수의 내용을 토대로 html 샘플 파일을 만들었습니다

 

 

이부분이 바로 html 파일로 저장하는 구문입니다

 

그런 다음 아래와 같이 티스토리 API를 동작시킬 함수를 만들어 줍니다

 

    def get_write(self):
        self.get_content()

        #생성된 html 파일의 경로.
        html_path = os.path.join(settings.BASE_DIR, "tistory/html/html_content.html")
        now = datetime.now()  # current date and time
        today = now.strftime("%Y.%m.%d")
        nowtime = now.strftime('%H:%M:%S')
        title = '[주가분석요약] ' + today + '_프로그램을 활용한 주식분석_예상결과(' + nowtime + ')'
        f = open(html_path, "r", encoding='cp949')
        content = f.read()

        print(content)
        #with open(html_path, "r", encoding='ISO-8859-1') as file:
        #    print(file)
        #    content = file.read()

        visibility = "3"  # 발행상태 0비공개-기본, 1보고,3발행
        category_id = "834763"  # 카테고리 아이디 기본값 0
        slogan = title  # 문자주소
        tag = "주가분석, 급등주, 퀸트분석, 종가예측, 관심종목, 주식, 종목," + today + " 주식정보"  # 태그 ,로 구분
        acceptComment = ""  # 댓글 허용 (0, 1 - 기본값)
        password = ""  # 보호글 비밀번호
        url = 'https://www.tistory.com/apis/post/write'
        data = {'access_token': access_token, 'output': 'json', 'blogName': blog_name, 'title': title, 'content': content,
                'visibility': visibility, 'category': category_id, 'slogan': slogan, 'tag': tag,
                'acceptComment': acceptComment, 'password': password}
        r = requests.post(url, data=data)
        print(r, r.text)

 

해당 구문에서 아까 글을 올리고자 하는 문자열을 html 파일 형태로 저장하고

 

 

주석에 설명되어 있듯이 저장된 html을 읽어오는 구문 입니다

 

그리고 requests 형태로 변경하기 위해 여러가지 변수의 값을 지정했습니다

 

1)  title : 글 제목

2)  content : 본문 내용

3)  visivbility : 발생상태

4)  categort_id : 올리고자 하는 카테고리 ID

5)  slogan : 주석(?) 같은 의미

6)  tag : 글 태그 입력

7)  acceptComment : 댓글 권한 설정

8)  password : 보호글 비밀번호

9)  url : 티스토리 API 동작 주소

10) data : 위의 종합 정보를 requests 형태로 조합

 

Dataframe에 위의 정보 정도로 취합되는거 같습니다

 

해당 구문을 모두 작성하신뒤 

 

 

 

이렇게 __init__ 부분에 다음과 같이 호출을 하게 되면

 

저장해 놓은 html의 내용이 본문의 내용으로 업로드 되어 집니다

 

정상 적으로 글쓰기가 동작했다면 다음과 같은 리턴 값이 오게 됩니다

 

 

여기까지 하셨다면 성공하신겁니다

 

다음 포스팅에서는 본문 내용에 이미지 파일을 넣어서 작성글을 만들어보는 포스팅 방법을 올릴 예정입니다

 

밑에 이미지는 현재 제가 프로그램을 통해 자동 업로드 하고 있는 결과입니다

 

여러분도 정기적인 정보나 대량의 자료를 업로드해야할시 위의 정보로 구현하여 사용해 보시기 바랍니다

 

반응형

댓글