Terminal pogryzł człowieka: gcalcli
W zabieganych czasach zabiegani ludzie potrzebują coraz to lepszych wspomagaczy witaminowych (aby pamiętać) lub coraz doskonalszych organizerów. Tutaj od wieków prym wiedzie skrawek serwetki z restauracji, ale i nasze komputery mogą być do tego przydatne. Wystarczy odpowiednie oprogramowanie, które będzie na tyle wygodne i czytelne w obsłudze, że organizowanie za jego pomocą naszych spotkań i kontrolowanie tych już zaplanowanych to będzie czysta przyjemność. Dlatego warto sięgać po rozwiązania używane przez tysiące zadowolonych – czyli Kalendarz Google. Za sprawą gcalcli dostępnego również w tekstowej, czytelniejszej formie.
Program gcalcli znajdziemy w repozytoriach niemal wszystkich dystrybucji i jego instalacja nie powinna nastręczać żadnych trudności. Sam gcalcli został popełniony w Pythonie i umożliwia dostęp do naszego Kalendarza Google wprost z linii komend. Będziemy mogli przeszukiwać i dodawać nasze zaplanowane zajęcia, terminy spotkań, a dodatkowo program może posłużyć również za „przypominacza” o zbliżającym się wydarzeniu. Pierwsze uruchomienie programu przeniesie nas do przeglądarki internetowej, gdzie Kalendarz Google poprosi nas o autoryzację dla gcalcli (w celu dostępu do naszego terminarza, o ile ktoś posiada takowy).
Gcalcli obsługuje się podając mu jedną z komend:
Commands: list list all calendars search <text> search for events - case insensitive search terms to find events that match these terms in any field, like traditional Google search with quotes, exclusion, etc. - for example to get just games: "soccer -practice" agenda [start] [end] get an agenda for a time period - start time default is 12am today - end time default is 5 days from start - example time strings: '9/24/2007' '24/09/2007' '24/9/07' 'Sep 24 2007 3:30pm' '2007-09-24T15:30' '2007-09-24T15:30-8:00' '20070924T15' '8am' calw <weeks> [start] get a week based agenda in a nice calendar format - weeks is the number of weeks to display - start time default is beginning of this week - note that all events for the week(s) are displayed calm [start] get a month agenda in a nice calendar format - start time default is the beginning of this month - note that all events for the month are displayed and only one month will be displayed quick <text> quick add an event to a calendar - a single --calendar must specified - the "--details url" option will show the event link - example text: 'Dinner with Eric 7pm tomorrow' '5pm 10/31 Trick or Treat' add add a detailed event to a calendar - a single --calendar must specified - the "--details url" option will show the event link - example: gcalcli --calendar 'Eric Davis' --title 'Analysis of Algorithms Final' --where UCI --when '12/14/2012 10:00' --duration 60 --description 'It is going to be hard!' --reminder 30 add delete <text> [start] [end] delete event(s) within the optional time period - case insensitive search terms to find and delete events, just like the 'search' command - deleting is interactive use the --iamaexpert option to auto delete THINK YOU'RE AN EXPERT? USE AT YOUR OWN RISK!!! - use the --details options to show event details - [start] and [end] use the same formats as agenda edit <text> edit event(s) - case insensitive search terms to find and edit events, just like the 'search' command - editing is interactive import [file] import an ics/vcal file to a calendar - a single --calendar must specified - if a file is not specified then the data is read from standard input - if -v is given then each event in the file is displayed and you're given the option to import or skip it, by default everything is imported quietly without any interaction - if -d is given then each event in the file is displayed and is not imported, a --calendar does not need to be specified for this option remind <mins> <command> execute command if event occurs within <mins> minutes time ('%s' in <command> is replaced with event start time and title text) - <mins> default is 10 - default command: 'notify-send -u critical -a gcalcli %s'
Całość sprowadza się zatem do wyświetlania kalendarza na cały miesiąc (calm), tydzień (calw), dodawania wydarzeń (add lub quick), kasowania ich (delete) lub wyszukiwania (search). Dodatkowo gcalcli posiada cały tabun dodatkowych parametrów pozwalających na doprecyzowanie stylu wyświetlania, kolorów i tak dalej. To wszystko znajdzie zastosowanie szczególnie, gdy zechcemy wyświetlić kalendarz na naszym pulpicie (conky).
Dodawanie spotkań w linii komend? Kto to wymyślił… A jednak to proste i przyjemne zajęcie. Wystarczy:
dhor@xpees:~$ gcalcli quick "dzisaj o 20 film" dhor@xpees:~$ gcalcli calw -w 12 ┌────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐ │niedziela │poniedziałek│wtorek │środa │czwartek │piątek │sobota │ ├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤ │22 maj ** │23 maj │24 maj │25 maj │26 maj │27 maj │28 maj │ │ │ │ │ │ │ │ │ │------------│ │ │ │Boże Ciało │ │ │ │ │ │ │ │ │ │ │ │8:00 │ │ │ │Dzień Matki │ │ │ │Wyjazd. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │8:00 dzisaj │ │ │ │ │ │ │ │film │ │ │ │ │ │ │ └────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘ dhor@xpees:~$ gcalcli delete "dzisaj film" 2016-05-22 8:00 dzisaj film Delete? [N]o [y]es [q]uit: y Deleted! dhor@xpees:~$ gcalcli quick "Dzisiaj o 20 fajny film" dhor@xpees:~$ gcalcli calw -w 12 ┌────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐ │niedziela │poniedziałek│wtorek │środa │czwartek │piątek │sobota │ ├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤ │22 maj ** │23 maj │24 maj │25 maj │26 maj │27 maj │28 maj │ │ │ │ │ │ │ │ │ │------------│ │ │ │Boże Ciało │ │ │ │ │ │ │ │ │ │ │ │8:00 │ │ │ │Dzień Matki │ │ │ │Wyjazd. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │8:00 │ │ │ │ │ │ │ │Dzisiaj │ │ │ │ │ │ │ │fajny film │ │ │ │ │ │ │ └────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘
Proste dodanie wydarzenia, usunięcie go z powodu literówek i ponowne dodanie jak należy. Oczywiście można też było użyć opcji edit.
Ważna uwaga – co najmniej w przypadku Ubuntu 16.04 wymagane przez program komponenty Pythona google-api-python-client i oauth2client są w różnych wersjach. Może to powodować informację o błędzie podczas importu modułu LockedFiles. Aby się go pozbyć instalujemy python-pip i:
pip install google-api-python-client==1.4.2
pip install oauth2client==1.4.12