Использование ключевого слова для сравнения для получения релевантных данных из Google Trends API - PullRequest
3 голосов
/ 12 февраля 2020

Я использую 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
...