Многоканальное веб-приложение для отслеживания PR

У моего программного обеспечения с открытым исходным кодом есть добровольцы, которые объявляют о каждом новом выпуске (или других важных новостях) по различным каналам (официальная страница Facebook, официальный аккаунт Twitter, официальный список рассылки, неофициальная группа Reddit и т. д.).

Мы хотели бы отслеживать эти объявления, чтобы ни один канал не остался без внимания и чтобы мы могли понять, какие новости популярны.

Требования:

  • Веб-приложение
  • Каждый канал может быть зарегистрирован
  • Для каждой новости ссылка на новость на каждом канале
  • Популярность каждой новости на каждом канале (например, на Facebook это может быть число или лайк+комментарии, в списке рассылки это может быть количество ответов)
  • Статистика или экспорт необработанных данных
  • Свободно
  • Бонус, если веб-приложение может использоваться несколькими администраторами, но все используют один и тот же логин/пароль.
  • Мы не возражаем против того, чтобы данные были видны кому-либо, это нормально.

Это может выглядеть так (или не так): введите описание изображения здесь... где каждая ссылка указывает на соответствующий пост. Интерфейс администратора будет иметь кнопку для добавления новой строки объявления и способ заменить «не опубликовано» ссылкой на объявление на этом канале.

Ответы (2)

Я сомневаюсь, что какой-то готовый инструмент для всего этого существует из коробки.

Вы сталкиваетесь со следующими проблемами:

  • каждый интерфейс должен быть написан отдельно
  • вы должны менять сценарий при каждом изменении внешнего интерфейса (например, Linked-in часто меняется на ходу)
  • вы должны сохранить данные в единую базу данных/вывод

Я бы порекомендовал реализовать скрипты в инструментах автоматизации тестирования. Для этой задачи может быть достаточно Selenium Webdriver и некоторого языка программирования для «управления» веб-драйвером (java, ruby, python).

Вам придется нанять программиста средней квалификации со знанием выбранного языка, Xpath и (опционально) Selenium (это очень просто), но вы сможете сканировать практически ЛЮБОЙ контент.

Я бы посоветовал вам включить в репозиторий страницу отзывов, возможно, как уценку , которую добровольцы могут редактировать со своими ссылками на обзоры и фиксировать , как и любой другой исходный код . Затем у вас может быть скрипт Python , который запускается ежедневно/еженедельно для чтения из этого файла уценки и запускает ссылки, собирая статистику по каждой ссылке. Вы даже можете вывести данные в файл .csv по дате сканирования, чтобы иметь возможность отображать тенденции в виде графиков.

Этот скрипт может обновлять README.md или другую страницу в документах и ​​размещать их в репозитории. Если вы используете GitHub, то обновления README.md автоматически отображаются на домашней странице репозитория — также есть поддержка автоматического отображения документации Sphinx — многие/большинство репозиториев исходного кода поддерживают эту функцию.

Почему Python

Python особенно хорошо подходит для этого, потому что:

  • богатая экосистема включает в себя такие инструменты, как:
    • request-html , которые упрощают сбор данных. Возможно, вам понадобится отдельный фильтр для сбора данных с каждого канала.
    • Цепочка инструментов документации Sphinx
    • Множество инструментов для создания графиков.
  • Вы можете легко настроить скрипты Python для запуска в качестве службы и/или с помощью перехватчиков фиксации.
  • Вам не нужно беспокоиться о том, на какой платформе работает ваш скрипт.
  • Вы можете использовать облачный сервис для этой задачи, и большинство из них имеют Python в качестве основного инструмента.
  • Это было бы хорошим первым проектом для тех, кто изучает Python.

Дополнительные баллы

  • Большинство репозиториев и систем контроля версий позволяют вам выбирать, какие авторы могут редактировать какие файлы.
  • Многие/большинство имеют «домашнюю» страницу, которая автоматически обновляется при фиксации изменений в README.md или каком-либо другом файле .
  • Доступна интеграция с ReadTheDocs
  • Также стоит прочитать это