Я использую Google Trends API для получения данных об эффективности некоторых ключевых слов. Данные, предоставляемые мне API, являются относительными.
Цель:
Я хочу использовать секунду ключевое слово в качестве ссылки для получения относительной эффективности.
Вопрос:
Как выбрать ключевое слово для ссылки. Кроме того, что именно возвращают IntrestOverTime
и IntrestByRegion
.
var fs = require("fs");
const os = require("os");
var argv = require('minimist')//(process.argv.slice(2));
// var sleep = require("sleep");
const { Pool } = require("pg");
var googleTrends = require("google-trends-api");
var keywords = fs.readFileSync("keywords.txt", "utf8".toString()).split("\n");
const pool = new Pool({
async function main() {
for (let i = 0; i < keywords.length - 1; i++) {
// sleep.sleep(2);
var keyword = keywords[i];
var arg = process.argv[2];
// console.log(keyword);
var today = new Date();
var dd = String(today.getDate()).padStart(2, "0");
var mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
var yyyy = today.getFullYear();
var dateReq = yyyy+"/"+mm+"/"+dd
try {
var res = await googleTrends.interestByRegion({
keyword:keyword,
geo: "US-" + arg,
})
// console.log("res:::::::::::::::")
res = JSON.parse(res);
// console.log(res)
if ("default" in res) {
if ("geoMapData" in res["default"]) {
for (var x in res["default"].geoMapData) {
var row = res["default"].geoMapData[x];
if ("geoName" in row && "value" in row) {
// console.log(":::keyword::",keyword,"::::geoName::",row.geoName,":::value:::",row.value)
var reqData = dateReq+","+keyword+","+row.geoName+","+row.value+","+arg+"\n"
fs.appendFile(arg+".csv",reqData , function (err) {
if (err) throw err
console.log('Saved!',reqData)
})
} else {
console.log("Invalid row, missing fields.");
}
}
} else {
console.log("Malformed JSON result, geoMapData missing.");
}
}else{
console.log("Malformed JSON result, default missing");
}
}catch(e){
console.log("Failed: with JSON " + e); //there is the main problem when you runs this program lots of time in a day
// and it also throw error when you crossed the limit of 5000
}
}
}
(async () => {
await main();
})();
Между ними также возникают некоторые ошибки.
Failed: with JSON SyntaxError: Unexpected token C in JSON at position 0