映画の上映情報を機械的に取得する
http://kokoro.s3.jp-tok.cloud-object-storage.appdomain.cloud/2e0c2489-43f1-49dd-85f8-b43ecb80caa5.svg
しなる(@ci7lus)
アイの歌声、ぼけーっとしてたら県内での上映終わってた…
締め切りで動くタイプの人間なので、映画を見に行きたい!となっても最寄での上映終了が近づかないと体が動かないのだが、毎日映画館のサイトを見てスケジュールと突き合わせる気合いもない。
今日は「アイの歌声を聴かせて」という見に行きたかった映画が最寄では11/25に上映終了していることが判明し終焉を迎えたので、重い腰を上げてリマインドできるようにしてみたいと思う。「星なき夜のアリア」は流石にみたい。 候補1 eigakan.org
表題のアイの歌声の公式スケジュール公開先。一見良さそうに見えるが、全ての作品を配給しているわけではないらしく、「星なき夜のアリア」のスケジュールは見当たらない。タイトルからtを検索する方法も見当たらない。
候補2 moviewalker.jp
モバイルでは部分的にSPAになるので、地域と作品URLさえわかっていれば楽々終了スケジュールが取れるぞ!と意気込んだのも束の間、情報が正しく反映されてないことが判明
雑にメール送ったら返信が来て、3日後(12/5)に確認したところ直っていた!感謝するぜ
映画館IDが416(TOHOシネマズファボーレ富山)の2021/11/29の上映情報
作品IDが72218(星なき夜のアリア)の富山での2021/11/29の上映情報
https://gyazo.com/fefd2dfb1376488832c81059bb0bc968
https://gyazo.com/f686c56ad610ce8024157e52b4f98b6f
ただ、上映終了日以降のスケジュール自体は空になるため、未定との見分けをつけられればわかるかも。ただ確実でない。
候補3 映画館のサイト
確実。ただサイトが統一されているわけないのでスクレイピングの手間が異常。 最初はとりあえず最寄の東宝シネマズのスケジュールをスクレイピングしようかと思ったのだが、しばらく考えているとMOVIE WORKERを使って終了日を推測できるかもしれないと考えた。
県内(地域内)の上映スケジュールが一覧になっているページを取得し、その中で最も遠い上映日を知る。以下の画像の場合は日曜日の5日だが、この時点では5日が上映終了日なのか、6日以降のスケジュールが公開されていないだけなのかわからない。
https://gyazo.com/86b3e3a67a34673a596a886096bf9037
この部分はAPIで取れないためHTMLをパースする。面倒。
スケジュール一覧に掲載されている映画館すべてのの上映スケジュールページを取得し、スケジュール掲載上限日を知る。以下の画像の場合は木曜日の9日。
https://gyazo.com/acc49ed9b3f9d4a5ed2cf1d205b9737c
すべての映画館のうち最も近いスケジュール掲載上限日と、最も遠い上映日を比較する。同じであれば上映終了の予定はなく、最も遠い上映日が下回っていれば、その日が上映最終日ということになる。上の例では5日が上映終了日である。
https://gyazo.com/86614a012d58daad4b98b4948efa8b13
適当にコードに起こしたらそれっぽい結果が取れたので、icalにして公開する。
作業中
ローカルで動いてデプロイしたら動かなくなった。
code:err
0 GET /end-screening-predict/73539/toyama.ics 105ms 500
1 Error serving request: EvalError: Code generation from strings disallowed for this context
at Function (<anonymous>)
at endScreeningPredict (file:///src/src/eiga/end-screening-predict.ts:52:23)
2 isolate start time: 175 milliseconds
deno_domがFunctionからの直実行とかいうエグい実行方法に依存しているのが問題なのでそっちに起票してきたが、denoで書かなきゃよかったという感想になっちゃうなー
あとMOVIE WALKERの表示が普通に間違っているのは問題なのでフィードバックした。確認メールが届かないのでメールアドレスを打ち間違ったか全部死んでいるかもしれない。
12/2 返信きてた。担当部署に報告ということなのでしばらくしたら治ってるか表記ごと消えてるかするかもしれない。
12/5に確認したところ直っていた
deno deployはまだキャッシュ効かないしeval使うdomが動かないから解消したら載せ替える