Я создаю информационную панель для измерения вовлеченности пользователей для различных учетных записей 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.Тем не менее, я не могу поддержать процесс.