여러개의 RSS를 모아서 한 페이지에 순서대로 보여주는 프로그램

권순선의 이미지

이곳의 wiki, kldp.net, geekforum 에서 제각각 제공하고 있는 RSS 들을 모아서 시간 순서대로 하나의 웹페이지에 한꺼번에 보여주려고 생각하고 있습니다. 즉, 현재는 kldp 초기화면 오른쪽에 wiki, kldp.net, geekforum 등이 따로따로 별도의 섹션으로 나뉘어져 있는데 새로 구상하고 있는 것은 각 항목들을 시간순서대로 일괄 배치하고자 하는 것입니다. 그렇게 되면 사이트에 상관없이 나중에 추가된 내용이 맨 위로 올라갈 테니 변동사항을 체크하기가 훨씬 쉬워지겠죠.

http://gnome.or.kr 에서 planetplanet이라는 프로그램을 사용하고 있는 것 같은데 인코딩이나(utf-8, euc-kr 인코딩 모두 사용 가능하면 좋음) 기타 출력 형식도 조정할 수 있으면 좋겠습니다.

이런 역할을 하는 프로그램이 있는지요? 비슷한 프로그램을 써보신 분의 경험담도 좋습니다.

gang의 이미지

http://search.cpan.org/~autrijus/XML-RSS-Aggregate-0.02/lib/XML/RSS/Aggregate.pm

RSS Feed merge하는 perl module인데요, sample code에서 KLDP RSS로 바꿔서 시험해봤습니다.

        sources => [
            "http://kldp.net/export/rss_sfnews.php",
            "http://geekforum.kldp.org/rss.php",
            "http://bbs.kldp.org/rdf.php",
            "http://wiki.kldp.org/wiki.php/RecentChanges?action=rss_rc" 
         ],

그런데, KLDP feed 들 중 Wiki를 제외하고는 모두 시간정보가 없더군요. 그래서 시간 순서로 정렬하지 못했습니다.

그리고, encoding 문제를 해결해 주는지는 확인 못했구요.

우선, KLDP feed들에 시간정보를 넣어줘야 aggregator에서 정렬할 수 있을 것 같군요.

cwryu의 이미지

권순선 wrote:
이곳의 wiki, kldp.net, geekforum 에서 제각각 제공하고 있는 RSS 들을 모아서 시간 순서대로 하나의 웹페이지에 한꺼번에 보여주려고 생각하고 있습니다. 즉, 현재는 kldp 초기화면 오른쪽에 wiki, kldp.net, geekforum 등이 따로따로 별도의 섹션으로 나뉘어져 있는데 새로 구상하고 있는 것은 각 항목들을 시간순서대로 일괄 배치하고자 하는 것입니다. 그렇게 되면 사이트에 상관없이 나중에 추가된 내용이 맨 위로 올라갈 테니 변동사항을 체크하기가 훨씬 쉬워지겠죠.

http://gnome.or.kr 에서 planetplanet이라는 프로그램을 사용하고 있는 것 같은데 인코딩이나(utf-8, euc-kr 인코딩 모두 사용 가능하면 좋음) 기타 출력 형식도 조정할 수 있으면 좋겠습니다.

이런 역할을 하는 프로그램이 있는지요? 비슷한 프로그램을 써보신 분의 경험담도 좋습니다.

소스 RSS들의 인코딩을 말씀하시는 거라면, planet은 이미 여러 인코딩을 사용할 수 있습니다. UTF-8만 된다는 제한은 옛날에 PGK에서 사용했던 spycyroll때문에 그렇게 했던 것이고 이제는 제한 없습니다. 또 과거에 spycyroll + KLDP blog에서 문제가 됐던걸로, RSS 0.91에 시간 정보가 안 들어 있어서 정렬을 못하는 문제도 planet에서 대략적으로 전후관계를 맞춰서 써주는 기능도 들어가서 해결되었습니다.

권순선의 이미지

cwryu wrote:
소스 RSS들의 인코딩을 말씀하시는 거라면, planet은 이미 여러 인코딩을 사용할 수 있습니다. UTF-8만 된다는 제한은 옛날에 PGK에서 사용했던 spycyroll때문에 그렇게 했던 것이고 이제는 제한 없습니다. 또 과거에 spycyroll + KLDP blog에서 문제가 됐던걸로, RSS 0.91에 시간 정보가 안 들어 있어서 정렬을 못하는 문제도 planet에서 대략적으로 전후관계를 맞춰서 써주는 기능도 들어가서 해결되었습니다.

좋은 소식이군요. 그렇다면 현재 상태에서도 planet을 그대로 가져다 쓸 수 있겠네요. 알려주셔서 고맙습니다.... 오후에 planet 사이트에 접속이 잘 안돼서 답답한 마음에 질문을 올렸던 것인데 마침 필요한 기능들은 다 있는 것 같네요.

eunjea의 이미지

이제 KorWeblog도 rss에 시간정보(pubDate) 넣도록 했습니다.
http://weblog.kldp.org/rss.php

권순선의 이미지

planet을 간단히 테스트해 보았는데 rss feed가 euc-kr 인코딩과 utf-8이 섞여 있는 경우는 여전히 이상하게 나오네요. 그리고 설정에서도 출력 인코딩을 원하는 대로 정해 주는 기능은 없는 것 같은데...제가 잘못 본 것인가요?

그리고 euc-kr 인코딩된 rss feed는 무조건 iso8859로 인식하고 있는 것 같습니다. planet이 euc-kr 인코딩된 rss를 제대로 처리해 주는 게 맞나요??

권순선의 이미지

planet 소스를 고쳐야 하는군요. planetlib.py 에서

        try:
            data = unicode(data, "utf8").encode("utf8")
            logging.debug("Encoding: UTF-8")
        except UnicodeError:
            try:
                data = unicode(data, "iso8859_7").encode("utf8")
                logging.debug("Encoding: ISO-8859-7")
            except UnicodeError:
                data = unicode(data, "ascii", "replace").encode("utf8")
                logging.warn("Feed wasn't in UTF-8 or ISO-8859-7, replaced " +
                             "all non-ASCII characters.")

여기서 utf8대신 euc-kr을 넣어 주면 되네요. planet 메일링 리스트에서 빠르게 답을 얻었습니다. :-)

cwryu의 이미지

권순선 wrote:
planet 소스를 고쳐야 하는군요. planetlib.py 에서

        try:
            data = unicode(data, "utf8").encode("utf8")
            logging.debug("Encoding: UTF-8")
        except UnicodeError:
            try:
                data = unicode(data, "iso8859_7").encode("utf8")
                logging.debug("Encoding: ISO-8859-7")
            except UnicodeError:
                data = unicode(data, "ascii", "replace").encode("utf8")
                logging.warn("Feed wasn't in UTF-8 or ISO-8859-7, replaced " +
                             "all non-ASCII characters.")

여기서 utf8대신 euc-kr을 넣어 주면 되네요. planet 메일링 리스트에서 빠르게 답을 얻었습니다. :-)

네 PGK에서 그렇게 했었는데요. 찾아내셨네요. :D

여유가 있으면 고쳐보려고 하고 있는.. 아쉬운 부분중의 하나입니다. 제대로 하려면 charset attribute에 따라 움직여야 하겠죠..

맹고이의 이미지

저도 개인적으로 사용을 해보고 있는데요...

Last updated 시간이 UTC로 나오는데

GMT인가 하는 걸로 바꾸려면 어떻게 고치면 될까요...?

혹시 알고 계신가 해서 질문 드립니다. :o

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.