Пример #1
0
        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");
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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());
        }
Пример #4
0
        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;
                }
            }
        }
Пример #6
0
        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
Пример #7
0
        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("&#65039;", 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");
            }
        }
Пример #8
0
        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);
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
        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();
                    }
                }
            }
        }
Пример #12
0
        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();
        }
Пример #13
0
        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));
                    }
                }
            }
        }
Пример #14
0
        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);
                }
            }
        }
Пример #15
0
        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();
        }
Пример #16
0
        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();
        }