在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第三方库


热门话题
java根据选择随机设置图标   java如何将Android Studio与本地服务器数据库SQL server 2008连接?   java在点击鼠标后绘制一个椭圆形   java选项窗格相对于其父项的位置   java如何在Android中的switch case中使用String[]输入?   安卓无法从“15.0.1”确定java版本   如果满足特定条件,java是否重置计时器?   java是一个实体类,可以在OOAD中返回其他实体实例吗?   bash将对jar文件| cut | awk和java程序的调用集成到一个统一进程中   Spring安全更新身份验证成功时的最后登录日期   数据库身份验证中基于Java控制台的客户端服务器登录应用程序错误   java Selenium junit测试失败,驱动程序过早获取URL   java LibGdx多点触摸事件混淆   带扫描仪的java打印空间   来自旧版应用程序的java springcloudsleuth头   java如何实现模板设计模式?   java如何比较具有多个值的键的两个映射?   读取时R中的java MemoryError。xlsx