V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
macleek
V2EX  ›  分享创造

一个在命令行下统计应用使用时间的小工具

  •  1
     
  •   macleek · 2016-09-08 11:18:04 +08:00 · 3449 次点击
    这是一个创建于 2998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    暂时只支持 mac os ,可以筛选时间段,查看每天花在各种应用上的时间,花在浏览的网站上的时间,给应用加标签等等,说的不是很清楚,请看下面的图吧 Alt text

    安装:
    pip install trackmac
    使用方法及源码:
    https://github.com/MacLeek/trackmac

    27 条回复    2016-09-09 10:37:34 +08:00
    jmy
        1
    jmy  
       2016-09-08 11:54:48 +08:00
    Cool 开始使用。
    metrue
        2
    metrue  
       2016-09-08 12:01:45 +08:00
    喜欢这个小工具。
    bugcode
        3
    bugcode  
       2016-09-08 12:28:11 +08:00 via iPhone
    great !
    lujun9972
        4
    lujun9972  
       2016-09-08 13:23:49 +08:00 via Android
    能问下实现的机理是什么吗?
    itfanr
        5
    itfanr  
       2016-09-08 13:34:38 +08:00
    有意思
    macleek
        6
    macleek  
    OP
       2016-09-08 14:27:34 +08:00
    @lujun9972 普通程序是使用的 appkit framework 里的函数来获取窗口标题, 浏览器里网址是通过 scripting bridge 调了一些 applescript 来获取的, https://github.com/MacLeek/trackmac/blob/master/trackmac/cocoa.py
    zhanglintc
        7
    zhanglintc  
       2016-09-08 18:27:31 +08:00
    还是 Python 的, 看起来不错, 可以试试
    xjp
        8
    xjp  
       2016-09-08 19:28:55 +08:00
    很强
    UnisandK
        9
    UnisandK  
       2016-09-08 19:42:05 +08:00
    推荐一下这货。。
    https://www.rescuetime.com
    免费基本就够用,邀请还能得高级版时长

    安卓上也装和电脑联动基本能统计到绝大部分了,可惜 iOS 受系统限制没有客户端
    uuair
        10
    uuair  
       2016-09-08 22:55:00 +08:00
    我想问个问题,是否需要 sudo pip install 这样安装??我使用 sudo 安装,但是运行 tm start 以后等一段时间, tm list 什么都没有。如果直接 pip install 则安装不上。。。。
    itisthecon
        11
    itisthecon  
       2016-09-09 00:42:46 +08:00
    cool! 顺便请教演示动画是怎么做的
    skydiver
        12
    skydiver  
       2016-09-09 01:42:40 +08:00 via iPad
    @uuair pip install --user xxx
    slixurd
        13
    slixurd  
       2016-09-09 01:45:41 +08:00
    在 OSX 上跑着崩了几次,虽然都自动重启了。
    大概就是这样:

    System Integrity Protection: enabled

    Crashed Thread: 0 Dispatch queue: com.apple.main-thread

    Exception Type: EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
    Exception Note: EXC_CORPSE_NOTIFY

    VM Regions Near 0:
    -->
    __TEXT 000000010f4ea000-000000010f4ec000 [ 8K] r-x/rwx SM=COW /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
    hqdmy
        14
    hqdmy  
       2016-09-09 09:15:28 +08:00
    不错啊,试一试
    hqdmy
        15
    hqdmy  
       2016-09-09 09:25:57 +08:00
    tm list
    Traceback (most recent call last):
    File "/usr/local/bin/tm", line 5, in <module>
    from pkg_resources import load_entry_point
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2793, in <module>
    working_set.require(__requires__)
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 673, in require
    needed = self.resolve(parse_requirements(requirements))
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 576, in resolve
    raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: click

    不行啊
    macleek
        16
    macleek  
    OP
       2016-09-09 09:36:53 +08:00
    @hqdmy 用的 apple 自带的 python 会有一些麻烦,这里你的问题可能是用 easey_install 安装的 pip ,试试 easy_install --upgrade pip
    macleek
        17
    macleek  
    OP
       2016-09-09 09:38:55 +08:00
    @slixurd 我之前也遇到这个问题,是因为 ctypes 里强行转换一个空值到字符串,但后来修复了就没发现问题了,可否告知下如何复现这个问题呢?是不是用 safari 在浏览网页时出现的问题呢?
    macleek
        18
    macleek  
    OP
       2016-09-09 09:41:26 +08:00
    @itisthecon 我是使用的 Quicktime Player 屏幕录像,然后参考网上的一个方法, ffmpeg -i in.mov -s 600x400 -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > out.gif ,就能导出 gif 了
    itisthecon
        19
    itisthecon  
       2016-09-09 09:42:31 +08:00
    @macleek 多谢, 收藏了
    TangMonk
        20
    TangMonk  
       2016-09-09 09:55:01 +08:00
    厉害
    TangMonk
        21
    TangMonk  
       2016-09-09 10:09:26 +08:00
    这个可以关掉不?
    Alicewish
        22
    Alicewish  
       2016-09-09 10:19:00 +08:00 via iPhone
    @UnisandK RescueTime 订阅制好烦人,扣了我 N 个月直到卡刷爆…… Mac 上推荐下 Timing , 25 刀来着。
    Alicewish
        23
    Alicewish  
       2016-09-09 10:20:28 +08:00 via iPhone
    @macleek 推荐用 Gifox 录制,虽然有必需在低占用情况下才能正常使用的 Bug ……
    hilenlai
        24
    hilenlai  
       2016-09-09 10:27:30 +08:00
    @macleek

    ```
    Traceback (most recent call last):
    File "/usr/local/bin/tm", line 9, in <module>
    load_entry_point('trackmac==0.0.6', 'console_scripts', 'tm')()
    File "/Library/Python/2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
    File "/Library/Python/2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
    File "/Library/Python/2.7/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File "/Library/Python/2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File "/Library/Python/2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
    File "/Library/Python/2.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
    File "/Library/Python/2.7/site-packages/trackmac/main.py", line 50, in setup
    trackmac.utils.create_database()
    File "/Library/Python/2.7/site-packages/trackmac/utils.py", line 86, in create_database
    trackmac.models.BlockedApplication], safe=True)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3765, in create_tables
    create_model_tables(models, fail_silently=safe)
    File "/Library/Python/2.7/site-packages/peewee.py", line 5175, in create_model_tables
    m.create_table(**create_table_kwargs)
    File "/Library/Python/2.7/site-packages/peewee.py", line 4840, in create_table
    if fail_silently and cls.table_exists():
    File "/Library/Python/2.7/site-packages/peewee.py", line 4836, in table_exists
    return cls._meta.db_table in cls._meta.database.get_tables(**kwargs)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3893, in get_tables
    'type = ? ORDER BY name;', ('table',))
    File "/Library/Python/2.7/site-packages/peewee.py", line 3683, in execute_sql
    self.commit()
    File "/Library/Python/2.7/site-packages/peewee.py", line 3507, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3674, in execute_sql
    cursor = self.get_cursor()
    File "/Library/Python/2.7/site-packages/peewee.py", line 3622, in get_cursor
    return self.get_conn().cursor()
    File "/Library/Python/2.7/site-packages/peewee.py", line 3615, in get_conn
    self.connect()
    File "/Library/Python/2.7/site-packages/peewee.py", line 3595, in connect
    self.initialize_connection(self._local.conn)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3507, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3593, in connect
    **self.connect_kwargs)
    File "/Library/Python/2.7/site-packages/peewee.py", line 3862, in _connect
    conn = sqlite3.connect(database, **kwargs)
    peewee.OperationalError: unable to open database file
    ```

    用的 Mac 自带的 Python ,这个问题怎么解决?
    macleek
        25
    macleek  
    OP
       2016-09-09 10:34:06 +08:00
    @TangMonk
    这个确实很蛋疼,我也在想法解决, http://stackoverflow.com/questions/12333500/hide-python-rocket-dock-icon-when-using-scriptingbridge/21177802#21177802 ,这里有一个方法,不过要关掉 sip ,而且影响全局,还有一个方法是做成 app ,直接在 info.plist 里修改,但这样就没必要用 python 写了。。。
    macleek
        26
    macleek  
    OP
       2016-09-09 10:35:54 +08:00
    @hilenlai 可以开个 issue 嘛,检查下~/Library/Application\ Support/com.github.macleek.trackmac 有没有数据库文件,没有的话,tm setup 试下呗
    macleek
        27
    macleek  
    OP
       2016-09-09 10:37:34 +08:00
    @Alicewish 看上去蛮好,不过不太想装太多的 app 了,如果以后使用的频繁再用下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1237 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:12 · PVG 02:12 · LAX 10:12 · JFK 13:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.