static void SaveArtResults(SemtimentData _ArtData, SemtimentResult _ArtSent, EntitiesResult _ArtEnt) { List <QuickTypeSemtimentData.Document> list = new List <QuickTypeSemtimentData.Document>(); SemtimentData _AzData = new SemtimentData(); int i = 0; foreach (QuickTypeSemtimentResult.Document doc in _ArtSent.Documents) { if (doc.Score < .3) { saveToDB(doc.Id.ToString(), _ArtData.Documents[i].Text, "Negative", _ArtEnt.Documents[i]); } else { if (doc.Score > .7) { saveToDB(doc.Id.ToString(), _ArtData.Documents[i].Text, "Positive", _ArtEnt.Documents[i]); } else { saveToDB(doc.Id.ToString(), _ArtData.Documents[i].Text, "Nuetral", _ArtEnt.Documents[i]); } } i++; } }
static SemtimentResult GetSentiment(string _Azuretoken, SemtimentData _Data) { String _JsonData = _Data.ToJson(); var client = new RestClient("https://westus2.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment"); var request = new RestRequest(Method.POST); request.AddHeader("Ocp-Apim-Subscription-Key", _Azuretoken); request.AddHeader("Content-Type", "application/json"); request.AddParameter("undefined", _JsonData, ParameterType.RequestBody); IRestResponse response = client.Execute(request); SemtimentResult _Sentement = SemtimentResult.FromJson(response.Content); return(_Sentement); }
static void Main(string[] args) { string RedditLogin = ""; // Reddit user login string RedditPWD = ""; // Reddit user password string RedditAppID = ""; // Reddit App ID string RedditAppSecret = ""; // Reddit App secret string redditAccessToken = ""; // Store key here if you going to build DB a few times it is good for 120min string AzureSentAppKey = "[YourSetimentAppKey]"; gremlinServer = new GremlinServer("[YourCosmoDB].gremlin.cosmos.azure.com", 443, enableSsl: true, username: $"/dbs/[database id]/colls/[Graph id]", password: "******"); // Make sure the graph DB is empty to start using (var gremlinClient = new GremlinClient(gremlinServer, new GraphSON2Reader(), new GraphSON2Writer(), GremlinClient.GraphSON2MimeType)) { var result = AzureAsync(gremlinClient, "g.V().drop()"); // Clear DB Console.WriteLine("\n{{\"Returned\": \"{0}\"}}", result.Result.Count); } if (redditAccessToken == "") { redditAccessToken = AuthToken(RedditLogin, RedditPWD, RedditAppID, RedditAppSecret); // Get Reddit access token } RedditArticles myArt = GetArticles(redditAccessToken); // Get Reddit articles EntitiesData EntitiesData = CreateEntitiesData(myArt); // Create sentiment entity data structure for entities EntitiesResult ArtEntities = GetEntities(AzureSentAppKey, EntitiesData); // Get entities from Azure API SemtimentData SentimentData = CreateSentimentData(myArt); // Create sentiment data structure SemtimentResult ArtSentiment = GetSentiment(AzureSentAppKey, SentimentData); // Get sentiment for article SaveArtResults(SentimentData, ArtSentiment, ArtEntities); // Save results in Cosmos DB /* * foreach(QuickTypeEntitiesResult.Entity artEnt in ArtEntities.Documents[0].Entities) * { * Console.WriteLine("e:" + artEnt.Name); * } * System.Threading.Thread.Sleep(1000); * ParseComments(redditAccessToken, articl.Data.Name.Substring(3)); */ }
static SemtimentData CreateSentimentData(RedditArticles _myArt) { List <QuickTypeSemtimentData.Document> list = new List <QuickTypeSemtimentData.Document>(); SemtimentData _AzData = new SemtimentData(); int i = 0; foreach (QuickTypeArticles.Child articl in _myArt.Data.Children) { if (articl.Kind == "t3" && articl.Data.Author != "AutoModerator") // Ensure its an Article and not a bot post { i++; list.Add(new QuickTypeSemtimentData.Document { Id = i, Language = "en", Text = articl.Data.Title }); } } _AzData.Documents = list.ToArray(); return(_AzData); }