Как узнать, когда кто-то проголосовал за ваш вопрос на Stack Exchange

Вот вопрос, который я разместил на веб-сайте Stack Exchange: https://math.stackexchange.com/questions/4404052/why-is-the-traveling-salesperson-problem-difficult

Можно ли увидеть полную историю того, когда (метка времени) произошло каждое положительное и отрицательное голосование?

Например:

  score           timestamp cumulative_score
    10 2024-07-31 17:21:33               10
   -10 2024-08-01 02:55:01                0
   -10 2024-08-01 05:11:04              -10
   -10 2024-08-01 06:28:40              -20
    10 2024-08-01 07:15:45              -10
   -10 2024-08-01 13:21:15              -20

Можно ли это сделать с помощью API переполнения стека?

Самое близкое, что я нашел, было это: https://math.stackexchange.com/posts/4404052/timeline

Но это не содержит полной истории голосования. Мне не нужно знать, какие пользователи голосовали — достаточно знать, в какое время менялся счет.

Ссылки:

Примечание. Причина, по которой я спрашиваю: мне интересно узнать, можно ли смоделировать интенсивность изменения оценок по вопросу с помощью случайного блуждания (https://en.wikipedia.org/wiki/Random_walk)

Вы дали ссылку на версию временной шкалы, в которой вы скрыли сводки голосов. Нажмите кнопку «Показать сводки голосов» вверху, чтобы перейти на math.stackexchange.com/posts/4404052/…

tripleee 30.08.2024 08:22

Вопросы о работе Stack Overflow следует задавать на Meta Stack Overflow

Tangentially Perpendicular 30.08.2024 08:22

@TangentiallyPerpendicle Вопросы о том, как писать код для общедоступного API, актуальны на SO. Stack Apps отвечает на вопросы поддержки относительно Stack Exchange API. (раскрытие: я модератор Stack Apps)

rene 30.08.2024 09:23
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Можно ли увидеть полную историю того, когда (метка времени) произошло каждое положительное и отрицательное голосование?

Нет, это невозможно по соображениям безопасности/конфиденциальности. Лучшее, что вы получите, — это подсчет голосов на свидании. Это касается API /question/timeline конечной точки.

const ApiUrl = 'https://api.stackexchange.com/2.3/questions/4404052/timeline?site=math&filter=!bbZvl7Y9jHviql'

const providers = {
   'creation_date': getDateTime
}

function getValue(v) {
  return v;
}

function getFieldNames(items) {
     const hdrs = items.reduce( (a, c) => { 
      for(const f in c) {
          a[f] = providers[f] ?? getValue
      }
      return a
   }, {})
   return hdrs;
}

function addHeaders(hdrs) {
     const head = document.getElementById('head')
     const tr = document.createElement('tr')
     for(const h in hdrs) {
        const th = document.createElement('th')
        th.textContent = h
        tr.appendChild(th)
     }
     head.appendChild(tr)
     return hdrs
}

function zero(v) {
  return v<10?`0${v}`:v.toString()
}

function getDate(dt) {
  return `${dt.getUTCFullYear()}-${zero(dt.getUTCMonth()+1)}-${zero(dt.getUTCDay())}`
}

function getTime(dt) {
  return `${zero(dt.getUTCHours())}:${zero(dt.getUTCMinutes())}:${zero(dt.getUTCSeconds())}`
}

function getDateTime(v) {
  const d = new Date(v * 1000)
  return `${getDate(d)} ${getTime(d)} `
}

function addRowForItem(item, hdrs) {
  const tr = document.createElement('tr')
  for(const f in hdrs) {
     const td = document.createElement('td')
     td.textContent = hdrs[f](item[f])
     tr.appendChild(td)
  }
  return tr
}

function addRows(items, tbody) {
   const hdrs = addHeaders(getFieldNames(items))
   items
     .map(i => addRowForItem(i,hdrs))
     .forEach(i => tbody.appendChild(i))
}

function addError(err) {
  addRows([err], document.getElementById('list'))
}

fetch(ApiUrl)
  .then( r => r.json())
  .then( j => j.items ?? [j])
  .then( items => addRows(items, document.getElementById('list')))
  .catch( e => addError(e))
* {
  font-family: sans-serif;
}

th, td {
  text-align:right;
  border: solid black 1px;
  padding: 3px;
}
<table>
<thead id='head'>
</thead>
<tbody id='list'>
</tbody>
</table>

а также для Stack Exchange Data Explorer или дампа данных, если уж на то пошло:

select *
from votes
where postid=4404052
and votetypeid in (1,2,3) -- accept, up, down

Имея временные метки с точностью до секунды, было бы слишком легко связать активность пользователей с их голосованием. Для справки: даже модераторы не имеют доступа к этим временным меткам. Даже для них голосование анонимное.

@ Рене: большое спасибо за ответ! Знаете ли вы, возможно ли запустить этот код на R или Python?

stats_noob 30.08.2024 21:50

@stats_noob Python наверняка возможен: stackoverflow.com/questions/tagged/python+stackexchange-api и, похоже, это относится и к R: stackoverflow.com/questions/tagged/r+stackexchange-api . Если у вас возникли проблемы с адаптацией существующих ответов к вашим конкретным потребностям, задайте новый вопрос, пытаясь адаптировать и реализовать мой JavaScript на R или Python.

rene 31.08.2024 11:15

Другие вопросы по теме