<commit_before>﻿#SnkLib.App.CookieGetter

ブラウザのCookieを.NETアプリで使えるようにするライブラリです。  
<http://com.nicovideo.jp/community/co235502> で配布されているCookieGetterSharpを元に、設計の改善を施しています。.NET4.0以上で動きます。

本家と同水準でIE, Chrome, Firefox, Lunascape, Maxthon, Sleipnir, Tungsten などに対応しています。加えてKinzaなどの本家が未対応の派生ブラウザへの包括的な対応と設定保存周りの使い勝手の改善が行われています。

また、これをベースとした互換ライブラリと既存のアプリのCookieGetterSharpを差し替える事でこのライブラリの強化機能を得る使い方も出来ます(.NET2.0以上)。互換ライブラリはReleasesにSnkLib.App.CookieGetter.Sharpとしてビルド済みのものが配布されています。

## ライセンス
以下のライセンス下にあります。  
* SnkLib.App.CookieGetter  
  https://github.com/namoshika/SnkLib.App.CookieGetter  
  Copyright (c) 2014 namoshika.  
  Released under the **GNU Lesser GPL**  

以下の著作物から派生させています。
* [CookieGetterSharp](http://d.hatena.ne.jp/halxxxx/20091212/1260649353)  
  Copyright (c) 2014 halxxxx, うつろ

##方針
現在、以下のブランチの方針下にあります。

* base: 本家そのまんま。
* master: 設計の改善。

また、プロジェクトは以下の方針下にあります。  
各プロジェクトはフレームワークのバージョン毎にフォルダを分けられています。

* NET2.0
  * NwhoisLoginSystem: 本家に付いてるデモアプリ。
  * CookieGetterSharp:   
    本家との互換ライブラリ。本家が対応していないブラウザへの対応などを既存のアプリに提供する。
* NET4.0
  * SnkLib.App.CookieGetter: 本体。
  * SnkLib.App.CookieGetter.Forms: ブラウザ選択UIなどの部品。
  * SnkLib.App.CookieGetter.x86Proxy: 本体が内部で使用する子プロセス。.NET4.5と共用。
  * Sample: 新クラスに対応させたデモアプリ。
* NET4.5
  * SnkLib.App.CookieGetter: 本体。
  * SnkLib.App.CookieGetter.Forms: ブラウザ選択UIなどの部品。
  * Sample: 新クラスに対応させたデモアプリ。
  * NwhoisLoginSystem: 本家に付いてるデモアプリ。
  * CookieGetterSharp:   
    本家との互換ライブラリ。本家が対応していないブラウザへの対応などを既存のアプリに提供する。
* Nuspecs: NuGetパッケージ生成関係。
* Publish: 生成したnupkgの出力先
* UnitTests: 動作確認。

##使い方
使用したいプロジェクトへNuGetで以下のパッケージをインストールします。
* [SnkLib.App.CookieGetter](https://www.nuget.org/packages/SnkLib.App.CookieGetter/)を追加する(必須)。
* [SnkLib.App.CookieGetter.Forms](https://www.nuget.org/packages/SnkLib.App.CookieGetter.Forms/)を追加する  
  (オプション。Windows Forms向けのUI部品が入っています。)。

```C#
//以下の名前空間を参照します。
using SunokoLibrary.Application;

//対応ブラウザからのCookieGetterリストの取得をします。
var importableBrowsers = await CookieGetters.GetInstancesAsync(true);

//Cookieの取得は以下のようにします。
//引数として指定されたCookieContainerに取得結果を追加していく設計です。
var cookieGetter = importableBrowsers.First();
var targetUrl = new Uri("http://nicovideo.jp/");
var result = await cookieGetter.GetCookiesAsync(targetUrl);

//通信に使う際にはCookieContainerへ取得結果を追加して使用します。
var cookies = new CookieContainer();
cookies.Add(result.Cookies);
//個別の値を取得したい場合は以下のようにします。
var cookie = result.Cookies["user_session"];

//次回起動時用の構成を保存します。
Properties.Settings.Default.BrowserName = cookieGetter.Config.BrowserName;
Properties.Settings.Default.ProfileName = cookieGetter.Config.ProfileName;
Properties.Settings.Default.CookiePath = cookieGetter.Config.CookiePath;
Properties.Settings.Default.Save();
//直接的に構成を保存することもできます。
Properties.Settings.Default.SelectedGetterInfo = cookieGetter.SourceInfo

//任意のBrowserConfigから適切なGetterを取得します。
//適切なものが見つからない場合は適当なのを見繕うなど、次回起動時の設定の
//復元が楽になるように作っています。
var currentGetter = await CookieGetters.GetInstanceAsync(
  Properties.Settings.Default.SelectedGetterInfo);
```
<commit_msg>README.mdを修正<commit_after>﻿#SnkLib.App.CookieGetter

ブラウザのCookieを.NETアプリで使えるようにするライブラリです。  
<http://com.nicovideo.jp/community/co235502> で配布されているCookieGetterSharpを元に、設計の改善を施しています。.NET4.0以上で動きます。

本家と同水準でIE, Chrome, Firefox, Lunascape, Maxthon, Sleipnir, Tungsten などに対応しています。加えてKinzaなどの本家が未対応の派生ブラウザへの包括的な対応と設定保存周りの使い勝手の改善が行われています。

また、これをベースとした互換ライブラリと既存のアプリのCookieGetterSharpを差し替える事でこのライブラリの強化機能を得る使い方も出来ます(.NET2.0以上)。互換ライブラリはReleasesにSnkLib.App.CookieGetter.Sharpとしてビルド済みのものが配布されています。

## ライセンス
以下のライセンス下にあります。  
* SnkLib.App.CookieGetter  
  https://github.com/namoshika/SnkLib.App.CookieGetter  
  Copyright (c) 2014 namoshika.  
  Released under the **GNU Lesser GPL**  

以下の著作物から派生させています。
* [CookieGetterSharp](http://d.hatena.ne.jp/halxxxx/20091212/1260649353)  
  Copyright (c) 2014 halxxxx, うつろ

##方針
現在、以下のブランチの方針下にあります。

* base: 本家そのまんま。
* master: 設計の改善。

また、プロジェクトは以下の方針下にあります。  
各プロジェクトはフレームワークのバージョン毎にフォルダを分けられています。

* NET2.0
  * NwhoisLoginSystem: 本家に付いてるデモアプリ。
  * CookieGetterSharp:   
    本家との互換ライブラリ。本家が対応していないブラウザへの対応などを既存のアプリに提供する。
* NET4.0
  * SnkLib.App.CookieGetter: 本体。
  * SnkLib.App.CookieGetter.Forms: ブラウザ選択UIなどの部品。
  * SnkLib.App.CookieGetter.x86Proxy: 本体が内部で使用する子プロセス。.NET4.5と共用。
  * Sample: 新クラスに対応させたデモアプリ。
* NET4.5
  * SnkLib.App.CookieGetter: 本体。
  * SnkLib.App.CookieGetter.Forms: ブラウザ選択UIなどの部品。
  * Sample: 新クラスに対応させたデモアプリ。
  * NwhoisLoginSystem: 本家に付いてるデモアプリ。
  * CookieGetterSharp:   
    本家との互換ライブラリ。本家が対応していないブラウザへの対応などを既存のアプリに提供する。
* Nuspecs: NuGetパッケージ生成関係。
* Publish: 生成したnupkgの出力先
* UnitTests: 動作確認。

##使い方
使用したいプロジェクトへNuGetで以下のパッケージをインストールします。
* [SnkLib.App.CookieGetter](https://www.nuget.org/packages/SnkLib.App.CookieGetter/)を追加する(必須)。
* [SnkLib.App.CookieGetter.Forms](https://www.nuget.org/packages/SnkLib.App.CookieGetter.Forms/)を追加する  
  (オプション。Windows Forms向けのUI部品が入っています。)。

```C#
//以下の名前空間を参照します。
using SunokoLibrary.Application;

//対応ブラウザからのCookieGetterリストの取得をします。
var importableBrowsers = await CookieGetters.Default.GetInstancesAsync(true);

//Cookieの取得は以下のようにします。
//引数として指定されたCookieContainerに取得結果を追加していく設計です。
var cookieGetter = importableBrowsers.First();
var targetUrl = new Uri("http://nicovideo.jp/");
var result = await cookieGetter.GetCookiesAsync(targetUrl);

//通信に使う際にはCookieContainerへ取得結果を追加して使用します。
var cookies = new CookieContainer();
cookies.Add(result.Cookies);
//個別の値を取得したい場合は以下のようにします。
var cookie = result.Cookies["user_session"];

//次回起動時用の構成を保存します。
Properties.Settings.Default.BrowserName = cookieGetter.Config.BrowserName;
Properties.Settings.Default.ProfileName = cookieGetter.Config.ProfileName;
Properties.Settings.Default.CookiePath = cookieGetter.Config.CookiePath;
Properties.Settings.Default.Save();
//直接的に構成を保存することもできます。
Properties.Settings.Default.SelectedGetterInfo = cookieGetter.SourceInfo

//任意のBrowserConfigから適切なGetterを取得します。
//適切なものが見つからない場合は適当なのを見繕うなど、次回起動時の設定の
//復元が楽になるように作っています。
var currentGetter = await CookieGetters.Default.GetInstanceAsync(
  Properties.Settings.Default.SelectedGetterInfo);
```

{'fraction_non_alphanumeric': 0.11059059728961017, 'fraction_numerical': 0.015392337292956332, 'mean_word_length': 6.763636363636364, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 6, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7599805', 'n_tokens_mistral': 3375, 'n_tokens_neox': 3259, 'n_words': 260}