뽀라닷컴
Loading...




웹디자인,포토샵,그누보드,제로보드,동영상제작 관련 메모 >>


전체(437)인터넷,컴퓨터 (94) | 웹디자인tip (182) | CG,그래픽tip (70) | BBS_Tip (74) | 영상tip (17) |
네이버 까페 -> 제로보드 변환기 2010-11-03 01:05:30
홈페이지홈페이지

[시작하는 글]
다음카페에서 제로보드로 변환하는 것은 있던데, 네이버 카페를 변환하는 것은 없어서, 만들어보았습니다.
처음에는 한 홈페이지 제작을 맡아 하게 되면서, 이전에 사용하던 카페의 글들을 옮겨와야 할 필요가 생겨서입니다.
글이 몇개 안되니 대충 옮기고 잘 안된 부분은 수작업으로 수정해도 되겠지만, 기왕 하는거 좀더 완벽을 기해보자는 생각으로 모든 카페글들을 옮겨올 수 있는 변환기를 만들게 되었습니다.
네이버 카페를 덤프파일로 만드는 유틸리티는 있더군요. 이걸 이용해도 되겠지만 두 번에 걸쳐 변환하는 것보다는 한 번에 하는게 낫겠다 싶었습니다.

만들다보니 무척 어려운 난관들에 부딛쳤습니다. 아직 해결하지 못한 문제들이 많고, 원인모를 버그들도 많습니다.
그럼에도 불구하고, 미리 공개하는 것은, 제 힘으로 해결하지 못하는 어려운 문제들을 여러 분들의 도움을 받고자 함입니다.
프로그래밍 실력도 미천하고, 모르는 것을 PHP 매뉴얼을 찾아가며 하나씩 풀어갔지만, 아직 완벽하지 않습니다.

현재 모든 기능의 70~80% 정도 완성되었다고 보시면 됩니다.
모든 카페글이 '전체공개'된 글이고, 첨부파일이 하나도 없고 답글(코멘트가 아닌)이 없다면 100% 완벽하게 작동할 겁니다.


거의 완벽하게 해결된 것들은 다음과 같습니다.

1. 글과 코멘트 변환
본문글과 코멘트는 거의 100% 완벽하게 옮겨옮니다. 다만, 스타일이 달라 화면상에서 조금 다르게 보일 수 있습니다.
네이버 카페글의 코멘트에는 날짜정보가 월/일만 기록되고 년 정보가 없습니다. 따라서 코멘트의 순서로 유츄하여 나중에 쓴 코멘트가 앞 코멘트의 날짜와 년도보다 앞서지 않도록 했으나, 행여 2년 이상 지나 쓴 코멘트가 있다면 년도가 달라질 것입니다.

2. 이미지 변환
첨부된 이미지 최초 2개까지는 제로보드의 기본 첨부파일로, 3개 이상부터는 별도의 디렉토리를 만들어 복사하고 IMG 택의 주소를 적절히 수정합니다. 만일 카페글에서 최초 2개까지의 이미지의 위쪽 또는 좌우에 글을 배치했다면 이들이 변환되면서 제로보드의 기본 첨부파일로 이동되고 이미지가 있던 본문상의 자리는 공백으로 되므로 본문의 모양이 약간 바뀔 수 있습니다.

3. 사용자 변환
네이버에서 특정 사용자의 이름/닉네임/아이디와 제로보드에 표시될 이름이 다를 경우, 변환에 필요한 정보 파일을 별도로 작성해 두면 카페글을 변환하면서 해당 사용자 이름을 변혼 대상 이름으로 바꾸어 저장합니다. 예를들어 카페에 '커피향'이라는 닉네임으로 등록된 글을 제로보드로 옮겨올 때 이름을 '홍길동'으로 바꾸어 저장되도록 할 수 있습니다.

4. 카테고리 변환
글들의 카테고리도 변환에 필요한 정보를 별도의 텍스트 파일로 만들어 놓으면 카테고리도 제로보드의 지정된 카테고리로 변환합니다. 예를 들어 '자유로운글'을 제로보드 해당 게시판의 '자유게시판'으로 가게끔 할 수 있습니다.


그리고 지금까지 해결되지 못한 문제들은 다음과 같습니다.

1. 첨부파일의 문제
- 본문 또는 첨부파일로 들어간 이미지 파일은 거의 잘 옮겨오는데, 이미지가 아닌 파일은 파일크기가 0으로 됩니다.

2. 부모글/종속글 설정
- 답글의 경우 부모글/종속글 설정이 아직 안됨 - HTML을 파싱하는게 이 부분이 무척 까다롭군요.

3. 로그인 정보 전달의 문제
ID와 패스워드로 네이버 로그인을 자동으로 하는것까지는 되었는데, 그 뒤 접속정보(쿠키)를 어떻게 전달해야할 지 몰라 글을 읽어올 때 로그인되지 않은 것으로 간주되고, 따라서 '카페멤버에게만 공개'로 된 글을 읽어올 수 없습니다. 문제는 대부분의 카페글이 '카페멤버에게만 공개'라는 점입니다.

4. 멀티미디어 링크, 동영상 링크, 스크랩된 글
이것까지는 좀... 동영상이 많이 올라오는 카페라면 꼭 필요할 지 모르겠으나 그다지 필요한것 같지도 않고 본문이 복잡해서 그냥 두려 합니다. 스크랩된 글은 카페에 직접 글 쓸 때 일반적으로 포함되는 IMG 택 외에 다른 형식의  IMG 택이나  EMBED, TABLE 택 등이 많은 것이 있어 변환이 잘 안될 수 있는데, 이것까지는 어떻게 할 수가 없을 것 같습니다. 어떤 사이트든 100% 완벽한 변환은 불가능하겠죠.


[주의점]
데이터가 유실되는 등 치명적인 문제점은 없을 거라고 확신하지만, 아직 미완성이라, 알려지지 않은 문제들이 있을 지 모릅니다. 사용할 때 충분히 주의를 하기 바라며, 이 프로그램으로 인해 발생하는 손실에 대해서 저는 책임을 질 수 없음을 미리 밝혀둡니다.


[사용법]
압축을 풀면 navercafe_convert.php와 navercafe_convert_lib.php 의 두 개의 파일이 나옵니다. navercafe_convert.php 는 변환기이고, navercafe_convert_lib.php 는 실행에 필요한 부속(라이브러리) 파일입니다.
여기서 일단  navercafe_convert.php 파일의 앞부분을 수정합니다. 몇가지 변수인데, 주석을 달아놓았으니 금방 알 수 있습니다. 좀더 자세히 설명을 하자면 다음과 같습니다.


// 이 프로그램의 URL
// - abc.net 사이트에 올릴 것이라면 "http://abc.net/navercafe_convert.php" 라고 쓴다.
$php_url = "http://domain.co.kr/navercafe_convert.php";

// 네이버 카페 코드 - http: //cafe.naver.com/xxxxx 에서 xxxxx 부분
$naver_cafe_code = "testcafe";

// 네이버 카페 첫 글 번호 - 대부분 1
// - 카페에서 전체글 목록의 맨 처음으로 가면 첫 글의 번호를 알 수 있습니다. 대개 1인데, 지워진 글이라면 1이 아닐 수도 있습니다. 여기서부터 변환이 시작됩니다. 만일 1000번 글부터 변환을 하려 한다면, 1000을 쓰면 됩니다.
$naver_start_articleid = 1;

// 네이버 사용자 아이디 - 로그인시 필요합니다.
$naver_user_id = "userid";

// 네이버 사용자 비밀번호
$naver_user_pw = "passwd";

// 옮겨질 제로보드 게시판 이름 - 옮겨질 제로보드 게시판명을 적습니다.
$id = "board1";

// 제로보드 디렉토리 이름 - 제로보드가 있는 디렉토리를 정확히 적습니다. 틀리면 작동하지 않습니다.
$zb_dir = "zboard";

// 첨부파일과 그림(이미지)들을 옮겨올 것인가 (0=아니오, 1=예)
$file_import = 1;

// 첨부파일과 그림(이미지)들이 두 개를 초과해도 모두 옮겨올 것인가 (0=두 개 까지만, 1=세 개 이상도 옮김)
$file_import_exceed = 1;

// 세 개 이상의 첨부파일과 그림을 옮겨올 경우 저장할 디렉토리 이름과 URL
// 세 개 이상의 첨부이미지들은 제로보드의 기본 첨부파일로 올 수 없으므로, 별도의 디렉토리를 만들어 복사합니다. 이때의 디렉토리 이름과 이를 호출할 수 있는 URL을 적어줍니다. 디렉토리 이름이 cafeimg 라면, URL은 "http://abc.net/cafeimg" 가 됩니다.
$file_import_exceed_dir = "naver_testcafe";
$file_import_exceed_url = "http://domain.co.kr/naver_testcafe";



수정이 되었으면 navercafe_convert.php와 navercafe_convert_lib.php 의 두 파일을 자신의 계정에 올립니다. 가급적 루트에 올리는 것이 좋습니다. 이때 변환 대상이 될 제로보드의 게시판은 만들어져 있어야 하며, 가급적 미리 쓴 글이 없도록 합니다.
이제 navercafe_convert.php를 웹브라우저로 실행시킵니다.

실행하면 카페 이름이 표시되고, 글을 하나씩 변환되는 과정을 볼 수 있습니다.
하지만 얼마 안가 멈출 것입니다. 앞서 말한 해결하지 못한 문제들 때문입니다. '카페멤버에게만 공개'로 된 글 앞에서 에러메시지를 내고 멈춥니다. 만일 모든 글이 '전체공개'라면 끝까지 변환이 완료될 것입니다.


[사용자 변환 데이터]
카페의 닉네임을 쓰는 사용자 이름을 제로보드에서는 실명으로 나타나도록 하고 싶을때, 각 닉네임 또는 아이디와 이에 대해 변환된 이름을 텍스트파일로 만들어 두면 자동으로 읽어 변환합니다. 이 데이터파일은 navercafe_convert_userdata.php 라는 이름으로 다음과 같은 형식으로 작성합니다.

신바람,doncshi|신동일
초승달,87gomred|박은별
gsfgfdsg|정장희
머스마,ajtmak|최상기
소낙비,thskrql|박병기
niceshot|홍상우
   .....



이를 navercafe_convert_userdata.php 라는 이름으로 저장해, 실행시 navercafe_convert.php 와 같은 디렉토리에 두변 됩니다.
'닉네임,아이디|변환될이름'또는 '아이디|변환될이름'형식입니다. 중간에 공백이 있어도 괜찮습니다. 위의 경우 닉네임이 신바람 또는 아이디가 doncshi 인 이름은 제로보드로 변환시에는 신동일이라는 이름으로 바뀝니다.
이 변환 데이터가 없을 경우 닉네임으로, 닉네임이 없을 경우에는 아이디로 변환됩니다.


[카테고리 변환 데이터]
카페 카테고리를 제로보드의 카테고리로 변환하고자 할때는 navercafe_convert_categorydata.php 파일을 작성합니다. 다음과 같은 형식입니다.

회원님들! 알립니다.|1
년간 일정표|1
자유로운글|2
회칙,회의록,모임지|3
텃밭 작물|3
우리들의 모습|4
   .....


'카페게시판 카테고리 이름|제로보드 카테고리 번호'형식입니다. 제로보드의 카테고리 번호는 제로보드의 관리자 프로그램에서 해당 게시판의 카테고리 관리 화면에서 확인할 수 있습니다. 주의할 점은 카페의 카테고리 이름은 공백까지 포함해서 정확히 써주어야 합니다. 카페의 두 개의 카테고리를 제로보드의 하나의 카테고리로 옮겨오고자 할 때는 위와 같이 두개의 카테고리를 하나의 번호로 쓸 수도 있습니다.
이렇게 작성한 파일을 navercafe_convert_categorydata.php 라는 이름으로 navercafe_convert.php 와 같은 디렉토리에 두면 됩니다.
이 카테고리 데이터가 없을 때는 무조건 번호 1번의 카테고리로 변환됩니다.


[마침]
간단히 쓴다고 했는데 길어지네요....
하여간 필요로 하시는 분들 많을 것 같습니다.
아직 해결하지 않은 문제들은 고수분들께는 그리 어렵지 않은 문제인 것 같습니다. 닷새 걸쳐 여기까지 만들었는데, 부족한 프로그래밍 실력을 조금 매꾸어준다는 생각으로 해결방법을 찾아주거나 사용해 보시고 소감이나 문제점을 짚어주시면 정말정말 고맙겠습니다...


출처 : http://nzeo.com





    



naver_cafe_convert.zip | 7.8 KB / 170 Download
목록보기 삭제하기