Habrをオフラインで読むためのアプリケーション

こんにちは



私はすでにユーザーに特定の関心を引き起こしたData Extracting SDKについてhabrで話しました 。 それ以来、多くのおいしい機能が追加されました。それらについて少しお話ししたいと思います。 例として、小さなアプリケーションが実装されました-HabraPDFReaderは、オフラインで読むためにhabratopikをPDFファイルに保存するように設計されています。 途中で、実装の複雑さについて説明します。



アルゴリズム



アルゴリズムは非常に簡単です。

1.処理されたページの数を選択します。

2.最近のトピックのリストをダウンロードします。

3.気に入ったトピックにマークを付けます。

4. PDFファイルに保存します。



より詳細に。



アプリケーションを作成する



これは、VS2008 SP1のC#バージョン3.5で記述されたWindowsアプリケーションになります。



外観を図に示します。



画像



最近のトピックのリストを取得します(最初のページから):



UriHtmlProcessor proc = new UriHtmlProcessor( new Uri ( "http://habrahabr.ru/new/page1/" ));

proc.Initialize();



var links = from l in proc.Links

where l.Class == "topic" && EndsWithInt(l.Href) == true

select new ResultItem{

Link = l.Href,

TopicName = l.Text.ToWindows1251()

};




* This source code was highlighted with Source Code Highlighter .






Data Extracting SDKはDOMツリーへのクエリを作成することを学習したため 、すべてのLinqチャームを使用して必要なリンクを取得できます。 私たちの場合、クラスが「トピック」に等しいすべてのリンクを取得し、リンクは数字で終わります(これは、#habracutや#commentなどのリンクを除外するために必要です)。



リンクによるテキストのPDFファイルへの変換



この機能はVSTOを使用して簡単に実装できますが、MS Officeに接続したくありませんでした。 そのため、 Html2Pdfサービスが見つかりました。これを使用して、PDFファイルを受け取ります。



コードは次のとおりです。



UriHtmlProcessor proc = new UriHtmlProcessor("<www.htm2pdf.co.uk/?url= ");

proc.Initialize();

var pdf = proc.Links.Where(ll => ll.Text == "Download PDF" ).FirstOrDefault();



if (pdf != null )

{

Uri uri = pdf.Href.FixUrl( new Uri ( "http://www.htm2pdf.co.uk/" ));

proc.Download(uri, Path.Combine(<, >, "_.pdf" ));

}




* This source code was highlighted with Source Code Highlighter .








したがって、Habrをオフラインで読むためのPDFセットを取得できます。



プログラム実行後のスクリーンショット:



画像



SDKプロジェクトアドレス: http : //extracting.codeplex.com/ (古いバージョンはまだあります)



ダウンロードHabraPDFReader



コメントや提案を待っています!



All Articles