티스토리 블로그는 블로그 API를 통해서 글을 작성할 수 있었습니다. 블로그 APIMicrosoft Word 와 같은 외부 편집기 프로그램을 통해서 티스토리에 글을 게시하고 수정할 수 있는 API 입니다. 그런데 보안에 취약한 문제 등으로 2016 12월에 지원을 종료하였습니다. 대신에 오픈 API는 계속 사용할 수가 있습니다.

http://notice.tistory.com/2359

저는 아래 주소의 로또 관련 포스팅을 매주 자동으로 생성하고 있습니다. 로또 결과 발표가 나면 단순한 형태의 크롤링을 통해 로또 당첨번호를 가져오고~ 계속해서 안 나오고 있는 숫자들을 자동으로 찾습니다.

http://iamaman.tistory.com/category/%EB%A1%9C%EB%98%90

이후 포스팅할 로또 HTML 페이지를 생성 한 다음 티스토리 오픈 API를 통해서 로또 포스팅을 업로드 하고 있습니다.

http://www.tistory.com/guide/api/post

그런데 오픈 API 사용 실력이 딸리다 보니 텍스트 업로드는 알겠는데 파일 업로드는 잘 모르겠더군요. 매주 로또 파일이 업로드 되는데 글에 첨부되는 텍스트 파일 업로드를 자동으로 하는 방법을 잘 모르겠어서, 로또 파일 업로드는 수동으로 처리하고 있습니다. 

오픈 API를 확인해 보면 파일 첨부 API가 있습니다. 파일 첨부 API를 사용해서 텍스트 파일을 업로드를 여러 번 시도해 봤지만 정상적으로 동작하지 않았습니다. 그래서 이번에는 제가 가지고 있는 Synology NAS 에 터미널로 붙어서 CURL을 통해 티스토리 블로그에 파일첨부를 시도해봤습니다.

curl -F 'access_token=access_token값' \

     -F 'blogName=iamaman' \

     -F 'uploadedfile=@./lotto.txt' \

     https://www.tistory.com/apis/post/attach

텍스트 업로드를 시도하자 아래 그림과 같이 이미지만 업로드 할 수 있다고 에러 메시지가 뜨더군요. ~! 결과적으로 오픈 API의 파일 첨부 API를 사용해서는 텍스트 파일은 업로드 할 수 없다는걸 이제야…. 알게 됐습니다.


같은 방법으로 이미지파일을 업로드 해 보니 정상적으로 첨부가 되더군요.  정상적으로 동작하면 응답값 200을 받습니다.

그럼 텍스트 파일을 이미지 확장자로 만든 다음에 업로드 해 보면 어떻게 될까... 해서 해 봤는데... 역시나 안되더군요. 


이 글을 보시는 분들은 저처럼 Tistory Open API 를 통해 텍스트 파일 첨부하려고 뻘짓하지 마시기 바랍니다.


텍스트 파일을 사용하다 보면 encoding 이 문제가 되는 경우가 종종 있습니다.

 

이런 경우에는 encoding 을 변경하여 해결 하곤 하는데~

 

notepad++ 와 같은 에디터의 기능을 활용 하거나~ 아니면 iconv 와 같은 명령어를 사용하여 encoding 을 변경하곤 하는데요~

 

iconv 와 같은 명령어를 활용하더라도 현재 텍스트 파일의 encoding 방식을 확인 해야 합니다.

 

encoding을 확인 하기 위해 일일이 에디터에서 파일을 여는 것도 귀찮아서 찾아보니~

 

chardet 라는 python 모듈을 있더군요.

 

https://github.com/chardet/chardet

 

위 주소에서 확인 할 수 있는 바와 같이 아래 타입들을 detect 할 수 있다고 합니다.

 

ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants), Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese), EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese), EUC-KR, ISO-2022-KR (Korean), KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic), ISO-8859-5, windows-1251 (Bulgarian), windows-1252 (English), ISO-8859-7, windows-1253 (Greek), ISO-8859-8, windows-1255 (Visual and Logical Hebrew), TIS-620 (Thai)

 

python 모듈이니만큼 설치도 굉장히 간단한데요~

 

다음과 같이 pip 로 설치 할 수 있습니다.

 

pip install chardet

 

설치는 하면 아래 그림과 같이 C:\Python27\Scripts\chardetect.EXE 에 chardetect 실행 파일이 설치가 됩니다.

 

그럼 다음과 같이 명령어를 이용하여 텍스트 파일의 encoding 을 확인 할 수 있습니다.

 

chardetect 파일명1 파일명2 파일명3 …

 


+ Recent posts