ics-query 0.1.1a0__tar.gz → 0.3.2b0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/.github/ISSUE_TEMPLATE/bug_report.md +2 -8
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/.github/workflows/tests.yml +35 -17
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/PKG-INFO +257 -51
- ics_query-0.3.2b0/README.md +453 -0
- ics_query-0.3.2b0/conftest.py +15 -0
- ics_query-0.3.2b0/ics-query.cmd +3 -0
- ics_query-0.3.2b0/ics-query.py +5 -0
- ics_query-0.3.2b0/ics_query/__init__.py +27 -0
- ics_query-0.3.2b0/ics_query/__main__.py +20 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/_version.py +2 -2
- ics_query-0.3.2b0/ics_query/cli.py +694 -0
- ics_query-0.3.2b0/ics_query/parse.py +87 -0
- ics_query-0.3.2b0/ics_query/query.py +78 -0
- ics_query-0.3.2b0/ics_query/tests/conftest.py +126 -0
- ics_query-0.3.2b0/ics_query/tests/runs/all --tz Singapore one-event.ics -.run +9 -0
- ics_query-0.3.2b0/ics_query/tests/runs/all three-events.ics -.run +33 -0
- ics_query-0.3.2b0/ics_query/tests/runs/at 2024-08-20 Berlin-Los-Angeles.ics -.run +23 -0
- ics_query-0.3.2b0/ics_query/tests/runs/between 20240823 4d recurring-work-events.ics -.run +24 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/Berlin-Los-Angeles.ics +381 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/empty-calendar.ics +7 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/empty-file.ics +0 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/one-event-without-timezone.ics +14 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/recurring-work-events.ics +223 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/simple-journal.ics +15 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/simple-todo.ics +15 -0
- ics_query-0.3.2b0/ics_query/tests/runs/calendars/three-events.ics +37 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first -c VJOURNAL -c VEVENT one-event.ics -.run +9 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first -c VJOURNAL one-event.ics -.run +0 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first -c VJOURNAL simple-journal.ics -.run +12 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first -c VTODO -c VJOURNAL simple-todo.ics -.run +10 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first -c VTODO simple-todo.ics -.run +10 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first empty-calendar.ics -.run +0 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first empty-file.ics -.run +0 -0
- ics_query-0.3.2b0/ics_query/tests/runs/first recurring-work-events.ics -.run +12 -0
- ics_query-0.3.2b0/ics_query/tests/test_command_line.py +72 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/test_parse_date.py +23 -5
- ics_query-0.3.2b0/ics_query/tests/test_parse_timedelta.py +40 -0
- ics_query-0.3.2b0/ics_query/version.py +46 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/pyproject.toml +21 -5
- ics_query-0.3.2b0/tox.ini +49 -0
- ics_query-0.1.1a0/README.md +0 -249
- ics_query-0.1.1a0/ics_query/__init__.py +0 -11
- ics_query-0.1.1a0/ics_query/__main__.py +0 -5
- ics_query-0.1.1a0/ics_query/cli.py +0 -260
- ics_query-0.1.1a0/ics_query/parse.py +0 -50
- ics_query-0.1.1a0/ics_query/tests/conftest.py +0 -90
- ics_query-0.1.1a0/ics_query/tests/test_command_line.py +0 -19
- ics_query-0.1.1a0/ics_query/version.py +0 -16
- ics_query-0.1.1a0/tox.ini +0 -20
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/.github/FUNDING.yml +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/.github/dependabot.yml +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/.gitignore +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/LICENSE +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics-query +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/__init__.py +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/at 2019-03-04 multiple-calendars.ics -.run +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/at 2019-03-04 one-event-twice.ics -.run +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/at 2019-03-04 one-event.ics -.run +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/at 2019-03-07 multiple-calendars.ics -.run +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/calendars/multiple-calendars.ics +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/calendars/one-event-twice.ics +0 -0
- {ics_query-0.1.1a0 → ics_query-0.3.2b0}/ics_query/tests/runs/calendars/one-event.ics +0 -0
|
@@ -27,15 +27,9 @@ assignees: ''
|
|
|
27
27
|
|
|
28
28
|
**Version:**
|
|
29
29
|
<!-- Which Version do you use? -->
|
|
30
|
-
v0.0.1
|
|
31
30
|
|
|
32
|
-
<!-- Sometimes, the problems are in other packages. You can provide an overview
|
|
33
|
-
by running this command and passing the output:
|
|
34
|
-
|
|
35
|
-
pip list
|
|
36
|
-
-->
|
|
37
31
|
```shell
|
|
38
|
-
|
|
32
|
+
$ ics-query --version
|
|
39
33
|
```
|
|
40
34
|
|
|
41
35
|
## Additional context
|
|
@@ -45,5 +39,5 @@ pip list
|
|
|
45
39
|
<!-- If possible, suggest a way of solving this or just let this text down there remain as it is. -->
|
|
46
40
|
|
|
47
41
|
- [ ] add an ICS file in `ics_query/tests/runs/calendars`
|
|
48
|
-
- [ ] add a test in `ics_query/tests/runs
|
|
42
|
+
- [ ] add a test in `ics_query/tests/runs`
|
|
49
43
|
- [ ] fix the bug and ensure the test code passes
|
|
@@ -14,14 +14,15 @@ jobs:
|
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
16
|
config:
|
|
17
|
-
# [Python version, tox env]
|
|
18
|
-
- ["3.9", "py39"]
|
|
19
|
-
- ["3.10", "py310"]
|
|
20
|
-
- ["3.11", "py311"]
|
|
21
|
-
- ["3.12", "py312"]
|
|
22
|
-
- ["3.9", "ruff"]
|
|
17
|
+
# [Python version, tox env, OS]
|
|
18
|
+
- ["3.9", "py39", "ubuntu-latest"]
|
|
19
|
+
- ["3.10", "py310", "ubuntu-latest"]
|
|
20
|
+
- ["3.11", "py311", "ubuntu-latest"]
|
|
21
|
+
- ["3.12", "py312", "ubuntu-latest"]
|
|
22
|
+
- ["3.9", "ruff", "ubuntu-latest"]
|
|
23
|
+
- ["3.11", "exe", "windows-latest"]
|
|
23
24
|
|
|
24
|
-
runs-on:
|
|
25
|
+
runs-on: ${{ matrix.config[2] }}
|
|
25
26
|
name: ${{ matrix.config[1] }}
|
|
26
27
|
steps:
|
|
27
28
|
- uses: actions/checkout@v4
|
|
@@ -29,14 +30,6 @@ jobs:
|
|
|
29
30
|
uses: actions/setup-python@v5
|
|
30
31
|
with:
|
|
31
32
|
python-version: ${{ matrix.config[0] }}
|
|
32
|
-
- name: Pip cache
|
|
33
|
-
uses: actions/cache@v4
|
|
34
|
-
with:
|
|
35
|
-
path: ~/.cache/pip
|
|
36
|
-
key: ${{ runner.os }}-pip-${{ matrix.config[0] }}-${{ hashFiles('setup.*', 'tox.ini') }}
|
|
37
|
-
restore-keys: |
|
|
38
|
-
${{ runner.os }}-pip-${{ matrix.config[0] }}-
|
|
39
|
-
${{ runner.os }}-pip-
|
|
40
33
|
- name: Install dependencies
|
|
41
34
|
run: |
|
|
42
35
|
python -m pip install --upgrade pip
|
|
@@ -44,7 +37,14 @@ jobs:
|
|
|
44
37
|
- name: Test
|
|
45
38
|
run: |
|
|
46
39
|
tox -e ${{ matrix.config[1] }}
|
|
47
|
-
|
|
40
|
+
- uses: actions/upload-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: dist-${{ matrix.config[1] }}-${{ matrix.config[2] }} # dist-exe-windows-latest
|
|
43
|
+
path: dist
|
|
44
|
+
if-no-files-found: ignore
|
|
45
|
+
retention-days: 1
|
|
46
|
+
compression-level: 0
|
|
47
|
+
|
|
48
48
|
deploy-tag-to-pypi:
|
|
49
49
|
name: Publish Package on PyPI
|
|
50
50
|
# only deploy on tags, see https://stackoverflow.com/a/58478262/1320237
|
|
@@ -95,6 +95,18 @@ jobs:
|
|
|
95
95
|
twine check dist/*
|
|
96
96
|
twine upload dist/*
|
|
97
97
|
|
|
98
|
+
# artifact-check:
|
|
99
|
+
# name: artifact check
|
|
100
|
+
# runs-on: ubuntu-latest
|
|
101
|
+
# needs:
|
|
102
|
+
# - run-tests
|
|
103
|
+
# steps:
|
|
104
|
+
# - uses: actions/download-artifact@v4
|
|
105
|
+
# with:
|
|
106
|
+
# pattern: dist-*
|
|
107
|
+
# path: dist
|
|
108
|
+
# - run: ls -R dist
|
|
109
|
+
|
|
98
110
|
github-release:
|
|
99
111
|
name: "Publish GitHub Release"
|
|
100
112
|
# only deploy on tags, see https://stackoverflow.com/a/58478262/1320237
|
|
@@ -105,9 +117,15 @@ jobs:
|
|
|
105
117
|
runs-on: ubuntu-latest
|
|
106
118
|
steps:
|
|
107
119
|
- uses: actions/checkout@v4
|
|
120
|
+
- uses: actions/download-artifact@v4
|
|
121
|
+
with:
|
|
122
|
+
pattern: dist-*
|
|
123
|
+
path: dist
|
|
124
|
+
- run: ls -R dist
|
|
108
125
|
- name: create release
|
|
109
126
|
uses: ncipollo/release-action@v1
|
|
110
127
|
with:
|
|
111
128
|
allowUpdates: true
|
|
112
129
|
body: "For a list of changes, please refer to the [Changelog](https://github.com/niccokunzmann/ics-query#changelog)."
|
|
113
|
-
generateReleaseNotes: false
|
|
130
|
+
generateReleaseNotes: false
|
|
131
|
+
artifacts: "dist/dist-exe-windows-latest/ics-query.exe"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ics-query
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.2b0
|
|
4
4
|
Summary: Find out what happens in ICS calendar files - query and filter RFC 5545 compatible .ics files for events, journals, TODOs and more.
|
|
5
5
|
Project-URL: Homepage, https://github.com/niccokunzmann/ics-query/
|
|
6
6
|
Project-URL: Repository, https://github.com/niccokunzmann/ics-query/
|
|
7
|
-
Project-URL: source_archive, https://github.com/niccokunzmann/ics-query/archive/
|
|
7
|
+
Project-URL: source_archive, https://github.com/niccokunzmann/ics-query/archive/594ac9795b0598b83ad10972c984519dfb3c7b12.zip
|
|
8
8
|
Project-URL: Issues, https://github.com/niccokunzmann/ics-query/issues
|
|
9
9
|
Project-URL: Documentation, https://github.com/niccokunzmann/ics-query/
|
|
10
10
|
Project-URL: Changelog, https://github.com/niccokunzmann/ics-query/#changelog
|
|
@@ -686,7 +686,7 @@ License: GNU GENERAL PUBLIC LICENSE
|
|
|
686
686
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
687
687
|
License-File: LICENSE
|
|
688
688
|
Keywords: calendar,command line,icalendar,ics,rfc5545,scheduling
|
|
689
|
-
Classifier: Development Status ::
|
|
689
|
+
Classifier: Development Status :: 4 - Beta
|
|
690
690
|
Classifier: Intended Audience :: Developers
|
|
691
691
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
692
692
|
Classifier: Operating System :: OS Independent
|
|
@@ -695,38 +695,62 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
695
695
|
Classifier: Programming Language :: Python :: 3.11
|
|
696
696
|
Classifier: Programming Language :: Python :: 3.12
|
|
697
697
|
Classifier: Topic :: Office/Business :: Scheduling
|
|
698
|
-
Requires-Python: >=3.
|
|
698
|
+
Requires-Python: >=3.9
|
|
699
699
|
Requires-Dist: click
|
|
700
700
|
Requires-Dist: icalendar
|
|
701
|
-
Requires-Dist: recurring-ical-events
|
|
701
|
+
Requires-Dist: recurring-ical-events<4,>=3.2.0
|
|
702
|
+
Requires-Dist: tzlocal
|
|
703
|
+
Requires-Dist: x-wr-timezone
|
|
702
704
|
Provides-Extra: test
|
|
703
705
|
Requires-Dist: pytest; extra == 'test'
|
|
704
706
|
Description-Content-Type: text/markdown
|
|
705
707
|
|
|
706
708
|
# ics-query
|
|
707
709
|
|
|
710
|
+
[][GitHub Actions]
|
|
711
|
+
[][PyPI]
|
|
712
|
+
[][PyPI]
|
|
713
|
+
[][Open Collective]
|
|
714
|
+
[][Polar]
|
|
715
|
+
|
|
708
716
|
<!-- Change description also in pyproject.toml -->
|
|
709
717
|
Find out what happens in ICS calendar files - query and filter RFC 5545 compatible `.ics` files for events, journals, TODOs and more.
|
|
710
718
|
|
|
711
719
|
## Installation
|
|
712
720
|
|
|
713
|
-
You can install this package from the [PyPI]
|
|
721
|
+
You can install this package from the [PyPI].
|
|
714
722
|
|
|
715
723
|
```shell
|
|
716
724
|
pip install ics-query
|
|
717
725
|
```
|
|
718
726
|
|
|
727
|
+
For **Windows**, you can download `ics-query.exe` from our [Releases].
|
|
728
|
+
|
|
729
|
+
## Support
|
|
730
|
+
|
|
731
|
+
- Support using [GitHub Sponsors]
|
|
732
|
+
- Fund specific issues using [Polar]
|
|
733
|
+
- Support using [Open Collective]
|
|
734
|
+
- Support using [thanks.dev]
|
|
735
|
+
|
|
736
|
+
We accept donations to sustain our work, once or regular.
|
|
737
|
+
Consider donating money to open-source as everyone benefits.
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
719
741
|
## Usage
|
|
720
742
|
|
|
721
|
-
|
|
743
|
+
`ics-query` is a command line tool that aims to make icalendar occurance calculations
|
|
744
|
+
accessible and easy.
|
|
745
|
+
This section walks you though the different functionalities.
|
|
722
746
|
|
|
723
747
|
### Examples
|
|
724
748
|
|
|
725
|
-
You can
|
|
726
|
-
In this example, we show which German National Holidays
|
|
749
|
+
You can get a calendar from the web and see what is on.
|
|
750
|
+
In this example, we show which German National Holidays happening in August 2024:
|
|
727
751
|
|
|
728
752
|
```shell
|
|
729
|
-
$ wget -qO- 'https://www.calendarlabs.com/ical-calendar/ics/46/Germany_Holidays.ics' |
|
|
753
|
+
$ wget -qO- 'https://www.calendarlabs.com/ical-calendar/ics/46/Germany_Holidays.ics' | ics-query at 2024-08 - -
|
|
730
754
|
BEGIN:VEVENT
|
|
731
755
|
SUMMARY:Assumption Day (BY\, SL)
|
|
732
756
|
DTSTART;VALUE=DATE:20240815
|
|
@@ -767,100 +791,212 @@ BEGIN:VEVENT
|
|
|
767
791
|
...
|
|
768
792
|
```
|
|
769
793
|
|
|
794
|
+
#### Piping calendars
|
|
795
|
+
|
|
796
|
+
You can pipe one or more calendars into the input.
|
|
797
|
+
|
|
798
|
+
```shell
|
|
799
|
+
cat calendar.ics | ics-query first -
|
|
800
|
+
```
|
|
801
|
+
|
|
770
802
|
### Events at Certain Times
|
|
771
803
|
|
|
772
804
|
You can query which events happen at certain times:
|
|
773
805
|
|
|
774
806
|
```shell
|
|
775
|
-
ics-query at
|
|
807
|
+
ics-query at TIME calendar.ics -
|
|
776
808
|
```
|
|
777
809
|
|
|
778
|
-
|
|
810
|
+
The format of TIME:
|
|
811
|
+
|
|
812
|
+
| TIME | description |
|
|
813
|
+
| ------- | ----------- |
|
|
814
|
+
| `2019` | the whole year 2019 |
|
|
815
|
+
| `2019-08` | August 2019 |
|
|
816
|
+
| `2019-08-12` | 12th of August 2019 |
|
|
817
|
+
| `2019-08-12T17` | 17:00-18:00 at the 12th of August 2019 |
|
|
818
|
+
| `2019-08-12T17:20` | 17:20-17:21 at the 12th of August 2019 |
|
|
819
|
+
| `2019-08-12T17:20:00` | 17:20 at the 12th of August 2019 |
|
|
820
|
+
|
|
779
821
|
|
|
780
822
|
Please see the command documentation for more help:
|
|
781
823
|
|
|
782
824
|
```shell
|
|
783
|
-
ics-query --help
|
|
784
825
|
ics-query at --help
|
|
826
|
+
ics-query --help
|
|
785
827
|
```
|
|
786
828
|
|
|
787
|
-
|
|
829
|
+
You can get all **events** that happen at a certain **day**.
|
|
788
830
|
|
|
789
|
-
|
|
831
|
+
```shell
|
|
832
|
+
ics-query at --components VEVENT 2029-12-24 calendar.ics
|
|
833
|
+
```
|
|
790
834
|
|
|
791
|
-
|
|
835
|
+
You can get all **events** that happen **today**.
|
|
792
836
|
|
|
793
|
-
|
|
837
|
+
```shell
|
|
838
|
+
ics-query at --components VEVENT `date +%Y-%m-%d` calendar.ics
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
You can get all **TODO**s that happen in a certain **month**.
|
|
794
842
|
|
|
795
843
|
```shell
|
|
796
|
-
ics-query --components
|
|
844
|
+
ics-query at --components VTODO 2029-12-24 calendar.ics
|
|
797
845
|
```
|
|
798
846
|
|
|
799
|
-
|
|
847
|
+
### Events within a Time Span
|
|
848
|
+
|
|
849
|
+
You can query which events happen between certain times:
|
|
800
850
|
|
|
801
851
|
```shell
|
|
802
|
-
ics-query
|
|
852
|
+
ics-query between START END calendar.ics -
|
|
853
|
+
ics-query between START DURATION calendar.ics -
|
|
803
854
|
```
|
|
804
855
|
|
|
805
|
-
|
|
856
|
+
Please see the command documentation for more help:
|
|
806
857
|
|
|
807
858
|
```shell
|
|
808
|
-
ics-query --
|
|
859
|
+
ics-query between --help
|
|
860
|
+
ics-query --help
|
|
809
861
|
```
|
|
810
862
|
|
|
811
|
-
|
|
863
|
+
The format of START and END with examples:
|
|
812
864
|
|
|
865
|
+
| START or END | Description |
|
|
866
|
+
| ------- | ----------- |
|
|
867
|
+
| `2019` | the whole year 2019 |
|
|
868
|
+
| `2019-08` | August 2019 |
|
|
869
|
+
| `2019-08-12` | 12th of August 2019 |
|
|
870
|
+
| `2019-08-12T17` | 17:00-18:00 at the 12th of August 2019 |
|
|
871
|
+
| `2019-08-12T17:20` | 17:20-17:21 at the 12th of August 2019 |
|
|
872
|
+
| `2019-08-12T17:20:00` | 17:20 at the 12th of August 2019 |
|
|
813
873
|
|
|
814
|
-
|
|
874
|
+
Instead of an absolute time, you can specify a duration after the START.
|
|
875
|
+
The `+` is optional.
|
|
815
876
|
|
|
877
|
+
| DURATION | Description |
|
|
878
|
+
| ------- | ----------- |
|
|
879
|
+
| `+1d` | one more day |
|
|
880
|
+
| `+1h` | one more hour |
|
|
881
|
+
| `+1m` | one more minute |
|
|
882
|
+
| `+1s` | one more second |
|
|
883
|
+
| `+3600s` | one more hour or 3600 seconds |
|
|
884
|
+
| `+5d10h` | five more days and 10 more hours |
|
|
816
885
|
|
|
817
|
-
###
|
|
886
|
+
### Time Span Examples
|
|
818
887
|
|
|
888
|
+
This example returns the occurrences within the **next week**:
|
|
819
889
|
|
|
820
|
-
|
|
890
|
+
```shell
|
|
891
|
+
ics-query between `date +%Y%m%d` +7d calendar.ics -
|
|
892
|
+
```
|
|
821
893
|
|
|
822
|
-
|
|
894
|
+
This example saves the **events** from the **1st of May 2024 to the 10th of June** in
|
|
895
|
+
events.ics:
|
|
896
|
+
|
|
897
|
+
```shell
|
|
898
|
+
ics-query between --component VEVENT 2024-5-1 2024-6-10 calendar.ics events.ics
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
In this example, you can check what is happening on **New Years Eve 2025** around
|
|
902
|
+
midnight:
|
|
903
|
+
|
|
904
|
+
```shell
|
|
905
|
+
ics-query between 2025-12-31T21:00 +6h calendar.ics events.ics
|
|
906
|
+
```
|
|
823
907
|
|
|
824
908
|
### `ics-query all` - the whole calendar
|
|
825
909
|
|
|
826
|
-
|
|
910
|
+
You can get everything that is happening in a calendar but that can be a lot!
|
|
827
911
|
|
|
828
912
|
```shell
|
|
829
|
-
ics-query
|
|
830
|
-
ics-query between dt duration
|
|
913
|
+
ics-query all calendar.ics
|
|
831
914
|
```
|
|
832
915
|
|
|
833
|
-
###
|
|
916
|
+
### Filtering Components
|
|
834
917
|
|
|
918
|
+
We support different component types: `VEVENT`, `VJOURNAL` and `VTODO`.
|
|
919
|
+
By default, we include all types in the result.
|
|
835
920
|
|
|
836
|
-
|
|
921
|
+
You can specify which components you would like to get using the
|
|
922
|
+
`--component` or `-c` parameter.
|
|
837
923
|
|
|
924
|
+
```shell
|
|
925
|
+
-c VEVENT # only events
|
|
926
|
+
-c VTODO # only TODOs
|
|
927
|
+
-c VJOURNAL # only journal entries
|
|
928
|
+
-c VEVENT -c VTODO # only events and journal entries
|
|
929
|
+
```
|
|
838
930
|
|
|
839
|
-
|
|
931
|
+
This example returns the first event of a calendar.
|
|
840
932
|
|
|
841
|
-
|
|
933
|
+
```shell
|
|
934
|
+
ics-query first -c VEVENT calendar.ics -
|
|
935
|
+
```
|
|
842
936
|
|
|
843
|
-
|
|
937
|
+
This option is also available as `ICS_QUERY_COMPONENT` variable.
|
|
844
938
|
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
939
|
+
```shell
|
|
940
|
+
export ICS_QUERY_COMPONENT=VEVENT
|
|
941
|
+
# from now on, you will get only events
|
|
942
|
+
ics-query first calendar.ics
|
|
943
|
+
```
|
|
850
944
|
|
|
851
|
-
|
|
945
|
+
Please see the command documentation for more help:
|
|
852
946
|
|
|
853
947
|
```shell
|
|
854
|
-
|
|
948
|
+
ics-query --help
|
|
855
949
|
```
|
|
856
950
|
|
|
857
|
-
## Notifications
|
|
858
951
|
|
|
859
|
-
|
|
952
|
+
### Timezones
|
|
860
953
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
954
|
+
You can set the timezone of the query, otherwise the event's local timezone is used and you
|
|
955
|
+
might miss events in your own timezone.
|
|
956
|
+
|
|
957
|
+
The first event at New Year 2000 in the **event's local time**:
|
|
958
|
+
|
|
959
|
+
```shell
|
|
960
|
+
ics-query at 2000-01-01 calendar.ics
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
The first event at New Year 2000 in **your local time**:
|
|
964
|
+
|
|
965
|
+
```shell
|
|
966
|
+
ics-query at --tz=localtime 2000-01-01 calendar.ics
|
|
967
|
+
```
|
|
968
|
+
|
|
969
|
+
The first event at New Year 2000 in **UTC**:
|
|
970
|
+
|
|
971
|
+
```shell
|
|
972
|
+
ics-query at --tz=UTC 2000-01-01 calendar.ics
|
|
973
|
+
```
|
|
974
|
+
|
|
975
|
+
The first event at New Year 2000 in **Berlin time**:
|
|
976
|
+
|
|
977
|
+
```shell
|
|
978
|
+
ics-query at --tz=Europe/Berlin 2000-01-01 calendar.ics
|
|
979
|
+
```
|
|
980
|
+
|
|
981
|
+
You can also use the `ICS_QUERY_TZ` variable.
|
|
982
|
+
|
|
983
|
+
```shell
|
|
984
|
+
export ICS_QUERY_TZ=localtime
|
|
985
|
+
# from now on, we use your local time
|
|
986
|
+
ics-query at 2000-01-01 calendar.ics
|
|
987
|
+
```
|
|
988
|
+
|
|
989
|
+
For all avaiable timezones see:
|
|
990
|
+
|
|
991
|
+
```shell
|
|
992
|
+
ics-query --available-timezones
|
|
993
|
+
```
|
|
994
|
+
|
|
995
|
+
Please see the command documentation for more help:
|
|
996
|
+
|
|
997
|
+
```shell
|
|
998
|
+
ics-query --help
|
|
999
|
+
```
|
|
864
1000
|
|
|
865
1001
|
## Version Fixing
|
|
866
1002
|
|
|
@@ -877,7 +1013,7 @@ while `b` and `c` can change.
|
|
|
877
1013
|
|
|
878
1014
|
## Development
|
|
879
1015
|
|
|
880
|
-
This section should set you up for
|
|
1016
|
+
This section should set you up for developing `ics-query`.
|
|
881
1017
|
|
|
882
1018
|
### Testing
|
|
883
1019
|
|
|
@@ -920,13 +1056,13 @@ Run this to format the code and show problems:
|
|
|
920
1056
|
tox -e ruff
|
|
921
1057
|
```
|
|
922
1058
|
|
|
923
|
-
|
|
1059
|
+
### New Release
|
|
924
1060
|
|
|
925
1061
|
To release new versions,
|
|
926
1062
|
|
|
927
1063
|
1. edit the Changelog Section
|
|
928
1064
|
2. create a commit and push it
|
|
929
|
-
3. wait for [GitHub Actions]
|
|
1065
|
+
3. wait for [GitHub Actions] to finish the build
|
|
930
1066
|
4. create a tag and push it
|
|
931
1067
|
|
|
932
1068
|
```shell
|
|
@@ -938,10 +1074,34 @@ To release new versions,
|
|
|
938
1074
|
|
|
939
1075
|
## Changelog
|
|
940
1076
|
|
|
1077
|
+
- v0.3.2b
|
|
1078
|
+
|
|
1079
|
+
- Fix that `--tz localtime` would use `localtime` as timezone name instead of the local timezone name.
|
|
1080
|
+
- Fix tests on Windows
|
|
1081
|
+
- Add Windows .exe build artifact
|
|
1082
|
+
|
|
1083
|
+
- v0.3.1b
|
|
1084
|
+
|
|
1085
|
+
- Add `--license` option
|
|
1086
|
+
|
|
1087
|
+
- v0.3.0b
|
|
1088
|
+
|
|
1089
|
+
- Add `--tz` timezone parameter
|
|
1090
|
+
- Add `ics-query all` to get all occurrences
|
|
1091
|
+
|
|
1092
|
+
- v0.2.1a
|
|
1093
|
+
|
|
1094
|
+
- Add `--component` to filter component types VEVENT, VJOURNAL and VTODO
|
|
1095
|
+
|
|
1096
|
+
- v0.2.0a
|
|
1097
|
+
|
|
1098
|
+
- Add `ics-query first <calendar> <output>` for earliest occurrences
|
|
1099
|
+
- Add `ics-query between <span_start> <span_stop> <calendar> <output>` to query time ranges
|
|
1100
|
+
|
|
941
1101
|
- v0.1.1a
|
|
942
1102
|
|
|
943
1103
|
- Add `--version`
|
|
944
|
-
- Add `ics-query at <date>`
|
|
1104
|
+
- Add `ics-query at <date> <calendar> <output>`
|
|
945
1105
|
- Add support for multiple calendars in one input
|
|
946
1106
|
|
|
947
1107
|
- v0.1.0a
|
|
@@ -952,3 +1112,49 @@ To release new versions,
|
|
|
952
1112
|
- v0.0.1a
|
|
953
1113
|
|
|
954
1114
|
- first version
|
|
1115
|
+
|
|
1116
|
+
## Related Work
|
|
1117
|
+
|
|
1118
|
+
- [icalBuddy](https://hasseg.org/icalBuddy/)
|
|
1119
|
+
- [Blog Post](https://opencollective.com/open-web-calendar/updates/calendar-calculation-on-the-command-line-ics-query)
|
|
1120
|
+
- [#icsquery on mastodon](https://toot.wales/tags/icsquery)
|
|
1121
|
+
|
|
1122
|
+
## Vision
|
|
1123
|
+
|
|
1124
|
+
This section shows where we would like to get to.
|
|
1125
|
+
|
|
1126
|
+
### `ics-query --select-index` - reduce output size
|
|
1127
|
+
|
|
1128
|
+
Examples: `0,2,4` `0-10`
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
### `ics-query --select-uid` - filter by uid
|
|
1132
|
+
|
|
1133
|
+
### How to edit an event
|
|
1134
|
+
|
|
1135
|
+
To edit a component like an event, you can append it to the calendar and increase the sequence number.
|
|
1136
|
+
|
|
1137
|
+
Example:
|
|
1138
|
+
|
|
1139
|
+
1. get the event `--select-index=0`
|
|
1140
|
+
2. change the summary
|
|
1141
|
+
3. increase sequence number
|
|
1142
|
+
4. add the event to the end of the calendar file
|
|
1143
|
+
5. show that the occurrence has changed
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
### Notifications
|
|
1147
|
+
|
|
1148
|
+
Examples:
|
|
1149
|
+
|
|
1150
|
+
- There are x todos in the next hour
|
|
1151
|
+
- There are x events today
|
|
1152
|
+
- Please write a journal entry!
|
|
1153
|
+
|
|
1154
|
+
[PyPI]: https://pypi.org/project/ics-query/
|
|
1155
|
+
[GitHub Actions]: https://github.com/niccokunzmann/ics-query/actions
|
|
1156
|
+
[Open Collective]: https://opencollective.com/open-web-calendar/
|
|
1157
|
+
[Polar]: https://polar.sh/niccokunzmann/ics-query
|
|
1158
|
+
[GitHub Sponsors]: https://github.com/sponsors/niccokunzmann
|
|
1159
|
+
[thanks.dev]: https://thanks.dev
|
|
1160
|
+
[Releases]: https://github.com/niccokunzmann/ics-query/releases
|