개요

헤드라인 센서 기구에 의해, Sakura는 임의의 사이트의 헤드라인을 읽어와서 표시한다.

plugin 디렉토리 내에 임의의 디렉토리를 만들고, 거기에 파일들을 넣으면, 메인메뉴의「헤드라인 센서」부메뉴에 그 플러그인이 읽어오는 사이트가 나타난다.

home
  +-plugin
      +-techside
          +-techside.dll
          +-descript.txt
          +-banner.png

HEADLINE/1.1

헤드라인 센서의 실체는 설정파일 descript.txt 와 execute 함수를 export 하는 2개의 DLL 파일이다.

descript.txt

name, TECHSIDE
dllname, techside.dll
url, http://www.iris.dti.ne.jp/~spec/news2/bbsf.html
openurl, http://www.iris.dti.ne.jp/~spec/

name 엔트리는 그 사이트의 이름이다. 메뉴 명령등에 사용된다.

dllname 엔트리는 플러그인의 dll 파일명이다.

url 엔트리는 읽어올 사이트의 URL 이다.

openurl 엔트리는 사이트에 점프 할 때 실제로 오픈되는 URL 이다.

DLL

extern "C" __declspec(dllexport) HGLOBAL __cdecl getversion(long *len);
function getversion(var len: longint): hglobal; cdecl; export;

DLL 로드 직후, 다른 함수가 import 되기 전에 우선 이 함수가 호출된다. 헤드라인 센서 플러그인은 "HEADLINE/1.1" 이라고 하는 12바이트의 문자열을 돌려준다.

extern "C" __declspec(dllexport) HGLOBAL __cdecl execute(HGLOBAL h, long *len);
function execute(h: hglobal; var len: longint): hglobal; cdecl; export;

execute는 지정한 파일을 다운로드한 직후에 호출되어 인수에는 다운로드된 파일의 경로가 gmem_fixed로 넘겨진다. 이 파일은 반드시 존재한다. DLL 은 이 경로를 이용해 파일을 읽어들여서 헤드라인을 작성해 gmem_fixed로 반환한다.

반환값은 SAKURA 스크립트가 아니다. 따라서 태그등은 사용할 수 없다. CR+LF 를 개행코드로 하는 완전히 Plain인 문자열을 구성해야한다.

정형방법은 자유지만, 일반적으로 다음과 같이 한다.

■헤드라인 0[CR+LF]■헤드라인 1[CR+LF]■헤드라인 2[CR+LF]‥‥

헤드라인 센서는 10행을 넘는(CR+LF의 총 수가 10이 넘는) 헤드라인은 반환하지 않는다.

처리는 성공했지만 반환할 헤드라인이 없는 경우는 공문자열을 반환한다.

처리 자체의 실패, 혹은 html 구조가 다르다는 등의 분명한 에러인 경우는 메모리를 allocate 하지 않고 0 을 반환한다. 그러면 embryo는 그것을 에러라고 판단해, 유저에게「해석 실패」를 통지한다.

DLL을 로드, 언로드할 때 다음의 함수가 호출된다.

* 로드할 때
extern "C" __declspec(dllexport) BOOL __cdecl load(HGLOBAL h, long len);
function load(h: thandle; len: longint): boolean; export; cdecl;

* 언로드할 때
extern "C" __declspec(dllexport) BOOL __cdecl unload();
function unload: boolean; export; cdecl;

load 의 제1인수에 DLL의 디렉토리 경로가 들어간다. 데이터파일등을 갖는 경우는 여기서 current directory를 취득해, 거기에 데이터파일을 만든다.

패스 문자열이 필요없는 경우에서도 함수내에서 반드시 핸들을 해방해야한다.

반환값은 bool 값 이지만 현재로서는 본체는 이 값을 보지 않는다(무엇이 반환되더라도 처리를 속행한다).

HEADLINE/2.0

HEADLINE/2.0은, 헤드라인 센서를 Shift_JIS 이외의 문자 코드로도 확장해 국제화에 대응하기 위한 사양입니다.

request 메소드

SHIORI와 같은 request 메소드를 사용합니다.

extern "C" __declspec(dllexport) HGLOBAL __cdecl request(HGLOBAL h, long *len);

GET Version HEADLINE/2.0

GET Version은, 헤드라인 센서가 사용되는 언어를 본체에 알리기 위하여 사용합니다. 통상, load가 불려진 뒤에 불려집니다. request 메소드를 사용하여 다음에 따라 불려집니다.

GET Version HEADLINE/2.0
Sender: SSP
Charset: UTF-8

헤드라인 센서는 다음에 따라서, 되돌려 주세요.

HEADLINE/2.0 200 OK
Charset: Shift_JIS
Language: Japanese

본체로부터 헤드라인 센서에 보내지는 Path(GET Headline 참조)의 문자 코드를 Charset로 지정해 주세요.

GET Headline HEADLINE/2.0

헤드라인을 취득할 때에, HEADLINE/1.x의 execute 메소드 대신 불려집니다.

GET Headline HEADLINE/2.0
Sender: SSP
Charset: UTF-8
Path: C:\ssp\plugin\doichan\doichan.html

Path에, 헤드라인 센스를 해야 할 파일의 경로가 들어갑니다. Path는 Charset로 지정된 인코딩으로 건네 받습니다.

헤드라인 센서는 다음에 따라서, 되돌려 주세요.

HEADLINE/2.0 200 OK
Charset: UTF-8
Headline: ■SSP Beta1.67差分公開
Headline: ■ヘッドラインセンサforいろんなHP
Headline: ■ぐんにょり更新

이처럼, Headline에 1개의 헤드라인을 넣어서 되돌려 주세요.

후기, 질문 답변 및 그 외 이야기

2.2 DLL 에 プレ-ン이 뭔지 모르겠습니다. -- iguana



CategorySpec


Nanika: SpecHeadlineSensor (2008-08-10 19:56:18에 localhost가(이) 마지막으로 수정)