FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

2chブラウザの

2chブラウザのJaneの画像キャッシュのファイル名を出すプログラムをVisual C++で作ってみた。 のつづき

前処理として
http://ime.nu/http://abc.jpg

http://abc.jpg
に変えるなどを行う。

ImageViewURLReplace.dat
に従って変換する必要もあるが、$EXTRACTがよくわからない。
http://abc/def.html

http://abc/def.jpg
または
http://abc/def.png
に変換するというのもあるが、実際、jpgなのかpngなのかどれに直せばいいのか判らない。

単純に変換するだけのもの
たとえば
http://abc/view.cgi?=def

http://abc/img/def.jpg
に変えるというのはboostの正規表現で実装した。

一部のサイトだけで大抵が変換する必要ない。

前処理の部分はソースが不完全なので今回載せない。

その変換したURLを以下によりハッシュに変換して拡張子vchを付けたのがJaneの画像キャッシュファイル名になる。

関数名getMD5だけど、ついでにEncodeB32しちゃうし、Janeのキャッシュと同じ22文字にしてしまう。
試行錯誤して作ったし必要な機能だけにしたので。

実際にMD5変換を行う部分は載せてない。
MD5変換はネットから見つけたものをいれればいいよ。

CStringA CJaneCacheFileUtil::getMD5(CStringA a_txt)
{
    unsigned char digest[16] = {0};

    MD5変換はどこからかソース見つけてくる

    for(int j = 0; j < 16; j++ )
    {
        TRACE( "%02x", digest[j] );
    }
    TRACE("\n");

    a_txt = EncodeB32(digest);

    return a_txt;
}


CStringA CJaneCacheFileUtil::EncodeB32(unsigned char _digest[16])
{
    CStringA Result;
    static const char * B32Char = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
    int i;
    int len;
    int length = 16; // length(digest)
    const int b5 = 5;
    char y[2] = {0};

    len = (length * 8 - 1) / b5 + 1;
    unsigned char digest[32] = {0};
    memcpy(digest,_digest,length);

    len = 22; // 22文字だけ使う
    for(= 0; i < len; ++i)
    {
        int c1;
        int c2;
        int sh;
        c1 = digest[(* b5) / 8 + 1] & 255;
        c2 = digest[(* b5) / 8 + 0] & 255;

        int x = (c1 << 8) + c2;
        sh = (* b5) % 8;
        x = x >> sh;
        x = x & 31;
        y[0] = B32Char[ x ];
        Result.Append( y );
        TRACE("%1x,",sh);
    }
    TRACE("\n");

    return Result;
}

  1. 2007/11/13(火) 01:28:24|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0
<<ボタンクリックで色が変わるエディットコントロール | ホーム | CSharpToHTMLを改造するぞう>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://wclrp.blog90.fc2.com/tb.php/36-71e50010
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。