using System.Collections.Specialized;
using System.Collections.Generic;
public static int daysAfter = 2;
public static void Main()
Console.Write("Please input the key => ");
var key = Console.ReadLine();
var super = DoCheck("Q121141439",key)
.Concat(DoCheck("F131877206",key))
.Concat(DoCheck("T222397538",key))
.Concat(DoCheck("O100783375",key))
Console.WriteLine("Total => "+super.Count().ToString());
foreach(var item in super){
Console.WriteLine(item.ExpireDate.ToString("yyyy/MM/dd")+":"+item.Acc+":"+item.BookName);
private static List<record> DoCheck(string acc,string key){
var client = new CookieAwareWebClient();
client.BaseAddress = @"https://webpac.hcml.gov.tw/webpac/personalization/";
var loginData = new NameValueCollection();
loginData.Add("account2", acc);
loginData.Add("passwd2", key);
client.UploadValues("memberLoginAct.do", "POST", loginData);
var dlData = new NameValueCollection();
dlData.Add("functionName","LendList");
dlData.Add("pageCode","0001");
dlData.Add("countType","all");
dlData.Add("outputType","save");
dlData.Add("dispType","list");
dlData.Add("fileType","csv");
byte[] responseArray = client.UploadValues("exportPersonDataAct.do",dlData);
var data = Encoding.UTF8.GetString(responseArray).Split(
List<record> book = new List<record>();
for(int i=2;i<data.Length;i++){
var detail = data[i].Replace("\",\"","^").Split('^');
book.Add(new record { Acc = acc, BookName = detail[0].Replace("\"","")+"("+detail[3]+")",ExpireDate = Convert.ToDateTime(detail[5].Replace("\"","")) });
var chkItem = book.Where(c=>DateTime.Today.AddDays(daysAfter).CompareTo(c.ExpireDate) >= 0 ).ToList();
client.UploadValues("logout.jsp", "POST", new NameValueCollection());
public class CookieAwareWebClient : WebClient
private CookieContainer cookie = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
(request as HttpWebRequest).CookieContainer = cookie;
public string BookName {get;set;}
public DateTime ExpireDate {get;set;}
public string Acc {get;set;}