internal ChanThreadLibrary(string board, string threadId) { _boardName = board; WebClient wc = new WebClient(); string jsondata = wc.DownloadString(String.Format("http://a.4cdn.org/{0}/thread/{1}.json", board, threadId)); JObject jo = JObject.Parse(jsondata); var firstPosts = jo.GetValue("posts").Select(d => d.ToObject <ChanPost>()).ToList(); _postTitle = ChanUtil.StripComment(firstPosts.First().Com); Images = new ObservableCollection <ImageData>(); foreach (ChanPost post in firstPosts.Where(d => d.Filename != null)) { string strippedComment = ChanUtil.StripComment(post.Com); Images.Add(new ImageData { FileName = (post == firstPosts.First() ? "OP" : (String.IsNullOrWhiteSpace(strippedComment) ? post.Filename + post.Ext : strippedComment)), LastModified = Util.UnixTimeStampToDateTime(post.Time), Path = String.Format("http://i.4cdn.org/{0}/{1}{2}", board, post.Tim, post.Ext) }); } _sourceUrl = String.Format("http://boards.4chan.org/{0}/thread/{1}/", board, threadId); }
private ChanBoardLibrary(string board, int page) { _boardName = board; WebClient wc = new WebClient(); string jsondata = wc.DownloadString(String.Format("http://a.4cdn.org/{0}/{1}.json", board, page)); JObject jo = JObject.Parse(jsondata); var firstPosts = jo.SelectTokens("threads[*].posts[0]", true).ToList(); Images = new ObservableCollection <ImageData>(); foreach (ChanPost post in firstPosts.Select(d => d.ToObject <ChanPost>()).ToList()) { string strippedComment = ChanUtil.StripComment(post.Com, 120); if (String.IsNullOrWhiteSpace(strippedComment)) { strippedComment = post.No.ToString(); } Images.Add(new ImageData { FileName = strippedComment, LastModified = Util.UnixTimeStampToDateTime(post.Time), Path = String.Format("http://i.4cdn.org/{0}/{1}{2}", board, post.Tim, post.Ext), ExtraData = new Dictionary <string, string> { { "ThreadNo", post.No.ToString() }, { "BoardName", board } } }); } _sourceUrl = String.Format("http://4chan.org/{0}", board); }