ПОЛУЧИТЬ количество упоминаний для конкретного аккаунта за определенный период времени? - PullRequest
0 голосов
/ 25 июня 2019

Я создаю информационную панель для измерения вовлеченности пользователей для различных учетных записей Twitter в рамках исследовательского проекта.Большой вклад в вовлечение пользователей - это количество упоминаний пользователя в Twitter.Однако я изо всех сил пытаюсь найти подход для расчета количества упоминаний пользователя за период времени, например за неделю.

Подход 1:
Выполнить запрос, которыйбудет искать твиты с текстом @handle.Проблема заключается в том, что максимальное количество результатов, которое можно получить из одного запроса, составляет 100.

Подход 2:
Выполнить запрос несколько раз,использование result.nextQuery() для сбора твитов партиями 100.
Проблема заключается в том, что пользователь может упоминаться более 20000 раз в день, но Twitter разрешает только 180 запросов к определенной конечной точке API каждые 15 минут.и, кроме того, только определенное количество раз в день.Кроме того, время, необходимое для выполнения всех запросов GET, очень велико.

Подход 3:
Используйте потоковый API Twitter, чтобы напечатать упоминание пользователя в файл, которыйзатем сценарий будет очищаться и периодически перемещаться в базу данных.
Я думаю, что это сработает, но у меня есть вопросы по поводу запуска дочернего процесса, отдельного от его родителя - как при оставлении отслеживателя работающим на сервере.Если у кого-то есть какие-либо предложения по любым другим подходам, я буду очень признателен за них.

Я хочу запустить трекер (файл JAR), работающий на сервере, например:

function initTracker(handle) {
    console.log("Attempting to start tracking " + handle + "...");
    var args =  ['-jar', 'java/TweetTrack.jar', 'tracker', 'init', handle];

    tracker = spawn('java', args);

    if(tracker == null) {
        console.log("ERROR");
        return false;
    }
    else {
        tracker.stdin.setEncoding('utf-8');
        return true;
    }
}

Это запускает JAR со следующим кодом:

 TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
 twitterStream.addListener(listener)
 twitterStream.sample();
 isTracking = true;

Эта функция просто просит JAR вернуть isTracking:

function checkTracker(handle) {
    console.log("Checking tracker " + handle + "...");
    var args =  ['-jar', 'java/TweetTrack.jar', 'tracker', 'status', handle];

    tracker = spawn('java', args);

    if(tracker == null) {
        console.log("ERROR");
        return false;
    }
    else  {
        tracker.stdin.setEncoding('utf-8');
        return true;
    }
}

Я ожидал, что если я запусту трекер, он продолжит работуна сервере, и если бы я спросил его статус, он вернул бы true.Тем не менее, я не могу поддержать процесс.

...