1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wf2311-wakatime-sync

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

синхронизация данных Wakatime

Подготовка базы данных

После создания базы данных MySQL выполните SQL-скрипты в каталоге sql в указанном порядке.

Описание параметров:

Параметр Описание Значение по умолчанию
SERVER_PORT Номер порта сервера 3040
WAKATIME_APP_KEY Ключ приложения Wakatime
WAKATIME_PROXY_URL Адрес прокси-сервера для доступа к API Wakatime, например: socks5://127.0.0.1:1080 Укажите значение в зависимости от ваших требований false, что означает отключение использования прокси
WAKATIME_FTQQ_KEY Ключ SCKEY для Server酱, см. http://sc.ftqq.com, если пустое значение — сообщения этого типа не будут отправлены
WAKATIME_DINGDING_KEY Токен бота Dingding, если пустое значение — сообщения этого типа не будут отправлены
START_DAY Дата начала записи 2016-01-01
MYSQL_URL Адрес подключения к базе данных MySQL jdbc:mysql://127.0.0.1:3306/wakatime?characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=PRC
MYSQL_USERNAME Логин пользователя базы данных MySQL wakatime
MYSQL_PASSWORD Пароль пользователя базы данных MySQL 123456
JVM_OPTS Параметры запуска JVM, полезны при запуске контейнером -Xmx256m -Xms64m -Xss256k

Быстрый старт

Локальная отладка

  1. В соответствии с инструкциями, заполните параметры в файле src/main/resources/application-config.properties.
  2. Запустите класс WakatimeSyncApplication.

Создание Docker-образа

mvn -DskipTests clean package
docker build -t wf2311/wakatime-sync:1.0 .
```## Запуск приложения в контейнере
### Через Docker
```shell
docker run -d -t -p 3040:3040 -v ~/logs/wakatime-sync/:/application/logs \
-e JAVA_OPTS='-Xmx256m -Xms64m -Xss256k' \
-e SERVER_PORT='3040' \
-e WAKATIME_APP_KEY='<WAKATIME_APP_KEY>' \
-e WAKATIME_PROXY_URL='false' \
-e WAKATIME_FTQQ_KEY='<WAKATIME_FTQQ_KEY>' \
-e WAKATIME_DINGDING_KEY='<WAKATIME_DINGDING_KEY>' \
-e START_DAY='2020-01-01' \
-e MYSQL_URL='jdbc:mysql://<ip:port>/wakatime?characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=PRC' \
-e MYSQL_USERNAME='wakatime' \
-e MYSQL_PASSWORD='123456' \
--name wakatime-sync wf2311/wakatime-sync:1.0

Docker Compose

Файл docker-compose.yml

версия: "3"
сервисы:
  wakatime-sync:
    образ: wf2311/wakatime-sync:1.0
    имя_контейнера: wakatime-sync
    окружение:
      - JAVA_OPTS=-Xmx256m -Xms64m -Xss256k
      - SERVER_PORT=3040
      - WAKATIME_APP_KEY=<WAKATIME_APP_KEY>
      - WAKATIME_PROXY_URL=false
      - WAKATIME_FTQQ_KEY=<WAKATIME_FTQQ_KEY>
      - WAKATIME_DINGDING_KEY=<WAKATIME_DINGDING_KEY>
      - START_DAY=2016-02-01
      - MYSQL_URL=jdbc:mysql://<ip:port>/wakatime?characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=PRC
      - MYSQL_USERNAME=wakatime
      - MYSQL_PASSWORD=123456
    тома:
      - ~/Share/logs/wakatime-sync/:/application/logs
    порты:
      - "3040:3040"

Внимание

jdbc:mysql://<mysql-ip>:<mysql-port>/<mysql-db>?characterEncoding=utf8&...
  1. База данных использует jdbc для связи. В приведённой выше jdbc-url, если <mysql-ip> заполнен значением localhost или 127.0.0.1, это не позволит обратиться к хосту. Рекомендуется использовать публичный IP адрес. Если у вас нет публичного IP адреса, существуют решения в интернете. Конечно, если вы используете docker-compose, <mysql-ip> можно указать имя сервиса mysql.
  2. При использовании образов jre или jdk, Oracle может потребовать от пользователя выполнения некоторых проверок, подробнее см.:

https://blog.csdn.net/wengyupeng/article/details/878978663. Этот проект автоматически собирает данные за предыдущий день каждый день. Если вам требуется импортировать исторические данные, вы можете вызвать соответствующие интерфейсы проекта вручную:

curl -X POST http://<ваш_домен>:<порт>/api/v1/sync \
-d day=<число_дней_для_синхронизации> \
-d apiKey=<ваши_ключи_api_wakatime>

Описание WakaTime

WakaTime — это инструмент для отслеживания времени, затраченного на программирование, который поддерживает большинство популярных сред разработки и браузер Google Chrome.

Шаги использования

  1. Зарегистрироваться в системе WakaTime;
  2. На сайте WakaTime найдите подходящий плагин для вашей среды разработки и установите его согласно инструкциям (на изображении серый цвет означает, что данный плагин еще не поддерживается официально): Поддерживаемые среды разработки
  3. В разделе Настройки аккаунта скопируйте значение Secret API Key и введите его в соответствующее поле вашего плагина WakaTime; Скопировать Secret API Key
  4. Через некоторое время вы сможете видеть ваши данные о работе на сайте WakaTime, как показано ниже: ## Проект wakatime-sync

Описание проекта

WakaTime предлагает множество различных графиков для анализа временных данных работы. Однако, как бесплатному пользователю, доступен просмотр только последних 14 дней; чтобы получить доступ ко всем данным, требуется ежемесячная подписка стоимостью $9.К счастью, WakaTime предлагает API, который позволяет получать первичные данные о времени работы через интерфейс (даже для бесплатных пользователей доступен просмотр только последних 14 дней). Этот проект использует API WakaTime для сохранения данных WakaTime в базе данных, а затем отображает их с помощью плагинов для графиков. В настоящее время реализовано три типа графиков:

  • График продолжительности работы над проектами ежедневно: График продолжительности работы над проектами ежедневно

  • График активности за указанный период времени: График активности за указанный период времени

  • Календарь ежедневной продолжительности работы над кодом: Календарь ежедневной продолжительности работы над кодом

Адрес проекта

Используемые технологии

Backend: JDK 1.8, Spring Boot, Jodd-HTTP, Thymeleaf;

Database: MySQL 5.7;

Frontend: Moment.js, ElementUI, AntV-G2, ECharts;

Уведомление сервис: Server酱, Диньдин робот;Логика проекта довольно простая — каждый день автоматически собираются данные за прошедший день через API WakaTime и сохраняются; затем они отображаются с помощью графических плагинов. В будущем будут дорабатываться функции кэширования запросов и синхронизации уведомлений.Использование AntV-G2 и ECharts объясняется тем, что для представления временной последовательности можно использовать AntV-G2, но для создания календарной диаграммы использование AntV-G2 было бы слишком сложным, поэтому была выбрана ECharts.

Начальный вариант проекта использовал базу данных MongoDB, однако впоследствии был заменён на MySQL из соображений универсальности и удобства использования. Код версии с MongoDB находится в ветке mongodb.

Инструкция по установке

Замените или настройте значения wakatime.app.key и spring.datasource.* в конфигурационном файле src/main/resources/application.yml. Установка возможна с использованием Maven или Docker.

Скрипт для создания базы данных расположен в файле sql/wakatime_sync.sql.

Версия проекта с использованием MongoDB доступна в ветке mongodb.

Пример адреса: https://wakatime.wangfeng.pro/.### Уведомления В системе есть задача, которая запускается ежедневно в 09:00 и отправляет уведомление о времени работы за предыдущий день в DingDing или WeChat согласно настроенным параметрам; Необходимо указать соответствующие параметры в файле application.yml:

  • Уведомление Server酱: получите SCKEY по инструкции на сайте Server酱 и установите его как значение параметра wakatime.ftqq-key;
  • Уведомление DingDing робот: создайте робота в группе DingDing, где требуется уведомление, и установите значение параметра access_token в качестве значения параметра wakatime.dingding-key;Если вы не хотите использовать уведомления, закомментируйте соответствующие параметры в файле application.yml или установите их значением пустой строки.### Возможные проблемы
  1. Из-за использования Spring Boot 2 в данном проекте, используемый mysql-connector-java драйвер зависит от часового пояса сервера MySQL. Если часовой пояс вашего MySQL отличается от часов вашей программы и часов, указанных в личных настройках WakaTime, то это может привести к некорректному времени в сохранённых данных. Решение заключается в корректировке часов в личных настройках WakaTime и установке правильного часового пояса в базе данных MySQL либо использовании версии 5.x драйвера mysql-connector-java.
  2. Если вы активно используете WakaTime и хотите синхронизировать все исторические данные через данный проект, вам потребуется пробная версия командной версии сайта на месяц (или полмесяца) либо подписка на один месяц платной версии. После этого можно использовать этот проект для синхронизации всех исторических данных: POST /api/v1/sync или обратиться к тестовым методам проекта. При использовании тестовых методов следует избегать одновременного запуска большого количества потоков для вызова API, так как это может привести к ограничению скорости.## TODO
  • Уведомление о завершении работы за день;
  • Оптимизация запросов к кэшированию;
  • Добавление альтернативных названий для проектов;## Обновления

31 августа 2021 года

  • Обновление Server酱 до новой версии отправки, см. Server酱, требуется замена старого SendKey.

9 мая 2021 года

  • Использование SpringBoot слоёв jar для сборки Docker образа
  • Оптимизация передачи параметров при работе с Docker
  • Добавление руководства по запуску DockerCompose

8 февраля 2019 года

  • Добавлен конфигурационный файл для прокси-соединения с API WakaTime, что решает проблему недоступности сайта WakaTime из-за блокировки.

2 февраля 2019 года

  • Добавлена возможность взаимодействия с графиками: при клике на Activity или Calendar графика, Duration график будет показывать данные за выбранную дату.

23 января 2019 года

  • Оптимизация страницы: перемещение выбора временного периода на мобильных устройствах.

20 января 2019 года

  • В случае отсутствия данных за конкретный день, можно выбрать заполнение пустыми данными.
  • Валидация входных параметров.
  • Исправление ошибки NullPointerException при отправке сообщений в случае отсутствия данных за день.

17 января 2019 года

  • Изменение цвета текста осей координат на белый для лучшей видимости на фоне.
  • Отображение структуры графика только если есть данные за день.
  • Добавление задачи планировщика: каждый день в 09:00 будут отправлены сообщения с информацией о времени работы за прошедший день в DingTalk или WeChat.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Инструмент для демонстрации синхронизации данных Wakatime. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wf2311-wakatime-sync.git
git@api.gitlife.ru:oschina-mirror/wf2311-wakatime-sync.git
oschina-mirror
wf2311-wakatime-sync
wf2311-wakatime-sync
master