홈페이지를 리뉴얼하면서 기존의 일반 홈페이지와 두개의 블로그 RSS Feed를 합쳐서 하나의 통합 RSS 피드를 만드는 간단한 스크립을 작성해 보았다. 나뿐만 아니라 여러개의 블로그를 가지고 있거나 여러개의 게시판 별로 RSS Feed를 제공하는 경우가 종종 있는데 이러한 경우 통합 RSS 피드를 제공하면 구독자에게 더욱 편리할 수 있을 것 같다.

통합 RSS Feed 만들기
[1] 파일을 다운 받은 후 압축을 풀면 BMUnifyFeeds.cgi와 feed.info 두개의 파일이 있다.
[2] 먼저 자신의 웹호스팅 서버의 Python 경로를 알기 위해 telnet 접속을 한 후 다음 명령어를 사용한다. 만일 경로를 얻지 못하면 호스팅 서버에 Python이 설치 되어 있지 않은 것이다.
[3] BMUnifyFeeds.cgi 파일을 열고 맨 윗줄에 있는 경로를 [2]에서 알아낸 자신의 서버의 파이썬 경로로 변경한다.
[4] feed.info 파일을 열고 여러개의 피드를 하나로 통합하는데 필요한 피드 정보를 자신에 맞게 수정한다.
위의 XML Namespace가 정의된 주소는 밑에 그림과 같이 RSS 피드인 XML 파일을 브라우저의 소스보기 또는 텍스트 에디터로 열어 보면 알 수 있습니다. 위의 예제에 있는 형식대로 URL를 감싸는 (") 기호를 제거하고 입력하며, 통합 할 기존의 RSS 피드를 모두 확인하여 사용된 XML Namespace를 모두 포함시켜 주세요. 사용되지 않는 XML namespace를 포함 시켰을 경우 에러가 발생할 수 있으니 필요없는 namespace는 삭제 해주세요.

웹호스팅 서버에서 Python을 지원해야 한다. Python은 리눅스의 기본 패키지이기 때문에 대부분의 리눅스 호스팅에서 지원하리라 생각된다.BMUnifyFeeds_v02.zip
버젼0.2 (2/10/2007 수정본)
스크립에 대해서 more..
통합 RSS Feed 만들기
[1] 파일을 다운 받은 후 압축을 풀면 BMUnifyFeeds.cgi와 feed.info 두개의 파일이 있다.
[2] 먼저 자신의 웹호스팅 서버의 Python 경로를 알기 위해 telnet 접속을 한 후 다음 명령어를 사용한다. 만일 경로를 얻지 못하면 호스팅 서버에 Python이 설치 되어 있지 않은 것이다.
$ which python
/home/bin/python
/home/bin/python
[3] BMUnifyFeeds.cgi 파일을 열고 맨 윗줄에 있는 경로를 [2]에서 알아낸 자신의 서버의 파이썬 경로로 변경한다.
#! /home/bin/python
# -*- coding: utf-8 -*-
# DO NOT REMOVE THE ENCODING DECLARATION ABOVE
# -*- coding: utf-8 -*-
# DO NOT REMOVE THE ENCODING DECLARATION ABOVE
[4] feed.info 파일을 열고 여러개의 피드를 하나로 통합하는데 필요한 피드 정보를 자신에 맞게 수정한다.
# 통합 사이트 피드에 대한 제목, 대표하는 홈페이지 주소, 설명
title=Blue Mojo's Site Feed
homepage_url=http://www.ibluemojo.com
desc=Blue Mojo의 블로그, 게시판, 포토로그 통합 RSS Feed
# 통합 할 피드 주소, 추가시 새로운 라인에 feed_4, feed_5... 이런식으로 추가
feed_1=http://www.ibluemojo.com/rss.xml
feed_2=http://www.ibluemojo.com/page_feed.xml
feed_3=http://www.ibluemojo.com/blog/rss
# 통합 할 피드들이 가지고 있는 모든 XML Namespace 정의 주소
# 사용하지 않는 namespace는 반드시 삭제
# Blogger
xmlns:atom=http://www.w3.org/2005/Atom
xmlns:openSearch=http://a9.com/-/spec/opensearchrss/1.0/
# WordPress
xmlns:content=http://purl.org/rss/1.0/modules/content/
xmlns:wfw=http://wellformedweb.org/CommentAPI/
xmlns:dc=http://purl.org/dc/elements/1.1/
title=Blue Mojo's Site Feed
homepage_url=http://www.ibluemojo.com
desc=Blue Mojo의 블로그, 게시판, 포토로그 통합 RSS Feed
# 통합 할 피드 주소, 추가시 새로운 라인에 feed_4, feed_5... 이런식으로 추가
feed_1=http://www.ibluemojo.com/rss.xml
feed_2=http://www.ibluemojo.com/page_feed.xml
feed_3=http://www.ibluemojo.com/blog/rss
# 통합 할 피드들이 가지고 있는 모든 XML Namespace 정의 주소
# 사용하지 않는 namespace는 반드시 삭제
# Blogger
xmlns:atom=http://www.w3.org/2005/Atom
xmlns:openSearch=http://a9.com/-/spec/opensearchrss/1.0/
# WordPress
xmlns:content=http://purl.org/rss/1.0/modules/content/
xmlns:wfw=http://wellformedweb.org/CommentAPI/
xmlns:dc=http://purl.org/dc/elements/1.1/
위의 XML Namespace가 정의된 주소는 밑에 그림과 같이 RSS 피드인 XML 파일을 브라우저의 소스보기 또는 텍스트 에디터로 열어 보면 알 수 있습니다. 위의 예제에 있는 형식대로 URL를 감싸는 (") 기호를 제거하고 입력하며, 통합 할 기존의 RSS 피드를 모두 확인하여 사용된 XML Namespace를 모두 포함시켜 주세요. 사용되지 않는 XML namespace를 포함 시켰을 경우 에러가 발생할 수 있으니 필요없는 namespace는 삭제 해주세요.
[5] 수정이 끝난 파일들을 웹서버에 자신이 원하는 디렉토리로 업로드 한다. (단, 두개의 파일은 같은 디렉토리 안에 있어야 함) FTP 클라이언트을 사용하거나 다음 명령어를 사용해 cgi 스크립의 권한을 755로 설정한다. (CGI 파일 이름은 자신이 원하는데로 변경해도 된다.)
$ chmod 755 BMUnifyFeeds.cgi
[6] 모두 끝난 후 http://자신의도메인/업로드한디렉토리/BMUnifyFeeds.cgi로 접속해 본다. XML로 피드가 제대로 생성되면 위 주소를 Feed 주소로 제공하면 된다.
흔한 에러 바로잡기
브라우저 마다 에러 메세지가 틀릴 수 있지만 비슷한 내용을 찾으시면 됩니다.
HTTP 500 Internal Sever Error.
- 호스팅 서버가 Python을 지원하는지 확인한다.( [2]번 참조)
- CGI 스크립의 권한을 755로 설정해 주었는지 확인한다. ([5]번 참조)
- CGI 소스 코드의 탭 스페이스가 엉망이 되었는지 확인한다. (스크립에 대해서...more에서 4번 참조)
브라우저가 XML 문서를 표시할 수 없습니다. 정의(선언)되어 있지 않은 XML namespace(공간 접두사)를 참조 합니다. 'atom' 줄: 17, 또는 XML 파싱 에러: 참조 항목이 없음. 줄:17, 행:1
- 자신이 사용하는 피드의 XML namespace를 feed.info에 모두 포함 시켰는지 확인 한다. ([4]번 참조)
- feed.info를 수정할 때 기본 포맷을 변경하였는지 또는 오타가 없는지 확인한다. feed.info의 기본키(title, feed1,..)는 변경하시면 안되며 키와 수정할 내용 사이에 스페이스가 들어가면 안됩니다. (예. 키=[여기만 해당 정보 수정])
브라우저가 XML 문서를 표시할 수 없습니다. XML 문서에는 최상위 요소가 있어야 합니다. 또는 XML 파싱 에러: 항목이 없음 줄: 1, 행 1
- 자신이 피드에 사용되지 않는 필요없는 XML namespace를 feed.info에 포함 시켰는지 확인 한다. ([4]번 참조)
- 위 2번 사항 확인
브라우저가 XML 문서가 아닌 일반 텍스트로 보입니다.
- 브라우저의 히스토리와 임시파일을 삭제하고 창을 완전히 닫은 후 브라우저를 다시 열어서 CGI 페이지로 접속해 본다. 그래도 문제가 해결되지 않은 경우 통합 할 feed가 UTF-8 엔토딩으로 되어 있지 않은 경우일 수 있습니다. (본 스크립은 UTF-8만 지원합니다.)
에러 수정을 위한 변경 사항이 있을 경우 브라우저 창을 완전히 닫고 다시 열어서 테스트 해봅니다 (특히 IE 경우). 위에 나열된 것 이외의 에러가 생기는 경우 Feed Validator를 사용해서 정확한 오류 내용을 파악합니다.
1차 수정 사항 (10/19/2006)
- 통합 할 Feed 주소에 parameter가 포함된 경우 파싱하지 못했던 오류 수정 (예: http://my.com/?feed=entry&type=atom)
- XML Namespace URL 정보 입력 누락된거 추가
2차 수정 사항 (2/10/2007)
- 블로그 환경설정에서 세계표준시나 한국시간대 이외의 시간대로 설정하였을 때 오류 수정
RSS : http://www.ibluemojo.com/blog/rss/response/89
트랙백 주소 :: http://www.ibluemojo.com/blog/trackback/89
-
Subject: 블로그 RSS를 통합하였습니다
Tracked from Peecky Imprion 2007/10/08 15:01 삭제현재 제가 운영중인 블로그는 3가지입니다. 각각 성격이 조금씩 다른데, 3가지를 전부 따로 구독하는것에 대한 불편함을 줄이고자, 3가지 블로그의 RSS를 통합한 RSS를 만들었습니다. 주소는 http://feeds.feedburner.com/peecky 입니다. 직접 만들어볼까 하다가 귀찮아서 다른 프로그램을 찾아봤습니다. 사용한 프로그램은 Blue Mojo님이 만드신 통합 RSS Feed 만들기 입니다. HTTP Header 부분만 약간 수정해서..


BMUnifyFeeds_v02.zip


글 보관함
