NBA/NHL ics 파일 내려받기,그리고 편집.

곧 찬바람이 불고, NBA/NHL 시즌이 온다.
매년 그렇듯, 올해도 일정표를 캘린더에 넣어놓았다.

그런데, 역시나 매년, 캘린더를 옮기기가 영 까다롭다.
어떤 해는 그냥 ics 를 주기도 하지만, 또 어떤 해는 온라인 캘린더(구글, 아웃룩, 애플 등등)와 꼭 동기화를 해야만 하게끔 하기도 한다. 또, NBA 와 NHL 이 방식이 또 다르다.

현 시점에서 보자면,

  • NBA : Google, Apple, Outlook.com, Outlook 2010 이상, Hotmail.com, Office 365, 그리고 ics(webcal)
  • NHL : Google, Outlook (Outlook 계정이 아닌 프로그램). Outlook 이 ics 다.

이런 상황인데, 한 눈에 봐도 NBA 쪽이 더 폭넓은 지원을 해주고 있음이 보인다.

그냥 간단히 구글 계정과 동기화를 하면 별 문제는 없다. 다만, 확실하진 않으나, 전에 이렇게 했더니 경기가 끝난 후 경기 결과까지 캘린더에 반영되는 바람에, 알고 싶지 않은 정보를 얻게 되는 부작용도 있었다.

이 글에서는, 동기화없이 내 캘린더에 일정을 추가하는 방법에 대해 정리하려 한다.


NBA 의 경우, ics 를 선택하면, webcal://…..xx.ics 로 시작하는 주소를 넘겨준다. 이걸 ics 를 지원하는 캘린더에 입력하라는 뜻인데, 그냥 ics 파일을 받고 싶다면, 앞부분 webcal 을 http 로 바꿔준다.

그리고 브라우저에 입력하면, ics 파일을 받을 수 있다.

NHL 의 경우, Outlook 을 선택하면, webcal 로 시작하는 주소를 주긴 주는데.. NBA 처럼 친절하게 링크를 보여주지 않고, 연결된 프로그램으로 열 수만 있게 해준다.

Chrome 의 경우, xdg-open 이 실행되고, ics 를 열 수 있는 프로그램이 지정되지 않았다면, ‘해당 주소를 처리할 프로그램이나 핸들러를 찾을 수 없음’ 이란 오류를 낸다. 이때 webcal 주소가 표시되므로 그 주소를 복사하면 된다.

Firefox 의 경우, 좀 더 복잡해서, 일단은 ics 를 열 프로그램을 지정해줘야 한다. 그냥 텍스트편집기 같은 것을 정해주면, 편집기가 열리면서 오류가 발생하고, 여기에 주소가 표시된다. 이걸 역시 복사하면 된다.

NBA/NHL 모두 webcal 주소를 얻었으면, 그 주소를 http 로 바꾼 뒤, ics 파일을 얻는다.

(만약, 이렇게 ics 를 얻지 못한 상황이라면, 일단은 구글 캘린더에 동기화 시킨 후, 내보내기를 통해 ics 를 생성해야 한다.)

이 ics 파일을 구글캘린더에서 ‘가져오기’ 기능을 이용하여 추가하면 된다. 이러면 싱크기능은 꺼지기 때문에, 정보 누설(?)에 대한 염려는 할 필요가 없다.

다만, 이 파일엔 ‘광고’가 들어가 있다.
티켓 구매 정보, 뉴스 등등에 대한 광고가 매 일정에 들어있기 때문에, 일정을 보려고 클릭했을 때 쓸데없는(?) 문구까지 봐야만 한다.

이왕 ics 를 받았으니, 불필요한 정보는 삭제하는게 좋겠다.

ics 를 편집기로 열어보면, 여러 정보들이 있는데, 그 중 불필요한 필드는 이 부분이다.

DESCRIPTION:Watch live on  or on NBA League Pass | Follow us at @Pacers | J
 oin in #Pacers\n\nBuy Tickets\nhttps://l.ecal.com/1/YAct6IYg-U7/5d7cdffe32
 1fc6d91b8b456a\n\nSeason Tickets\nhttps://l.ecal.com/1/AfwXoRqQ5Cv/5d7cdff
 e321fc6d91b8b456a\n\nShop\nhttps://l.ecal.com/1/i1-8aCwJWCu/5d7cdffe321fc6
 d91b8b456a\n\nLatest News\nhttps://l.ecal.com/1/30ruE17fz1t/5d7cdffe321fc6
 d91b8b456a\n\nFacebook\nhttps://l.ecal.com/1/VeHOxwuqMY7/5d7cdffe321fc6d91
 b8b456a\n\nTwitter\nhttps://l.ecal.com/1/jz3Dfn7veaf/5d7cdffe321fc6d91b8b4
 56a\n\nInstagram\nhttps://l.ecal.com/1/89ljHlJqHeY/5d7cdffe321fc6d91b8b456
 a\n\nManage my ECAL\nhttps://support.ecal.com

이 부분을 지워주려면, Atom 또는 VS code 에서 다음과 같이 바꾸기를 실행하면 된다.

  • 찾기 : (DESCRIPTION:)Watch[\w\W]*?support.ecal.com
  • 바꾸기 : $1

** 20/21 시즌은 이렇다. (NHL 의 경우)

  • 찾기 : (DESCRIPTION:)GameCenter Link[\w\W]*?Powered by Rokt Calendar
  • 바꾸기 : $1

아예 Description 필드 자체가 없어도 되는지 여부는 모르겠으나, 그냥 빈칸으로 남겨도 별 무리는 없다.

이전에 쓴 글에선 조금 다른 Regex 를 사용했는데, 그건 제대로 되질 않았다. (그 땐 그걸로 성공했었나??)

원래 [\w\W] 자리엔 . 이 들어가야 한다. 그러나, . 은 newline 문자(\n)는 일치시키지 못한다. 따라서 [\w\W] 를 대신 썼다.

이렇게 바꿔준 뒤, 캘린더에 추가해주면 끝.


그런데, 만약 (어떤 이유에서든) 구글 캘린더에 입력이 잘못 되었다면?

NBA/NHL 은 팀당 90 경기 정도 치르기 때문에, 90개 정도 잘못 입력된 셈이고, 이를 지우려면, 90번 동일한 작업을 해야한다. 안타깝게도, 구글 캘린더는 아직까지도 일정 다중 삭제를 지원하지 않는다.

하나 하나 찾아가며 지워야 하는데…
그를 좀 더 손쉽게 하기 위한, gcalcli 라는 정말 빛나는 프로그램이 있다. 그에 대한 소개는 다음 글에서.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.