public static async Task AddUser10Min(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_Fb_BlockUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { Chat_Fb_BlockUser blockUser = new Chat_Fb_BlockUser { FacebookId = userId, CreatedDate = DateTime.Now, UpdatedDate = null, IsBlockAll = false, UtilTime = DateTime.Now.AddMinutes(10), }; db.Chat_Fb_BlockUser.Add(blockUser); await db.SaveChangesAsync(); } if (userInDb != null) { userInDb.IsBlockAll = false; userInDb.UpdatedDate = DateTime.Now; userInDb.UtilTime = DateTime.Now.AddMinutes(5); await db.SaveChangesAsync(); } ConsoleLogHelper.WriteToConsole($"Stop10Min {userId}"); return; } }
public static async Task SetUserNoiTu(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_NoiTuUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { db.Chat_NoiTuUser.Add(new Chat_NoiTuUser() { FacebookId = userId, IsNoiTu = true }); } else { userInDb.IsNoiTu = true; } var userBlock = await db.Chat_Fb_BlockUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userBlock != null) { db.Chat_Fb_BlockUser.Remove(userBlock); ConsoleLogHelper.WriteToConsole($"RemoveStopAll {userId}"); } await db.SaveChangesAsync(); } }
public static async Task <List <string> > GetListTruyenCuoiTop(int quantity) { List <string> listTruyenCuoi = new List <string>(); using (FbToolEntities db = new FbToolEntities()) { listTruyenCuoi = await db.Chat_Fb_FunnyStory.Select(x => x.Content).Take(quantity).ToListAsync(); } return(listTruyenCuoi); }
public static async Task <bool> CheckIsNoiTuTiengAnhOrNot(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_NoiTuTiengAnhUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { return(false); } return(userInDb.IsNoiTuTiengAnh.GetValueOrDefault()); } }
public static async Task <bool> CheckUserAgreeSimsimi(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_Fb_User_Simsimi.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { return(false); } return(userInDb.IsAgree.GetValueOrDefault()); } }
private async Task UpdatePostDetail(FbToolEntities db, CrawlPostGroup_Post dbPostInDb) { try { var postDetailInDb = db.CrawlPostGroup_PostDetail.FirstOrDefault(x => x.CrawlPostGroup_PostId == dbPostInDb.Id); //string cookie = // "sb=srBAX2Yf70eNGh8YE48Rh9uV; datr=MbZAX5ch9yeZ8S7kWRJ-avy4; c_user=100001578994326; dpr=1.25; spin=r.1002600685_b.trunk_t.1598977068_s.1_v.2_; xs=44%3A-H2B8TYHbDoigw%3A2%3A1598151193%3A19558%3A6330%3A%3AAcUH9rZg5FSLhbO4I8oVAqiKtPcc_0fH95G7F6NZ2i0; fr=1nKtY59ZJSUFo6uYR.AWUxrD6u02zOlIw2BoY3euBzJOI.BfQLCy.TG.F9K.0.0.BfToJd.AWWJZZlx; wd=574x722; presence=EDvF3EtimeF1598981783EuserFA21B01578994326A2EstateFDt3F_5b_5dElm3FnullEutc3F1598981783875G598981783915CEchF_7bCC"; var tempPostDetail = await PostGroupHelper.GetPostDetailDTOAsync(dbPostInDb.Fb_Id, ListHelper <TokenCookie> .GetRandomItemInListObject(Constant.LIST_TOKEN_COOKIE).Cookie); //string cookie = ListHelper.GetRandomItemInList(Constant.LIST_COOKIE); //var tempPostDetail = await PostGroupHelper.GetPostDetailDTOAsync(dbPostInDb.Fb_Id, cookie); if (postDetailInDb != null) { db.Entry(postDetailInDb).CurrentValues.SetValues(tempPostDetail); postDetailInDb.TimeUpdatedInDb = DateTime.Now; } else { var newPostDetail = new CrawlPostGroup_PostDetail(); newPostDetail.TimeCreatedInDb = DateTime.Now; newPostDetail.CrawlPostGroup_PostId = dbPostInDb.Id; newPostDetail.Name = tempPostDetail.Name; newPostDetail.UID = tempPostDetail.UID; newPostDetail.ReactionTotalCount = tempPostDetail.ReactionTotalCount; newPostDetail.LikeCount = tempPostDetail.LikeCount; newPostDetail.LoveCount = tempPostDetail.LoveCount; newPostDetail.WowCount = tempPostDetail.WowCount; newPostDetail.SupportCount = tempPostDetail.SupportCount; newPostDetail.HahaCount = tempPostDetail.HahaCount; newPostDetail.SadCount = tempPostDetail.SadCount; newPostDetail.AngryCount = tempPostDetail.AngryCount; newPostDetail.ShareCount = tempPostDetail.ShareCount; newPostDetail.CommentCount = tempPostDetail.CommentCount; db.CrawlPostGroup_PostDetail.Add(newPostDetail); } db.SaveChanges(); } catch (Exception e) { InvokeControlHelper.AppendRichTextboxV2(rtbInfoGetToken, $"Exception UpdatePostDetail.PostId = {dbPostInDb?.Id}. Exception = {e.Message}, InnerException ={e.InnerException?.Message}", Color.Red); } }
public static async Task <bool> CheckIsBlockOrNot(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_Fb_BlockUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { return(false); } //Check xem có đồng ý dùng simsimi hay không var agreeSimsimi = await CheckUserAgreeSimsimi(userId); if (agreeSimsimi && !userInDb.IsBlockAll.GetValueOrDefault()) { return(false); } return(userInDb.IsBlockAll.GetValueOrDefault() || DateTime.Now <= userInDb.UtilTime); } }
private async Task AddOrUpdatePostGroupVersion2(CrawlPostDTO model) { using (var db = new FbToolEntities()) { var listPost = new List <CrawlPostGroup_Post>(); var crawlPostGroup_Post = MapFromCrawlPostDTOToCrawlPostGroup_Post(model); listPost.Add(crawlPostGroup_Post); db.BulkMerge(listPost, options => { options.IncludeGraph = true; options.IncludeGraphOperationBuilder = operation => { if (operation is BulkOperation <CrawlPostGroup_Post> ) { var bulk = (BulkOperation <CrawlPostGroup_Post>)operation; bulk.ColumnPrimaryKeyExpression = x => new { x.Fb_Id }; bulk.IgnoreOnMergeUpdateExpression = c => new { c.TimeCreatedInDb }; bulk.IgnoreOnMergeInsertExpression = c => new { c.TimeUpdatedInDb }; } if (operation is BulkOperation <CrawlPostGroup_Privacy> ) { var bulk = (BulkOperation <CrawlPostGroup_Privacy>)operation; bulk.ColumnPrimaryKeyExpression = x => new { x.Value, x.CrawlPostGroup_PostId }; } if (operation is BulkOperation <CrawlPostGroup_Action> ) { var bulk = (BulkOperation <CrawlPostGroup_Action>)operation; bulk.ColumnPrimaryKeyExpression = x => new { x.Name, x.CrawlPostGroup_PostId }; } if (operation is BulkOperation <CrawlPostGroup_Comment> ) { var bulk = (BulkOperation <CrawlPostGroup_Comment>)operation; bulk.ColumnPrimaryKeyExpression = x => new { x.Fb_Id, x.CrawlPostGroup_PostId }; } }; }); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Upsert thành công bài Post với Id = {model.Fb_Id}", Color.Green); listPost.Clear(); Thread.Sleep(100); } }
public static async Task SetUserStopNoiTuTiengAnh(string userId) { using (FbToolEntities db = new FbToolEntities()) { var userInDb = await db.Chat_NoiTuTiengAnhUser.FirstOrDefaultAsync(x => x.FacebookId == userId); if (userInDb == null) { db.Chat_NoiTuTiengAnhUser.Add(new Chat_NoiTuTiengAnhUser() { FacebookId = userId, IsNoiTuTiengAnh = false }); } else { userInDb.IsNoiTuTiengAnh = false; } await db.SaveChangesAsync(); } }
private async Task AddOrUpdatePostGroup(CrawlPostDTO model) { using (var db = new FbToolEntities()) { var test = db.Chat_Fb_FunnyStory.ToList(); var postInDb = db.CrawlPostGroup_Post.Where(x => x.Fb_Id == model.Fb_Id).Include(x => x.CrawlPostGroup_Action).FirstOrDefault(); if (postInDb == null) { postInDb = new CrawlPostGroup_Post(); postInDb.TimeCreatedInDb = DateTime.Now; db.CrawlPostGroup_Post.Add(postInDb); db.SaveChanges(); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Thêm mới Post với Id = {model.Fb_Id}", Color.Blue); } if (postInDb != null) { db.Entry(postInDb).CurrentValues.SetValues(model); postInDb.TimeUpdatedInDb = DateTime.Now; #region Action foreach (var action in postInDb.CrawlPostGroup_Action.ToList()) { if (!model.Actions.Any(c => c.Name == action.Name)) { db.CrawlPostGroup_Action.Remove(action); } } // Update and Insert children foreach (var actionDto in model.Actions) { var existingChildAction = postInDb.CrawlPostGroup_Action .Where(c => c.Name == actionDto.Name) .FirstOrDefault(); if (existingChildAction != null) { // Update child db.Entry(existingChildAction).CurrentValues.SetValues(actionDto); } else { // Insert child var newChild = new CrawlPostGroup_Action { Name = actionDto.Name, Link = actionDto.Link }; postInDb.CrawlPostGroup_Action.Add(newChild); } } #endregion #region Privacy var existingChildPrivacy = postInDb.CrawlPostGroup_Privacy.FirstOrDefault(); if (existingChildPrivacy != null) { // Update child db.Entry(existingChildPrivacy).CurrentValues.SetValues(model.Privacy); } else { // Insert child var newChild = new CrawlPostGroup_Privacy() { Value = model.Privacy.Value, Description = model.Privacy.Description, Friends = model.Privacy.Friends, Allow = model.Privacy.Allow, Deny = model.Privacy.Deny }; postInDb.CrawlPostGroup_Privacy.Add(newChild); } #endregion #region Comment foreach (var comment in postInDb.CrawlPostGroup_Comment.ToList()) { if (!model.Comments.Data.Any(c => c.Fb_Id == comment.Fb_Id)) { db.CrawlPostGroup_Comment.Remove(comment); } } // Update and Insert children if (model.Comments?.Data?.Count > 0) { foreach (var commentDto in model.Comments?.Data) { var existingChildComment = postInDb.CrawlPostGroup_Comment .Where(c => c.Fb_Id == commentDto.Fb_Id) .FirstOrDefault(); if (existingChildComment != null) { // Update child db.Entry(existingChildComment).CurrentValues.SetValues(commentDto); } else { // Insert child var newChild = new CrawlPostGroup_Comment() { CreatedTime = DateTimeHelper.ConvertStringFromApiFacebookToDateTime(commentDto.CreatedTimeFromApi), Message = commentDto.Message, CanRemove = commentDto.CanRemove, LikeCount = commentDto.LikeCount, UserLike = commentDto.UserLikes, Fb_Id = commentDto.Fb_Id }; postInDb.CrawlPostGroup_Comment.Add(newChild); } } } #endregion } db.SaveChanges(); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Update thành công bài Post với Id = {model.Fb_Id}", Color.Green); await UpdatePostDetail(db, postInDb); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Update thành công Detail bài Post với Id = {model.Fb_Id}", Color.Green); Thread.Sleep(100); } }
private async Task GetListPostInGroup(string groupId) { using (FbToolEntities db = new FbToolEntities()) { string token = ListHelper <TokenCookie> .GetRandomItemInListObject(Constant.LIST_TOKEN_COOKIE).Token; var url = "https://graph.facebook.com/" + groupId + "/feed?limit=100&access_token=" + token; CrawlPostGroupRoot root = new CrawlPostGroupRoot(); do { try { var result = ""; do { try { result = await HttpClientHelper.SendRequestAsync(url, ListHelper <TokenCookie> .GetRandomItemInListObject(Constant.LIST_TOKEN_COOKIE).Cookie); } catch (Exception e) { Constant.LIST_TOKEN.Remove(token); token = ListHelper <TokenCookie> .GetRandomItemInListObject(Constant.LIST_TOKEN_COOKIE).Token; url = "https://graph.facebook.com/" + groupId + "/feed?limit=100&access_token=" + token; InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostException, $"Exception trong DoWhile GetListPostInGroup.Exception={e.Message},InnerException={e.InnerException?.Message}, url={url}", Color.Red); } } while (string.IsNullOrEmpty(result)); root = JsonConvert.DeserializeObject <CrawlPostGroupRoot>(result); if (root.Data == null) { Thread.Sleep(5 * 60 * 1000); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostException, $"Nghỉ 5 phút sau khi lấy được {totalPostCrawed}"); continue; } foreach (var postDto in root.Data) { try { await AddOrUpdatePostGroupVersion2(postDto); totalPostCrawed++; InvokeControlHelper.UpdateLabel(lbCrawlGroupPostStatus, $"Crawled {totalPostCrawed} bài post", Color.Blue); } catch (Exception e) { InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostException, $"Chạy vào foreach AddOrUpdatePostGroup,Exception={e.Message},InnerException={e.InnerException?.Message},Root={root},postDto.Fb_Id={postDto.Fb_Id}", Color.Red); } } if (!string.IsNullOrEmpty(root.Paging?.Next)) { url = Regex.Replace(root.Paging?.Next, @"EAAA\w+", ListHelper <TokenCookie> .GetRandomItemInListObject(Constant.LIST_TOKEN_COOKIE).Token); } Thread.Sleep(2 * 60 * 1000); //Nghỉ 2 phút } catch (Exception e) { InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostException, $"Chạy vào GetListPostInGroup,Exception={e.Message},InnerException={e.InnerException?.Message}.Root={root}", Color.Red); } } while (root.Data?.Count > 0 || root.Data == null); MessageBox.Show("Xong"); } }
public static async Task <EnumFeature> CheckSpecialMessage(string message, string threadId) { using (FbToolEntities db = new FbToolEntities()) { //RemoveStopAll if (message.Equals(EnumHelper.GetDescription(EnumFeature.RemoveStopAll), StringComparison.InvariantCultureIgnoreCase)) { var userInDb = await db.Chat_Fb_BlockUser.FirstOrDefaultAsync(x => x.FacebookId == threadId); if (userInDb != null) { db.Chat_Fb_BlockUser.Remove(userInDb); await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"RemoveStopAll {threadId}"); } return(EnumFeature.NoSpecialFeature); } //StopAll if (message.Equals(EnumHelper.GetDescription(EnumFeature.StopAll), StringComparison.InvariantCultureIgnoreCase)) { var userInDb = await db.Chat_Fb_BlockUser.FirstOrDefaultAsync(x => x.FacebookId == threadId); if (userInDb == null) { Chat_Fb_BlockUser blockUser = new Chat_Fb_BlockUser { FacebookId = threadId, CreatedDate = DateTime.Now, UpdatedDate = null, IsBlockAll = true, UtilTime = null, }; db.Chat_Fb_BlockUser.Add(blockUser); await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"StopAll {threadId}"); } if (userInDb != null) { userInDb.IsBlockAll = true; userInDb.UpdatedDate = DateTime.Now; await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"StopAll {threadId}"); } return(EnumFeature.NoSpecialFeature); } //Stop5Min if (message.Equals(EnumHelper.GetDescription(EnumFeature.Stop5Min), StringComparison.InvariantCultureIgnoreCase)) { await AddUser10Min(threadId); } //TroLyAo if (message.Equals(EnumHelper.GetDescription(EnumFeature.TroLyAo), StringComparison.InvariantCultureIgnoreCase)) { var userInDb = await db.Chat_Fb_User_Simsimi.FirstOrDefaultAsync(x => x.FacebookId == threadId); if (userInDb == null) { Chat_Fb_User_Simsimi user_Simsimi = new Chat_Fb_User_Simsimi { FacebookId = threadId, FacebookName = "", IsAgree = true, CreatedDate = DateTime.Now }; db.Chat_Fb_User_Simsimi.Add(user_Simsimi); await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"TroLyAo agree - {threadId}"); } else { userInDb.IsAgree = true; userInDb.UpdatedDate = DateTime.Now; await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"TroLyAo agree - {threadId}"); } return(EnumFeature.TroLyAo); } if (message.Equals(EnumHelper.GetDescription(EnumFeature.GirlXinh), StringComparison.InvariantCultureIgnoreCase)) { return(EnumFeature.GirlXinh); } if (message.Equals(EnumHelper.GetDescription(EnumFeature.TruyenCuoi), StringComparison.InvariantCultureIgnoreCase)) { return(EnumFeature.TruyenCuoi); } if (message.Equals(EnumHelper.GetDescription(EnumFeature.TinTuc), StringComparison.InvariantCultureIgnoreCase)) { return(EnumFeature.TinTuc); } if (message.Equals(EnumHelper.GetDescription(EnumFeature.NoiTu), StringComparison.InvariantCultureIgnoreCase)) { return(EnumFeature.NoiTu); } if (message.Equals(EnumHelper.GetDescription(EnumFeature.StopNoiTu), StringComparison.InvariantCultureIgnoreCase)) { return(EnumFeature.StopNoiTu); } } return(EnumFeature.Normal); }
public static async Task <List <NewfeedDTO> > GetNewFeed(string token, bool isOnlyUser = true, int countGet = 3) { List <NewfeedDTO> newfeedDTOs = new List <NewfeedDTO>(); try { try { HttpClient http = new HttpClient(); string url = $"https://graph.facebook.com/me/home?access_token={token}&fields=id,message,created_time,from,type&limit=50"; var response = await http.GetAsync(url); var result = await response.Content.ReadAsStringAsync(); NewfeedRoot categoryRoot = JsonConvert.DeserializeObject <NewfeedRoot>(result); //Lấy lần 1 newfeedDTOs = categoryRoot.Data; for (int i = 0; i < countGet; i++) { try { url = categoryRoot.Paging?.Next; response = await http.GetAsync(url); result = await response.Content.ReadAsStringAsync(); categoryRoot = JsonConvert.DeserializeObject <NewfeedRoot>(result); newfeedDTOs = newfeedDTOs.Concat(categoryRoot.Data).ToList(); } catch (Exception ex) { Console.WriteLine($"GetNewFeed lần {i} bị lỗi!"); } } //Save post in db using (FbToolEntities db = new FbToolEntities()) { foreach (var post in newfeedDTOs) { try { Chat_Fb_Post fb_Post = new Chat_Fb_Post { FacebookId = post.Id, CreatedDate = DateTime.Now, UpdatedDate = null, FromUserId = post.From?.Id, Type = post.Type, Message = post.Message };; if (!db.Chat_Fb_Post.Any(x => x.FacebookId == post.Id)) { db.Chat_Fb_Post.Add(fb_Post); await db.SaveChangesAsync(); } } catch (Exception ex) { Console.WriteLine($"There's something went wrong GetNewFeed1. Exception = {ex.Message}. InnerException ={ex.InnerException?.Message}"); } } } } catch (Exception ex) { ConsoleLogHelper.WriteToConsole($"Exception in GetNewFeed, message = {ex.Message}"); } if (!isOnlyUser) { return(newfeedDTOs); } var newfeedDTOsUser = newfeedDTOs.Where(x => x.From.Category == null).ToList(); return(newfeedDTOsUser); } catch (Exception ex) { Console.WriteLine($"There's something went wrong GetNewFeed2. Exception = {ex.Message}. InnerException ={ex.InnerException?.Message}"); } return(newfeedDTOs); }
public static async Task ReactionAllPost() { try { List <NewfeedDTO> newfeedDTOs = await GetNewFeed(Constant.TOKEN, true, 3); newfeedDTOs = newfeedDTOs.Distinct(new ComparerCustom()).ToList(); using (FbToolEntities db = new FbToolEntities()) { foreach (var post in newfeedDTOs) { try { string type = EnumHelper.GetDescription(EnumReactionType.LIKE); Random rd = new Random(); bool isSuccess = false; var reactionType = EnumReactionType.LIKE; if (rd.NextDouble() <= 0.5) { reactionType = EnumReactionType.LIKE; } else if (rd.NextDouble() <= 0.8) { reactionType = EnumReactionType.LOVE; } else { reactionType = EnumReactionType.HAHA; } isSuccess = await LikePost(Constant.TOKEN, post.Id, reactionType); if (isSuccess) { //Save db Chat_Fb_Post postInDb = await db.Chat_Fb_Post.FirstOrDefaultAsync(x => x.FacebookId == post.Id); Chat_Fb_Like_Post fbLikePost = new Chat_Fb_Like_Post { IdPost = postInDb?.Id, FacebookIdPost = post.Id, CreatedDate = DateTime.Now, UpdatedDate = null, Type = type }; if (!db.Chat_Fb_Like_Post.Any(x => x.FacebookIdPost == postInDb.FacebookId)) { db.Chat_Fb_Like_Post.Add(fbLikePost); await db.SaveChangesAsync(); ConsoleLogHelper.WriteToConsole($"{reactionType} Post success - {post.Id}"); } } else { ConsoleLogHelper.WriteToConsole($"{reactionType} Post failed - {post.Id}"); } Thread.Sleep(TimeSpan.FromSeconds(Constant.TIME_SLEEP_REACTION)); } catch (Exception ex) { Console.WriteLine($"There's something went wrong ReactionAllPost1. Exception = {ex.Message}. InnerException ={ex.InnerException?.Message}"); } } } } catch (Exception ex) { Console.WriteLine($"There's something went wrong GetNewFeed. ReactionAllPost2 = {ex.Message}. InnerException ={ex.InnerException?.Message}"); } }