public async void TotalDePublicacoes(string username, IInstaApi api) { IResult <InstaUser> userSearch = await api.GetUserAsync(username); Console.WriteLine($"USER:{userSearch.Value.FullName}\n\tFollowers: {userSearch.Value.FollowersCount}\n\t {userSearch.Value.IsVerified}"); IResult <InstaMediaList> media = await api.GetUserMediaAsync(username, PaginationParameters.MaxPagesToLoad(5)); List <InstaMedia> mediaList = mediaList = media.Value.ToList(); for (int i = 0; i < mediaList.Count; i++) { InstaMedia m = mediaList[i]; if (m != null && m.Caption != null) { string captionText = m.Caption.Text; if (captionText != null) { if (m.MediaType == InstaMediaType.Image) { for (int X = 0; X < m.Images.Count; X++) { if (m.Images[X] != null && m.Images[X].URI != null) { Console.WriteLine($"\n\t{captionText}"); string uri = m.Images[X].URI; Console.Write($"{uri}\n\t"); } } } } } } }
public static async void Like(string userExp, string userName, string password) { user = new UserSessionData(); user.UserName = userName; user.Password = password; api = InstaApiBuilder.CreateBuilder() .SetUser(user) .UseLogger(new DebugLogger(LogLevel.Exceptions)) //.SetRequestDelay(TimeSpan.FromSeconds(1)) .Build(); var loginRequest = await api.LoginAsync(); IResult <InstaUser> userSearch = await api.GetUserAsync(userExp); IResult <InstaMediaList> media = await api.GetUserMediaAsync(userExp, PaginationParameters.MaxPagesToLoad(5)); var mediaList = media.Value; int count_mediaList = mediaList.ToArray().Length; for (int i = 0; i < count_mediaList; i++) { var res = await api.LikeMediaAsync(mediaList[i].InstaIdentifier); string result = res.Succeeded.ToString(); } }
public async Task <IReadOnlyCollection <SocialMediaImage> > FetchInstagramImages(Guid chapterId) { ChapterLinks links = await _chapterRepository.GetChapterLinks(chapterId); if (links == null) { throw new OdkNotFoundException(); } if (string.IsNullOrEmpty(links.InstagramName)) { return(new SocialMediaImage[0]); } IInstaApi api = await OpenApi(); PaginationParameters paginationParameters = PaginationParameters.MaxPagesToLoad(1); IResult <InstaMediaList> media = await api.GetUserMediaAsync(links.InstagramName, paginationParameters); return(media.Value .OrderByDescending(x => x.DeviceTimeStamp) .Where(x => x.Images.Count > 0) .Select(x => new SocialMediaImage { Caption = x.Caption.Text, ImageUrl = x.Images.OrderBy(img => img.Width).First().URI, Url = $"https://www.instagram.com/p/{x.Code}" }) .ToArray()); }
public static async Task <List <MaisCurtidas> > MaisCurtidasNasFotos(string username) { List <MaisCurtidas> MaisCurtidas = new List <MaisCurtidas>(); List <MaisCurtidas> MaisCurtidasAuxiliar = new List <MaisCurtidas>(); var publicacoes = await api.GetUserMediaAsync(username, PaginationParameters.MaxPagesToLoad(8)); foreach (var publicacao in publicacoes.Value.ToList()) { var chaveprimaria = publicacao.Pk; var foto = await api.GetMediaLikersAsync(chaveprimaria); foreach (var curtida in foto.Value.ToList()) { if (MaisCurtidas?.Any() != false) { //var teucu = MaisCurtidas.Where(q => q.nome == curtida.FullName); armazena a variavel no teucu if (MaisCurtidas.Any(q => q.nome == curtida.UserName)) { MaisCurtidas.FindAll(q => q.nome == curtida.UserName).ForEach(q => q.curtidas = q.curtidas + 1); } else { MaisCurtidas c1 = new MaisCurtidas(); c1.curtidas++; c1.nome = curtida.UserName; MaisCurtidasAuxiliar.Add(c1); } } else { MaisCurtidas c = new MaisCurtidas(); c.nome = curtida.UserName; c.curtidas = 1; MaisCurtidas.Add(c); } } foreach (var item in MaisCurtidasAuxiliar) { MaisCurtidas.Add(item); } MaisCurtidasAuxiliar.Clear(); } List <MaisCurtidas> maisCurtidasOrdenado = MaisCurtidas.OrderByDescending(q => q.curtidas).ToList(); foreach (var item in maisCurtidasOrdenado) { //Console.WriteLine("{0} --- {1}", item.nome, item.curtidas); } return(maisCurtidasOrdenado); }
private async void UserControl_Loaded(object sender, RoutedEventArgs e) { var user = await Api.GetUserInfoByIdAsync(this.PK); if (user.Succeeded) { profileImage.Fill = new ImageBrush(new BitmapImage(new Uri(user.Value.ProfilePicUrl))); lblDisplayName.Content = user.Value.FullName; lblUserName.Content = user.Value.Username; lblPostCount.Content = user.Value.MediaCount; lblFollowingCount.Content = user.Value.FollowingCount; lblFollowersCount.Content = user.Value.FollowerCount; textBiography.Text = user.Value.Biography; var posts = await Api.GetUserMediaAsync(user.Value.Username, PaginationParameters.MaxPagesToLoad(1)); if (posts.Succeeded) { posts.Value.ForEach(p => pnlPosts.Children.Add(new PostView(p, Api))); progressBar.Visibility = Visibility.Hidden; } } }
private static async void Bot_OnMessage(object sender, MessageEventArgs e) { Console.WriteLine("Bot proccessing datas...\n*"); System.Threading.Thread.Sleep(5000); //login side var logged = await api.LoginAsync(); var loginRequest = await api.LoginAsync(); if (logged.Succeeded) { IResult <InstaUser> userSearch = await api.GetUserAsync(user.UserName); //Console.WriteLine(string.Format("User: {0} \n\t Followers: {1} \n\t \n\t Verifeid: {2}", userSearch.Value.FullName, userSearch.Value.FollowersCount, userSearch.Value.IsVerified)); IResult <InstaMediaList> media = await api.GetUserMediaAsync(user.UserName, PaginationParameters.MaxPagesToLoad(6)); List <InstaMedia> mediaList = media.Value.ToList(); //get posts from instagram and send to telegram bot side for (int i = 0; i < mediaList.Count; i++) { InstaMedia m = mediaList[i]; if (m != null && m.Caption != null) { string captionText = m.Caption.Text; if (captionText != null) { if (m.MediaType == InstaMediaType.Image && m.Images[i].URI != null && m.Images[i].URI != null) { //getting img url string uri = m.Images[i].URI; string info = mediaList[i].InstaIdentifier; int hashDecode = mediaList[i].GetHashCode(); //System.Console.WriteLine(Convert.ToString(i + 1) + ".nci POST IMG ->" + info + " " + uri + "\n" + "\n\t hashcode: " + hashDecode); //System.Console.WriteLine(Convert.ToString(i + 1) + ".nci POST MASSEGE -> " + captionText + "\n"); System.Threading.Thread.Sleep(3000); //Telegram bot if (e.Message.Text != null && e.Message.Text.ToLower() == "getir") { Console.WriteLine($"Last message -> {e.Message.Chat.Id}."); //Send Message Message message = await botClient.SendTextMessageAsync( chatId : e.Message.Chat, text : captionText, parseMode : ParseMode.Markdown, disableNotification : true, //replyToMessageId: e.Message.MessageId, replyMarkup : new InlineKeyboardMarkup(InlineKeyboardButton.WithUrl( "", "https://core.telegram.org/bots/api#sendmessage" )) ); //Send Image Message photo = await botClient.SendPhotoAsync( chatId : e.Message.Chat, photo : uri, parseMode : ParseMode.Html ); } } } } } } }//Instagram get data
private async Task ParseAccountAsync(string username, int maxMedia) { var currentUserMedia = await ApiInst.GetUserMediaAsync(username, PaginationParameters.MaxPagesToLoad(MaxPages)); if (currentUserMedia.Succeeded) { int num = 0; do { num += 1; } while (Directory.Exists(username + num)); string htmlAll = "<html><head><meta charset=\"UTF-8\"><style>"; htmlAll += Environment.NewLine + File.ReadAllText(BothStyle); htmlAll += Environment.NewLine + File.ReadAllText(TextStyle); htmlAll += Environment.NewLine + File.ReadAllText(VerticalStyle); htmlAll += Environment.NewLine + File.ReadAllText(SquareStyle); htmlAll += Environment.NewLine + File.ReadAllText(HorisontalStyle); htmlAll += "</style></head><body> " + Environment.NewLine; var curDir = Directory.CreateDirectory(username + num); var imgDir = Directory.CreateDirectory(curDir.FullName + "/images/"); var htmlDir = Directory.CreateDirectory(curDir.FullName + "/html/"); int mediaNum = 0; foreach (var media in currentUserMedia.Value) { if (mediaNum == maxMedia) { break; } if (mediaNum == 0) { using (WebClient client = new WebClient()) { client.DownloadFile(media?.User?.ProfilePicture, imgDir.FullName + "profile.jpg"); } } String html = ""; var img = media.Images.Count > 0 ? media.Images[0] : media.Carousel[0].Images[0]; if (img != null) { if (img.Height > img.Width) { html += File.ReadAllText(VerticalHtml); } else if (img.Height == img.Width && media.Caption?.Text.Length > int.Parse(SquareTemplText.Text)) { html += File.ReadAllText(SquareHtml); } else { html += File.ReadAllText(HorisontalHtml); } } using (WebClient client = new WebClient()) { client.DownloadFile(img?.URI, imgDir.FullName + mediaNum + ".jpg"); } html = html?.Replace("REPLACENAME", media.User.UserName); html = html?.Replace("REPLACEACCOUNTNAME", media.User.UserName + num); html = html?.Replace("REPLACEGEO", media.Location?.ShortName ?? string.Empty); html = html?.Replace("REPLACEPOSTIMG", imgDir.FullName + mediaNum + ".jpg"); html = html?.Replace("REPLACELIKE", media.LikesCount.ToString()); html = html?.Replace("REPLACEDATE", $"{media.TakenAt.Day} " + $"{Month[media.TakenAt.Month - 1]} " + $"{media.TakenAt.Year} года"); string caption = Regex.Replace( RemoveSpecialChars( EmojiOne.EmojiOne.ToImage( media.Caption?.Text.Replace("⠀", String.Empty) ?? string.Empty)) .Replace("//", "https://").Replace("️", string.Empty), "[U].([0-9]*)", string.Empty); if (media.Caption?.Text.Length < int.Parse(NextPageText.Text)) { html = html?.Replace("REPLACECAPTION", caption); } else if (string.IsNullOrEmpty(media.Caption?.Text)) { html = html?.Replace("REPLACECAPTION", string.Empty); } else { html = html?.Replace("REPLACECAPTION", string.Empty); html += File.ReadAllText(TextHtml); html = html?.Replace("REPLACECAPTION", caption); } File.WriteAllText(htmlDir.FullName + username + mediaNum + ".html", html); htmlAll += Environment.NewLine + html; mediaNum += 1; } htmlAll += Environment.NewLine + "</body></html>"; File.WriteAllText($"{username}.html", htmlAll); } else { Console.WriteLine("error"); } }
async void MassLike() { Stat = true; userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Масслайкинг запущен")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Загружаю базу.")); try { foreach (string str in File.ReadAllLines(setting.FileNameBase)) { try { usersID.Add(Convert.ToInt64(str)); usersIDcopy.Add(Convert.ToInt64(str)); } catch { continue; } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}")); } EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Лайкинг:{CountLikes}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); foreach (long id in usersID) { try { if (_source == null || _source.IsCancellationRequested) { break; } if (setting.ChekedSkipSubscriber) { var x = await api.GetCurrentUserFollowersAsync(PaginationParameters.MaxPagesToLoad(10)); var o = new InstaUserShort(); o.Pk = id; if (x.Value.IndexOf(o) != -1) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Подписчик с id: {id} пропущен")); usersIDcopy.Remove(id); Thread.Sleep(500); continue; } } int pages = (int)setting.LikeAtUserMax; var userInfo = await api.GetUserInfoByIdAsync(id); Thread.Sleep(100); var media = await api.GetUserMediaAsync( userInfo.Value.Username, PaginationParameters.MaxPagesToLoad(pages % 18 == 0 ? pages : pages + 1)); //Учет загруки страаниц var mediaList = media.Value.ToList(); int random = rnd.Next((int)setting.LikeAtUserMin - 1, (int)setting.LikeAtUserMax); for (int i = 0; i < random; i++) //Учет кол-во лайков на пользователя { if (mediaList.Count > i && setting.LikeUnderPublicMin <= mediaList[i].LikesCount && mediaList[i].LikesCount <= setting.LikeUnderPublicMax) //Учет настройки лайков под публикацией { if (_source == null || _source.IsCancellationRequested) { break; } await api.LikeMediaAsync(mediaList[i].Pk); CountLikes++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Поставил лайк пользователю {userInfo.Value.Username}. Кол-во лайков: {CountLikes}")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Лайкинг:{CountLikes}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (setting.ChekedDeleteInBaseAfterLike) { usersIDcopy.Remove(id); } Delay(); if (setting.ChekedPause) { if (CountPause >= setting.PauseLimit) { CountPause = 0; EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Лайкинг:{CountLikes}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Пауза на " + setting.PauseTime + " минут ")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * (int)setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } } else { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Недостаточно лайков под постом пользователя {userInfo.Value.Username}. Пропуск")); if (setting.ChekedDeleteInBaseAfterLike) { usersIDcopy.Remove(id); } Thread.Sleep(1000); } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА : {e.Message}")); continue; } } EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Лайкинг:{CountLikes}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Stat = false; Save(); }
private async Task DownloadUserMediaAsync(string input, InputUserType userType, int downloadLimit) { var downloadCount = 0; var downloadFolder = _mediaFilter.CustomFolder ? $@"{_downloadFolder}\{input}" : _downloadFolder; var statsFile = $@"{_statsDirectory}\{input}.csv"; if (!File.Exists(statsFile)) { using (var csv = new Csv(statsFile, _delimiter)) { csv.WriteHeader(); } } IResult <InstaUserInfo> userNameFromId = null; if (userType == InputUserType.Id) { userNameFromId = await _instaApi.GetUserInfoByIdAsync(long.Parse(input)); if (!userNameFromId.Succeeded) { return; } } var username = userNameFromId == null ? input : userNameFromId.Value.Username; var maxId = ""; do { var userInformation = await _instaApi.GetUserMediaAsync(username, PaginationParameters.MaxPagesToLoad(1).StartFromId(maxId)); if (!userInformation.Succeeded) { return; } maxId = userInformation.Value.NextId; foreach (var m in userInformation.Value) { _cancellationToken.ThrowIfCancellationRequested(); if (_mediaFilter.CheckFilters(m)) { continue; } if (CheckTotalDownloads() && CheckDownloadLimit(downloadCount++, downloadLimit)) { await DownloadInstaMediaAsync(m, statsFile, downloadFolder); } else { return; } } } while (maxId != null); }
public async Task DoShow() { // get currently logged in user var currentUser = await _instaApi.GetCurrentUserAsync(); Console.WriteLine( $"Logged in: username - {currentUser.Value.UserName}, full name - {currentUser.Value.FullName}"); // get self followers var followers = await _instaApi.GetUserFollowersAsync(currentUser.Value.UserName, 5); Console.WriteLine($"Count of followers [{currentUser.Value.UserName}]:{followers.Value.Count}"); // get self folling var following = await _instaApi.GetUserFollowingAsync(currentUser.Value.UserName, 5); Console.WriteLine($"Count of following [{currentUser.Value.UserName}]:{following.Value.Count}"); // get self user's media, latest 5 pages var currentUserMedia = await _instaApi.GetUserMediaAsync(currentUser.Value.UserName, 5); if (currentUserMedia.Succeeded) { Console.WriteLine($"Media count [{currentUser.Value.UserName}]: {currentUserMedia.Value.Count}"); foreach (var media in currentUserMedia.Value) { ConsoleUtils.PrintMedia("Self media", media, _maxDescriptionLength); } } //get user time line feed, latest 5 pages var userFeed = await _instaApi.GetUserTimelineFeedAsync(5); if (userFeed.Succeeded) { Console.WriteLine( $"Feed items (in {userFeed.Value.MediaItemsCount} pages) [{currentUser.Value.UserName}]: {userFeed.Value.Medias.Count}"); foreach (var media in userFeed.Value.Medias) { ConsoleUtils.PrintMedia("Feed media", media, _maxDescriptionLength); } //like first 10 medias from user timeline feed foreach (var media in userFeed.Value.Medias.Take(10)) { var likeResult = await _instaApi.LikeMediaAsync(media.InstaIdentifier); var resultString = likeResult.Value ? "liked" : "not liked"; Console.WriteLine($"Media {media.Code} {resultString}"); } } // get tag feed, latest 5 pages var tagFeed = await _instaApi.GetTagFeedAsync("quadcopter", 5); if (tagFeed.Succeeded) { Console.WriteLine( $"Tag feed items (in {tagFeed.Value.MediaItemsCount} pages) [{currentUser.Value.UserName}]: {tagFeed.Value.Medias.Count}"); foreach (var media in tagFeed.Value.Medias) { ConsoleUtils.PrintMedia("Tag feed", media, _maxDescriptionLength); } } }
private async Task ExecuteQueuePostPhotosAsync(Queue queue, InstaBotContext db) { var allGroups = queue.LoadId.Split(' '); foreach (var group in allGroups) { var photosForPost = await _api.GetUserMediaAsync(group, PaginationParameters.MaxPagesToLoad(0)); if (photosForPost.Value != null) { var firstPhotoForPost = photosForPost.Value.FirstOrDefault(); if (firstPhotoForPost.MediaType == InstaMediaType.Video) { continue; } PhotoPost photoPost = new PhotoPost { Caption = firstPhotoForPost.Caption?.Text }; if (firstPhotoForPost.Images.Any()) { photoPost.PhotoURI = firstPhotoForPost.Images.FirstOrDefault().URI; } else { photoPost.PhotoURI = firstPhotoForPost.Carousel.FirstOrDefault().Images.FirstOrDefault().URI; } var isPhotoPosted = await PostPhotoAsync(queue, db, photoPost); if (isPhotoPosted) { break; } else { if (allGroups.LastOrDefault() == group) { queue.LastActivity = DateTime.UtcNow; db.UserActivityHistories.Add(new UserActivityHistory { Queue = queue, CreatedOn = DateTime.UtcNow }); await db.SaveChangesAsync(); } } } else { if (allGroups.LastOrDefault() == group) { queue.LastActivity = DateTime.UtcNow; db.UserActivityHistories.Add(new UserActivityHistory { Queue = queue, CreatedOn = DateTime.UtcNow }); await db.SaveChangesAsync(); } } } }
async System.Threading.Tasks.Task StartSubscribe() { Stat = true; userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Массфоловинг запущен.")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Загружаю базу.")); try { string[] stringID = System.IO.File.ReadAllLines(setting.FileNameBaseId); foreach (string str in stringID) { try { usersID.Add(Convert.ToInt64(str)); usersIDcopy.Add(Convert.ToInt64(str)); } catch { continue; } } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] База загружена.")); } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}")); } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Начинаю подписку.")); foreach (long id in usersID) { try { userInfoLog = await api.GetCurrentUserAsync(); var userInfo = await api.GetUserInfoByIdAsync(id); if (_source == null || _source.IsCancellationRequested) { break; } if (setting.ChekedSkipSubscriber) //Пропуск подписчиков { var x = await api.GetCurrentUserFollowersAsync(PaginationParameters.MaxPagesToLoad(100)); var o = new InstaUserShort(); o.Pk = id; if (x.Value.IndexOf(o) != -1) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Подписчик с ником: {userInfo.Value.Username} пропущен")); if (setting.ChekedDeleteAdfter) { usersIDcopy.Remove(id); } Delay(); continue; } } if (!setting.ChekedSendPrivateUser) //Учет приватных пользователей { if (userInfo.Value.IsPrivate) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Приватный аккаунт {userInfo.Value.Username} пропущен")); Delay(); continue; } } await api.FollowUserAsync(id); //Подписка CountSubscribe++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] " + $"Подписался на пользователя с ником {userInfo.Value.Username}. " + $"Количество подписок: {CountSubscribe}")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); Delay(); ew.WaitOne(); if (setting.ChekedLikingBySubscribe) //Учет лайков при подписке { int pages = setting.LikingMax; var media = await api.GetUserMediaAsync( userInfo.Value.Username, PaginationParameters.MaxPagesToLoad(pages % 18 == 0 ? pages : pages + 1)); //Учет загруки страниц var mediaList = media.Value.ToList(); int random = rnd.Next(setting.LikingMin, setting.LikingMax + 1); for (int i = 0; i < random; i++) { if (_source == null || _source.IsCancellationRequested) { break; } await api.LikeMediaAsync(mediaList[i].Pk); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Поставил лайк пользователю с ником {userInfo.Value.Username}")); int randomLikeDelay = rnd.Next(setting.DelayLikeMin, setting.DelayLikeMax + 1); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Задержка на {randomLikeDelay} сек")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 1000 * randomLikeDelay, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } if (setting.ChekedDeleteAdfter) { usersIDcopy.Remove(id); } if (setting.ChekedPause) //Учет паузы { if (CountPause >= setting.PauseLimit) { CountPause = 0; EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Пауза на " + setting.PauseTime + " минут ")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 60000 * setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } if (CountSubscribe >= setting.LimitSubscribe) //Учет лимита подписок { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Превышен лимит подписок")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); return; } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] ОШИБКА: {e.Message}")); } } EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Задача завершена")); EventUpdateGrid(this, new UpdateGridEvent( $"{userInfoLog.Value.UserName}:Подписка:{CountSubscribe}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Stat = false; Save(); }
private static async void RunCommentTaskAsync(TaskModel t, IInstaApi api) { List <InstaMedia> medias = new List <InstaMedia>(); foreach (var search in t.Searches) { if (search.InUsers) { var _tempList = new List <InstaUserShort>(); foreach (var inString in search.GetInStrings()) { var _temp = await api.SearchUsersAsync(inString); if (_temp.Succeeded) { _tempList.AddRange(_temp.Value); } } _tempList = await Helper.GetFilteredUsersAsync(_tempList, t.Searches, api, 10); foreach (var user in _tempList) { var _userMedia = await api.GetUserMediaAsync(user.UserName, PaginationParameters.MaxPagesToLoad(5)); if (_userMedia.Succeeded) { medias.AddRange(_userMedia.Value); } } } if (search.InPosts) { var _temp = await api.GetUserTimelineFeedAsync(PaginationParameters.MaxPagesToLoad(5)); if (_temp.Succeeded) { medias.AddRange(_temp.Value.Medias.ToList()); } } var filteredMedia = await Helper.GetFilteredMediaAsync(medias, t.Searches, api, 5); foreach (var media in filteredMedia) { var result = await api.CommentMediaAsync(media.InstaIdentifier, await Helper.ConstructCaptionTextAsync(t.GetValues().Text, t.Searches, api)); if (result.Succeeded) { t.TaskExecuted(); Helper.Log($"Task Executed: {t.Name} - {t.TaskType.ToString()} {Environment.NewLine} {JsonConvert.SerializeObject(result.Value)}"); } else { Helper.Log(JsonConvert.SerializeObject(result.Info)); } } } }
public async Task DoShow() { // get currently logged in user var currentUser = await _instaApi.GetCurrentUserAsync(); Console.WriteLine( $"Logged in: username - {currentUser.Value.UserName}, full name - {currentUser.Value.FullName}"); // get followers of user 'elonmusk' var followers = await _instaApi.GetUserFollowersAsync("elonmusk", PaginationParameters.MaxPagesToLoad(5) .StartFromId("AQAC8w90POWyM7zMjHWmO9vsZNL_TuLp6FR506_C_y3fUAjlCclrIDI2RdSGvur5UjLrq4Cq7NJN8QUhHG-vpbT6pCLB5X9crDxBOHUEuNJ4fA")); Console.WriteLine($"Count of followers [elonmusk]:{followers.Value.Count}"); Console.WriteLine($"Next id will be: '{followers.Value.NextId}'"); // get self folling var following = await _instaApi.GetUserFollowingAsync(currentUser.Value.UserName, PaginationParameters.MaxPagesToLoad(5)); Console.WriteLine($"Count of following [{currentUser.Value.UserName}]:{following.Value.Count}"); // get self user's media, latest 5 pages var currentUserMedia = await _instaApi.GetUserMediaAsync(currentUser.Value.UserName, PaginationParameters.MaxPagesToLoad(5)); if (currentUserMedia.Succeeded) { Console.WriteLine($"Media count [{currentUser.Value.UserName}]: {currentUserMedia.Value.Count}"); foreach (var media in currentUserMedia.Value) { ConsoleUtils.PrintMedia("Self media", media, _maxDescriptionLength); } } //get user time line feed, latest 5 pages var userFeed = await _instaApi.GetUserTimelineFeedAsync(PaginationParameters.MaxPagesToLoad(5)); if (userFeed.Succeeded) { Console.WriteLine( $"Feed items (in {userFeed.Value.MediaItemsCount} pages) [{currentUser.Value.UserName}]: {userFeed.Value.Medias.Count}"); foreach (var media in userFeed.Value.Medias) { ConsoleUtils.PrintMedia("Feed media", media, _maxDescriptionLength); } //like first 10 medias from user timeline feed foreach (var media in userFeed.Value.Medias.Take(10)) { var likeResult = await _instaApi.LikeMediaAsync(media.InstaIdentifier); var resultString = likeResult.Value ? "liked" : "not liked"; Console.WriteLine($"Media {media.Code} {resultString}"); } } // get tag feed, latest 5 pages var tagFeed = await _instaApi.GetTagFeedAsync("quadcopter", PaginationParameters.MaxPagesToLoad(5)); if (tagFeed.Succeeded) { Console.WriteLine( $"Tag feed items (in {tagFeed.Value.MediaItemsCount} pages) [{currentUser.Value.UserName}]: {tagFeed.Value.Medias.Count}"); foreach (var media in tagFeed.Value.Medias) { ConsoleUtils.PrintMedia("Tag feed", media, _maxDescriptionLength); } } }
async void Sbor() { string[] baseId = null; try { baseId = File.ReadAllLines(setting.Filter_FileNameId); } catch { info.Status = "Ошибка чтения файла базой"; } info.File = setting.Filter_SaveFileName; int progress = 0; if (baseId != null) { info.Progress = $"{progress}/{baseId.Length}"; } EventUpdateGrid(this, new UpdateGridAudience(info)); foreach (string id in baseId) { try { if (_source == null || _source.IsCancellationRequested) { break; } var user = await api.GetUserInfoByUsernameAsync(id); ew.WaitOne(); if (user.Succeeded && user != null) { if (setting.Filter_CheckedFollowers) { if (setting.Filter_Followers_Min > user.Value.FollowerCount || setting.Filter_Followers_Max < user.Value.FollowerCount) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } } if (setting.Filter_CheckedSubscriptions) { if (setting.Filter_Subscriptions_Min > user.Value.FollowingCount || setting.Filter_Subscriptions_Max < user.Value.FollowingCount) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } } if (setting.Filter_CheckedPublish) { if (setting.Filter_Publish_Min > user.Value.MediaCount || setting.Filter_Publish_Max < user.Value.MediaCount) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } } if (setting.Filter_CheckedOldDays) { var mediaList = await api.GetUserMediaAsync(user.Value.Username, PaginationParameters.MaxPagesToLoad(1)); if (mediaList.Succeeded && mediaList.Value[0] != null) { if ((DateTime.Now - mediaList.Value[0].Caption.CreatedAt).Days > setting.Filter_OldDays) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } } } if (setting.Filter_WhatAccPars == WhatAccPars.onlyPublic && user.Value.IsPrivate) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } if (setting.Filter_WhatAccPars == WhatAccPars.onlyPrivate && !user.Value.IsPrivate) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } if (setting.Filter_CheckedAvatar && user.Value.HasAnonymousProfilePicture) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); continue; } if (setting.Filter_CheckedBusines && user.Value.IsBusiness) { progress++; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); listAccBusines.Add(user.Value.Username); } listAcc.Add(user.Value.Username); info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Thread.Sleep(400); } else { Thread.Sleep(6000); } } catch { continue; } } info.Status = "Выполнено"; info.Progress = $"{progress}/{baseId.Length}"; EventUpdateGrid(this, new UpdateGridAudience(info)); Save(); }
async System.Threading.Tasks.Task MassComment() { Stat = true; userInfoLog = await api.GetCurrentUserAsync(); EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Комментирование запущено")); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now:HH:mm:ss}][{Info()}] Загружаю базу.")); try { string[] stringID = System.IO.File.ReadAllLines(setting.FileNameBaseId); foreach (string str in stringID) { try { usersID.Add(Convert.ToInt64(str)); usersIDcopy.Add(Convert.ToInt64(str)); } catch { continue; } } } catch (Exception e) { EventFromMyClass(null, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}")); } EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Комментинг:{CountComment}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); foreach (long id in usersID) { try { if (_source == null || _source.IsCancellationRequested) { break; } var infoUser = await api.GetUserInfoByIdAsync(id); int pages = setting.CountCommnetUnderPublish; Thread.Sleep(100); var media = await api.GetUserMediaAsync( infoUser.Value.Username, PaginationParameters.MaxPagesToLoad(pages % 18 == 0 ? pages : pages + 1)); //Учет загруки страниц var mediaList = media.Value.ToList(); for (int i = 0; i < setting.CountPublishComment; i++) { if (_source == null || _source.IsCancellationRequested) { break; } for (int y = 0; y < setting.CountCommnetUnderPublish; y++) { if (_source == null || _source.IsCancellationRequested) { break; } int random = rnd.Next(0, setting.Message.Length); await api.CommentMediaAsync(mediaList[0].Pk, setting.Message[random]); CountComment++; CountPause++; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Прокомментировал запись пользователя: {infoUser.Value.Username}. Количество комментариев: {CountComment}")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Комментинг:{CountComment}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Выполняется")); if (y != setting.CountCommnetUnderPublish - 1) { int randomDelayUser = rnd.Next(setting.DelayOneUserMin, setting.DelayOneUserMax + 1); EventFromMyClass(this, new MyEventMessage( $"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Задержка на пользователя {randomDelayUser} сек")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 1000 * randomDelayUser, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } //Учет задержки на пользователя } } if (setting.ChekedDeleteBase) { usersIDcopy.Remove(id); } Delay(); //Задержка в сек. if (setting.CommentCountMax <= CountComment) //Проверка лимита комментариев { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Превышено максимальное количество комментариев. Завершение задачи.")); Save(); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Комментинг:{CountComment}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); return; } if (setting.CheckedPause) //Учет паузы { if (setting.PauseLimit <= CountPause) { CountPause = 0; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Пауза на " + setting.PauseTime + " минут")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Комментинг:{CountComment}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Пауза")); if (timer != null) { timer.Dispose(); } timer = new Timer(CancelDelay, null, 1000 * setting.PauseTime, Timeout.Infinite); ew.Reset(); ew.WaitOne(); } } } catch (Exception e) { EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] ОШИБКА: {e.Message}")); continue; } } Stat = false; EventFromMyClass(this, new MyEventMessage($"[{userInfoLog.Value.UserName}][{DateTime.Now.ToString("HH:mm:ss")}][{Info()}] Выполнено")); EventUpdateGrid(this, new UpdateGridEvent($"{userInfoLog.Value.UserName}:Комментинг:{CountComment}/{usersID.Count}:{UpdateInfoUser(await api.GetUserInfoByIdAsync(userInfoLog.Value.Pk))}:" + $"Завершено")); Save(); }