This CLI will monitor(active-tab, mouse, keyboard), log, and plot graphs.
Project description
GanttLogger
CLI that Monitors active-tab, mouse-distance and keyboard-count, Logs and Plots various graphs.
(PyPI)https://pypi.org/project/ganttlogger/
AGENDA
Requirements(Test Completing) ▲
- OS
- Windows10(64bit)
- MacOS High Sierra ~
- Python
- 3.6.x
- 3.7.x
Get Started ▲
Install ▲
- Windows
There are two ways to install.- Install with
pip
.- Install python3.
- Install with
pip
like below.> python -m pip install ganttlogger
- Install by downloading
ganttlogger-exe-x86_64-<version>.zip
.- Read README for executable file.
- Install with
- MacOS
There are two ways to install.
- Install with
pip
.- Install python3 and pip3.
- Installl with
pip3
like below.$ pip3 install ganttlogger
- If you can't install with
pip3
, downloadganttlogger-<version>.tar.gz
from Releases or PyPI, extract it, and run install command below.$ python3 setup.py install
- Add "Terminal.app" to "Accessibility" in "Security & Privacy" in system environment settings to allow Terminal.app to get inputs from keyboard.
- Install by downloading
ganttlogger-exe-macos-<version>.zip
.- Read README for executable file.
- Install with
Quick Start ▲
- Run as "Alone"(Run both monitoring and logging in a PC).
$ ganttlogger
- Exit CLI(running as "Alone" or "Observer") by hitting keys
1
+0
+z
+m
continuously (mashing keys, not long pressing simultaneously). - Check a created folder
ganttlogger_logs
in current directory.
When you want a guide about the outputed folder, refer Structure of outputed folder "ganttlogger_logs".
- If you get the following problems
ModuleNotFoundError: No module named 'win32gui'
on Windows.- Try uninstall and install
pywin32
.> python -m pip uninstall pywin32 & python -m pip install pywin32
- Try uninstall and install
- Appear warning below when plotting graphs.
/usr/local/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 128266 missing from current font. font.set_text(s, 0.0, flags=flags) /usr/local/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 128266 missing from current font. font.set_text(s, 0, flags=flags)
- No problem. You can ignore that.
Structure of outputed folder "ganttlogger_logs" ▲
ganttlogger_logs
├ (ID)
├ active_tab.log
├ mouse.log
├ keyboard.log
└ graphs
├ output_(date)_all.pkl
├ output_(date)_all.png
...
├ (ID)
├ active_tab.log
...
...
(ID)
: A unique ID generated by ganttlogger.~.log
: log data.~.pkl
: Dynamic graph data.~.png
: Static graph data(image).
Command Options ▲
usage: ganttlogger [--observer] [--logger] [--uuid <UUID>] [--help] [--plotter] [--withplot] [--displayer] [--merger]
This CLI will do Observing active-tab, mouse, keyboard,
and Logging them,
and Plotting graphs (active-tab=ganttchart, mouse=line, keyboard=bar).
If you don't set any option, this work both of 'observer' and 'logger'.
optional arguments:
-h, --help show this help message and exit
-o, --observer The role of this PC is only observing action.
-l, --logger The role of this PC is only logging and plotting. You must also set '--uuid'.
-u UUID, --uuid UUID When you set '--logger', you must also set this by being informed from 'observer' PC.
-p, --plotter Use this option if you want other outputs by a log in the current directory after getting one and a graph.
--withplot Use this option when you want to get a graph after running 'Alone'.
-d, --displayer Use this option when you want to look a graph from a '.pkl' file.
-m, --merger Use this option when you want to merge all logs in folders in 'ganttlogger_logs'.
--observer
and--logger
don't work because they're not implemented yet.- Run
ganttlogger
without any options if you run CLI asalone
- both ofobserver
andlogger/plotter
-.- Add an option
--withplot
, if you want graphs along with logs.
Then, CLI will output a graph like No.1 of Graph Examples
- Add an option
- Change to current directory of logs and add an option
--plotter
, if you want to get other graphs from logs.- Then, you'll be required some settings to decide formats to plot graphs.
- First,
Select keywords(you can combine) from (set_interval | filter_tab | select_data | xaxis_type | xlim_range).Select plot types separated by ',', or enter without input.:
- When select
set_interval
, you'll be required a setting.
Example graph when set "5" is No.2 of Graph Examples.Set the number of interval by seconds:
- When select
filter_tab
, you'll be required two settings.(1)Input a file name written a list of tab text you want to filter.: (2)Do you want to hide mouse and keyboard graph depictions of the duration filtered regarding tab text?(Y/n) :
- When select
select_data
, you'll be required a setting.
Example graphs when set "active_tab" and "keyboard" are No.5 and No.6 of Graph Examples.Select 'all' or names separated by ',' from ('active_tab'|'mouse'|'keyboard'|'mouse-keyboard').:
- When select
xaxis_type
, you'll be required two settings.
Example graphs when set "(1)active-start(2)active-start" and "(1)15(2)15" are No.3 and No.4 of Graph Examples.(1)Select x-axis type for ActiveTab from whether 'active-start' or number of the interval by seconds: (2)Select x-axis type for Mouse or Keyboard from whether 'active-start' or number of the interval by seconds:
- When select
xlim_range
, you'll be required two settings.
Then, you can get a graph during the specified time zone.(1)Input start time of graph xlim in the format 'YYYY/mm/dd HH:MM:SS'.: (2)Input end time of graph xlim in the format 'YYYY/mm/dd HH:MM:SS'.:
- When select
set_ylabel
, you'll be required a setting.
If you input 'Y', you can get graphs having y-labels composed of the only application names (excluding tab names).Do you want to remove from active-tab-names(y-labels)? (Y/n):
- Add an option
--displayer
if you want watch dynamic graph with generated~.pkl
.- Then, you'll be required a setting.
Input file name of '.pkl':
- Then, you'll be required a setting.
- Add an option
--merger
if you want to merge all logs in folders(these names is ID) in "ganttlogger_logs".- Then, you'll be required a setting.
Select 'all' or names separated by ',' from ('active_tab'|'mouse'|'keyboard').:
- After running, you'll get an outputted folder "merged_<datetime>".
- Then, you'll be required a setting.
Graph Examples
- All graphs were plotted from same logs.
Issues. ▲
- When long running on Mac, this cli makes PC out of memory.
The reason may be in a dependent modulepyobjc
, but I don't know how to release memory.
Memory leak pyobjc - stack overflow - Like No.2 in Graph Examples, a part of ganttchart disappear from graph when setting
set_interval
more than 2.
I'm investigating the causes... - In
Observer.py
, sometimes thread error like below occurs on Windows. I'm investigating the causes...Exception in thread Thread-1: Traceback (most recent call last): ...
- Sometimes an error below occurs when plotting from a short term logs.
Traceback (most recent call last): File "/usr/local/bin/ganttlogger", line 10, in <module> sys.exit(main()) File "/usr/local/lib/python3.7/site-packages/ganttlogger/app.py", line 42, in main plotter.start() File "/usr/local/lib/python3.7/site-packages/ganttlogger/modules/Plotter.py", line 248, in start self.run() File "/usr/local/lib/python3.7/site-packages/ganttlogger/modules/Plotter.py", line 272, in run self.get_mouse() File "/usr/local/lib/python3.7/site-packages/ganttlogger/modules/Plotter.py", line 691, in get_mouse current_time = self.plot_active_tab[0][0].replace(microsecond=0) IndexError: index 0 is out of bounds for axis 0 with size 0
- Try implementing flushing stdin buffering. But it's difficury, so I want advices or pull-requests.
In the future... ▲
- Implement mode remote '--observer' and '--logger'.
License ▲
MIT LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ganttlogger-0.2.2.tar.gz
(4.1 MB
view details)
Built Distribution
File details
Details for the file ganttlogger-0.2.2.tar.gz
.
File metadata
- Download URL: ganttlogger-0.2.2.tar.gz
- Upload date:
- Size: 4.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34abe71f1ccd283bdb63281288aa4fc4ab2ea6d283284da2bc5aa098f7814f93 |
|
MD5 | 47342d6c15f08f9528bb656ca4fba687 |
|
BLAKE2b-256 | eccb40750c0d143007be810c28d1e03d789e22071e5ea3b08e39f47db6dda994 |
File details
Details for the file ganttlogger-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: ganttlogger-0.2.2-py3-none-any.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd1febc25e15a172703622657e5201765d8ee71a3e3db958999be9d82d0f80d5 |
|
MD5 | 120255f9b4952905ce78c6e33375c214 |
|
BLAKE2b-256 | d9936e467c7cbe09d2c3df9d42b7f04dcb960d2e2372511544075ddf596eb6ff |