• 티스토리 RSS를 Node.js에서 Json으로 가져오기

    2022. 8. 12.

    by. 카유.

    RSS 주소

     

    티스토리의 RSS 주소는
    https://블로그주소/rss 입니다.
    예시로 제 블로그는 다음과 같습니다.

    https://answn.tistory.com/rss

     

     

    RSS 설정

     

    티스토리 블로그 관리 페이지로 갑니다.

    좌측 하단 메뉴에서 관리 > 블로그로 갑니다.

     

    내려보시면 기타 설정이 있습니다.

    여기서 공개 범위는 안건드셔도 되고
    공개될 포스팅 수는 5 ~ 50개중에
    용도에 따라 선택하시면 됩니다.

    설정을 다 하셨으면 '변경사항 저장'

     

     

    Node.js 모듈 설치

     

    1. HTTP 비동기 요청

    npm install axios

     

    2. XML을 Json으로 변환

    npm install xml2js

     

     

    코드로 구현

     

    const axios = require('axios').default;
    const xml2js = require("xml2js");
    /**
    * 티스토리 RSS 가져오기
    * @param {String} rssURL
    * @returns {{
    * title: String,
    * items: Array.<{
    * title: String[],
    * link: String[],
    * description: String[],
    * category: String[],
    * author: String[],
    * coments: String[],
    * pubDate: String[]
    * }>}} Json
    */
    async function getTistoryRSS(rssURL) {
    const rssXML = (await axios.get(rssURL)).data;
    const jsonData = await xml2js.parseStringPromise(rssXML);
    const rssObject = jsonData.rss.channel[0];
    return {
    "title": rssObject.title[0],
    "items": rssObject.item
    };
    }

    위 함수는 다음과 같은 구조로 반환합니다.

    {
    "title": "블로그 이름",
    "items": [
    {
    "title": ["글 제목"],
    "link": ["글 주소"],
    "description": ["글 내용"],
    "author": ["글쓴이"],
    "coments": ["댓글 주소"],
    "pubDate": ["글 작성 시간"]
    }
    ]
    }

     

     

    예제

     

    async function main() {
    try {
    const rss = await getTistoryRSS("https://answn.tistory.com/rss");
    const recentTitle = rss.items[0].title[0];
    console.log("가장 최근 글 제목", recentTitle);
    }
    catch (err) {
    console.error(err);
    }
    }
    main();

    댓글