예제 #1
0
        public void Execute(IJobExecutionContext context)
        {
            using (SuuEntities SuuContext = new SuuEntities())
            {
                var unCountedMessagesList   = SuuContext.Status.Where(s => s.is_count == 0).ToList();
                var exsitingMessageTextList = SuuContext.messageCounts.Select(g => g.message_text);
                foreach (var twitterMessage in unCountedMessagesList)
                {
                    foreach (var MesssageTextword in twitterMessage.text.Split(' '))
                    {
                        var word = MesssageTextword.Trim();
                        if (!string.IsNullOrEmpty(word) && !(word[0].ToString() == "@") && (word.Length > 3 && word.Substring(0, 4).ToString() != "http"))
                        {
                            if (!exsitingMessageTextList.Contains(word))
                            {
                                var messageCount = new FrontEnd.Models.messageCount()
                                {
                                    message_text = word,
                                    count        = 1
                                };
                                SuuContext.messageCounts.Add(messageCount);
                            }
                            else
                            {
                                var exsitingMessageCountText                = SuuContext.messageCounts.Where(d => d.message_text == word).FirstOrDefault();
                                var exsitingMessageCountTextOccurence       = exsitingMessageCountText.count;
                                var exsitingMessageCountTextLatestOccurence = exsitingMessageCountTextOccurence + 1;
                                exsitingMessageCountText.count = exsitingMessageCountTextLatestOccurence;
                            }
                        }

                        twitterMessage.is_count = 1;
                        SuuContext.SaveChanges();
                    }
                }
            }
        }
예제 #2
0
        public void Execute(IJobExecutionContext context)
        {
            using (SuuEntities SuuContext = new SuuEntities())
            {
                IEnumerable <User> userList = SuuContext.Users.ToList();

                foreach (var user in userList)
                {
                    if (user.is_ready == 0)
                    {
                        WebClient client = new WebClient();
                        client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
                        var    filePath      = AppDomain.CurrentDomain.BaseDirectory;
                        string SuuProPicPath = ConfigurationManager.AppSettings["filePath"];

                        var extension = Path.GetExtension(user.profile_image_url);
                        var imageName = $"{user.Id.ToString()}{extension}";
                        if (!Directory.Exists(SuuProPicPath))
                        {
                            Directory.CreateDirectory(SuuProPicPath);
                        }
                        try
                        {
                            client.DownloadFile(new Uri(user.profile_image_url), $"{SuuProPicPath}{ imageName}");
                            user.is_ready = 1;
                            //GetCoordinatesOfUserLocation(user);
                            var currentUserlocation = user.location.ToLower();
                            if (currentUserlocation.Any())
                            {
                                var existingLoactionList = SuuContext.UserLocationCounts.Select(g => g.user_location);

                                var            latt         = 0.00;
                                var            lont         = 0.00;
                                var            locationText = string.Empty;
                                HttpWebRequest request      = (HttpWebRequest)WebRequest.Create("http://open.mapquestapi.com/geocoding/v1/address?key=WBA9ECUGd5XzoEeYlTPMKOivfEEMfTyk&location=" + currentUserlocation);
                                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

                                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                                    using (Stream stream = response.GetResponseStream())
                                        using (StreamReader reader = new StreamReader(stream))
                                        {
                                            var x = reader.ReadToEnd();
                                            //var y =  serializer.DeserializeObject(reader.ReadToEnd());
                                            var GeoLocationResponseResponse = JsonConvert.DeserializeObject <GeocodingByAddressDto>(x);
                                            latt         = GeoLocationResponseResponse.results.FirstOrDefault().locations.FirstOrDefault().displayLatLng.lat;
                                            lont         = GeoLocationResponseResponse.results.FirstOrDefault().locations.FirstOrDefault().displayLatLng.lng;
                                            locationText = GeoLocationResponseResponse.results.FirstOrDefault().locations.FirstOrDefault().adminArea5;
                                        }

                                if (!string.IsNullOrEmpty(locationText))
                                {
                                    if (!existingLoactionList.Contains(locationText))
                                    {
                                        //var locationCount = new FrontEnd.Models.UserLocationCount()
                                        //{
                                        //	user_location = currentUserlocation,
                                        //	count = 1,
                                        //	lon = lont.ToString(),
                                        //	lat = latt.ToString()
                                        //};

                                        //try
                                        //{


                                        var locationCount = new FrontEnd.Models.UserLocationCount()
                                        {
                                            user_location = locationText,
                                            count         = 1,
                                            lon           = lont.ToString(),
                                            lat           = latt.ToString()
                                        };
                                        //}
                                        //catch (Exception ex)
                                        //{
                                        //	Console.WriteLine("Error while get coordinates" + ex.Message);
                                        //}


                                        SuuContext.UserLocationCounts.Add(locationCount);
                                    }
                                    else
                                    {
                                        {
                                            var exsitingLocationCountText                = SuuContext.UserLocationCounts.Where(d => d.user_location == locationText).FirstOrDefault();
                                            var exsitingLocationCountTextOccurence       = exsitingLocationCountText.count;
                                            var exsitingLocationCountTextLatestOccurence = exsitingLocationCountTextOccurence + 1;
                                            exsitingLocationCountText.count = exsitingLocationCountTextLatestOccurence;
                                        }
                                    }
                                }
                            }



                            SuuContext.SaveChanges();
                        }
                        catch (Exception e)
                        {
                        }
                    }



                    //var dbx = new DropboxClient("bwUjLwfs0zAAAAAAAAAAGmL_efee1PRAMvTqewDyfZeu4eV5iLa677oEzwheG49y");
                    //var t = Task.Run(() => Upload(dbx, "/Suu.TweeterFetcher", imageName, $"{filePath}{ imageName}"));
                    //t.Wait();

                    //var v = Task.Run(() => Upload(dbx, "/Suu.TweeterFetcher", imageName, $"{filePath}{ imageName}"));
                    //v.Wait();
                    ////////////////////////////
                    ////client.
                    ////var result =  dbx.Sharing.CreateSharedLinkWithSettingsAsync("/Suu.TweeterFetcher");
                    ////var url = result.Result.Url;
                    ////Console.WriteLine(url.ToString());

                    //var tempPath = dbx.Files.GetTemporaryLinkAsync($"/Suu.TweeterFetcher{filePath}{ imageName}");
                    //Console.WriteLine(tempPath);

                    //   var x = DownloadThumbnail(string path, ThumbnailFormat format, ThumbnailSize size);
                }
            }

            Console.WriteLine("finish user image and location process cycle .......");
        }
예제 #3
0
파일: MyJob.cs 프로젝트: kavindumanaram/Suu
        //private string maxIdStr = string.Empty;

        public void Execute(IJobExecutionContext context)
        {
            try
            {
                var    twit           = new OAuthTwitterWrapper.OAuthTwitterWrapper();
                Search SearchResponse = new Search()
                {
                    Results = new List <OAuthTwitterWrapper.JsonTypes.Status>()
                };

                using (SuuEntities SuuContext = new SuuEntities())
                {
                    var LastMaxId = SuuContext.OrganizationSettings.Where(s => s.SettingName == "Organization.LastMaxId").FirstOrDefault();
                    if (string.IsNullOrEmpty(LastMaxId.SettingValue))
                    {
                        var search = twit.GetSearch();

                        SearchResponse         = JsonConvert.DeserializeObject <Search>(search);
                        LastMaxId.SettingValue = SearchResponse.search_metadata.max_id_str;
                        SuuContext.SaveChanges();
                    }
                    else if (!string.IsNullOrEmpty(LastMaxId.SettingValue))
                    {
                        var nextSearch            = twit.GetSearch(LastMaxId.SettingValue);
                        var SearchResponse1       = JsonConvert.DeserializeObject <Search>(nextSearch);
                        var SearchResponse1Result = JsonConvert.DeserializeObject <Search>(nextSearch).Results;
                        LastMaxId.SettingValue = SearchResponse1.search_metadata.max_id_str;
                        SuuContext.SaveChanges();
                        SearchResponse.Results.AddRange(SearchResponse1Result);

                        // var xxxx = new SearchResponse.
                        //var xxx = SearchResponse.Results;
                    }


                    if (SearchResponse.Results.Any())
                    {
                        var FirstSyncDateTime = SuuContext.OrganizationSettings.Where(s => s.SettingName == "Organization.FirstSyncDateTime").FirstOrDefault();
                        if (string.IsNullOrEmpty(FirstSyncDateTime.SettingValue))
                        {
                            FirstSyncDateTime.SettingValue = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        }

                        var LastSyncDateTime = SuuContext.OrganizationSettings.Where(s => s.SettingName == "Organization.LastSyncDateTime").FirstOrDefault();
                        LastSyncDateTime.SettingValue = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
                        SuuContext.SaveChanges();

                        for (int a = 0; a < SearchResponse.Results.Count; a++)
                        {
                            var results = SearchResponse.Results;
                            if (results[a].Text.Trim().Substring(0, 2).ToString() != "RT")
                            {
                                //var userLocationLower = results[a].User.Location.ToLower();
                                //var userLocation = string.Empty;

                                var status = new FrontEnd.Models.Status()
                                {
                                    Id         = results[a].id,
                                    created_at = DateFormatter(results[a].CreatedAt),
                                    text       = results[a].Text,
                                    truncated  = results[a].truncated,
                                    //entities
                                    //metadata
                                    source = results[a].source,
                                    in_reply_to_status_id   = results[a].in_reply_to_status_id,
                                    in_reply_to_user_id     = results[a].in_reply_to_user_id,
                                    in_reply_to_screen_name = results[a].in_reply_to_screen_name,
                                    //user
                                    //geo = results[a].geo,
                                    // coordinates = results[a].coordinates,
                                    //   place = results[a].place ? results[a].place. : ,
                                    contributors    = results[a].contributors,
                                    is_quote_status = results[a].is_quote_status,
                                    retweet_count   = results[a].retweet_count,
                                    favorite_count  = results[a].favorite_count,
                                    favorited       = results[a].favorited,
                                    retweeted       = results[a].retweeted,
                                    lang            = results[a].lang,
                                    is_count        = 0,
                                    User            = new FrontEnd.Models.User()
                                    {
                                        Id          = results[a].User.Id,
                                        name        = results[a].User.Name,
                                        screen_name = results[a].User.ScreenName,
                                        location    = results[a].User.Location.ToLower(),
                                        description = results[a].User.Description,
                                        url         = results[a].User.Url,
                                        //entities
                                        ///->protected
                                        followers_count                    = results[a].User.FollowersCount,
                                        friends_count                      = results[a].User.FriendsCount,
                                        listed_count                       = results[a].User.ListedCount,
                                        created_at                         = DateFormatter(results[a].User.CreatedAt),
                                        favourites_count                   = results[a].User.FavouritesCount,
                                        utc_offset                         = results[a].User.UtcOffset,
                                        time_zone                          = results[a].User.TimeZone,
                                        geo_enabled                        = results[a].User.GeoEnabled,
                                        verified                           = results[a].User.Verified,
                                        statuses_count                     = results[a].User.StatusesCount,
                                        lang                               = results[a].User.Lang,
                                        contributors_enabled               = results[a].User.ContributorsEnabled,
                                        is_translator                      = results[a].User.IsTranslator,
                                        is_translation_enabled             = results[a].User.IsTranslationEnabled,
                                        profile_background_color           = results[a].User.ProfileBackgroundColor,
                                        profile_background_image_url       = results[a].User.ProfileBackgroundImageUrl,
                                        profile_background_image_url_https = results[a].User.ProfileBackgroundImageUrlHttps,
                                        // profile_banner_url = results[a].User.profile
                                        profile_link_color           = results[a].User.ProfileLinkColor,
                                        profile_sidebar_border_color = results[a].User.ProfileSidebarBorderColor,
                                        profile_sidebar_fill_color   = results[a].User.ProfileSidebarFillColor,
                                        profile_text_color           = results[a].User.ProfileTextColor,
                                        profile_use_background_image = results[a].User.ProfileUseBackgroundImage,
                                        // has_extended_profile = results[a].User.has
                                        default_profile       = results[a].User.DefaultProfile,
                                        default_profile_image = results[a].User.DefaultProfileImage,
                                        following             = results[a].User.Following,
                                        follow_request_sent   = results[a].User.FollowRequestSent,
                                        notifications         = results[a].User.Notifications,
                                        //translator_type = results[a].User.tr
                                        profile_image_url = results[a].User.ProfileImageUrl,
                                        count             = 1,
                                        is_ready          = 0
                                    }
                                };



                                var UserIdList      = SuuContext.Users.ToList().Select(s => s.Id);
                                var StatusList      = SuuContext.Status.ToList().Select(s => s.Id);
                                var HashTagTextList = SuuContext.Hashtags.ToList().Select(s => s.text);
                                if (!StatusList.Contains(status.Id))
                                {
                                    if (UserIdList.Contains(status.User.Id))
                                    {
                                        status.user_id = status.User.Id;
                                        //status.User = null;
                                        //if(string.IsNullOrEmpty(status.User.count)  )

                                        var currentUser = SuuContext.Users.ToList().Where(s => s.Id == status.User.Id).FirstOrDefault();
                                        var curentUserCurrentOccrence = currentUser.count;
                                        var UserlatestOccurence       = curentUserCurrentOccrence = curentUserCurrentOccrence + 1;
                                        currentUser.count = UserlatestOccurence;
                                        SuuContext.SaveChanges();

                                        status.User = null;
                                    }


                                    foreach (var x in results[a].entities.Hashtags)
                                    {
                                        if (!HashTagTextList.Contains(x.Text))
                                        {
                                            var EntityHashtag = new EntityHashtag()
                                            {
                                                status_id = status.Id,
                                                Hashtag   = new FrontEnd.Models.Hashtag()
                                                {
                                                    text  = x.Text,
                                                    count = 1
                                                },
                                                Status = null
                                            };

                                            SuuContext.EntityHashtags.Add(EntityHashtag);
                                        }
                                        else
                                        {
                                            //var EntityHashtag = new EntityHashtag()
                                            //{
                                            //    status_id = status.Id,
                                            //    Hashtag = new FrontEnd.Models.Hashtag()
                                            //    {
                                            //        text = x.Text,
                                            //    },
                                            //    Status = null

                                            //};


                                            var currentHashTag = SuuContext.Hashtags.ToList().Where(s => s.text == x.Text).FirstOrDefault();
                                            var curentHashTagCurrentOccrence = currentHashTag.count;
                                            var HashTaglatestOccurence       = curentHashTagCurrentOccrence = curentHashTagCurrentOccrence + 1;
                                            currentHashTag.count = HashTaglatestOccurence;
                                            //SuuContext.SaveChanges();

                                            var EntityHashtag = new EntityHashtag()
                                            {
                                                status_id  = status.Id,
                                                hashtag_id = currentHashTag.Id
                                            };
                                            SuuContext.EntityHashtags.Add(EntityHashtag);


                                            // SuuContext.EntityHashtags.Add(EntityHashtag);
                                        }
                                    }
                                    ;

                                    SuuContext.Status.Add(status);
                                    SuuContext.SaveChanges();
                                }
                            }
                        }
                    }
                }
                Console.WriteLine("finish save to db cycle .........");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }