超!A&G+ の番組表をスクレイピングして、いろいろ取得しやすくした(つもり)。
- AGQRTimetable プロジェクトをビルド
AGQRTimetable.dll
を自身のプロジェクトに参照追加Newtonsoft.Json
とHtmlAgilityPack
を NuGet から追加
AGQRコンストラクタで番組表をスクレイピングします。
AGQR agqr = new AGQR();
月曜日から日曜日までの順番で並んでいます。
foreach (var day in agqr.All) {
Console.WriteLine(day.Date);
foreach (var item in day.Programs) {
Console.WriteLine(item.Title);
}
}
午前6時から次の日の午前6時までの番組表を取得します。
foreach (var item in agqr.Today.Programs) {
Console.WriteLine(item.Title);
}
Console.WriteLine(agqr.Now.Title);
取得した日(午前0時から午前5時の間の場合には前日)から7日間の番組表を利用できます。
Console.WriteLine(agqr.ExpiryDateTime);
取得してから7日間が経過したことと等しいです。
Console.WriteLine(agqr.IsExpired);
AGQRクラスのコンストラクタ実行時、または Refresh() メソッド実行時の時間です。
Console.WriteLine(agqr.UpdatedDateTime);
今週の全番組表をJSON形式にシリアライズし、改行や空白でフォーマットされていない1行の文字列を取得します。
Console.WriteLine(agqr.JsonSimple);
今週の全番組表をJSON形式にシリアライズし、 改行や空白でフォーマットされた文字列 を取得します。
2020年3月21日に取得した番組表のJSONはコレです。
Console.WriteLine(agqr.JsonFormatted);
毎日午前5時に再取得することをおすすめします。
agqr.Refresh();
6時から29時(5時)を同日時として、その日付の6時を返します。
- 3月26日6時 の場合、3月26日6時 を返します。
- 3月26日12時 の場合、3月26日6時 を返します。
- 3月27日0時 の場合、3月26日6時 を返します。
- 3月27日5時 の場合、3月26日6時 を返します。
Console.WriteLine(AGQR.GetSpecializedDate(DateTime.Now));