-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsafe_space.js
110 lines (75 loc) · 3.07 KB
/
safe_space.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* Safe Space : Makes social media and internet content safe by making everything positive.
* Created by Korhan Akcura
* Version 1.0
*/
/*_-_Config Variables_-_*/
// Semantria API Authentication Keys
var consumerKey = "d48948d2-649b-4e22-9327-fce93919788f";
var consumerSecret = "a4154b80-f1ef-4770-b0c7-5e3e49862c97";
var applicationName = 'Safe Space';
/*_-_Methods_-_*/
// Generic request message
function getIfRequestSuccess(response, request_name) {
console.log(response);
if (response['status'] == 200 || response['status'] == 202) {
console.log(request_name + ' : Success');
return true;
} else {
console.log(request_name + ' : Error');
return false;
}
}
function wait(ms){
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
//Additional generic negative removals
var regex = new RegExp("don't", "gi")
document.body.innerHTML = document.body.innerHTML.replace(regex, "do");
regex = new RegExp("not ", "gi");
document.body.innerHTML = document.body.innerHTML.replace(regex, "");
/*_-_Main Logic_-_*/
var document_body = $(document.body);
var modified_html = document.body.innerHTML;
// Make original document hidden
document_body.css('visibility', 'hidden');
var session = new Semantria.Session(consumerKey, consumerSecret, applicationName, null);
var requestObj = new Semantria.Request(consumerKey, consumerSecret, applicationName, null);
var response = requestObj.authWebRequest("GET", session.API_HOST + "/status");
// On an error stop execution
if(getIfRequestSuccess(response, "Authenticate")){
var page_texts = document_body.text().replace(/.{1000}\S*\s+/g, "$&@").split(/\s+@/);
var num_texts = page_texts.length;
for(var i = 0; i<num_texts; i++){
var trim_text = page_texts[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace(/(\r\n|\n|\r)/gm,"").replace("\\", "").replace(/[^\w\s]/gi, '').replace("\\n","");
if (page_texts[i] !== "") {
var documentID = "d2e7341-a3c2-4fb4-9d3a-779e8b0a5eff";
var postData = "{ \"id\": \""+documentID+"\", \"text\": \""+trim_text+"\", \"tag\": \"marker\"}";
response = requestObj.authWebRequest("POST", session.API_HOST + "/document.json", postData);
if(getIfRequestSuccess(response, "Post Text")){
response = requestObj.authWebRequest("GET", session.API_HOST + "/document/" + documentID + ".json" , null);
if(getIfRequestSuccess(response, "Analize Result")){
var json_result = jQuery.parseJSON(response['data']);
var num_detects = json_result.phrases.length;
for(var j = 0; j<num_detects; j++){
if (json_result.phrases[j].sentiment_polarity === "negative"){
var original = json_result.phrases[j].title;
$.get( "https://api.datamuse.com/words?rel_ant="+json_result.phrases[j].title, function( data ) {
var antonym = data[0].word;
var regex = new RegExp(original, "gi");
//document_body.html().replace(regex,antonym);
document.body.innerHTML = modified_html.replace(regex, antonym);
});
}
}
}
}
}
}
}
// Make positive document visible
document_body.css('visibility', 'visible');