なんと!カレンダーに登録ボタン!!
北多摩あたりのイベント情報アプリ
これ、手作業でイベント情報をあつめて、作ってくれているんです。本当にあたまが下がります。
それで、少しでも楽にしてあげられないかな??って前から思っていて、イベント情報なども、もっと二次利用しやすいように。。 某 市役所の方にお話ししたりしていました。
で・・・稲城市のイベントデータ加工を、少ししたことをFacebookGroupで話題にしたところ。。
なんと!! 小平市には、カレンダー登録ボタンがあって、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 形式はこちら
Githubはこちら
jupyter notebook で、少しづつ試しながら作っていっている過程も残してありますので見て勉強してみるにはいいかと思います。
簡単に言うと、イベントページにアクセスして、詳細ページのURLを探し、詳細ページにアクセスして、ics形式のURLを抽出します。そのicsファイルを、今度は、VEVENTだけ抽出して全部を結合して、ファイルにしてダウンロードします。
Googleカレンダー に
Google カレンダーへの読み込みは、こちらのページを見てみてください。
インポート は ics とCSVでできます。 エクスポート(ダウンロード)もできるので、他の形式にすることもできるかと思います。
当初の目的の、
に読み込めるかな??
ゴミもこの形式にして~~(笑)
よろしく!!
退屈なことはPythonにやらせよう!! ほんまや!(笑)