在polybar或i3bar中显示下一个google日历事件

i3-agenda的Python项目详细描述


AUR versionPyPI

这是什么?在

这是一个与Google日历API通信的脚本,它将遍历您的日历并打印下一个日历事件的详细信息。
你可以把这个输出显示在你的i3bar或polybar上

example

它是如何工作的

它将从每个日历中读取您接下来的10个事件,然后浏览所有事件并找出哪一个最接近。
它将打印最近事件的时间和标题。在

设置

谷歌API

https://developers.google.com/calendar/quickstart/python

  1. 您需要创建一个Google API项目并下载OAuth 2.0凭据json文件。
    首先需要创建一个项目here,然后添加Google日历支持,然后下载凭证.json文件。
    或者,您可以使用this link并单击“启用Google日历API”。这将创建一个项目,添加Google日历支持,并让您只需单击一下就可以下载文件
    如果有问题,可以使用本教程了解更多信息https://developers.google.com/calendar/auth
    如果您仍然有问题,可以在这里找到另一个很好的指南:https://github.com/jay0lee/GAM/wiki/CreatingClientSecretsFile。在
  2. 将凭据文件下载到计算机上的某个位置。在
  3. 进入安装阶段。在

安装

下载凭据文件后,安装包。在

Pip

  1. sudo pip install i3-agenda
  2. 尝试运行i3-agenda -c $CREDENTIALS_FILE_PATH,将“$CREDENTIALS\u FILE\u PATH”替换为凭证.json在上一步中下载的文件。在
  3. 将配置添加到您的工具栏(下面的示例部分中的示例)。在

Arch Linux(AUR)

  1. yay -S i3-agenda-git
  2. 尝试运行i3-agenda -c $CREDENTIALS_FILE_PATH,并将“$CREDENTIALS_FILE_PATH”替换为凭证.json在上一步中下载的文件。在
  3. 将配置添加到您的工具栏(下面的示例部分中的示例)。在

手动

依赖性

您需要先安装一些python库。
确保python3是默认的python3。
运行sudo pip3 install python-bidi google-api-python-client google-auth-httplib2 google-auth-oauthlib

  1. 将repo克隆到本地目录cd ~/ && git clone https://github.com/rosenpin/i3-agenda && cd i3-agenda
  2. 运行脚本python3 i3_agenda/__init__.py -c $CREDENTIALS_FILE_PATH,将“$CREDENTIALS_FILE_PATH”替换为凭证.json在上一步中下载的文件。如果配置正确,它将提示您在浏览器中登录,接受所有内容。它会打印你的下一个活动。在
  3. 可选:您可以运行sudo python setup.py install将脚本添加到您的路径中,这样您就可以在任何地方运行i3-agenda。在
  4. 将配置添加到您的工具栏(下面的示例部分中的示例)。在

使用

  -h, --help            show this help message and exit
  --credentials CREDENTIALS, -c CREDENTIALS
                        path to your credentials.json file
  --cachettl CACHETTL, -ttl CACHETTL
                        time for cache to be kept in minutes
  --update, -u          when using this flag it will not load previous results from cache, it will however save new results to cache. You can use this flag to refresh all the cache forcefully
  --ids IDS [IDS ...], -i IDS [IDS ...]
                        list of calendar ids to fetch, space separated. If none is specified all calendars will be fetched
  --maxres MAXRES, -r MAXRES
                        max number of events to query Google's API for each of your calendars. Increase this number if you have lot of events in your google calendar
  --today, -d           print only today events
  --no-event-text TEXT  text to display when there are no events
  --hide-event-after MINUTES
                        minutes to show events after they start before showing the next event. If not specified, the current event will be shown until it ends

筛选显示的日历

要只显示某些日历中的事件,请使用--ids参数并传递一个日历id列表,以空格分隔。
要获取日历id,您可以在Google上查看日历的设置页面(如果没有共享,通常是所有者电子邮件)。
将列表留空将获取所有日历(默认行为)。在

注释

已知问题

如果您有超过10个全天事件,它可能无法正常工作,这可以通过增加maxResults变量来解决。在

缓存

它使用了一种缓存机制,这样你就不必每分钟都联系Google服务器,要设置缓存TTL,请使用-TTL标志。
示例:i3-agenda --ttl 60将TTL设置为60(这意味着它将每小时再次与Google联系)。
这意味着,如果创建新事件,脚本可能需要一个小时才能识别它。在

示例

polybar配置示例:

^{pr2}$

示例I3块配置:

[i3-agenda]
command=i3-agenda -c ~/.google_credentials.json -ttl 60
interval=60

脚本输出示例:
10:55 Grocery shopping

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpring重定向请求处理程序   SwingJava:拆分字符串并将其放入文本区域的   Java:标记“”上出现语法错误,此标记后面应为表达式   web服务Java RestService从日志文件写入和读取数据   java如何将ArrayList<String>转换为char数组,然后向后打印每个单词?   java SimpleDataFormat解析返回年终日期   加密Java aes解密bytebuffer,包括填充为空字节   java有没有办法从特定的if语句调用变量?   java从更新返回到渲染   spring GRPC Java登录测试   java为什么下面的代码不工作(StringBuffer.toString!=null)   java是一种可行的模式吗?   使用Spring集成测试的JavaOSGi片段   java jCommander为未知和未使用的值引发异常?   在imageView的editText中输入的java图像URL