【Google Colab】市役所のイベントデータがICS形式になっていたので。。カレンダー作ってみました【Python】 

なんと!カレンダーに登録ボタン!!

北多摩あたりのイベント情報アプリ

https://kodairashuuhen.glideapp.io

これ、手作業でイベント情報をあつめて、作ってくれているんです。本当にあたまが下がります。

それで、少しでも楽にしてあげられないかな??って前から思っていて、イベント情報なども、もっと二次利用しやすいように。。 某 市役所の方にお話ししたりしていました。

で・・・稲城市のイベントデータ加工を、少ししたことをFacebookGroupで話題にしたところ。。

【Python】エクセルファイルを開いて、適当にデータを整形して取り出す方法【稲城市のデータだけどね】
便利な言語 Python ライブラリーとかが豊富だし、なにより、Jupyter Notebookという使いやすい実行環境があったり、Bin...

なんと!! 小平市には、カレンダー登録ボタンがあって、ICSファイルがあるとのこと!!

イベントページにまでたどり着ければ。。 これすっごく便利ですよ!自分のスマホのカレンダーに登録できちゃいます!!

が・・・ここにたどり着けないのよね。。

イベントのページは、こちらなんですが。。

イベント|東京都小平市公式ホームページ

これの詳細に行かないと出てこないんです。

どうせICS形式にしているのなら、Facebookのイベントで、興味があるってやったやつは自動でICSにしてくれるように。。全部が一つになってたらなぁ~って。。 ことで、ひとつのファイルにしてしまいました。

ICS形式ファイルは、LOCATION以外はきちんと情報入っているようなので、Googleカレンダーに取り込むとこんな感じになっています。

結構便利っぽい(笑)

どうやってやった??

まぁいろんなやり方あるんですが。。最近 使い勝手いいなぁ~って思うGoogle ColabのPythonで作りました。

コードは、こちらです。たったこれだけです。

import urllib.request
from bs4 import BeautifulSoup
import ics
from google.colab import files

evurl="https://www.city.kodaira.tokyo.jp/event/"
html = urllib.request.urlopen(evurl)
soup = BeautifulSoup(html,'html.parser')

#イベントインフォだけを取ってくる
elems=soup.find_all("div",class_="event_info")
eventcount=0

for elem in elems:
#イベントの詳細URLへアクセス
 url2='https://www.city.kodaira.tokyo.jp'+str(elem.a)[9:31]
 html2 = urllib.request.urlopen(url2)
 soup2 = BeautifulSoup(html2,'html.parser')
 elems2 = soup2.find("a",id="icaldownload")
#icsファイルへアクセス

 url3='https://www.city.kodaira.tokyo.jp'+str(elems2)[21:55]
 g = urllib.request.urlopen(url3)
 gcal = ics.Calendar(g.read().decode())
 if eventcount==0:
  eventallstr=str(gcal)[0:int(str(gcal).find('END:VCALENDAR'))]
  eventcount=eventcount+1
 else:
  eventallstr=eventallstr+"\n"+str(gcal)[int(str(gcal).find("BEGIN:VEVENT")):int(str(gcal).find('END:VCALENDAR'))]
  eventcount=eventcount+1
  print(eventcount)

print("Complited")

#ファイルへ書き出されダウンロードされる
with open("kodairacal.ics", "w") as f:
 f.write(eventallstr+"END:VCALENDAR")
files.download('kodairacal.ics')

Google Colab 形式はこちら

Google Colab

Githubはこちら

Googlecolabutils/Kodairaevent_bs.ipynb at master · tom2rd/Googlecolabutils
Google colab tips. Contribute to tom2rd/Googlecolabutils development by creating an account on GitHub.

jupyter notebook で、少しづつ試しながら作っていっている過程も残してありますので見て勉強してみるにはいいかと思います。

簡単に言うと、イベントページにアクセスして、詳細ページのURLを探し、詳細ページにアクセスして、ics形式のURLを抽出します。そのicsファイルを、今度は、VEVENTだけ抽出して全部を結合して、ファイルにしてダウンロードします。

Googleカレンダー に

Google カレンダーへの読み込みは、こちらのページを見てみてください。

Google カレンダーに予定を読み込む - Android - Google カレンダー ヘルプ
別のカレンダー アプリケーションや Google アカウントから Google カレンダーに予定を転送できます。 予定を読み込んでも、予定のゲストと会議のデータは読み込まれません。 予定を読み込む 予定を書き出すには、パソコンで Google カレンダーを開いてください。

インポート は ics とCSVでできます。 エクスポート(ダウンロード)もできるので、他の形式にすることもできるかと思います。

当初の目的の、

https://kodairashuuhen.glideapp.io

に読み込めるかな??

ゴミもこの形式にして~~(笑)

よろしく!!


退屈なことはPythonにやらせよう!! ほんまや!(笑)