• 티스토리 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();

    댓글