mirror of
https://github.com/qeeqbox/social-analyzer.git
synced 2026-08-20 04:35:41 +02:00
148 lines
3.4 KiB
JavaScript
148 lines
3.4 KiB
JavaScript
var verbose = false
|
|
var google_api_key = "";
|
|
var google_api_cs = "";
|
|
var grid_url = "";
|
|
var proxy = ""
|
|
|
|
var header_options = {
|
|
headers: {
|
|
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0',
|
|
}
|
|
};
|
|
|
|
var https = require("follow-redirects").https;
|
|
var fs = require("fs");
|
|
var url = require("url");
|
|
var franc = require('franc');
|
|
var langs = require('langs');
|
|
var cheerio = require('cheerio');
|
|
|
|
var parsed_sites = JSON.parse(fs.readFileSync("sites.json"));
|
|
var logs_queue = Promise.resolve();
|
|
|
|
function log_to_file_queue(uuid, msg) {
|
|
logs_queue = logs_queue.then(function() {
|
|
return new Promise(function(resolve) {
|
|
fs.appendFile("logs/" + uuid + "_log.txt", msg + "\n", function(err, data) {
|
|
console.log(msg)
|
|
resolve();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function get_language_by_parsing(body) {
|
|
var language = "unavailable"
|
|
try {
|
|
var $ = cheerio.load(body);
|
|
var code = $("html").attr("lang")
|
|
if (code != "") {
|
|
language = langs.where("1", code).name
|
|
}
|
|
} catch (err) {
|
|
verbose && console.log(err);
|
|
}
|
|
return language
|
|
}
|
|
|
|
function get_language_by_guessing(text) {
|
|
var language = "unavailable"
|
|
try {
|
|
if (text != "unavailable" && text != "") {
|
|
var code = franc(text);
|
|
if (code !== 'und') {
|
|
language = langs.where("3", code).name + " (Maybe)"
|
|
}
|
|
}
|
|
} catch (err) {
|
|
verbose && console.log(err);
|
|
}
|
|
|
|
return language
|
|
}
|
|
|
|
function get_site_from_url(_url) {
|
|
temp = url.parse(_url.replace("{username}", "nothinghere")).hostname
|
|
return temp.replace("nothinghere.", "")
|
|
}
|
|
|
|
async function get_url_wrapper_json(url, time = 5) {
|
|
try {
|
|
let http_promise = new Promise((resolve, reject) => {
|
|
var request = https.get(url, header_options, function(res) {
|
|
var body = ""
|
|
res.on("data", function(chunk) {
|
|
body += chunk;
|
|
});
|
|
res.on("end", function() {
|
|
resolve({
|
|
'data': JSON.parse(body.toString())
|
|
});
|
|
});
|
|
});
|
|
request.on('error', function(e) {
|
|
reject({
|
|
'data': ''
|
|
})
|
|
});
|
|
request.on('socket', function(socket) {
|
|
var timeout = (time != 0) ? time * 1000 : 5000;
|
|
socket.setTimeout(timeout, function() {
|
|
request.abort();
|
|
});
|
|
});
|
|
});
|
|
let response_body = await http_promise;
|
|
return response_body
|
|
} catch (err) {
|
|
verbose && console.log(err);
|
|
}
|
|
}
|
|
|
|
async function get_url_wrapper_text(url, time = 5) {
|
|
try {
|
|
let http_promise = new Promise((resolve, reject) => {
|
|
var request = https.get(url, header_options, function(res) {
|
|
var body = ""
|
|
res.on("data", function(chunk) {
|
|
body += chunk;
|
|
});
|
|
res.on("end", function() {
|
|
resolve(body);
|
|
});
|
|
});
|
|
request.on('error', function(e) {
|
|
reject({
|
|
'data': ''
|
|
})
|
|
});
|
|
request.on('socket', function(socket) {
|
|
var timeout = (time != 0) ? time * 1000 : 5000;
|
|
socket.setTimeout(timeout, function() {
|
|
request.abort();
|
|
});
|
|
});
|
|
});
|
|
let response_body = await http_promise;
|
|
return response_body
|
|
} catch (err) {
|
|
verbose && console.log(err);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
get_language_by_parsing,
|
|
get_language_by_guessing,
|
|
parsed_sites,
|
|
verbose,
|
|
google_api_key,
|
|
google_api_cs,
|
|
grid_url,
|
|
header_options,
|
|
proxy,
|
|
get_site_from_url,
|
|
log_to_file_queue,
|
|
get_url_wrapper_text,
|
|
get_url_wrapper_json
|
|
}
|