/// <summary> /// Algo wrapper for twitter accounts. /// </summary> /// <param name="acc"></param> /// <returns></returns> public async Task <bool> scheduleAlgo(SocialMediaVM acc) { try { var startTime = DateTime.UtcNow; List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <SuperTargetUser> targetUser = _superTargetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); if (acc.IsSubscribed == true) { var planDetails = _userService.GetASubscriptionPlan(acc.planId); if (planDetails.AllowSuperTargeting == true) { await SuperTargeting(targetUser, tags, acc); //if supertargetting is allowed in plan. } if (planDetails.AllowNegativeTags == false) { tags.RemoveAll(x => x.IsBlocked == true); //disabling negative keywords checking by removing blocked tags from list. } await SearchPostUsingTag(tags, acc); } else if (acc.IsTrail == true) { await SearchPostUsingTag(tags, acc); await SuperTargeting(targetUser, tags, acc); } UpdateProfile(acc.AccessDetails, acc.Id); _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).FollowersCount); return(true); } catch (Exception) { return(false); } }
/// <summary> /// Method to get algo for tags and super target user for sandbox user /// </summary> /// <param name="acc"></param> public void scheduleAlgo(SocialMediaVM acc) { try { if (GetUserprofile(acc.AccessDetails).IsAccountValid == true) { List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <SuperTargetUser> targetUser = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); SearchPostUsingTag(tags, acc); UpdateProfile(acc.AccessDetails, acc.Id); _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).counts.followed_by); CheckForConversion(acc); } else { var accountDetails = _socialMedia.Get().Where(x => x.Id == acc.Id).FirstOrDefault(); accountDetails.IsInvalid = true; accountDetails.Status = false; _unitOfWork.Commit(); } } catch (Exception) { throw; } }
public bool TracksToPlaylist(SocialMediaVM acc, string suggestedTrackIds, string playlistId) { try { var TrackIdStack = suggestedTrackIds.Split(','); foreach (var item in TrackIdStack) { var trackId = Int64.Parse(item); var trackDetail = _trackSuggestionRepo.Get().Where(x => x.Id == trackId).FirstOrDefault(); var result = AddToPlaylist(acc.Id, new AddToPlaylistParameter { playlistId = playlistId, uri = trackDetail.uri, userId = acc.SMId }, acc.AccessDetails); if (result == false) { return(false); } else { trackDetail.IsAdded = true; _unitOfWork.Commit(); } } return(true); } catch (Exception) { return(false); } }
/// <summary> /// method to check follower conversion /// </summary> /// <param name="acc"></param> /// <returns></returns> public async Task <bool> CheckForConversion(SocialMediaVM acc) { try { var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList(); // getting user's activity log var followers = await GetFollowersList(long.Parse(acc.SMId), acc.AccessDetails); //getting user's followers list if (accountActivity.Count() != 0 || followers.Value.Count() != 0) { foreach (var item in accountActivity) { foreach (var follower in followers.Value) { if (follower.ScreenName == item.Username && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false)//checking if users from his activity log is in followers list { _userService.SaveConversion(new Conversions { SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag }); } } } } return(true); } catch (Exception) { return(false); } }
/// <summary> /// Method for search post using super target user /// </summary> /// <param name="targetUsers"></param> /// <param name="acc"></param> /// <param name="tags"></param> public void SuperTargeting(List <SuperTargetUser> targetUsers, SocialMediaVM acc, List <Tags> tags) { try { if (targetUsers.Count() > 0) { foreach (var item in tags) { foreach (var user in targetUsers) { var followers = SearchTags(acc.AccessDetails, item.TagName); var resList = followers.Result.ToList(); foreach (var res in resList) { string id = res.Id; string name = res.user.username; if (PostLike(acc.AccessDetails, id) == true) { _userService.SaveActivity(new Activities { Activity = Activity.Follow.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = id.ToString(), Tag = "@" + user.UserName, Username = name, ActivityDate = DateTime.UtcNow }); } } } } } } catch (Exception) { throw; } }
public async void TargetPlaylistTask(List <TargetPlaylist> playlists, SocialMediaVM acc) { try { if (playlists.Count() > 0) { foreach (var playlist in playlists) { int limit = 0; bool breakLoop = false; int count = 0; int spotifytargetPlaylistUserArtistFollow = Int16.Parse(ConfigurationSettings.AppSettings["spotifytargetPlaylistUserArtistFollow"].ToString()); while (count < spotifytargetPlaylistUserArtistFollow || breakLoop == true) { var tracks = GetPlaylistTracks(playlist.PlaylistId, playlist.OwnerId, acc.Id, acc.AccessDetails, limit); foreach (var item in tracks.items) { if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false) { if (Follow(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type)) { _userService.SaveActivity(new Activities { SMId = item.added_by.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.Name, Username = item.added_by.display_name, UserType = item.added_by.type }); count++; await Task.Delay(100000); } } if (CheckArtistFollowedByUser(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type) == false) { if (Follow(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type)) { _userService.SaveActivity(new Activities { SMId = item.track.artists[0].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.Name, Username = item.added_by.display_name, UserType = item.track.artists[0].type }); count++; await Task.Delay(100000); } } } if (limit * 5 > tracks.total) { breakLoop = true; } limit++; }//while end var temp = _targetPlaylistRepo.Get().Where(x => x.Id == playlist.Id).FirstOrDefault(); temp.count = temp.count + 1; _unitOfWork.Commit(); } } } catch (Exception) { throw; } }
/// <summary> /// Search posts on the basis of tags & task regarding those post. /// </summary> /// <param name="tags"></param> /// <param name="acc"></param> /// <returns></returns> public async Task <bool> SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc) { try { if (tags != null) { foreach (var item in tags) { if (item.IsBlocked == false) { List <string> langCode = new List <string>(); if (acc.AccSettings.Language != null && acc.AccSettings.Language != string.Empty) { var languages = acc.AccSettings.Language.Split(','); for (int i = 0; i < languages.Length; i++) { langCode.Add(_userService.ReturnLanguageCode(languages[i])); //getting user's language preferences } } if (langCode.Count() == 0) { langCode.Add("en"); //default language } foreach (var lang in langCode) { var tweets = await SearchTweet(item.TagName, lang, item.Location, acc.AccessDetails); //search posts on the basis of tags/lang preferences if (tweets != null) { foreach (var tweet in tweets.Value.Statuses) { var checkNegative = CheckForNegativeTag(tags, tweet); // checks whether posts contains negative tags if (tweet.IsFavorited != true && checkNegative != true) { var result = LikeTweet(tweet.Id, acc.AccessDetails); // Like tweets if (result == true) { //if like is done, activity is store. _userService.SaveActivity(new Activities { Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "#" + item.TagName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow }); await Task.Delay(100000); } } } } } } } } return(true); } catch (Exception) { return(false); } }
public async void scheduleAlgo(SocialMediaVM acc) { List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <SuperTargetUser> targetUser = _superTargetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); SearchPostUsingTag(tags, acc); SuperTargeting(targetUser, acc); UpdateProfile(acc.AccessDetails, acc.Id); SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).FollowersCount); }
/// <summary> /// Get a particular account by Id /// </summary> /// <param name="socialId"></param> /// <returns></returns> public SocialMediaVM GetAccount(int socialId) { SocialMediaVM account = new SocialMediaVM(); var today = DateTime.UtcNow; var acc = _socialMediaRepo.Get().Where(x => x.Id == socialId && x.IsDeleted == false).Include(x => x.AccSettings).Include(x => x.AccessDetails).Include(x => x.AccSettings.Tags).Include(x => x.AccSettings.UserManagement).FirstOrDefault(); var subscription = _accountSubscriptionRepo.Get().ToList() .Join(_subscriptionPlanRepo.Get().ToList(), asr => asr.PlanId, sp => sp.Id, (asr, sp) => new { asr, sp }) .Where(x => x.asr.socialIds == acc.Id.ToString() && x.asr.ExpiresOn > today) .Select(m => new { m.asr.ExpiresOn, m.asr.Id, m.asr.IsTrail, m.asr.PlanId, m.sp.Title }).FirstOrDefault(); //account subscription details account.Id = acc.Id; account.SMId = acc.SMId; account.Status = acc.Status; account.Followers = acc.Followers; account.Provider = acc.Provider; account.UserId = acc.UserId; account.IsInvalid = acc.IsInvalid; account.UserName = acc.UserName; account.ProfilepicUrl = acc.ProfilepicUrl; account.AccessDetails = acc.AccessDetails; if (acc.AccSettings == null) { account.AccSettings = new AccSettings(); } else { account.AccSettings = acc.AccSettings; } if (subscription == null) //checking is subscribed or is in trial { var CheckForTrail = _accountSubscriptionRepo.Get().Where(x => x.userId == acc.UserId && x.ExpiresOn > today && x.IsTrail == true).FirstOrDefault(); if (CheckForTrail != null) { account.ExpireOn = CheckForTrail.ExpiresOn; account.IsTrail = true; account.IsSubscribed = false; } } else { account.IsTrail = false; account.IsSubscribed = true; account.ExpireOn = subscription.ExpiresOn; account.planId = subscription.PlanId.ToString(); account.planName = subscription.Title; } return(account); }
public void scheduleAlgo(SocialMediaVM acc) { List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <SuperTargetUser> targetUser = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); SearchPostUsingTag(tags, acc); SuperTargeting(targetUser, acc, tags); UpdateProfile(acc.AccessDetails, acc.Id); _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).counts.followed_by); CheckForConversion(acc); }
public void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc) { try { if (tags.Count > 0) { foreach (var item in tags) { << << << <.mine if (item.IsBlocked == false) {
public void ScheduleAlgo(SocialMediaVM acc) { try { //var tasks = _scheduleTaskRepo.Get().Where(x => x.SocialId == acc.Id).ToList(); List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); FollowingBoardPinTask(acc, tags); } catch (Exception) { throw; } }
public async void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc) { try { foreach (var item in tags) { if (item.IsBlocked == false) { << << << <.mine var tweets = await SearchTweet(item.TagName, "en", item.Location, acc.AccessDetails); foreach (var tweet in tweets.Value.Statuses) {
/// <summary> /// Getting all the social accounts in the application /// </summary> /// <returns></returns> public IEnumerable <SocialMediaVM> GetAllAccounts() { var accounts = _socialMediaRepo.Get().Include(x => x.AccSettings).Include(x => x.AccessDetails).Include(x => x.AccSettings.Tags).Include(x => x.AccSettings.SuperTargetUser).Where(x => x.IsDeleted == false).ToList(); var today = DateTime.UtcNow; List <SocialMediaVM> accountList = new List <SocialMediaVM>(); foreach (var acc in accounts) { var subscription = _accountSubscriptionRepo.Get().Where(x => x.socialIds == acc.Id.ToString() && x.ExpiresOn > today).FirstOrDefault(); var accountDetails = new SocialMediaVM() { Id = acc.Id, SMId = acc.SMId, Status = acc.Status, Followers = acc.Followers, Provider = acc.Provider, UserId = acc.UserId, UserName = acc.UserName, ProfilepicUrl = acc.ProfilepicUrl, AccessDetails = acc.AccessDetails, IsInvalid = acc.IsInvalid, AccSettings = acc.AccSettings }; if (subscription == null) //checking if account is under subscription or in trail { var CheckForTrail = _accountSubscriptionRepo.Get().Where(x => x.userId == acc.UserId && x.ExpiresOn > today && x.IsTrail == true).FirstOrDefault(); if (CheckForTrail != null) { accountDetails.IsTrail = true; accountDetails.IsSubscribed = false; } } else { accountDetails.IsTrail = false; accountDetails.IsSubscribed = true; accountDetails.planId = subscription.PlanId.ToString(); } accountList.Add(accountDetails); } return(accountList); }
/// <summary> /// Method for search post using tag name /// </summary> /// <param name="tags"></param> /// <param name="acc"></param> public void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc) { try { if (tags.Count() > 0) { foreach (var item in tags) { if (item.IsBlocked == false) { if (item.TagName != string.Empty) { var checkNegative = CheckForBlockedTag(tags, item.TagName); if (checkNegative != true) { var resList = SearchTags(acc.AccessDetails, item.TagName).Result.ToList(); if (resList.Count() > 0) { foreach (var res in resList) { string id = res.Id; string name = res.user.username; if (res.user_has_liked == false) { if (PostLike(acc.AccessDetails, id) == true) { _userService.SaveActivity(new Activities { Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, Tag = "#" + item.TagName, PostId = id.ToString(), Username = name, ActivityDate = DateTime.UtcNow }); } } } } } } } } } } catch (Exception) { throw; } }
public void SuperTargeting(List <SuperTargetUser> targetUsers, SocialMediaVM acc) { try { foreach (var user in targetUsers) { var followers = ListFollowerOfTargetUser(long.Parse(user.SMId), acc.AccessDetails); if (followers != null) { foreach (var follower in followers) { var checkForBlockedUser = CheckForBlockedUser(targetUsers, follower); if (checkForBlockedUser != true) { var tweets = ListPostOnUserTimeline(follower.Id, acc.AccessDetails); if (tweets.Count() != 0) { foreach (var tweet in tweets) { //var checkNegative = CheckForNegativeTag(tags, tweet);&& checkNegative != true if (tweet.IsFavorited != true) { var likeStatus = LikeTweet(tweet.Id, acc.AccessDetails); if (likeStatus == true) { _userService.SaveActivity(new Activities { Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "@" + user.UserName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow }); } } } } }//check for negative if end } } } } catch (Exception) { throw; } }
public async void TagRegardingTask(List <Tags> tags, SocialMediaVM acc) { try { if (tags.Count() > 0) { foreach (var item in tags) { if (item.IsBlocked != true) { int count = 0; int limit = 0; int SearchTrackByTagTask = Int16.Parse(ConfigurationSettings.AppSettings["spotifySearchTrackByTagTask"].ToString()); while (limit < SearchTrackByTagTask) { var tracksResult = SearchTrack(acc.Id, item.TagName, acc.AccessDetails, count); if (tracksResult.items.Count() > 0) { foreach (var track in tracksResult.items) { if (_trackSuggestionRepo.Get().Where(x => x.SocialId == acc.Id && x.TrackId == track.id).FirstOrDefault() == null) { var suggestedTrack = new SuggestedTracks { Provider = SocialMediaProviders.Spotify.ToString(), SocialId = acc.Id, TrackId = track.id, TrackName = track.name, uri = track.uri, SourceName = "#" + item.TagName, SourceType = "Tag" }; _trackSuggestionRepo.Add(suggestedTrack); _unitOfWork.Commit(); limit++; await Task.Delay(100000); } } } } } } } } catch (Exception) { throw; } }
public void CheckForConversion(SocialMediaVM acc) { try { var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList(); var followerList = GetCurrentUserFollower(acc.AccessDetails); foreach (var activity in accountActivity) { if (followerList.data.Where(x => x.id.ToString() == activity.SMId).FirstOrDefault() != null && _userService.CheckIfUserConvert(activity.SMId, activity.socialId) == false) { _userService.SaveConversion(new Conversions { SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = activity.Username, Tag = activity.Tag }); } } } catch (Exception) { throw; } }
public void CheckForConversion(SocialMediaVM acc) { try { var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList(); foreach (var item in accountActivity) { var Token = TokenValidate(acc.Id, acc.AccessDetails); if (CheckArtistFollowedByUser(acc.Id, item.SMId, Token, item.UserType) && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false) { _userService.SaveConversion(new Conversions { SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag }); } } } catch (Exception) { throw; } }
public async Task <bool> SpotifyAlgoForUser(SocialMediaVM acc) { try { List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <SuperTargetUser> artists = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); List <TargetPlaylist> playlist = _targetPlaylistRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList(); if (acc.IsSubscribed == true) { var planDetails = _userService.GetASubscriptionPlan(acc.planId); if (planDetails.AllowSuperTargeting == true) { await TargetArtistRelatedArtistTask(artists, acc);//if supertargetting is allowed in plan. TargetPlaylistTask(playlist, acc); } if (planDetails.AllowNegativeTags == false) { tags.RemoveAll(x => x.IsBlocked == true); //disabling negative keywords checking by removing blocked tags from list. } TagRegardingTask(tags, acc); } else if (acc.IsTrail == true) { await TargetArtistRelatedArtistTask(artists, acc);//if supertargetting is allowed in plan. TargetPlaylistTask(playlist, acc); TagRegardingTask(tags, acc); } FollowingPlaylistTask(acc); UpdateProfile(acc.AccessDetails, acc.Id); _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails, acc.Id).followers.total); return(true); } catch (Exception) { return(false); } }
public void CheckForConversion(SocialMediaVM acc) { try { var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList(); var followers = GetUserFollower(long.Parse(acc.SMId), acc.AccessDetails); foreach (var item in accountActivity) { foreach (var follower in followers) { if (follower.username == item.Username && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false) { _userService.SaveConversion(new Conversions { SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag }); } } } } catch (Exception) { throw; } }
public async void FollowingBoardPinTask(SocialMediaVM acc, List <Tags> tags) { try { var followingBoards = GetUsersFollowingBoard(acc.AccessDetails); var boardMapping = _boardMapRepo.Get().Where(x => x.SocialId == acc.Id).ToList(); var usersFollowers = GetUserFollowers(acc.AccessDetails); var myBoards = GetAllBoard(acc.AccessDetails); if (followingBoards.Count() > 0) { int count = 0; int pinterestPinPerFollowingBoard = Int16.Parse(ConfigurationSettings.AppSettings["pinterestPinPerFollowingBoard"].ToString()); int limitForPinningFollowPerAccount = Int16.Parse(ConfigurationSettings.AppSettings["pinterestPinPerFollowingBoard"].ToString()); bool BreakLoop = false; foreach (var board in followingBoards) { if (BreakLoop) { break; } var allPins = GetBoardsPin(board.id, acc.AccessDetails); //API var pinsCreated = _activityRepo.Get().Where(x => x.socialId == acc.Id && x.Activity == Activity.PinIt.ToString()).ToList(); //Table //Get Missing Pins var pins = allPins.Where(p => !pinsCreated.Any(f => f.OriginalPostId == p.id)) .Select(m => new { m.id, m.image, m.creator, m.link, m.note }).ToList(); if (pins.Count() > 0) { foreach (var pin in pins.Take(pinterestPinPerFollowingBoard)) { //Follow creator user of a pin in following board bool allow = true; foreach (var item in tags.ToList().Where(x => x.IsBlocked == true).ToList()) { if (pin.note.Contains(item.TagName) == true) { allow = false; } } if (allow == true) { var creatorUserName = GetUserInfo(pin.creator.id, acc.AccessDetails).data.username; if (usersFollowers.Where(x => x.id == pin.creator.id).FirstOrDefault() == null) { var result = FollowUser(pin.creator.id, acc.AccessDetails); if (result == true) { _userService.SaveActivity(new Activities { SMId = pin.creator.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + board.name, Username = creatorUserName }); count++; await Task.Delay(100000); } } //creating pin from following boards if (_activityRepo.Get().Where(x => x.socialId == acc.Id && x.OriginalPostId == pin.id).FirstOrDefault() == null) { string boardIdToPin = string.Empty; var check = boardMapping.Where(x => x.FollowingBoardId == board.id).FirstOrDefault(); if (check == null) { Random r = new Random(); boardIdToPin = myBoards[r.Next(myBoards.Count())].id; } else { boardIdToPin = check.MyBoardId; } PinterestScheduledPin pinInfo = new PinterestScheduledPin() { board = boardIdToPin, note = pin.note, image_url = pin.image.original.url }; if (CreatePin(pinInfo, acc.AccessDetails)) { var newPinDetail = GetUserRecentPin(acc.AccessDetails); _userService.SaveActivity(new Activities { SMId = pin.creator.id, socialId = acc.Id, Activity = Activity.PinIt.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + board.name, OriginalPostId = pin.id, PostId = newPinDetail.id, Username = creatorUserName }); count++; await Task.Delay(100000); } } } if (count > limitForPinningFollowPerAccount) { BreakLoop = true; } } } } } } catch (Exception) { throw; } }
public async void FollowingPlaylistTask(SocialMediaVM acc) { try { var playlists = GetUserPlaylists(acc.Id, acc.SMId, acc.AccessDetails); if (playlists.items.Count() > 0) { foreach (var playlist in playlists.items) { if (playlist.owner.id != acc.SMId) { int limit = 0; int count = 0; int spotifyFollowingPlaylistTask = Int16.Parse(ConfigurationSettings.AppSettings["spotifyFollowingPlaylistTask"].ToString()); while (count < spotifyFollowingPlaylistTask) { var tracks = GetPlaylistTracks(playlist.id, playlist.owner.id, acc.Id, acc.AccessDetails, limit); foreach (var item in tracks.items) { if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false) { if (Follow(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type)) { _userService.SaveActivity(new Activities { SMId = item.added_by.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.name, Username = item.added_by.id, UserType = item.added_by.type }); count++; await Task.Delay(100000); } } if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false) { if (Follow(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type)) { _userService.SaveActivity(new Activities { SMId = item.track.artists[0].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.name, Username = item.added_by.id, UserType = item.track.artists[0].type }); count++; await Task.Delay(100000); } } if (_trackSuggestionRepo.Get().Where(x => x.SocialId == acc.Id && x.TrackId == item.track.id).FirstOrDefault() == null) { var suggestedTrack = new SuggestedTracks { Provider = SocialMediaProviders.Spotify.ToString(), SocialId = acc.Id, TrackId = item.track.id, TrackName = item.track.name, uri = item.track.uri, SourceName = "@" + playlist.name, SourceType = "Playlist" }; _trackSuggestionRepo.Add(suggestedTrack); _unitOfWork.Commit(); count++; } } limit++; }//tracks for loop } } } } catch (Exception) { throw; } }
/// <summary> /// supertargeting task /// </summary> /// <param name="targetUsers"></param> /// <param name="tags"></param> /// <param name="acc"></param> /// <returns></returns> public async Task <bool> SuperTargeting(List <SuperTargetUser> targetUsers, List <Tags> tags, SocialMediaVM acc) { try { if (targetUsers != null) { foreach (var user in targetUsers) { var followers = ListFollowerOfTargetUser(long.Parse(user.SMId), acc.AccessDetails); //getting the list of followers of target users if (followers != null) { int count = 0; while (count < Int16.Parse(ConfigurationSettings.AppSettings["twitterTargetUserLikeADay"].ToString())) //limit for activity per target user starts here { Random r = new Random(); var key = r.Next(followers.Count()); //Randomly generating index for picking target user followers var checkForBlockedUser = CheckForBlockedUser(targetUsers, followers[key]); if (checkForBlockedUser != true) { var tweets = await ListPostOnUserTimeline(followers[key].Id, acc.AccessDetails); //list post from user's timeline if (tweets.Value.Count() != 0) { foreach (var tweet in tweets.Value) { var checkNegative = CheckForNegativeTag(tags, tweet); if (tweet.IsFavorited != true && checkNegative != true) { var likeStatus = LikeTweet(tweet.Id, acc.AccessDetails); //like tweet if (likeStatus == true) { _userService.SaveActivity(new Activities { Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "@" + user.UserName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow }); await Task.Delay(100000); count++; } } } } }//check for negative if end } } } } return(true); } catch (Exception) { return(false); } }
public async Task <bool> TargetArtistRelatedArtistTask(List <SuperTargetUser> artists, SocialMediaVM acc) { try { if (artists.Count() > 0) { foreach (var artist in artists) { var relatedArtists = GetArtistRelatedArtist(acc.Id, artist.SMId, acc.AccessDetails); if (relatedArtists.Count() != 0) { //foreach (var item in relatedArtists) //{ int count = 0; while (count < Int16.Parse(ConfigurationSettings.AppSettings["spotifyRelatedArtistFollow"].ToString())) { Random r = new Random(); var key = r.Next(relatedArtists.Count()); if (CheckArtistFollowedByUser(acc.Id, relatedArtists[key].id, acc.AccessDetails, relatedArtists[key].type) == false) { if (Follow(acc.Id, relatedArtists[key].id, acc.AccessDetails, relatedArtists[key].type) == true) { _userService.SaveActivity(new Activities { SMId = relatedArtists[key].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '#' + artist.UserName, Username = relatedArtists[key].name, UserType = relatedArtists[key].type }); count++; await Task.Delay(100000); } } } // } } } } return(true); } catch (Exception) { return(false); } }