KLDP BBS 헤드라인 생중계하기

권순선의 이미지

KLDP BBS에 새로 올라온 글을 RDF를 이용하여 여러분의 웹페이지에서 생중계하실 수 있습니다. ( http://bbs.kldp.org/rss.php )

다음 php 코드를 페이지에 넣으시면 됩니다. perl 이나 기타 스크립트 언어로도 이미 구현되어 있는 RDF 해석기가 많이 있으니 각자의 환경에 맞게 한번 찾아보셔도 좋겠습니다. 아래 코드를 참고해서 직접 작성하셔도 되겠고요. 혹시 작성하신 코드가 있다면 이곳에 올려 주세요. 다른 분들도 참고할 수 있도록...

rdf 모듈은 http://www.phpbb.com/phpBB/viewtopic.php?t=75316 에 있는 것을 가져다 사용하고 있습니다. 옵션이 좀 있으니 한번 읽어 보세요. 예를 들어 특정 게시판의 헤드라인만을 생중계하는 것도 가능합니다.

<?
// 
// 헤드라인 생중계용 php 스크립트
// 만든이: 임 은재<eunjea@kldp.org>
//
// 사용법: 이 파일의 내용을 php 소스에 추가하거나 include()로 포함시키면 됩니다.
//

$link_prefix    =    "<li>";
$link_postfix    =    "<br>\n";
$cache_file    =    "/tmp/kldpbbs.cache";
$cache_time    =    3600; //이 시간은 초단위이므로 짧게 지정하시면 자주 갱신합니다.
$max_items    =    10; //가져올 헤드라인 갯수
$target        =    "_new";

$backend    =    "http://bbs.kldp.org/rdf.php";

$items        =    0;
$time        =    split(" ", microtime());

srand((double)microtime()*1000000);
$cache_time_rnd    =    300 - rand(0, 600);

if ( (!(file_exists($cache_file))) || ((filectime($cache_file) + $cache_time - $time[1]) + $cache_time_rnd < 0) || (!(filesize($cache_file))) ) {

    $fpread = fopen($backend, 'r');
    if(!$fpread) {
        echo "파일 읽기 오류<br>\n";
        exit;
    } else {

        $fpwrite = fopen($cache_file, 'w');
        if(!$fpwrite) {
            echo "파일 쓰기 오류<br>\n";
            exit;
        } else {

            while(! feof($fpread) ) {

                $buffer = ltrim(Chop(fgets($fpread, 256)));

                if (($buffer == "<item>") && ($items < $max_items)) {
                    $title = ltrim(Chop(fgets($fpread, 256)));
                    $link = ltrim(Chop(fgets($fpread, 256)));
                    $description = ltrim(Chop(fgets($fpread, 256)));

                    $title = ereg_replace( "<title>", "", $title );
                    $title = ereg_replace( "</title>", "", $title );
                    $link = ereg_replace( "<link>", "", $link );
                    $link = ereg_replace( "</link>", "", $link );

                    fputs($fpwrite, "$link_prefix<A HREF=\"$link\" TARGET=\"$target\">$title</A>$link_postfix");

                    $items++;
                }


            }
        }
        fclose($fpread);
    }
    fclose($fpwrite);
}
if (file_exists($cache_file)) {
    include($cache_file);
}
?>
관리자 주제: 

댓글 달기