Skip to content
DevBJ
Go back

티스토리 공개 글 111개를 이미지까지 로컬 백업해 봤다

Advertisement
Editor

티스토리 공개 글을 로컬에 백업해 봤다. 글 111개와 직접 업로드 이미지 후보 116개를 저장했고 빠진 글은 없었다.

원문을 바로 새 블로그 글로 변환하지 않았다. 먼저 작업용 원본을 별도 폴더에 보관하는 방식으로 만들었다.

백업 결과

항목결과
공개 글111개
직접 업로드 이미지 후보116개
너비를 줄인 이미지19개
수집 실패0개
전체 작업본 크기약 14.34MB

이미지 116개가 모두 내 이미지라는 뜻은 아니다. 티스토리 직접 업로드 주소로 확인된 파일을 self-candidate로 표시한 결과다.

왜 따로 만들었나

티스토리 Open API는 2024년 2월까지 순차 종료됐다. 현재 공개 글을 읽어 작업본으로 보관하려면 공개 HTML을 기준으로 처리하는 방법이 필요했다.

비공개 글이나 보호 글은 대상으로 잡지 않았다. 로그인 정보나 브라우저 cookie도 사용하지 않는다.

저장 구조

글 하나를 세 파일과 이미지 폴더로 나눴다.

backups/fpga-asic/
├─ README.md
├─ 1026/
│  ├─ source.html
│  ├─ draft.md
│  ├─ metadata.json
│  └─ images/
└─ 1025/

source.html에는 추출한 원문 본문 HTML을 남긴다. draft.md는 재작성과 통합에 사용하는 작업본이다.

metadata.json에는 원문 URL, 작성일, 이미지 원본 크기와 저장 크기를 기록한다. 원문과 변환 결과를 섞지 않는 것이 핵심이다.

카테고리로 받기

현재 로컬 CLI에서는 카테고리 URL을 넣어 전체 목록을 받을 수 있다.

pnpm.cmd backup -- category `
  "https://wiznxt.tistory.com/category/IT/ASIC%20%7C%20FPGA" `
  backups/fpga-asic

특정 글만 확인하려면 ID를 지정한다.

pnpm.cmd backup -- category `
  "https://wiznxt.tistory.com/category/IT/ASIC%20%7C%20FPGA" `
  backups/test `
  --ids=1026,1025

원하는 글만 받기

개별 글 URL을 직접 넣을 수도 있다.

pnpm.cmd backup -- posts backups/selected `
  "https://wiznxt.tistory.com/1026" `
  "https://wiznxt.tistory.com/1025"

글이 많으면 text 파일에 URL이나 ID를 한 줄씩 적어둔다.

https://wiznxt.tistory.com/1026
https://wiznxt.tistory.com/1025
pnpm.cmd backup -- list posts.txt backups/selected

이미지 처리

티스토리 직접 업로드 주소로 보이는 이미지만 내려받는다. 외부 사이트 이미지, 광고, 프로필과 스킨 자산은 제외한다.

너비가 1024px을 넘으면 원본 비율을 유지한 채 너비만 줄인다. 세로 길이는 제한하지 않고 crop도 하지 않는다.

너비가 이미 1024px 이하라면 원본 파일을 그대로 둔다. 111개 글을 수집했을 때는 116개 중 19개가 축소 대상이었다.

요청 간격

카테고리를 한꺼번에 읽더라도 동시에 여러 글을 요청하지 않는다. 현재 기본값은 요청 사이 1200ms와 최대 600ms의 무작위 지연이다.

pnpm.cmd backup -- category `
  "https://example.tistory.com/category/example" `
  backups/example `
  --delay=2000

브라우저인 것처럼 User-Agent를 꾸미지는 않았다. 공개 백업 도구라는 이름을 사용하고 요청 횟수를 줄이는 쪽으로 정리했다.

아직 확인하지 않은 부분

다른 티스토리 스킨 전체에서 동작하는지는 확인하지 않았다. 이번에는 한 블로그의 신형·구형 편집기 글만 확인했다.

댓글, 방명록, 비공개 글과 첨부파일 전체 백업도 아직 지원하지 않는다. 현재 도구는 로컬에서만 사용하고 있다.

백업 대상

한 줄 요약

티스토리 공개 글은 원문 HTML, 작업용 Markdown, 메타데이터와 이미지를 분리해 두면 나중에 통합하거나 옮기기 편하다.

끝.


Share this post on:

Next Post
Verilog blocking과 non-blocking은 언제 나눠 써야 하나