お知らせ
SPADAシリーズは2022年1月をもちまして、開発を終了いたしました。
2016年冬のリリースよりご愛顧いただき、誠にありがとうございました。
なお、ソースコードは引き続きGitHub上でアーカイブしていますので、開発の参考になれば幸いです。
こんにちはー!ニアです。
先日のプロ生勉強会のLTでちょっと紹介した、プログラミング生放送のすぱこーRSSフィードを読み込む.NETクラスライブラリ「すぱーダ(SPADA)」こと、すぱこーRSSリーダーができました。
URLまたはそれを指定したXmlReaderオブジェクトを指定するだけで、簡単にすぱこーRSSフィード(http://pronama.azurewebsites.net/spaco-feed/)を読み込むことができます。XML名前空間の設定やXmlReaderで読み込む時の複雑な処理は全てこのすぱーダにお任せください!
また、LINQを使って必要なアイテムだけを抽出することもできます。
【追記】クロスプラットフォーム向けのエクすぱーダ(X-SPADA)とユニバーサルWindows向けのユニすぱーダ(Uni-SPADA)を追加しました。
1. ダウンロードとインストール方法
以下のリンクからzipファイルダウンロードし、解凍します。
【追記】NuGetパッケージも作成しました。NuGetパッケージマネージャーからダウンロードできます。
すぱーダ : https://www.nuget.org/packages/Chronoir_net.SPADA/エクすぱーダ : https://www.nuget.org/packages/Chronoir_net.XSPADA/ユニすぱーダ : https://www.nuget.org/packages/Chronoir_net.UniSPADA/
ターゲットプラットフォーム
- すぱーダ : .NET Framework 4.0
- エクすぱーダ : .NET Framework 4.5、Xamarin.Android、Xamarin.iOS、Windows 8.x用ストアアプリ、Windows Phone 8.1(Silverlightには非対応)
- ユニすぱーダ : ユニバーサルWindows(Build 10240以上)
また、すぱーダはオープンソースです。ソースコードはGitHub上にアップしています。
GitHub : https://github.com/Nia-TN1012/SPADA
DLLファイルをアセンブリ参照に追加するか、ソースファイルをプロジェクトに追加します。
2. 使い方
ライブラリのドキュメントはこちらです -> すぱーダ: Main Page
すぱーダは すぱこーRSSフィードを読み込む SpacoRSSReaderクラス とすぱこーの各話データを格納する SpacoRSSItemクラス の2つで構成されています。
2.1. すぱこーRSSフィードの読み込み
SpacoRSSReader.Load( string )メソッドで、すぱこーRSSフィードのURLを指定して読み込みます(内部でLINQ to XMLを用いています)。
または、SpacoRSSReader.Load( XmlReader )メソッドで、XmlReaderオブジェクトを指定して読み込むことも可能です(こちらの方が高速です)。
読み込みに成功すると、コンテンツのデータを格納したSpacoRSSReaderオブジェクトが返ります。
using Chronoir_net.SPADA;
using System.Xml; // XmlReader経由で読み込む場合
SpacoRSSReader srr1 = SpacoRSSReader.Load( "http://pronama-api.azurewebsites.net/feed/spaco" );
// ...
// または
using( XmlReader xr = XmlReader.Create( "http://pronama-api.azurewebsites.net/feed/spaco" ) ) {
SpacoRSSReader srr2 = SpacoRSSReader.Load( xr );
// ...
}
2.2. 各話のデータの列挙
SpacoRSSReader.ItemsプロパティからLINQを使って、各話のデータを列挙することができます。
// 単純な列挙
foreach( SpacoRSSItem item in srr.Items ) {
// ...
}
// 今日から起算して過去2ヶ月分のみを抽出
var srr_rc2 = srr.Items.Where( _ => _.PubDate >= DateTime.Now.AddMonths( -2 ) );
2.3. すぱこーRSSフィードのデータと対応しているプロパティ
channel要素とSpacoRSSReaderクラス
RSSフィード内の要素 | 概要 | すぱーダ内のプロパティ | データ型 |
---|---|---|---|
title | 作品のタイトル | Title | string |
link | リンク | Link | string |
description | 作品の説明 | Description | string |
pubDate | 最新話の公開日 | PubDate | DateTime |
image | バナー画像のURL | BannerURL | string |
dc:creator | 作成者 | Author | string |
item | 各話のデータのコレクション | Items | IEnumerable <SpacoRSSItem> |
item要素とSpacoRSSItemクラス
RSSフィード内の要素 | 概要 | すぱーダ内のプロパティ | データ型 |
---|---|---|---|
title | タイトル | Title | string |
dc:creator | 作成者 | Author | string |
link | 作品のURL | Link | string |
pubDate | 公開日 | PubDate | DateTime |
description | あらすじ | Description | string |
dcncl:volume | 話数 | Volume | int |
dc:modified | 更新日 | ModifiedDate | DateTime |
p:isAvailable | 利用可能 | IsAvailable | bool |
media:content | 漫画画像のURL | MediaURL | string |
media:thumbnail | サムネイル画像のURL | ThumbnailURL | string |
guid | ID | ID | string |
3. サンプルプログラム
using System;
using System.Collections.Generic;
using System.Xml;
using System.Linq;
using Chronoir_net.SPADA;
class Program {
static void Main( string[] args ) {
try {
// すぱーダで、すぱこーRSSフィードの読み込みます。
SpacoRSSReader srr = null;
// XMLReaderクラス経由ですぱこーRSSフィードを読み込みます。
using( XmlReader xr = XmlReader.Create( "http://pronama-api.azurewebsites.net/feed/spaco" ) ) {
srr = SpacoRSSReader.Load( xr );
}
Console.WriteLine( "完了!" );
// すぱこーRSSフィードのチャンネル情報を取得します。
Console.WriteLine( $"タイトル : {srr.Title}" );
Console.WriteLine( $"概要 : {srr.Description}" );
Console.WriteLine( $"最新話公開日 : {srr.PubDate}" );
Console.WriteLine( $"リンク : {srr.Link}" );
// 各話のデータを取得します。
Console.WriteLine( "\n各話の情報" );
foreach( var item in srr.Items ) {
Console.WriteLine( $"◆ 第{item.Volume}話" );
Console.WriteLine( $" タイトル : {item.Title}" );
Console.WriteLine( $" 作者 : {item.Author}" );
Console.WriteLine( $" 公開日 : {item.PubDate}" );
Console.WriteLine( $" リンク : {item.Link}" );
}
}
catch( Exception ex ) {
Console.WriteLine( $"\nエラー : {ex.Message}" );
}
}
}
それでは、See you next!
コメント