RSSクリップ


top overview download install customize library
help developer history support

開発者向け bookmark

拡張パーサー bookmark

RSSクリップには拡張パーサーという機能があり、非RSSフィードなどのデータを取り込むことができます。
RSSクリップの配布モジュールにも、標準で以下の拡張パーサーが同梱されています。

  • mixi用の拡張パーサー
  • 2ちゃんねる掲示板用の拡張パーサー

独自の拡張パーサーを作成することにより、非RSSフィード以外のデータとして作成されたXML、CSV、HTMLなどのデータを取り込むことが可能です。

このページでは独自の拡張パーサーを開発する方を対象に、拡張パーサーの仕様や作り方について説明します。

概要 bookmark

拡張パーサーは以下の関数を実装したDLL形式のモジュールになります。

RSSクリップ本体は拡張パーサーに実装された関数を通して情報の取得や処理の依頼を行います。

関数名内容
GetParserInfo拡張パーサーに関する情報取得
ParseContents取得したデータから登録するデータを解析
EnumContents拡張パーサーがサポートするコンテンツの取得


項目内容
モジュールの形式DLL
格納パスRSSクリップをインストールしたフォルダのParserフォルダ

RSSクリップではデータを取得する前に、取得するRSSフィードのURLを登録する必要があります。
通常はRSSフィードのURLを登録しますが、拡張パーサーを利用する場合は、その拡張パーサーがサポートするコンテンツのURLを登録します。
例えば、mixi用拡張パーサーは、通常ブラウザーで閲覧するサイトのURLを登録し、拡張パーサーが内容を解析してRSSクリップにデータを追加します。

また、拡張パーサーはサポートするコンテンツのURLを利用者に提示することができます。

下図はRSS・ATOMフィードを登録する画面ですが、そのパーサーがサポートするコンテンツのURL(名前)をメニューで表示しています。

RSSクリップ

この機能を利用することにより、利用者がコンテンツのURLを入力する手間を省けます。
実際にRSSクリップがどのようなシーケンスで拡張パーサーとやり取りを行うか説明します。
RSSクリップ本体と拡張パーサーのやり取りは、コンテンツ登録時と実際にデータの解析処理を行う2ケースに分けられます。

コンテンツ登録 bookmark

  1. 拡張パーサーの情報取得
    [RSS・ATOMの登録]ダイアログを開くと、RSSクリップ本体はインストールされている拡張パーサーを探し出して、GetParserInfo関数をコールします。
    GetParserInfo関数から取得情報を元に、[RSS・ATOMの登録]ダイアログ内にある拡張パーサーの選択用コンボボックスに登録します。この処理により、拡張パーサーを選択できるようになります。
  2. サポートコンテンツの情報取得
    利用者が拡張パーサーを選択すると、EnumContents関数をコールします。
    EnumContents関数は、拡張パーサーがサポートしているコンテンツ情報を取得して、登録作業を簡略化するためのメニューを表示します。
    EnumContents関数の実装は必須ではありませんし、実装してもサポートしているコンテンツ情報を返さなければメニューは表示されません。
  3. コンテンツの登録
    利用者が設定した情報を登録すると、登録処理は完了してコンテンツを取得できるようになります。

コンテンツ解析 bookmark

登録されたコンテンツの取得はRSSクリップ本体が行います。拡張パーサーは通信を行う必要はありません。
取得したコンテンツは、ファイルに保存します。保存したファイルはキャッシュとして利用されます。

コンテンツの取得に成功すると、対応する拡張パーサーのParseContents関数がコールされます。
ParseContents関数では、実際に取得したコンテンツのファイル名が渡され、解析を行った後にRSSクリップにデータが登録されます。

仕様 bookmark

  • GetParserInfo関数
    プラグインの関する情報を取得するためにコールされます。GetParserInfo関数は、引数に指定されたPARSERSTRUCT構造体にプラグインの情報を格納します。
  • EnumContents関数
    拡張パーサーがサポートするコンテンツに関する情報を取得するためにコールされます。この関数では引数に指定されたコールバック関数を呼び出すことにより、情報を通知します。
  • ParseContents関数
    実際にコンテンツを解析してRSSクリップにデータを登録します。この関数では引数に指定されたコールバック関数を呼び出すことにより、情報を通知します。

※EnumContents、ParseContents関数ではメモリを介したデータの受け渡しではなく、コールバック関数を使用してデータを通知する方式になっています。

リファレンス bookmark

GetParserInfo bookmark

  • BOOL WINAPI GetParserInfo(LPPARSERSTRUCT lpParserStruct);
    • 概要
      拡張パーサーの情報を取得します。
    • 引数
      • LPPARSERSTRUCT lpParserStruct
        拡張パーサーの情報を格納するPARSERSTRUCT構造体へのポインタ
    • 戻り値
      • BOOL
        TRUE : 正常終了
        FALSE : 処理失敗

EnumContents bookmark

  • BOOL WINAPI EnumContents(DWORD dwParserID, lpfnParseCallBack function);
    • 概要
      拡張パーサーがサポートするコンテンツに関する情報を取得します。
    • 引数
      • DWORD dwParserID
        RSSクリップ本体が割り当てた拡張パーサー用のID
      • lpfnParseCallBack function
        データを通知するためのコールバック関数へのポインタ
    • 戻り値
      • BOOL
        TRUE : 正常終了
        FALSE : 処理失敗

ParseContents bookmark

  • BOOL WINAPI ParseContents(LPCTSTR lpszURL, LPCTSTR lpszFileName, DWORD dwParserID, lpfnParseCallBack function);
    • 概要
      拡張パーサーがサポートするコンテンツに関する情報を取得します。
    • 引数
      • LPCTSTR lpszURL
        コンテンツURL
      • LPCTSTR lpszFileName
        コンテンツを保存したファイル名
      • DWORD dwParserID
        RSSクリップ本体が割り当てた拡張パーサー用のID
      • lpfnParseCallBack function
        データを通知するためのコールバック関数へのポインタ
    • 戻り値
      • BOOL
        TRUE : 正常終了
        FALSE : 処理失敗

ParseCallBackコールバック関数 bookmark

  • void ParseCallBack(DWORD dwParserID, LPNONRSSARTICLESTRUCT lpNonRssArticleStruct);
    • 概要
      拡張パーサーがサポートするコンテンツ情報を通知します。複数ある場合は複数回呼び出す必要があります。
    • 引数
      • DWORD dwParserID
        RSSクリップ本体が割り当てた拡張パーサー用のID
      • LPNONRSSARTICLESTRUCT lpNonRssArticleStruct
        コンテンツ情報を格納したNONRSSARTICLESTRUCT構造体へのポインタ
    • 戻り値
      • BOOL
        TRUE : 正常終了
        FALSE : 処理失敗

ParseCallBackコールバック関数 bookmark

  • void ParseCallBack(DWORD dwParserID, LPNONRSSARTICLESTRUCT lpNonRssArticleStruct);
    • 概要
      解析した記事情報を通知します。複数ある場合は複数回呼び出す必要があります。
    • 引数
      • DWORD dwParserID
        RSSクリップ本体が割り当てた拡張パーサー用のID
      • LPNONRSSARTICLESTRUCT lpNonRssArticleStruct
        記事情報を格納したNONRSSARTICLESTRUCT構造体へのポインタ
    • 戻り値
      • BOOL
        TRUE : 正常終了
        FALSE : 処理失敗

NONRSSARTICLESTRUCT構造体 bookmark

  • guidは記事を一意に識別するための文字列です。この識別子は別の記事と同じにならないようなユニークな文字列を拡張パーサーで生成する必要があります。

サンプル bookmark

WindowsのINIファイル形式のフォーマットで作成されたコンテンツ用の拡張パーサーです。
拡張パーサーの基本的な作成方法の参考になります。
サンプルプログラムは、Microsoft Visual Studio C++ 6.0で作成されています。

  • サンプル拡張パーサーのソース一式
    拡張パーサーの作成に必要な定義ファイルを含む